This file is indexed.

/usr/share/doc/ghostscript/Details8.htm is in ghostscript-doc 9.06~dfsg-2+deb8u7.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

     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
  2201
  2202
  2203
  2204
  2205
  2206
  2207
  2208
  2209
  2210
  2211
  2212
  2213
  2214
  2215
  2216
  2217
  2218
  2219
  2220
  2221
  2222
  2223
  2224
  2225
  2226
  2227
  2228
  2229
  2230
  2231
  2232
  2233
  2234
  2235
  2236
  2237
  2238
  2239
  2240
  2241
  2242
  2243
  2244
  2245
  2246
  2247
  2248
  2249
  2250
  2251
  2252
  2253
  2254
  2255
  2256
  2257
  2258
  2259
  2260
  2261
  2262
  2263
  2264
  2265
  2266
  2267
  2268
  2269
  2270
  2271
  2272
  2273
  2274
  2275
  2276
  2277
  2278
  2279
  2280
  2281
  2282
  2283
  2284
  2285
  2286
  2287
  2288
  2289
  2290
  2291
  2292
  2293
  2294
  2295
  2296
  2297
  2298
  2299
  2300
  2301
  2302
  2303
  2304
  2305
  2306
  2307
  2308
  2309
  2310
  2311
  2312
  2313
  2314
  2315
  2316
  2317
  2318
  2319
  2320
  2321
  2322
  2323
  2324
  2325
  2326
  2327
  2328
  2329
  2330
  2331
  2332
  2333
  2334
  2335
  2336
  2337
  2338
  2339
  2340
  2341
  2342
  2343
  2344
  2345
  2346
  2347
  2348
  2349
  2350
  2351
  2352
  2353
  2354
  2355
  2356
  2357
  2358
  2359
  2360
  2361
  2362
  2363
  2364
  2365
  2366
  2367
  2368
  2369
  2370
  2371
  2372
  2373
  2374
  2375
  2376
  2377
  2378
  2379
  2380
  2381
  2382
  2383
  2384
  2385
  2386
  2387
  2388
  2389
  2390
  2391
  2392
  2393
  2394
  2395
  2396
  2397
  2398
  2399
  2400
  2401
  2402
  2403
  2404
  2405
  2406
  2407
  2408
  2409
  2410
  2411
  2412
  2413
  2414
  2415
  2416
  2417
  2418
  2419
  2420
  2421
  2422
  2423
  2424
  2425
  2426
  2427
  2428
  2429
  2430
  2431
  2432
  2433
  2434
  2435
  2436
  2437
  2438
  2439
  2440
  2441
  2442
  2443
  2444
  2445
  2446
  2447
  2448
  2449
  2450
  2451
  2452
  2453
  2454
  2455
  2456
  2457
  2458
  2459
  2460
  2461
  2462
  2463
  2464
  2465
  2466
  2467
  2468
  2469
  2470
  2471
  2472
  2473
  2474
  2475
  2476
  2477
  2478
  2479
  2480
  2481
  2482
  2483
  2484
  2485
  2486
  2487
  2488
  2489
  2490
  2491
  2492
  2493
  2494
  2495
  2496
  2497
  2498
  2499
  2500
  2501
  2502
  2503
  2504
  2505
  2506
  2507
  2508
  2509
  2510
  2511
  2512
  2513
  2514
  2515
  2516
  2517
  2518
  2519
  2520
  2521
  2522
  2523
  2524
  2525
  2526
  2527
  2528
  2529
  2530
  2531
  2532
  2533
  2534
  2535
  2536
  2537
  2538
  2539
  2540
  2541
  2542
  2543
  2544
  2545
  2546
  2547
  2548
  2549
  2550
  2551
  2552
  2553
  2554
  2555
  2556
  2557
  2558
  2559
  2560
  2561
  2562
  2563
  2564
  2565
  2566
  2567
  2568
  2569
  2570
  2571
  2572
  2573
  2574
  2575
  2576
  2577
  2578
  2579
  2580
  2581
  2582
  2583
  2584
  2585
  2586
  2587
  2588
  2589
  2590
  2591
  2592
  2593
  2594
  2595
  2596
  2597
  2598
  2599
  2600
  2601
  2602
  2603
  2604
  2605
  2606
  2607
  2608
  2609
  2610
  2611
  2612
  2613
  2614
  2615
  2616
  2617
  2618
  2619
  2620
  2621
  2622
  2623
  2624
  2625
  2626
  2627
  2628
  2629
  2630
  2631
  2632
  2633
  2634
  2635
  2636
  2637
  2638
  2639
  2640
  2641
  2642
  2643
  2644
  2645
  2646
  2647
  2648
  2649
  2650
  2651
  2652
  2653
  2654
  2655
  2656
  2657
  2658
  2659
  2660
  2661
  2662
  2663
  2664
  2665
  2666
  2667
  2668
  2669
  2670
  2671
  2672
  2673
  2674
  2675
  2676
  2677
  2678
  2679
  2680
  2681
  2682
  2683
  2684
  2685
  2686
  2687
  2688
  2689
  2690
  2691
  2692
  2693
  2694
  2695
  2696
  2697
  2698
  2699
  2700
  2701
  2702
  2703
  2704
  2705
  2706
  2707
  2708
  2709
  2710
  2711
  2712
  2713
  2714
  2715
  2716
  2717
  2718
  2719
  2720
  2721
  2722
  2723
  2724
  2725
  2726
  2727
  2728
  2729
  2730
  2731
  2732
  2733
  2734
  2735
  2736
  2737
  2738
  2739
  2740
  2741
  2742
  2743
  2744
  2745
  2746
  2747
  2748
  2749
  2750
  2751
  2752
  2753
  2754
  2755
  2756
  2757
  2758
  2759
  2760
  2761
  2762
  2763
  2764
  2765
  2766
  2767
  2768
  2769
  2770
  2771
  2772
  2773
  2774
  2775
  2776
  2777
  2778
  2779
  2780
  2781
  2782
  2783
  2784
  2785
  2786
  2787
  2788
  2789
  2790
  2791
  2792
  2793
  2794
  2795
  2796
  2797
  2798
  2799
  2800
  2801
  2802
  2803
  2804
  2805
  2806
  2807
  2808
  2809
  2810
  2811
  2812
  2813
  2814
  2815
  2816
  2817
  2818
  2819
  2820
  2821
  2822
  2823
  2824
  2825
  2826
  2827
  2828
  2829
  2830
  2831
  2832
  2833
  2834
  2835
  2836
  2837
  2838
  2839
  2840
  2841
  2842
  2843
  2844
  2845
  2846
  2847
  2848
  2849
  2850
  2851
  2852
  2853
  2854
  2855
  2856
  2857
  2858
  2859
  2860
  2861
  2862
  2863
  2864
  2865
  2866
  2867
  2868
  2869
  2870
  2871
  2872
  2873
  2874
  2875
  2876
  2877
  2878
  2879
  2880
  2881
  2882
  2883
  2884
  2885
  2886
  2887
  2888
  2889
  2890
  2891
  2892
  2893
  2894
  2895
  2896
  2897
  2898
  2899
  2900
  2901
  2902
  2903
  2904
  2905
  2906
  2907
  2908
  2909
  2910
  2911
  2912
  2913
  2914
  2915
  2916
  2917
  2918
  2919
  2920
  2921
  2922
  2923
  2924
  2925
  2926
  2927
  2928
  2929
  2930
  2931
  2932
  2933
  2934
  2935
  2936
  2937
  2938
  2939
  2940
  2941
  2942
  2943
  2944
  2945
  2946
  2947
  2948
  2949
  2950
  2951
  2952
  2953
  2954
  2955
  2956
  2957
  2958
  2959
  2960
  2961
  2962
  2963
  2964
  2965
  2966
  2967
  2968
  2969
  2970
  2971
  2972
  2973
  2974
  2975
  2976
  2977
  2978
  2979
  2980
  2981
  2982
  2983
  2984
  2985
  2986
  2987
  2988
  2989
  2990
  2991
  2992
  2993
  2994
  2995
  2996
  2997
  2998
  2999
  3000
  3001
  3002
  3003
  3004
  3005
  3006
  3007
  3008
  3009
  3010
  3011
  3012
  3013
  3014
  3015
  3016
  3017
  3018
  3019
  3020
  3021
  3022
  3023
  3024
  3025
  3026
  3027
  3028
  3029
  3030
  3031
  3032
  3033
  3034
  3035
  3036
  3037
  3038
  3039
  3040
  3041
  3042
  3043
  3044
  3045
  3046
  3047
  3048
  3049
  3050
  3051
  3052
  3053
  3054
  3055
  3056
  3057
  3058
  3059
  3060
  3061
  3062
  3063
  3064
  3065
  3066
  3067
  3068
  3069
  3070
  3071
  3072
  3073
  3074
  3075
  3076
  3077
  3078
  3079
  3080
  3081
  3082
  3083
  3084
  3085
  3086
  3087
  3088
  3089
  3090
  3091
  3092
  3093
  3094
  3095
  3096
  3097
  3098
  3099
  3100
  3101
  3102
  3103
  3104
  3105
  3106
  3107
  3108
  3109
  3110
  3111
  3112
  3113
  3114
  3115
  3116
  3117
  3118
  3119
  3120
  3121
  3122
  3123
  3124
  3125
  3126
  3127
  3128
  3129
  3130
  3131
  3132
  3133
  3134
  3135
  3136
  3137
  3138
  3139
  3140
  3141
  3142
  3143
  3144
  3145
  3146
  3147
  3148
  3149
  3150
  3151
  3152
  3153
  3154
  3155
  3156
  3157
  3158
  3159
  3160
  3161
  3162
  3163
  3164
  3165
  3166
  3167
  3168
  3169
  3170
  3171
  3172
  3173
  3174
  3175
  3176
  3177
  3178
  3179
  3180
  3181
  3182
  3183
  3184
  3185
  3186
  3187
  3188
  3189
  3190
  3191
  3192
  3193
  3194
  3195
  3196
  3197
  3198
  3199
  3200
  3201
  3202
  3203
  3204
  3205
  3206
  3207
  3208
  3209
  3210
  3211
  3212
  3213
  3214
  3215
  3216
  3217
  3218
  3219
  3220
  3221
  3222
  3223
  3224
  3225
  3226
  3227
  3228
  3229
  3230
  3231
  3232
  3233
  3234
  3235
  3236
  3237
  3238
  3239
  3240
  3241
  3242
  3243
  3244
  3245
  3246
  3247
  3248
  3249
  3250
  3251
  3252
  3253
  3254
  3255
  3256
  3257
  3258
  3259
  3260
  3261
  3262
  3263
  3264
  3265
  3266
  3267
  3268
  3269
  3270
  3271
  3272
  3273
  3274
  3275
  3276
  3277
  3278
  3279
  3280
  3281
  3282
  3283
  3284
  3285
  3286
  3287
  3288
  3289
  3290
  3291
  3292
  3293
  3294
  3295
  3296
  3297
  3298
  3299
  3300
  3301
  3302
  3303
  3304
  3305
  3306
  3307
  3308
  3309
  3310
  3311
  3312
  3313
  3314
  3315
  3316
  3317
  3318
  3319
  3320
  3321
  3322
  3323
  3324
  3325
  3326
  3327
  3328
  3329
  3330
  3331
  3332
  3333
  3334
  3335
  3336
  3337
  3338
  3339
  3340
  3341
  3342
  3343
  3344
  3345
  3346
  3347
  3348
  3349
  3350
  3351
  3352
  3353
  3354
  3355
  3356
  3357
  3358
  3359
  3360
  3361
  3362
  3363
  3364
  3365
  3366
  3367
  3368
  3369
  3370
  3371
  3372
  3373
  3374
  3375
  3376
  3377
  3378
  3379
  3380
  3381
  3382
  3383
  3384
  3385
  3386
  3387
  3388
  3389
  3390
  3391
  3392
  3393
  3394
  3395
  3396
  3397
  3398
  3399
  3400
  3401
  3402
  3403
  3404
  3405
  3406
  3407
  3408
  3409
  3410
  3411
  3412
  3413
  3414
  3415
  3416
  3417
  3418
  3419
  3420
  3421
  3422
  3423
  3424
  3425
  3426
  3427
  3428
  3429
  3430
  3431
  3432
  3433
  3434
  3435
  3436
  3437
  3438
  3439
  3440
  3441
  3442
  3443
  3444
  3445
  3446
  3447
  3448
  3449
  3450
  3451
  3452
  3453
  3454
  3455
  3456
  3457
  3458
  3459
  3460
  3461
  3462
  3463
  3464
  3465
  3466
  3467
  3468
  3469
  3470
  3471
  3472
  3473
  3474
  3475
  3476
  3477
  3478
  3479
  3480
  3481
  3482
  3483
  3484
  3485
  3486
  3487
  3488
  3489
  3490
  3491
  3492
  3493
  3494
  3495
  3496
  3497
  3498
  3499
  3500
  3501
  3502
  3503
  3504
  3505
  3506
  3507
  3508
  3509
  3510
  3511
  3512
  3513
  3514
  3515
  3516
  3517
  3518
  3519
  3520
  3521
  3522
  3523
  3524
  3525
  3526
  3527
  3528
  3529
  3530
  3531
  3532
  3533
  3534
  3535
  3536
  3537
  3538
  3539
  3540
  3541
  3542
  3543
  3544
  3545
  3546
  3547
  3548
  3549
  3550
  3551
  3552
  3553
  3554
  3555
  3556
  3557
  3558
  3559
  3560
  3561
  3562
  3563
  3564
  3565
  3566
  3567
  3568
  3569
  3570
  3571
  3572
  3573
  3574
  3575
  3576
  3577
  3578
  3579
  3580
  3581
  3582
  3583
  3584
  3585
  3586
  3587
  3588
  3589
  3590
  3591
  3592
  3593
  3594
  3595
  3596
  3597
  3598
  3599
  3600
  3601
  3602
  3603
  3604
  3605
  3606
  3607
  3608
  3609
  3610
  3611
  3612
  3613
  3614
  3615
  3616
  3617
  3618
  3619
  3620
  3621
  3622
  3623
  3624
  3625
  3626
  3627
  3628
  3629
  3630
  3631
  3632
  3633
  3634
  3635
  3636
  3637
  3638
  3639
  3640
  3641
  3642
  3643
  3644
  3645
  3646
  3647
  3648
  3649
  3650
  3651
  3652
  3653
  3654
  3655
  3656
  3657
  3658
  3659
  3660
  3661
  3662
  3663
  3664
  3665
  3666
  3667
  3668
  3669
  3670
  3671
  3672
  3673
  3674
  3675
  3676
  3677
  3678
  3679
  3680
  3681
  3682
  3683
  3684
  3685
  3686
  3687
  3688
  3689
  3690
  3691
  3692
  3693
  3694
  3695
  3696
  3697
  3698
  3699
  3700
  3701
  3702
  3703
  3704
  3705
  3706
  3707
  3708
  3709
  3710
  3711
  3712
  3713
  3714
  3715
  3716
  3717
  3718
  3719
  3720
  3721
  3722
  3723
  3724
  3725
  3726
  3727
  3728
  3729
  3730
  3731
  3732
  3733
  3734
  3735
  3736
  3737
  3738
  3739
  3740
  3741
  3742
  3743
  3744
  3745
  3746
  3747
  3748
  3749
  3750
  3751
  3752
  3753
  3754
  3755
  3756
  3757
  3758
  3759
  3760
  3761
  3762
  3763
  3764
  3765
  3766
  3767
  3768
  3769
  3770
  3771
  3772
  3773
  3774
  3775
  3776
  3777
  3778
  3779
  3780
  3781
  3782
  3783
  3784
  3785
  3786
  3787
  3788
  3789
  3790
  3791
  3792
  3793
  3794
  3795
  3796
  3797
  3798
  3799
  3800
  3801
  3802
  3803
  3804
  3805
  3806
  3807
  3808
  3809
  3810
  3811
  3812
  3813
  3814
  3815
  3816
  3817
  3818
  3819
  3820
  3821
  3822
  3823
  3824
  3825
  3826
  3827
  3828
  3829
  3830
  3831
  3832
  3833
  3834
  3835
  3836
  3837
  3838
  3839
  3840
  3841
  3842
  3843
  3844
  3845
  3846
  3847
  3848
  3849
  3850
  3851
  3852
  3853
  3854
  3855
  3856
  3857
  3858
  3859
  3860
  3861
  3862
  3863
  3864
  3865
  3866
  3867
  3868
  3869
  3870
  3871
  3872
  3873
  3874
  3875
  3876
  3877
  3878
  3879
  3880
  3881
  3882
  3883
  3884
  3885
  3886
  3887
  3888
  3889
  3890
  3891
  3892
  3893
  3894
  3895
  3896
  3897
  3898
  3899
  3900
  3901
  3902
  3903
  3904
  3905
  3906
  3907
  3908
  3909
  3910
  3911
  3912
  3913
  3914
  3915
  3916
  3917
  3918
  3919
  3920
  3921
  3922
  3923
  3924
  3925
  3926
  3927
  3928
  3929
  3930
  3931
  3932
  3933
  3934
  3935
  3936
  3937
  3938
  3939
  3940
  3941
  3942
  3943
  3944
  3945
  3946
  3947
  3948
  3949
  3950
  3951
  3952
  3953
  3954
  3955
  3956
  3957
  3958
  3959
  3960
  3961
  3962
  3963
  3964
  3965
  3966
  3967
  3968
  3969
  3970
  3971
  3972
  3973
  3974
  3975
  3976
  3977
  3978
  3979
  3980
  3981
  3982
  3983
  3984
  3985
  3986
  3987
  3988
  3989
  3990
  3991
  3992
  3993
  3994
  3995
  3996
  3997
  3998
  3999
  4000
  4001
  4002
  4003
  4004
  4005
  4006
  4007
  4008
  4009
  4010
  4011
  4012
  4013
  4014
  4015
  4016
  4017
  4018
  4019
  4020
  4021
  4022
  4023
  4024
  4025
  4026
  4027
  4028
  4029
  4030
  4031
  4032
  4033
  4034
  4035
  4036
  4037
  4038
  4039
  4040
  4041
  4042
  4043
  4044
  4045
  4046
  4047
  4048
  4049
  4050
  4051
  4052
  4053
  4054
  4055
  4056
  4057
  4058
  4059
  4060
  4061
  4062
  4063
  4064
  4065
  4066
  4067
  4068
  4069
  4070
  4071
  4072
  4073
  4074
  4075
  4076
  4077
  4078
  4079
  4080
  4081
  4082
  4083
  4084
  4085
  4086
  4087
  4088
  4089
  4090
  4091
  4092
  4093
  4094
  4095
  4096
  4097
  4098
  4099
  4100
  4101
  4102
  4103
  4104
  4105
  4106
  4107
  4108
  4109
  4110
  4111
  4112
  4113
  4114
  4115
  4116
  4117
  4118
  4119
  4120
  4121
  4122
  4123
  4124
  4125
  4126
  4127
  4128
  4129
  4130
  4131
  4132
  4133
  4134
  4135
  4136
  4137
  4138
  4139
  4140
  4141
  4142
  4143
  4144
  4145
  4146
  4147
  4148
  4149
  4150
  4151
  4152
  4153
  4154
  4155
  4156
  4157
  4158
  4159
  4160
  4161
  4162
  4163
  4164
  4165
  4166
  4167
  4168
  4169
  4170
  4171
  4172
  4173
  4174
  4175
  4176
  4177
  4178
  4179
  4180
  4181
  4182
  4183
  4184
  4185
  4186
  4187
  4188
  4189
  4190
  4191
  4192
  4193
  4194
  4195
  4196
  4197
  4198
  4199
  4200
  4201
  4202
  4203
  4204
  4205
  4206
  4207
  4208
  4209
  4210
  4211
  4212
  4213
  4214
  4215
  4216
  4217
  4218
  4219
  4220
  4221
  4222
  4223
  4224
  4225
  4226
  4227
  4228
  4229
  4230
  4231
  4232
  4233
  4234
  4235
  4236
  4237
  4238
  4239
  4240
  4241
  4242
  4243
  4244
  4245
  4246
  4247
  4248
  4249
  4250
  4251
  4252
  4253
  4254
  4255
  4256
  4257
  4258
  4259
  4260
  4261
  4262
  4263
  4264
  4265
  4266
  4267
  4268
  4269
  4270
  4271
  4272
  4273
  4274
  4275
  4276
  4277
  4278
  4279
  4280
  4281
  4282
  4283
  4284
  4285
  4286
  4287
  4288
  4289
  4290
  4291
  4292
  4293
  4294
  4295
  4296
  4297
  4298
  4299
  4300
  4301
  4302
  4303
  4304
  4305
  4306
  4307
  4308
  4309
  4310
  4311
  4312
  4313
  4314
  4315
  4316
  4317
  4318
  4319
  4320
  4321
  4322
  4323
  4324
  4325
  4326
  4327
  4328
  4329
  4330
  4331
  4332
  4333
  4334
  4335
  4336
  4337
  4338
  4339
  4340
  4341
  4342
  4343
  4344
  4345
  4346
  4347
  4348
  4349
  4350
  4351
  4352
  4353
  4354
  4355
  4356
  4357
  4358
  4359
  4360
  4361
  4362
  4363
  4364
  4365
  4366
  4367
  4368
  4369
  4370
  4371
  4372
  4373
  4374
  4375
  4376
  4377
  4378
  4379
  4380
  4381
  4382
  4383
  4384
  4385
  4386
  4387
  4388
  4389
  4390
  4391
  4392
  4393
  4394
  4395
  4396
  4397
  4398
  4399
  4400
  4401
  4402
  4403
  4404
  4405
  4406
  4407
  4408
  4409
  4410
  4411
  4412
  4413
  4414
  4415
  4416
  4417
  4418
  4419
  4420
  4421
  4422
  4423
  4424
  4425
  4426
  4427
  4428
  4429
  4430
  4431
  4432
  4433
  4434
  4435
  4436
  4437
  4438
  4439
  4440
  4441
  4442
  4443
  4444
  4445
  4446
  4447
  4448
  4449
  4450
  4451
  4452
  4453
  4454
  4455
  4456
  4457
  4458
  4459
  4460
  4461
  4462
  4463
  4464
  4465
  4466
  4467
  4468
  4469
  4470
  4471
  4472
  4473
  4474
  4475
  4476
  4477
  4478
  4479
  4480
  4481
  4482
  4483
  4484
  4485
  4486
  4487
  4488
  4489
  4490
  4491
  4492
  4493
  4494
  4495
  4496
  4497
  4498
  4499
  4500
  4501
  4502
  4503
  4504
  4505
  4506
  4507
  4508
  4509
  4510
  4511
  4512
  4513
  4514
  4515
  4516
  4517
  4518
  4519
  4520
  4521
  4522
  4523
  4524
  4525
  4526
  4527
  4528
  4529
  4530
  4531
  4532
  4533
  4534
  4535
  4536
  4537
  4538
  4539
  4540
  4541
  4542
  4543
  4544
  4545
  4546
  4547
  4548
  4549
  4550
  4551
  4552
  4553
  4554
  4555
  4556
  4557
  4558
  4559
  4560
  4561
  4562
  4563
  4564
  4565
  4566
  4567
  4568
  4569
  4570
  4571
  4572
  4573
  4574
  4575
  4576
  4577
  4578
  4579
  4580
  4581
  4582
  4583
  4584
  4585
  4586
  4587
  4588
  4589
  4590
  4591
  4592
  4593
  4594
  4595
  4596
  4597
  4598
  4599
  4600
  4601
  4602
  4603
  4604
  4605
  4606
  4607
  4608
  4609
  4610
  4611
  4612
  4613
  4614
  4615
  4616
  4617
  4618
  4619
  4620
  4621
  4622
  4623
  4624
  4625
  4626
  4627
  4628
  4629
  4630
  4631
  4632
  4633
  4634
  4635
  4636
  4637
  4638
  4639
  4640
  4641
  4642
  4643
  4644
  4645
  4646
  4647
  4648
  4649
  4650
  4651
  4652
  4653
  4654
  4655
  4656
  4657
  4658
  4659
  4660
  4661
  4662
  4663
  4664
  4665
  4666
  4667
  4668
  4669
  4670
  4671
  4672
  4673
  4674
  4675
  4676
  4677
  4678
  4679
  4680
  4681
  4682
  4683
  4684
  4685
  4686
  4687
  4688
  4689
  4690
  4691
  4692
  4693
  4694
  4695
  4696
  4697
  4698
  4699
  4700
  4701
  4702
  4703
  4704
  4705
  4706
  4707
  4708
  4709
  4710
  4711
  4712
  4713
  4714
  4715
  4716
  4717
  4718
  4719
  4720
  4721
  4722
  4723
  4724
  4725
  4726
  4727
  4728
  4729
  4730
  4731
  4732
  4733
  4734
  4735
  4736
  4737
  4738
  4739
  4740
  4741
  4742
  4743
  4744
  4745
  4746
  4747
  4748
  4749
  4750
  4751
  4752
  4753
  4754
  4755
  4756
  4757
  4758
  4759
  4760
  4761
  4762
  4763
  4764
  4765
  4766
  4767
  4768
  4769
  4770
  4771
  4772
  4773
  4774
  4775
  4776
  4777
  4778
  4779
  4780
  4781
  4782
  4783
  4784
  4785
  4786
  4787
  4788
  4789
  4790
  4791
  4792
  4793
  4794
  4795
  4796
  4797
  4798
  4799
  4800
  4801
  4802
  4803
  4804
  4805
  4806
  4807
  4808
  4809
  4810
  4811
  4812
  4813
  4814
  4815
  4816
  4817
  4818
  4819
  4820
  4821
  4822
  4823
  4824
  4825
  4826
  4827
  4828
  4829
  4830
  4831
  4832
  4833
  4834
  4835
  4836
  4837
  4838
  4839
  4840
  4841
  4842
  4843
  4844
  4845
  4846
  4847
  4848
  4849
  4850
  4851
  4852
  4853
  4854
  4855
  4856
  4857
  4858
  4859
  4860
  4861
  4862
  4863
  4864
  4865
  4866
  4867
  4868
  4869
  4870
  4871
  4872
  4873
  4874
  4875
  4876
  4877
  4878
  4879
  4880
  4881
  4882
  4883
  4884
  4885
  4886
  4887
  4888
  4889
  4890
  4891
  4892
  4893
  4894
  4895
  4896
  4897
  4898
  4899
  4900
  4901
  4902
  4903
  4904
  4905
  4906
  4907
  4908
  4909
  4910
  4911
  4912
  4913
  4914
  4915
  4916
  4917
  4918
  4919
  4920
  4921
  4922
  4923
  4924
  4925
  4926
  4927
  4928
  4929
  4930
  4931
  4932
  4933
  4934
  4935
  4936
  4937
  4938
  4939
  4940
  4941
  4942
  4943
  4944
  4945
  4946
  4947
  4948
  4949
  4950
  4951
  4952
  4953
  4954
  4955
  4956
  4957
  4958
  4959
  4960
  4961
  4962
  4963
  4964
  4965
  4966
  4967
  4968
  4969
  4970
  4971
  4972
  4973
  4974
  4975
  4976
  4977
  4978
  4979
  4980
  4981
  4982
  4983
  4984
  4985
  4986
  4987
  4988
  4989
  4990
  4991
  4992
  4993
  4994
  4995
  4996
  4997
  4998
  4999
  5000
  5001
  5002
  5003
  5004
  5005
  5006
  5007
  5008
  5009
  5010
  5011
  5012
  5013
  5014
  5015
  5016
  5017
  5018
  5019
  5020
  5021
  5022
  5023
  5024
  5025
  5026
  5027
  5028
  5029
  5030
  5031
  5032
  5033
  5034
  5035
  5036
  5037
  5038
  5039
  5040
  5041
  5042
  5043
  5044
  5045
  5046
  5047
  5048
  5049
  5050
  5051
  5052
  5053
  5054
  5055
  5056
  5057
  5058
  5059
  5060
  5061
  5062
  5063
  5064
  5065
  5066
  5067
  5068
  5069
  5070
  5071
  5072
  5073
  5074
  5075
  5076
  5077
  5078
  5079
  5080
  5081
  5082
  5083
  5084
  5085
  5086
  5087
  5088
  5089
  5090
  5091
  5092
  5093
  5094
  5095
  5096
  5097
  5098
  5099
  5100
  5101
  5102
  5103
  5104
  5105
  5106
  5107
  5108
  5109
  5110
  5111
  5112
  5113
  5114
  5115
  5116
  5117
  5118
  5119
  5120
  5121
  5122
  5123
  5124
  5125
  5126
  5127
  5128
  5129
  5130
  5131
  5132
  5133
  5134
  5135
  5136
  5137
  5138
  5139
  5140
  5141
  5142
  5143
  5144
  5145
  5146
  5147
  5148
  5149
  5150
  5151
  5152
  5153
  5154
  5155
  5156
  5157
  5158
  5159
  5160
  5161
  5162
  5163
  5164
  5165
  5166
  5167
  5168
  5169
  5170
  5171
  5172
  5173
  5174
  5175
  5176
  5177
  5178
  5179
  5180
  5181
  5182
  5183
  5184
  5185
  5186
  5187
  5188
  5189
  5190
  5191
  5192
  5193
  5194
  5195
  5196
  5197
  5198
  5199
  5200
  5201
  5202
  5203
  5204
  5205
  5206
  5207
  5208
  5209
  5210
  5211
  5212
  5213
  5214
  5215
  5216
  5217
  5218
  5219
  5220
  5221
  5222
  5223
  5224
  5225
  5226
  5227
  5228
  5229
  5230
  5231
  5232
  5233
  5234
  5235
  5236
  5237
  5238
  5239
  5240
  5241
  5242
  5243
  5244
  5245
  5246
  5247
  5248
  5249
  5250
  5251
  5252
  5253
  5254
  5255
  5256
  5257
  5258
  5259
  5260
  5261
  5262
  5263
  5264
  5265
  5266
  5267
  5268
  5269
  5270
  5271
  5272
  5273
  5274
  5275
  5276
  5277
  5278
  5279
  5280
  5281
  5282
  5283
  5284
  5285
  5286
  5287
  5288
  5289
  5290
  5291
  5292
  5293
  5294
  5295
  5296
  5297
  5298
  5299
  5300
  5301
  5302
  5303
  5304
  5305
  5306
  5307
  5308
  5309
  5310
  5311
  5312
  5313
  5314
  5315
  5316
  5317
  5318
  5319
  5320
  5321
  5322
  5323
  5324
  5325
  5326
  5327
  5328
  5329
  5330
  5331
  5332
  5333
  5334
  5335
  5336
  5337
  5338
  5339
  5340
  5341
  5342
  5343
  5344
  5345
  5346
  5347
  5348
  5349
  5350
  5351
  5352
  5353
  5354
  5355
  5356
  5357
  5358
  5359
  5360
  5361
  5362
  5363
  5364
  5365
  5366
  5367
  5368
  5369
  5370
  5371
  5372
  5373
  5374
  5375
  5376
  5377
  5378
  5379
  5380
  5381
  5382
  5383
  5384
  5385
  5386
  5387
  5388
  5389
  5390
  5391
  5392
  5393
  5394
  5395
  5396
  5397
  5398
  5399
  5400
  5401
  5402
  5403
  5404
  5405
  5406
  5407
  5408
  5409
  5410
  5411
  5412
  5413
  5414
  5415
  5416
  5417
  5418
  5419
  5420
  5421
  5422
  5423
  5424
  5425
  5426
  5427
  5428
  5429
  5430
  5431
  5432
  5433
  5434
  5435
  5436
  5437
  5438
  5439
  5440
  5441
  5442
  5443
  5444
  5445
  5446
  5447
  5448
  5449
  5450
  5451
  5452
  5453
  5454
  5455
  5456
  5457
  5458
  5459
  5460
  5461
  5462
  5463
  5464
  5465
  5466
  5467
  5468
  5469
  5470
  5471
  5472
  5473
  5474
  5475
  5476
  5477
  5478
  5479
  5480
  5481
  5482
  5483
  5484
  5485
  5486
  5487
  5488
  5489
  5490
  5491
  5492
  5493
  5494
  5495
  5496
  5497
  5498
  5499
  5500
  5501
  5502
  5503
  5504
  5505
  5506
  5507
  5508
  5509
  5510
  5511
  5512
  5513
  5514
  5515
  5516
  5517
  5518
  5519
  5520
  5521
  5522
  5523
  5524
  5525
  5526
  5527
  5528
  5529
  5530
  5531
  5532
  5533
  5534
  5535
  5536
  5537
  5538
  5539
  5540
  5541
  5542
  5543
  5544
  5545
  5546
  5547
  5548
  5549
  5550
  5551
  5552
  5553
  5554
  5555
  5556
  5557
  5558
  5559
  5560
  5561
  5562
  5563
  5564
  5565
  5566
  5567
  5568
  5569
  5570
  5571
  5572
  5573
  5574
  5575
  5576
  5577
  5578
  5579
  5580
  5581
  5582
  5583
  5584
  5585
  5586
  5587
  5588
  5589
  5590
  5591
  5592
  5593
  5594
  5595
  5596
  5597
  5598
  5599
  5600
  5601
  5602
  5603
  5604
  5605
  5606
  5607
  5608
  5609
  5610
  5611
  5612
  5613
  5614
  5615
  5616
  5617
  5618
  5619
  5620
  5621
  5622
  5623
  5624
  5625
  5626
  5627
  5628
  5629
  5630
  5631
  5632
  5633
  5634
  5635
  5636
  5637
  5638
  5639
  5640
  5641
  5642
  5643
  5644
  5645
  5646
  5647
  5648
  5649
  5650
  5651
  5652
  5653
  5654
  5655
  5656
  5657
  5658
  5659
  5660
  5661
  5662
  5663
  5664
  5665
  5666
  5667
  5668
  5669
  5670
  5671
  5672
  5673
  5674
  5675
  5676
  5677
  5678
  5679
  5680
  5681
  5682
  5683
  5684
  5685
  5686
  5687
  5688
  5689
  5690
  5691
  5692
  5693
  5694
  5695
  5696
  5697
  5698
  5699
  5700
  5701
  5702
  5703
  5704
  5705
  5706
  5707
  5708
  5709
  5710
  5711
  5712
  5713
  5714
  5715
  5716
  5717
  5718
  5719
  5720
  5721
  5722
  5723
  5724
  5725
  5726
  5727
  5728
  5729
  5730
  5731
  5732
  5733
  5734
  5735
  5736
  5737
  5738
  5739
  5740
  5741
  5742
  5743
  5744
  5745
  5746
  5747
  5748
  5749
  5750
  5751
  5752
  5753
  5754
  5755
  5756
  5757
  5758
  5759
  5760
  5761
  5762
  5763
  5764
  5765
  5766
  5767
  5768
  5769
  5770
  5771
  5772
  5773
  5774
  5775
  5776
  5777
  5778
  5779
  5780
  5781
  5782
  5783
  5784
  5785
  5786
  5787
  5788
  5789
  5790
  5791
  5792
  5793
  5794
  5795
  5796
  5797
  5798
  5799
  5800
  5801
  5802
  5803
  5804
  5805
  5806
  5807
  5808
  5809
  5810
  5811
  5812
  5813
  5814
  5815
  5816
  5817
  5818
  5819
  5820
  5821
  5822
  5823
  5824
  5825
  5826
  5827
  5828
  5829
  5830
  5831
  5832
  5833
  5834
  5835
  5836
  5837
  5838
  5839
  5840
  5841
  5842
  5843
  5844
  5845
  5846
  5847
  5848
  5849
  5850
  5851
  5852
  5853
  5854
  5855
  5856
  5857
  5858
  5859
  5860
  5861
  5862
  5863
  5864
  5865
  5866
  5867
  5868
  5869
  5870
  5871
  5872
  5873
  5874
  5875
  5876
  5877
  5878
  5879
  5880
  5881
  5882
  5883
  5884
  5885
  5886
  5887
  5888
  5889
  5890
  5891
  5892
  5893
  5894
  5895
  5896
  5897
  5898
  5899
  5900
  5901
  5902
  5903
  5904
  5905
  5906
  5907
  5908
  5909
  5910
  5911
  5912
  5913
  5914
  5915
  5916
  5917
  5918
  5919
  5920
  5921
  5922
  5923
  5924
  5925
  5926
  5927
  5928
  5929
  5930
  5931
  5932
  5933
  5934
  5935
  5936
  5937
  5938
  5939
  5940
  5941
  5942
  5943
  5944
  5945
  5946
  5947
  5948
  5949
  5950
  5951
  5952
  5953
  5954
  5955
  5956
  5957
  5958
  5959
  5960
  5961
  5962
  5963
  5964
  5965
  5966
  5967
  5968
  5969
  5970
  5971
  5972
  5973
  5974
  5975
  5976
  5977
  5978
  5979
  5980
  5981
  5982
  5983
  5984
  5985
  5986
  5987
  5988
  5989
  5990
  5991
  5992
  5993
  5994
  5995
  5996
  5997
  5998
  5999
  6000
  6001
  6002
  6003
  6004
  6005
  6006
  6007
  6008
  6009
  6010
  6011
  6012
  6013
  6014
  6015
  6016
  6017
  6018
  6019
  6020
  6021
  6022
  6023
  6024
  6025
  6026
  6027
  6028
  6029
  6030
  6031
  6032
  6033
  6034
  6035
  6036
  6037
  6038
  6039
  6040
  6041
  6042
  6043
  6044
  6045
  6046
  6047
  6048
  6049
  6050
  6051
  6052
  6053
  6054
  6055
  6056
  6057
  6058
  6059
  6060
  6061
  6062
  6063
  6064
  6065
  6066
  6067
  6068
  6069
  6070
  6071
  6072
  6073
  6074
  6075
  6076
  6077
  6078
  6079
  6080
  6081
  6082
  6083
  6084
  6085
  6086
  6087
  6088
  6089
  6090
  6091
  6092
  6093
  6094
  6095
  6096
  6097
  6098
  6099
  6100
  6101
  6102
  6103
  6104
  6105
  6106
  6107
  6108
  6109
  6110
  6111
  6112
  6113
  6114
  6115
  6116
  6117
  6118
  6119
  6120
  6121
  6122
  6123
  6124
  6125
  6126
  6127
  6128
  6129
  6130
  6131
  6132
  6133
  6134
  6135
  6136
  6137
  6138
  6139
  6140
  6141
  6142
  6143
  6144
  6145
  6146
  6147
  6148
  6149
  6150
  6151
  6152
  6153
  6154
  6155
  6156
  6157
  6158
  6159
  6160
  6161
  6162
  6163
  6164
  6165
  6166
  6167
  6168
  6169
  6170
  6171
  6172
  6173
  6174
  6175
  6176
  6177
  6178
  6179
  6180
  6181
  6182
  6183
  6184
  6185
  6186
  6187
  6188
  6189
  6190
  6191
  6192
  6193
  6194
  6195
  6196
  6197
  6198
  6199
  6200
  6201
  6202
  6203
  6204
  6205
  6206
  6207
  6208
  6209
  6210
  6211
  6212
  6213
  6214
  6215
  6216
  6217
  6218
  6219
  6220
  6221
  6222
  6223
  6224
  6225
  6226
  6227
  6228
  6229
  6230
  6231
  6232
  6233
  6234
  6235
  6236
  6237
  6238
  6239
  6240
  6241
  6242
  6243
  6244
  6245
  6246
  6247
  6248
  6249
  6250
  6251
  6252
  6253
  6254
  6255
  6256
  6257
  6258
  6259
  6260
  6261
  6262
  6263
  6264
  6265
  6266
  6267
  6268
  6269
  6270
  6271
  6272
  6273
  6274
  6275
  6276
  6277
  6278
  6279
  6280
  6281
  6282
  6283
  6284
  6285
  6286
  6287
  6288
  6289
  6290
  6291
  6292
  6293
  6294
  6295
  6296
  6297
  6298
  6299
  6300
  6301
  6302
  6303
  6304
  6305
  6306
  6307
  6308
  6309
  6310
  6311
  6312
  6313
  6314
  6315
  6316
  6317
  6318
  6319
  6320
  6321
  6322
  6323
  6324
  6325
  6326
  6327
  6328
  6329
  6330
  6331
  6332
  6333
  6334
  6335
  6336
  6337
  6338
  6339
  6340
  6341
  6342
  6343
  6344
  6345
  6346
  6347
  6348
  6349
  6350
  6351
  6352
  6353
  6354
  6355
  6356
  6357
  6358
  6359
  6360
  6361
  6362
  6363
  6364
  6365
  6366
  6367
  6368
  6369
  6370
  6371
  6372
  6373
  6374
  6375
  6376
  6377
  6378
  6379
  6380
  6381
  6382
  6383
  6384
  6385
  6386
  6387
  6388
  6389
  6390
  6391
  6392
  6393
  6394
  6395
  6396
  6397
  6398
  6399
  6400
  6401
  6402
  6403
  6404
  6405
  6406
  6407
  6408
  6409
  6410
  6411
  6412
  6413
  6414
  6415
  6416
  6417
  6418
  6419
  6420
  6421
  6422
  6423
  6424
  6425
  6426
  6427
  6428
  6429
  6430
  6431
  6432
  6433
  6434
  6435
  6436
  6437
  6438
  6439
  6440
  6441
  6442
  6443
  6444
  6445
  6446
  6447
  6448
  6449
  6450
  6451
  6452
  6453
  6454
  6455
  6456
  6457
  6458
  6459
  6460
  6461
  6462
  6463
  6464
  6465
  6466
  6467
  6468
  6469
  6470
  6471
  6472
  6473
  6474
  6475
  6476
  6477
  6478
  6479
  6480
  6481
  6482
  6483
  6484
  6485
  6486
  6487
  6488
  6489
  6490
  6491
  6492
  6493
  6494
  6495
  6496
  6497
  6498
  6499
  6500
  6501
  6502
  6503
  6504
  6505
  6506
  6507
  6508
  6509
  6510
  6511
  6512
  6513
  6514
  6515
  6516
  6517
  6518
  6519
  6520
  6521
  6522
  6523
  6524
  6525
  6526
  6527
  6528
  6529
  6530
  6531
  6532
  6533
  6534
  6535
  6536
  6537
  6538
  6539
  6540
  6541
  6542
  6543
  6544
  6545
  6546
  6547
  6548
  6549
  6550
  6551
  6552
  6553
  6554
  6555
  6556
  6557
  6558
  6559
  6560
  6561
  6562
  6563
  6564
  6565
  6566
  6567
  6568
  6569
  6570
  6571
  6572
  6573
  6574
  6575
  6576
  6577
  6578
  6579
  6580
  6581
  6582
  6583
  6584
  6585
  6586
  6587
  6588
  6589
  6590
  6591
  6592
  6593
  6594
  6595
  6596
  6597
  6598
  6599
  6600
  6601
  6602
  6603
  6604
  6605
  6606
  6607
  6608
  6609
  6610
  6611
  6612
  6613
  6614
  6615
  6616
  6617
  6618
  6619
  6620
  6621
  6622
  6623
  6624
  6625
  6626
  6627
  6628
  6629
  6630
  6631
  6632
  6633
  6634
  6635
  6636
  6637
  6638
  6639
  6640
  6641
  6642
  6643
  6644
  6645
  6646
  6647
  6648
  6649
  6650
  6651
  6652
  6653
  6654
  6655
  6656
  6657
  6658
  6659
  6660
  6661
  6662
  6663
  6664
  6665
  6666
  6667
  6668
  6669
  6670
  6671
  6672
  6673
  6674
  6675
  6676
  6677
  6678
  6679
  6680
  6681
  6682
  6683
  6684
  6685
  6686
  6687
  6688
  6689
  6690
  6691
  6692
  6693
  6694
  6695
  6696
  6697
  6698
  6699
  6700
  6701
  6702
  6703
  6704
  6705
  6706
  6707
  6708
  6709
  6710
  6711
  6712
  6713
  6714
  6715
  6716
  6717
  6718
  6719
  6720
  6721
  6722
  6723
  6724
  6725
  6726
  6727
  6728
  6729
  6730
  6731
  6732
  6733
  6734
  6735
  6736
  6737
  6738
  6739
  6740
  6741
  6742
  6743
  6744
  6745
  6746
  6747
  6748
  6749
  6750
  6751
  6752
  6753
  6754
  6755
  6756
  6757
  6758
  6759
  6760
  6761
  6762
  6763
  6764
  6765
  6766
  6767
  6768
  6769
  6770
  6771
  6772
  6773
  6774
  6775
  6776
  6777
  6778
  6779
  6780
  6781
  6782
  6783
  6784
  6785
  6786
  6787
  6788
  6789
  6790
  6791
  6792
  6793
  6794
  6795
  6796
  6797
  6798
  6799
  6800
  6801
  6802
  6803
  6804
  6805
  6806
  6807
  6808
  6809
  6810
  6811
  6812
  6813
  6814
  6815
  6816
  6817
  6818
  6819
  6820
  6821
  6822
  6823
  6824
  6825
  6826
  6827
  6828
  6829
  6830
  6831
  6832
  6833
  6834
  6835
  6836
  6837
  6838
  6839
  6840
  6841
  6842
  6843
  6844
  6845
  6846
  6847
  6848
  6849
  6850
  6851
  6852
  6853
  6854
  6855
  6856
  6857
  6858
  6859
  6860
  6861
  6862
  6863
  6864
  6865
  6866
  6867
  6868
  6869
  6870
  6871
  6872
  6873
  6874
  6875
  6876
  6877
  6878
  6879
  6880
  6881
  6882
  6883
  6884
  6885
  6886
  6887
  6888
  6889
  6890
  6891
  6892
  6893
  6894
  6895
  6896
  6897
  6898
  6899
  6900
  6901
  6902
  6903
  6904
  6905
  6906
  6907
  6908
  6909
  6910
  6911
  6912
  6913
  6914
  6915
  6916
  6917
  6918
  6919
  6920
  6921
  6922
  6923
  6924
  6925
  6926
  6927
  6928
  6929
  6930
  6931
  6932
  6933
  6934
  6935
  6936
  6937
  6938
  6939
  6940
  6941
  6942
  6943
  6944
  6945
  6946
  6947
  6948
  6949
  6950
  6951
  6952
  6953
  6954
  6955
  6956
  6957
  6958
  6959
  6960
  6961
  6962
  6963
  6964
  6965
  6966
  6967
  6968
  6969
  6970
  6971
  6972
  6973
  6974
  6975
  6976
  6977
  6978
  6979
  6980
  6981
  6982
  6983
  6984
  6985
  6986
  6987
  6988
  6989
  6990
  6991
  6992
  6993
  6994
  6995
  6996
  6997
  6998
  6999
  7000
  7001
  7002
  7003
  7004
  7005
  7006
  7007
  7008
  7009
  7010
  7011
  7012
  7013
  7014
  7015
  7016
  7017
  7018
  7019
  7020
  7021
  7022
  7023
  7024
  7025
  7026
  7027
  7028
  7029
  7030
  7031
  7032
  7033
  7034
  7035
  7036
  7037
  7038
  7039
  7040
  7041
  7042
  7043
  7044
  7045
  7046
  7047
  7048
  7049
  7050
  7051
  7052
  7053
  7054
  7055
  7056
  7057
  7058
  7059
  7060
  7061
  7062
  7063
  7064
  7065
  7066
  7067
  7068
  7069
  7070
  7071
  7072
  7073
  7074
  7075
  7076
  7077
  7078
  7079
  7080
  7081
  7082
  7083
  7084
  7085
  7086
  7087
  7088
  7089
  7090
  7091
  7092
  7093
  7094
  7095
  7096
  7097
  7098
  7099
  7100
  7101
  7102
  7103
  7104
  7105
  7106
  7107
  7108
  7109
  7110
  7111
  7112
  7113
  7114
  7115
  7116
  7117
  7118
  7119
  7120
  7121
  7122
  7123
  7124
  7125
  7126
  7127
  7128
  7129
  7130
  7131
  7132
  7133
  7134
  7135
  7136
  7137
  7138
  7139
  7140
  7141
  7142
  7143
  7144
  7145
  7146
  7147
  7148
  7149
  7150
  7151
  7152
  7153
  7154
  7155
  7156
  7157
  7158
  7159
  7160
  7161
  7162
  7163
  7164
  7165
  7166
  7167
  7168
  7169
  7170
  7171
  7172
  7173
  7174
  7175
  7176
  7177
  7178
  7179
  7180
  7181
  7182
  7183
  7184
  7185
  7186
  7187
  7188
  7189
  7190
  7191
  7192
  7193
  7194
  7195
  7196
  7197
  7198
  7199
  7200
  7201
  7202
  7203
  7204
  7205
  7206
  7207
  7208
  7209
  7210
  7211
  7212
  7213
  7214
  7215
  7216
  7217
  7218
  7219
  7220
  7221
  7222
  7223
  7224
  7225
  7226
  7227
  7228
  7229
  7230
  7231
  7232
  7233
  7234
  7235
  7236
  7237
  7238
  7239
  7240
  7241
  7242
  7243
  7244
  7245
  7246
  7247
  7248
  7249
  7250
  7251
  7252
  7253
  7254
  7255
  7256
  7257
  7258
  7259
  7260
  7261
  7262
  7263
  7264
  7265
  7266
  7267
  7268
  7269
  7270
  7271
  7272
  7273
  7274
  7275
  7276
  7277
  7278
  7279
  7280
  7281
  7282
  7283
  7284
  7285
  7286
  7287
  7288
  7289
  7290
  7291
  7292
  7293
  7294
  7295
  7296
  7297
  7298
  7299
  7300
  7301
  7302
  7303
  7304
  7305
  7306
  7307
  7308
  7309
  7310
  7311
  7312
  7313
  7314
  7315
  7316
  7317
  7318
  7319
  7320
  7321
  7322
  7323
  7324
  7325
  7326
  7327
  7328
  7329
  7330
  7331
  7332
  7333
  7334
  7335
  7336
  7337
  7338
  7339
  7340
  7341
  7342
  7343
  7344
  7345
  7346
  7347
  7348
  7349
  7350
  7351
  7352
  7353
  7354
  7355
  7356
  7357
  7358
  7359
  7360
  7361
  7362
  7363
  7364
  7365
  7366
  7367
  7368
  7369
  7370
  7371
  7372
  7373
  7374
  7375
  7376
  7377
  7378
  7379
  7380
  7381
  7382
  7383
  7384
  7385
  7386
  7387
  7388
  7389
  7390
  7391
  7392
  7393
  7394
  7395
  7396
  7397
  7398
  7399
  7400
  7401
  7402
  7403
  7404
  7405
  7406
  7407
  7408
  7409
  7410
  7411
  7412
  7413
  7414
  7415
  7416
  7417
  7418
  7419
  7420
  7421
  7422
  7423
  7424
  7425
  7426
  7427
  7428
  7429
  7430
  7431
  7432
  7433
  7434
  7435
  7436
  7437
  7438
  7439
  7440
  7441
  7442
  7443
  7444
  7445
  7446
  7447
  7448
  7449
  7450
  7451
  7452
  7453
  7454
  7455
  7456
  7457
  7458
  7459
  7460
  7461
  7462
  7463
  7464
  7465
  7466
  7467
  7468
  7469
  7470
  7471
  7472
  7473
  7474
  7475
  7476
  7477
  7478
  7479
  7480
  7481
  7482
  7483
  7484
  7485
  7486
  7487
  7488
  7489
  7490
  7491
  7492
  7493
  7494
  7495
  7496
  7497
  7498
  7499
  7500
  7501
  7502
  7503
  7504
  7505
  7506
  7507
  7508
  7509
  7510
  7511
  7512
  7513
  7514
  7515
  7516
  7517
  7518
  7519
  7520
  7521
  7522
  7523
  7524
  7525
  7526
  7527
  7528
  7529
  7530
  7531
  7532
  7533
  7534
  7535
  7536
  7537
  7538
  7539
  7540
  7541
  7542
  7543
  7544
  7545
  7546
  7547
  7548
  7549
  7550
  7551
  7552
  7553
  7554
  7555
  7556
  7557
  7558
  7559
  7560
  7561
  7562
  7563
  7564
  7565
  7566
  7567
  7568
  7569
  7570
  7571
  7572
  7573
  7574
  7575
  7576
  7577
  7578
  7579
  7580
  7581
  7582
  7583
  7584
  7585
  7586
  7587
  7588
  7589
  7590
  7591
  7592
  7593
  7594
  7595
  7596
  7597
  7598
  7599
  7600
  7601
  7602
  7603
  7604
  7605
  7606
  7607
  7608
  7609
  7610
  7611
  7612
  7613
  7614
  7615
  7616
  7617
  7618
  7619
  7620
  7621
  7622
  7623
  7624
  7625
  7626
  7627
  7628
  7629
  7630
  7631
  7632
  7633
  7634
  7635
  7636
  7637
  7638
  7639
  7640
  7641
  7642
  7643
  7644
  7645
  7646
  7647
  7648
  7649
  7650
  7651
  7652
  7653
  7654
  7655
  7656
  7657
  7658
  7659
  7660
  7661
  7662
  7663
  7664
  7665
  7666
  7667
  7668
  7669
  7670
  7671
  7672
  7673
  7674
  7675
  7676
  7677
  7678
  7679
  7680
  7681
  7682
  7683
  7684
  7685
  7686
  7687
  7688
  7689
  7690
  7691
  7692
  7693
  7694
  7695
  7696
  7697
  7698
  7699
  7700
  7701
  7702
  7703
  7704
  7705
  7706
  7707
  7708
  7709
  7710
  7711
  7712
  7713
  7714
  7715
  7716
  7717
  7718
  7719
  7720
  7721
  7722
  7723
  7724
  7725
  7726
  7727
  7728
  7729
  7730
  7731
  7732
  7733
  7734
  7735
  7736
  7737
  7738
  7739
  7740
  7741
  7742
  7743
  7744
  7745
  7746
  7747
  7748
  7749
  7750
  7751
  7752
  7753
  7754
  7755
  7756
  7757
  7758
  7759
  7760
  7761
  7762
  7763
  7764
  7765
  7766
  7767
  7768
  7769
  7770
  7771
  7772
  7773
  7774
  7775
  7776
  7777
  7778
  7779
  7780
  7781
  7782
  7783
  7784
  7785
  7786
  7787
  7788
  7789
  7790
  7791
  7792
  7793
  7794
  7795
  7796
  7797
  7798
  7799
  7800
  7801
  7802
  7803
  7804
  7805
  7806
  7807
  7808
  7809
  7810
  7811
  7812
  7813
  7814
  7815
  7816
  7817
  7818
  7819
  7820
  7821
  7822
  7823
  7824
  7825
  7826
  7827
  7828
  7829
  7830
  7831
  7832
  7833
  7834
  7835
  7836
  7837
  7838
  7839
  7840
  7841
  7842
  7843
  7844
  7845
  7846
  7847
  7848
  7849
  7850
  7851
  7852
  7853
  7854
  7855
  7856
  7857
  7858
  7859
  7860
  7861
  7862
  7863
  7864
  7865
  7866
  7867
  7868
  7869
  7870
  7871
  7872
  7873
  7874
  7875
  7876
  7877
  7878
  7879
  7880
  7881
  7882
  7883
  7884
  7885
  7886
  7887
  7888
  7889
  7890
  7891
  7892
  7893
  7894
  7895
  7896
  7897
  7898
  7899
  7900
  7901
  7902
  7903
  7904
  7905
  7906
  7907
  7908
  7909
  7910
  7911
  7912
  7913
  7914
  7915
  7916
  7917
  7918
  7919
  7920
  7921
  7922
  7923
  7924
  7925
  7926
  7927
  7928
  7929
  7930
  7931
  7932
  7933
  7934
  7935
  7936
  7937
  7938
  7939
  7940
  7941
  7942
  7943
  7944
  7945
  7946
  7947
  7948
  7949
  7950
  7951
  7952
  7953
  7954
  7955
  7956
  7957
  7958
  7959
  7960
  7961
  7962
  7963
  7964
  7965
  7966
  7967
  7968
  7969
  7970
  7971
  7972
  7973
  7974
  7975
  7976
  7977
  7978
  7979
  7980
  7981
  7982
  7983
  7984
  7985
  7986
  7987
  7988
  7989
  7990
  7991
  7992
  7993
  7994
  7995
  7996
  7997
  7998
  7999
  8000
  8001
  8002
  8003
  8004
  8005
  8006
  8007
  8008
  8009
  8010
  8011
  8012
  8013
  8014
  8015
  8016
  8017
  8018
  8019
  8020
  8021
  8022
  8023
  8024
  8025
  8026
  8027
  8028
  8029
  8030
  8031
  8032
  8033
  8034
  8035
  8036
  8037
  8038
  8039
  8040
  8041
  8042
  8043
  8044
  8045
  8046
  8047
  8048
  8049
  8050
  8051
  8052
  8053
  8054
  8055
  8056
  8057
  8058
  8059
  8060
  8061
  8062
  8063
  8064
  8065
  8066
  8067
  8068
  8069
  8070
  8071
  8072
  8073
  8074
  8075
  8076
  8077
  8078
  8079
  8080
  8081
  8082
  8083
  8084
  8085
  8086
  8087
  8088
  8089
  8090
  8091
  8092
  8093
  8094
  8095
  8096
  8097
  8098
  8099
  8100
  8101
  8102
  8103
  8104
  8105
  8106
  8107
  8108
  8109
  8110
  8111
  8112
  8113
  8114
  8115
  8116
  8117
  8118
  8119
  8120
  8121
  8122
  8123
  8124
  8125
  8126
  8127
  8128
  8129
  8130
  8131
  8132
  8133
  8134
  8135
  8136
  8137
  8138
  8139
  8140
  8141
  8142
  8143
  8144
  8145
  8146
  8147
  8148
  8149
  8150
  8151
  8152
  8153
  8154
  8155
  8156
  8157
  8158
  8159
  8160
  8161
  8162
  8163
  8164
  8165
  8166
  8167
  8168
  8169
  8170
  8171
  8172
  8173
  8174
  8175
  8176
  8177
  8178
  8179
  8180
  8181
  8182
  8183
  8184
  8185
  8186
  8187
  8188
  8189
  8190
  8191
  8192
  8193
  8194
  8195
  8196
  8197
  8198
  8199
  8200
  8201
  8202
  8203
  8204
  8205
  8206
  8207
  8208
  8209
  8210
  8211
  8212
  8213
  8214
  8215
  8216
  8217
  8218
  8219
  8220
  8221
  8222
  8223
  8224
  8225
  8226
  8227
  8228
  8229
  8230
  8231
  8232
  8233
  8234
  8235
  8236
  8237
  8238
  8239
  8240
  8241
  8242
  8243
  8244
  8245
  8246
  8247
  8248
  8249
  8250
  8251
  8252
  8253
  8254
  8255
  8256
  8257
  8258
  8259
  8260
  8261
  8262
  8263
  8264
  8265
  8266
  8267
  8268
  8269
  8270
  8271
  8272
  8273
  8274
  8275
  8276
  8277
  8278
  8279
  8280
  8281
  8282
  8283
  8284
  8285
  8286
  8287
  8288
  8289
  8290
  8291
  8292
  8293
  8294
  8295
  8296
  8297
  8298
  8299
  8300
  8301
  8302
  8303
  8304
  8305
  8306
  8307
  8308
  8309
  8310
  8311
  8312
  8313
  8314
  8315
  8316
  8317
  8318
  8319
  8320
  8321
  8322
  8323
  8324
  8325
  8326
  8327
  8328
  8329
  8330
  8331
  8332
  8333
  8334
  8335
  8336
  8337
  8338
  8339
  8340
  8341
  8342
  8343
  8344
  8345
  8346
  8347
  8348
  8349
  8350
  8351
  8352
  8353
  8354
  8355
  8356
  8357
  8358
  8359
  8360
  8361
  8362
  8363
  8364
  8365
  8366
  8367
  8368
  8369
  8370
  8371
  8372
  8373
  8374
  8375
  8376
  8377
  8378
  8379
  8380
  8381
  8382
  8383
  8384
  8385
  8386
  8387
  8388
  8389
  8390
  8391
  8392
  8393
  8394
  8395
  8396
  8397
  8398
  8399
  8400
  8401
  8402
  8403
  8404
  8405
  8406
  8407
  8408
  8409
  8410
  8411
  8412
  8413
  8414
  8415
  8416
  8417
  8418
  8419
  8420
  8421
  8422
  8423
  8424
  8425
  8426
  8427
  8428
  8429
  8430
  8431
  8432
  8433
  8434
  8435
  8436
  8437
  8438
  8439
  8440
  8441
  8442
  8443
  8444
  8445
  8446
  8447
  8448
  8449
  8450
  8451
  8452
  8453
  8454
  8455
  8456
  8457
  8458
  8459
  8460
  8461
  8462
  8463
  8464
  8465
  8466
  8467
  8468
  8469
  8470
  8471
  8472
  8473
  8474
  8475
  8476
  8477
  8478
  8479
  8480
  8481
  8482
  8483
  8484
  8485
  8486
  8487
  8488
  8489
  8490
  8491
  8492
  8493
  8494
  8495
  8496
  8497
  8498
  8499
  8500
  8501
  8502
  8503
  8504
  8505
  8506
  8507
  8508
  8509
  8510
  8511
  8512
  8513
  8514
  8515
  8516
  8517
  8518
  8519
  8520
  8521
  8522
  8523
  8524
  8525
  8526
  8527
  8528
  8529
  8530
  8531
  8532
  8533
  8534
  8535
  8536
  8537
  8538
  8539
  8540
  8541
  8542
  8543
  8544
  8545
  8546
  8547
  8548
  8549
  8550
  8551
  8552
  8553
  8554
  8555
  8556
  8557
  8558
  8559
  8560
  8561
  8562
  8563
  8564
  8565
  8566
  8567
  8568
  8569
  8570
  8571
  8572
  8573
  8574
  8575
  8576
  8577
  8578
  8579
  8580
  8581
  8582
  8583
  8584
  8585
  8586
  8587
  8588
  8589
  8590
  8591
  8592
  8593
  8594
  8595
  8596
  8597
  8598
  8599
  8600
  8601
  8602
  8603
  8604
  8605
  8606
  8607
  8608
  8609
  8610
  8611
  8612
  8613
  8614
  8615
  8616
  8617
  8618
  8619
  8620
  8621
  8622
  8623
  8624
  8625
  8626
  8627
  8628
  8629
  8630
  8631
  8632
  8633
  8634
  8635
  8636
  8637
  8638
  8639
  8640
  8641
  8642
  8643
  8644
  8645
  8646
  8647
  8648
  8649
  8650
  8651
  8652
  8653
  8654
  8655
  8656
  8657
  8658
  8659
  8660
  8661
  8662
  8663
  8664
  8665
  8666
  8667
  8668
  8669
  8670
  8671
  8672
  8673
  8674
  8675
  8676
  8677
  8678
  8679
  8680
  8681
  8682
  8683
  8684
  8685
  8686
  8687
  8688
  8689
  8690
  8691
  8692
  8693
  8694
  8695
  8696
  8697
  8698
  8699
  8700
  8701
  8702
  8703
  8704
  8705
  8706
  8707
  8708
  8709
  8710
  8711
  8712
  8713
  8714
  8715
  8716
  8717
  8718
  8719
  8720
  8721
  8722
  8723
  8724
  8725
  8726
  8727
  8728
  8729
  8730
  8731
  8732
  8733
  8734
  8735
  8736
  8737
  8738
  8739
  8740
  8741
  8742
  8743
  8744
  8745
  8746
  8747
  8748
  8749
  8750
  8751
  8752
  8753
  8754
  8755
  8756
  8757
  8758
  8759
  8760
  8761
  8762
  8763
  8764
  8765
  8766
  8767
  8768
  8769
  8770
  8771
  8772
  8773
  8774
  8775
  8776
  8777
  8778
  8779
  8780
  8781
  8782
  8783
  8784
  8785
  8786
  8787
  8788
  8789
  8790
  8791
  8792
  8793
  8794
  8795
  8796
  8797
  8798
  8799
  8800
  8801
  8802
  8803
  8804
  8805
  8806
  8807
  8808
  8809
  8810
  8811
  8812
  8813
  8814
  8815
  8816
  8817
  8818
  8819
  8820
  8821
  8822
  8823
  8824
  8825
  8826
  8827
  8828
  8829
  8830
  8831
  8832
  8833
  8834
  8835
  8836
  8837
  8838
  8839
  8840
  8841
  8842
  8843
  8844
  8845
  8846
  8847
  8848
  8849
  8850
  8851
  8852
  8853
  8854
  8855
  8856
  8857
  8858
  8859
  8860
  8861
  8862
  8863
  8864
  8865
  8866
  8867
  8868
  8869
  8870
  8871
  8872
  8873
  8874
  8875
  8876
  8877
  8878
  8879
  8880
  8881
  8882
  8883
  8884
  8885
  8886
  8887
  8888
  8889
  8890
  8891
  8892
  8893
  8894
  8895
  8896
  8897
  8898
  8899
  8900
  8901
  8902
  8903
  8904
  8905
  8906
  8907
  8908
  8909
  8910
  8911
  8912
  8913
  8914
  8915
  8916
  8917
  8918
  8919
  8920
  8921
  8922
  8923
  8924
  8925
  8926
  8927
  8928
  8929
  8930
  8931
  8932
  8933
  8934
  8935
  8936
  8937
  8938
  8939
  8940
  8941
  8942
  8943
  8944
  8945
  8946
  8947
  8948
  8949
  8950
  8951
  8952
  8953
  8954
  8955
  8956
  8957
  8958
  8959
  8960
  8961
  8962
  8963
  8964
  8965
  8966
  8967
  8968
  8969
  8970
  8971
  8972
  8973
  8974
  8975
  8976
  8977
  8978
  8979
  8980
  8981
  8982
  8983
  8984
  8985
  8986
  8987
  8988
  8989
  8990
  8991
  8992
  8993
  8994
  8995
  8996
  8997
  8998
  8999
  9000
  9001
  9002
  9003
  9004
  9005
  9006
  9007
  9008
  9009
  9010
  9011
  9012
  9013
  9014
  9015
  9016
  9017
  9018
  9019
  9020
  9021
  9022
  9023
  9024
  9025
  9026
  9027
  9028
  9029
  9030
  9031
  9032
  9033
  9034
  9035
  9036
  9037
  9038
  9039
  9040
  9041
  9042
  9043
  9044
  9045
  9046
  9047
  9048
  9049
  9050
  9051
  9052
  9053
  9054
  9055
  9056
  9057
  9058
  9059
  9060
  9061
  9062
  9063
  9064
  9065
  9066
  9067
  9068
  9069
  9070
  9071
  9072
  9073
  9074
  9075
  9076
  9077
  9078
  9079
  9080
  9081
  9082
  9083
  9084
  9085
  9086
  9087
  9088
  9089
  9090
  9091
  9092
  9093
  9094
  9095
  9096
  9097
  9098
  9099
  9100
  9101
  9102
  9103
  9104
  9105
  9106
  9107
  9108
  9109
  9110
  9111
  9112
  9113
  9114
  9115
  9116
  9117
  9118
  9119
  9120
  9121
  9122
  9123
  9124
  9125
  9126
  9127
  9128
  9129
  9130
  9131
  9132
  9133
  9134
  9135
  9136
  9137
  9138
  9139
  9140
  9141
  9142
  9143
  9144
  9145
  9146
  9147
  9148
  9149
  9150
  9151
  9152
  9153
  9154
  9155
  9156
  9157
  9158
  9159
  9160
  9161
  9162
  9163
  9164
  9165
  9166
  9167
  9168
  9169
  9170
  9171
  9172
  9173
  9174
  9175
  9176
  9177
  9178
  9179
  9180
  9181
  9182
  9183
  9184
  9185
  9186
  9187
  9188
  9189
  9190
  9191
  9192
  9193
  9194
  9195
  9196
  9197
  9198
  9199
  9200
  9201
  9202
  9203
  9204
  9205
  9206
  9207
  9208
  9209
  9210
  9211
  9212
  9213
  9214
  9215
  9216
  9217
  9218
  9219
  9220
  9221
  9222
  9223
  9224
  9225
  9226
  9227
  9228
  9229
  9230
  9231
  9232
  9233
  9234
  9235
  9236
  9237
  9238
  9239
  9240
  9241
  9242
  9243
  9244
  9245
  9246
  9247
  9248
  9249
  9250
  9251
  9252
  9253
  9254
  9255
  9256
  9257
  9258
  9259
  9260
  9261
  9262
  9263
  9264
  9265
  9266
  9267
  9268
  9269
  9270
  9271
  9272
  9273
  9274
  9275
  9276
  9277
  9278
  9279
  9280
  9281
  9282
  9283
  9284
  9285
  9286
  9287
  9288
  9289
  9290
  9291
  9292
  9293
  9294
  9295
  9296
  9297
  9298
  9299
  9300
  9301
  9302
  9303
  9304
  9305
  9306
  9307
  9308
  9309
  9310
  9311
  9312
  9313
  9314
  9315
  9316
  9317
  9318
  9319
  9320
  9321
  9322
  9323
  9324
  9325
  9326
  9327
  9328
  9329
  9330
  9331
  9332
  9333
  9334
  9335
  9336
  9337
  9338
  9339
  9340
  9341
  9342
  9343
  9344
  9345
  9346
  9347
  9348
  9349
  9350
  9351
  9352
  9353
  9354
  9355
  9356
  9357
  9358
  9359
  9360
  9361
  9362
  9363
  9364
  9365
  9366
  9367
  9368
  9369
  9370
  9371
  9372
  9373
  9374
  9375
  9376
  9377
  9378
  9379
  9380
  9381
  9382
  9383
  9384
  9385
  9386
  9387
  9388
  9389
  9390
  9391
  9392
  9393
  9394
  9395
  9396
  9397
  9398
  9399
  9400
  9401
  9402
  9403
  9404
  9405
  9406
  9407
  9408
  9409
  9410
  9411
  9412
  9413
  9414
  9415
  9416
  9417
  9418
  9419
  9420
  9421
  9422
  9423
  9424
  9425
  9426
  9427
  9428
  9429
  9430
  9431
  9432
  9433
  9434
  9435
  9436
  9437
  9438
  9439
  9440
  9441
  9442
  9443
  9444
  9445
  9446
  9447
  9448
  9449
  9450
  9451
  9452
  9453
  9454
  9455
  9456
  9457
  9458
  9459
  9460
  9461
  9462
  9463
  9464
  9465
  9466
  9467
  9468
  9469
  9470
  9471
  9472
  9473
  9474
  9475
  9476
  9477
  9478
  9479
  9480
  9481
  9482
  9483
  9484
  9485
  9486
  9487
  9488
  9489
  9490
  9491
  9492
  9493
  9494
  9495
  9496
  9497
  9498
  9499
  9500
  9501
  9502
  9503
  9504
  9505
  9506
  9507
  9508
  9509
  9510
  9511
  9512
  9513
  9514
  9515
  9516
  9517
  9518
  9519
  9520
  9521
  9522
  9523
  9524
  9525
  9526
  9527
  9528
  9529
  9530
  9531
  9532
  9533
  9534
  9535
  9536
  9537
  9538
  9539
  9540
  9541
  9542
  9543
  9544
  9545
  9546
  9547
  9548
  9549
  9550
  9551
  9552
  9553
  9554
  9555
  9556
  9557
  9558
  9559
  9560
  9561
  9562
  9563
  9564
  9565
  9566
  9567
  9568
  9569
  9570
  9571
  9572
  9573
  9574
  9575
  9576
  9577
  9578
  9579
  9580
  9581
  9582
  9583
  9584
  9585
  9586
  9587
  9588
  9589
  9590
  9591
  9592
  9593
  9594
  9595
  9596
  9597
  9598
  9599
  9600
  9601
  9602
  9603
  9604
  9605
  9606
  9607
  9608
  9609
  9610
  9611
  9612
  9613
  9614
  9615
  9616
  9617
  9618
  9619
  9620
  9621
  9622
  9623
  9624
  9625
  9626
  9627
  9628
  9629
  9630
  9631
  9632
  9633
  9634
  9635
  9636
  9637
  9638
  9639
  9640
  9641
  9642
  9643
  9644
  9645
  9646
  9647
  9648
  9649
  9650
  9651
  9652
  9653
  9654
  9655
  9656
  9657
  9658
  9659
  9660
  9661
  9662
  9663
  9664
  9665
  9666
  9667
  9668
  9669
  9670
  9671
  9672
  9673
  9674
  9675
  9676
  9677
  9678
  9679
  9680
  9681
  9682
  9683
  9684
  9685
  9686
  9687
  9688
  9689
  9690
  9691
  9692
  9693
  9694
  9695
  9696
  9697
  9698
  9699
  9700
  9701
  9702
  9703
  9704
  9705
  9706
  9707
  9708
  9709
  9710
  9711
  9712
  9713
  9714
  9715
  9716
  9717
  9718
  9719
  9720
  9721
  9722
  9723
  9724
  9725
  9726
  9727
  9728
  9729
  9730
  9731
  9732
  9733
  9734
  9735
  9736
  9737
  9738
  9739
  9740
  9741
  9742
  9743
  9744
  9745
  9746
  9747
  9748
  9749
  9750
  9751
  9752
  9753
  9754
  9755
  9756
  9757
  9758
  9759
  9760
  9761
  9762
  9763
  9764
  9765
  9766
  9767
  9768
  9769
  9770
  9771
  9772
  9773
  9774
  9775
  9776
  9777
  9778
  9779
  9780
  9781
  9782
  9783
  9784
  9785
  9786
  9787
  9788
  9789
  9790
  9791
  9792
  9793
  9794
  9795
  9796
  9797
  9798
  9799
  9800
  9801
  9802
  9803
  9804
  9805
  9806
  9807
  9808
  9809
  9810
  9811
  9812
  9813
  9814
  9815
  9816
  9817
  9818
  9819
  9820
  9821
  9822
  9823
  9824
  9825
  9826
  9827
  9828
  9829
  9830
  9831
  9832
  9833
  9834
  9835
  9836
  9837
  9838
  9839
  9840
  9841
  9842
  9843
  9844
  9845
  9846
  9847
  9848
  9849
  9850
  9851
  9852
  9853
  9854
  9855
  9856
  9857
  9858
  9859
  9860
  9861
  9862
  9863
  9864
  9865
  9866
  9867
  9868
  9869
  9870
  9871
  9872
  9873
  9874
  9875
  9876
  9877
  9878
  9879
  9880
  9881
  9882
  9883
  9884
  9885
  9886
  9887
  9888
  9889
  9890
  9891
  9892
  9893
  9894
  9895
  9896
  9897
  9898
  9899
  9900
  9901
  9902
  9903
  9904
  9905
  9906
  9907
  9908
  9909
  9910
  9911
  9912
  9913
  9914
  9915
  9916
  9917
  9918
  9919
  9920
  9921
  9922
  9923
  9924
  9925
  9926
  9927
  9928
  9929
  9930
  9931
  9932
  9933
  9934
  9935
  9936
  9937
  9938
  9939
  9940
  9941
  9942
  9943
  9944
  9945
  9946
  9947
  9948
  9949
  9950
  9951
  9952
  9953
  9954
  9955
  9956
  9957
  9958
  9959
  9960
  9961
  9962
  9963
  9964
  9965
  9966
  9967
  9968
  9969
  9970
  9971
  9972
  9973
  9974
  9975
  9976
  9977
  9978
  9979
  9980
  9981
  9982
  9983
  9984
  9985
  9986
  9987
  9988
  9989
  9990
  9991
  9992
  9993
  9994
  9995
  9996
  9997
  9998
  9999
 10000
 10001
 10002
 10003
 10004
 10005
 10006
 10007
 10008
 10009
 10010
 10011
 10012
 10013
 10014
 10015
 10016
 10017
 10018
 10019
 10020
 10021
 10022
 10023
 10024
 10025
 10026
 10027
 10028
 10029
 10030
 10031
 10032
 10033
 10034
 10035
 10036
 10037
 10038
 10039
 10040
 10041
 10042
 10043
 10044
 10045
 10046
 10047
 10048
 10049
 10050
 10051
 10052
 10053
 10054
 10055
 10056
 10057
 10058
 10059
 10060
 10061
 10062
 10063
 10064
 10065
 10066
 10067
 10068
 10069
 10070
 10071
 10072
 10073
 10074
 10075
 10076
 10077
 10078
 10079
 10080
 10081
 10082
 10083
 10084
 10085
 10086
 10087
 10088
 10089
 10090
 10091
 10092
 10093
 10094
 10095
 10096
 10097
 10098
 10099
 10100
 10101
 10102
 10103
 10104
 10105
 10106
 10107
 10108
 10109
 10110
 10111
 10112
 10113
 10114
 10115
 10116
 10117
 10118
 10119
 10120
 10121
 10122
 10123
 10124
 10125
 10126
 10127
 10128
 10129
 10130
 10131
 10132
 10133
 10134
 10135
 10136
 10137
 10138
 10139
 10140
 10141
 10142
 10143
 10144
 10145
 10146
 10147
 10148
 10149
 10150
 10151
 10152
 10153
 10154
 10155
 10156
 10157
 10158
 10159
 10160
 10161
 10162
 10163
 10164
 10165
 10166
 10167
 10168
 10169
 10170
 10171
 10172
 10173
 10174
 10175
 10176
 10177
 10178
 10179
 10180
 10181
 10182
 10183
 10184
 10185
 10186
 10187
 10188
 10189
 10190
 10191
 10192
 10193
 10194
 10195
 10196
 10197
 10198
 10199
 10200
 10201
 10202
 10203
 10204
 10205
 10206
 10207
 10208
 10209
 10210
 10211
 10212
 10213
 10214
 10215
 10216
 10217
 10218
 10219
 10220
 10221
 10222
 10223
 10224
 10225
 10226
 10227
 10228
 10229
 10230
 10231
 10232
 10233
 10234
 10235
 10236
 10237
 10238
 10239
 10240
 10241
 10242
 10243
 10244
 10245
 10246
 10247
 10248
 10249
 10250
 10251
 10252
 10253
 10254
 10255
 10256
 10257
 10258
 10259
 10260
 10261
 10262
 10263
 10264
 10265
 10266
 10267
 10268
 10269
 10270
 10271
 10272
 10273
 10274
 10275
 10276
 10277
 10278
 10279
 10280
 10281
 10282
 10283
 10284
 10285
 10286
 10287
 10288
 10289
 10290
 10291
 10292
 10293
 10294
 10295
 10296
 10297
 10298
 10299
 10300
 10301
 10302
 10303
 10304
 10305
 10306
 10307
 10308
 10309
 10310
 10311
 10312
 10313
 10314
 10315
 10316
 10317
 10318
 10319
 10320
 10321
 10322
 10323
 10324
 10325
 10326
 10327
 10328
 10329
 10330
 10331
 10332
 10333
 10334
 10335
 10336
 10337
 10338
 10339
 10340
 10341
 10342
 10343
 10344
 10345
 10346
 10347
 10348
 10349
 10350
 10351
 10352
 10353
 10354
 10355
 10356
 10357
 10358
 10359
 10360
 10361
 10362
 10363
 10364
 10365
 10366
 10367
 10368
 10369
 10370
 10371
 10372
 10373
 10374
 10375
 10376
 10377
 10378
 10379
 10380
 10381
 10382
 10383
 10384
 10385
 10386
 10387
 10388
 10389
 10390
 10391
 10392
 10393
 10394
 10395
 10396
 10397
 10398
 10399
 10400
 10401
 10402
 10403
 10404
 10405
 10406
 10407
 10408
 10409
 10410
 10411
 10412
 10413
 10414
 10415
 10416
 10417
 10418
 10419
 10420
 10421
 10422
 10423
 10424
 10425
 10426
 10427
 10428
 10429
 10430
 10431
 10432
 10433
 10434
 10435
 10436
 10437
 10438
 10439
 10440
 10441
 10442
 10443
 10444
 10445
 10446
 10447
 10448
 10449
 10450
 10451
 10452
 10453
 10454
 10455
 10456
 10457
 10458
 10459
 10460
 10461
 10462
 10463
 10464
 10465
 10466
 10467
 10468
 10469
 10470
 10471
 10472
 10473
 10474
 10475
 10476
 10477
 10478
 10479
 10480
 10481
 10482
 10483
 10484
 10485
 10486
 10487
 10488
 10489
 10490
 10491
 10492
 10493
 10494
 10495
 10496
 10497
 10498
 10499
 10500
 10501
 10502
 10503
 10504
 10505
 10506
 10507
 10508
 10509
 10510
 10511
 10512
 10513
 10514
 10515
 10516
 10517
 10518
 10519
 10520
 10521
 10522
 10523
 10524
 10525
 10526
 10527
 10528
 10529
 10530
 10531
 10532
 10533
 10534
 10535
 10536
 10537
 10538
 10539
 10540
 10541
 10542
 10543
 10544
 10545
 10546
 10547
 10548
 10549
 10550
 10551
 10552
 10553
 10554
 10555
 10556
 10557
 10558
 10559
 10560
 10561
 10562
 10563
 10564
 10565
 10566
 10567
 10568
 10569
 10570
 10571
 10572
 10573
 10574
 10575
 10576
 10577
 10578
 10579
 10580
 10581
 10582
 10583
 10584
 10585
 10586
 10587
 10588
 10589
 10590
 10591
 10592
 10593
 10594
 10595
 10596
 10597
 10598
 10599
 10600
 10601
 10602
 10603
 10604
 10605
 10606
 10607
 10608
 10609
 10610
 10611
 10612
 10613
 10614
 10615
 10616
 10617
 10618
 10619
 10620
 10621
 10622
 10623
 10624
 10625
 10626
 10627
 10628
 10629
 10630
 10631
 10632
 10633
 10634
 10635
 10636
 10637
 10638
 10639
 10640
 10641
 10642
 10643
 10644
 10645
 10646
 10647
 10648
 10649
 10650
 10651
 10652
 10653
 10654
 10655
 10656
 10657
 10658
 10659
 10660
 10661
 10662
 10663
 10664
 10665
 10666
 10667
 10668
 10669
 10670
 10671
 10672
 10673
 10674
 10675
 10676
 10677
 10678
 10679
 10680
 10681
 10682
 10683
 10684
 10685
 10686
 10687
 10688
 10689
 10690
 10691
 10692
 10693
 10694
 10695
 10696
 10697
 10698
 10699
 10700
 10701
 10702
 10703
 10704
 10705
 10706
 10707
 10708
 10709
 10710
 10711
 10712
 10713
 10714
 10715
 10716
 10717
 10718
 10719
 10720
 10721
 10722
 10723
 10724
 10725
 10726
 10727
 10728
 10729
 10730
 10731
 10732
 10733
 10734
 10735
 10736
 10737
 10738
 10739
 10740
 10741
 10742
 10743
 10744
 10745
 10746
 10747
 10748
 10749
 10750
 10751
 10752
 10753
 10754
 10755
 10756
 10757
 10758
 10759
 10760
 10761
 10762
 10763
 10764
 10765
 10766
 10767
 10768
 10769
 10770
 10771
 10772
 10773
 10774
 10775
 10776
 10777
 10778
 10779
 10780
 10781
 10782
 10783
 10784
 10785
 10786
 10787
 10788
 10789
 10790
 10791
 10792
 10793
 10794
 10795
 10796
 10797
 10798
 10799
 10800
 10801
 10802
 10803
 10804
 10805
 10806
 10807
 10808
 10809
 10810
 10811
 10812
 10813
 10814
 10815
 10816
 10817
 10818
 10819
 10820
 10821
 10822
 10823
 10824
 10825
 10826
 10827
 10828
 10829
 10830
 10831
 10832
 10833
 10834
 10835
 10836
 10837
 10838
 10839
 10840
 10841
 10842
 10843
 10844
 10845
 10846
 10847
 10848
 10849
 10850
 10851
 10852
 10853
 10854
 10855
 10856
 10857
 10858
 10859
 10860
 10861
 10862
 10863
 10864
 10865
 10866
 10867
 10868
 10869
 10870
 10871
 10872
 10873
 10874
 10875
 10876
 10877
 10878
 10879
 10880
 10881
 10882
 10883
 10884
 10885
 10886
 10887
 10888
 10889
 10890
 10891
 10892
 10893
 10894
 10895
 10896
 10897
 10898
 10899
 10900
 10901
 10902
 10903
 10904
 10905
 10906
 10907
 10908
 10909
 10910
 10911
 10912
 10913
 10914
 10915
 10916
 10917
 10918
 10919
 10920
 10921
 10922
 10923
 10924
 10925
 10926
 10927
 10928
 10929
 10930
 10931
 10932
 10933
 10934
 10935
 10936
 10937
 10938
 10939
 10940
 10941
 10942
 10943
 10944
 10945
 10946
 10947
 10948
 10949
 10950
 10951
 10952
 10953
 10954
 10955
 10956
 10957
 10958
 10959
 10960
 10961
 10962
 10963
 10964
 10965
 10966
 10967
 10968
 10969
 10970
 10971
 10972
 10973
 10974
 10975
 10976
 10977
 10978
 10979
 10980
 10981
 10982
 10983
 10984
 10985
 10986
 10987
 10988
 10989
 10990
 10991
 10992
 10993
 10994
 10995
 10996
 10997
 10998
 10999
 11000
 11001
 11002
 11003
 11004
 11005
 11006
 11007
 11008
 11009
 11010
 11011
 11012
 11013
 11014
 11015
 11016
 11017
 11018
 11019
 11020
 11021
 11022
 11023
 11024
 11025
 11026
 11027
 11028
 11029
 11030
 11031
 11032
 11033
 11034
 11035
 11036
 11037
 11038
 11039
 11040
 11041
 11042
 11043
 11044
 11045
 11046
 11047
 11048
 11049
 11050
 11051
 11052
 11053
 11054
 11055
 11056
 11057
 11058
 11059
 11060
 11061
 11062
 11063
 11064
 11065
 11066
 11067
 11068
 11069
 11070
 11071
 11072
 11073
 11074
 11075
 11076
 11077
 11078
 11079
 11080
 11081
 11082
 11083
 11084
 11085
 11086
 11087
 11088
 11089
 11090
 11091
 11092
 11093
 11094
 11095
 11096
 11097
 11098
 11099
 11100
 11101
 11102
 11103
 11104
 11105
 11106
 11107
 11108
 11109
 11110
 11111
 11112
 11113
 11114
 11115
 11116
 11117
 11118
 11119
 11120
 11121
 11122
 11123
 11124
 11125
 11126
 11127
 11128
 11129
 11130
 11131
 11132
 11133
 11134
 11135
 11136
 11137
 11138
 11139
 11140
 11141
 11142
 11143
 11144
 11145
 11146
 11147
 11148
 11149
 11150
 11151
 11152
 11153
 11154
 11155
 11156
 11157
 11158
 11159
 11160
 11161
 11162
 11163
 11164
 11165
 11166
 11167
 11168
 11169
 11170
 11171
 11172
 11173
 11174
 11175
 11176
 11177
 11178
 11179
 11180
 11181
 11182
 11183
 11184
 11185
 11186
 11187
 11188
 11189
 11190
 11191
 11192
 11193
 11194
 11195
 11196
 11197
 11198
 11199
 11200
 11201
 11202
 11203
 11204
 11205
 11206
 11207
 11208
 11209
 11210
 11211
 11212
 11213
 11214
 11215
 11216
 11217
 11218
 11219
 11220
 11221
 11222
 11223
 11224
 11225
 11226
 11227
 11228
 11229
 11230
 11231
 11232
 11233
 11234
 11235
 11236
 11237
 11238
 11239
 11240
 11241
 11242
 11243
 11244
 11245
 11246
 11247
 11248
 11249
 11250
 11251
 11252
 11253
 11254
 11255
 11256
 11257
 11258
 11259
 11260
 11261
 11262
 11263
 11264
 11265
 11266
 11267
 11268
 11269
 11270
 11271
 11272
 11273
 11274
 11275
 11276
 11277
 11278
 11279
 11280
 11281
 11282
 11283
 11284
 11285
 11286
 11287
 11288
 11289
 11290
 11291
 11292
 11293
 11294
 11295
 11296
 11297
 11298
 11299
 11300
 11301
 11302
 11303
 11304
 11305
 11306
 11307
 11308
 11309
 11310
 11311
 11312
 11313
 11314
 11315
 11316
 11317
 11318
 11319
 11320
 11321
 11322
 11323
 11324
 11325
 11326
 11327
 11328
 11329
 11330
 11331
 11332
 11333
 11334
 11335
 11336
 11337
 11338
 11339
 11340
 11341
 11342
 11343
 11344
 11345
 11346
 11347
 11348
 11349
 11350
 11351
 11352
 11353
 11354
 11355
 11356
 11357
 11358
 11359
 11360
 11361
 11362
 11363
 11364
 11365
 11366
 11367
 11368
 11369
 11370
 11371
 11372
 11373
 11374
 11375
 11376
 11377
 11378
 11379
 11380
 11381
 11382
 11383
 11384
 11385
 11386
 11387
 11388
 11389
 11390
 11391
 11392
 11393
 11394
 11395
 11396
 11397
 11398
 11399
 11400
 11401
 11402
 11403
 11404
 11405
 11406
 11407
 11408
 11409
 11410
 11411
 11412
 11413
 11414
 11415
 11416
 11417
 11418
 11419
 11420
 11421
 11422
 11423
 11424
 11425
 11426
 11427
 11428
 11429
 11430
 11431
 11432
 11433
 11434
 11435
 11436
 11437
 11438
 11439
 11440
 11441
 11442
 11443
 11444
 11445
 11446
 11447
 11448
 11449
 11450
 11451
 11452
 11453
 11454
 11455
 11456
 11457
 11458
 11459
 11460
 11461
 11462
 11463
 11464
 11465
 11466
 11467
 11468
 11469
 11470
 11471
 11472
 11473
 11474
 11475
 11476
 11477
 11478
 11479
 11480
 11481
 11482
 11483
 11484
 11485
 11486
 11487
 11488
 11489
 11490
 11491
 11492
 11493
 11494
 11495
 11496
 11497
 11498
 11499
 11500
 11501
 11502
 11503
 11504
 11505
 11506
 11507
 11508
 11509
 11510
 11511
 11512
 11513
 11514
 11515
 11516
 11517
 11518
 11519
 11520
 11521
 11522
 11523
 11524
 11525
 11526
 11527
 11528
 11529
 11530
 11531
 11532
 11533
 11534
 11535
 11536
 11537
 11538
 11539
 11540
 11541
 11542
 11543
 11544
 11545
 11546
 11547
 11548
 11549
 11550
 11551
 11552
 11553
 11554
 11555
 11556
 11557
 11558
 11559
 11560
 11561
 11562
 11563
 11564
 11565
 11566
 11567
 11568
 11569
 11570
 11571
 11572
 11573
 11574
 11575
 11576
 11577
 11578
 11579
 11580
 11581
 11582
 11583
 11584
 11585
 11586
 11587
 11588
 11589
 11590
 11591
 11592
 11593
 11594
 11595
 11596
 11597
 11598
 11599
 11600
 11601
 11602
 11603
 11604
 11605
 11606
 11607
 11608
 11609
 11610
 11611
 11612
 11613
 11614
 11615
 11616
 11617
 11618
 11619
 11620
 11621
 11622
 11623
 11624
 11625
 11626
 11627
 11628
 11629
 11630
 11631
 11632
 11633
 11634
 11635
 11636
 11637
 11638
 11639
 11640
 11641
 11642
 11643
 11644
 11645
 11646
 11647
 11648
 11649
 11650
 11651
 11652
 11653
 11654
 11655
 11656
 11657
 11658
 11659
 11660
 11661
 11662
 11663
 11664
 11665
 11666
 11667
 11668
 11669
 11670
 11671
 11672
 11673
 11674
 11675
 11676
 11677
 11678
 11679
 11680
 11681
 11682
 11683
 11684
 11685
 11686
 11687
 11688
 11689
 11690
 11691
 11692
 11693
 11694
 11695
 11696
 11697
 11698
 11699
 11700
 11701
 11702
 11703
 11704
 11705
 11706
 11707
 11708
 11709
 11710
 11711
 11712
 11713
 11714
 11715
 11716
 11717
 11718
 11719
 11720
 11721
 11722
 11723
 11724
 11725
 11726
 11727
 11728
 11729
 11730
 11731
 11732
 11733
 11734
 11735
 11736
 11737
 11738
 11739
 11740
 11741
 11742
 11743
 11744
 11745
 11746
 11747
 11748
 11749
 11750
 11751
 11752
 11753
 11754
 11755
 11756
 11757
 11758
 11759
 11760
 11761
 11762
 11763
 11764
 11765
 11766
 11767
 11768
 11769
 11770
 11771
 11772
 11773
 11774
 11775
 11776
 11777
 11778
 11779
 11780
 11781
 11782
 11783
 11784
 11785
 11786
 11787
 11788
 11789
 11790
 11791
 11792
 11793
 11794
 11795
 11796
 11797
 11798
 11799
 11800
 11801
 11802
 11803
 11804
 11805
 11806
 11807
 11808
 11809
 11810
 11811
 11812
 11813
 11814
 11815
 11816
 11817
 11818
 11819
 11820
 11821
 11822
 11823
 11824
 11825
 11826
 11827
 11828
 11829
 11830
 11831
 11832
 11833
 11834
 11835
 11836
 11837
 11838
 11839
 11840
 11841
 11842
 11843
 11844
 11845
 11846
 11847
 11848
 11849
 11850
 11851
 11852
 11853
 11854
 11855
 11856
 11857
 11858
 11859
 11860
 11861
 11862
 11863
 11864
 11865
 11866
 11867
 11868
 11869
 11870
 11871
 11872
 11873
 11874
 11875
 11876
 11877
 11878
 11879
 11880
 11881
 11882
 11883
 11884
 11885
 11886
 11887
 11888
 11889
 11890
 11891
 11892
 11893
 11894
 11895
 11896
 11897
 11898
 11899
 11900
 11901
 11902
 11903
 11904
 11905
 11906
 11907
 11908
 11909
 11910
 11911
 11912
 11913
 11914
 11915
 11916
 11917
 11918
 11919
 11920
 11921
 11922
 11923
 11924
 11925
 11926
 11927
 11928
 11929
 11930
 11931
 11932
 11933
 11934
 11935
 11936
 11937
 11938
 11939
 11940
 11941
 11942
 11943
 11944
 11945
 11946
 11947
 11948
 11949
 11950
 11951
 11952
 11953
 11954
 11955
 11956
 11957
 11958
 11959
 11960
 11961
 11962
 11963
 11964
 11965
 11966
 11967
 11968
 11969
 11970
 11971
 11972
 11973
 11974
 11975
 11976
 11977
 11978
 11979
 11980
 11981
 11982
 11983
 11984
 11985
 11986
 11987
 11988
 11989
 11990
 11991
 11992
 11993
 11994
 11995
 11996
 11997
 11998
 11999
 12000
 12001
 12002
 12003
 12004
 12005
 12006
 12007
 12008
 12009
 12010
 12011
 12012
 12013
 12014
 12015
 12016
 12017
 12018
 12019
 12020
 12021
 12022
 12023
 12024
 12025
 12026
 12027
 12028
 12029
 12030
 12031
 12032
 12033
 12034
 12035
 12036
 12037
 12038
 12039
 12040
 12041
 12042
 12043
 12044
 12045
 12046
 12047
 12048
 12049
 12050
 12051
 12052
 12053
 12054
 12055
 12056
 12057
 12058
 12059
 12060
 12061
 12062
 12063
 12064
 12065
 12066
 12067
 12068
 12069
 12070
 12071
 12072
 12073
 12074
 12075
 12076
 12077
 12078
 12079
 12080
 12081
 12082
 12083
 12084
 12085
 12086
 12087
 12088
 12089
 12090
 12091
 12092
 12093
 12094
 12095
 12096
 12097
 12098
 12099
 12100
 12101
 12102
 12103
 12104
 12105
 12106
 12107
 12108
 12109
 12110
 12111
 12112
 12113
 12114
 12115
 12116
 12117
 12118
 12119
 12120
 12121
 12122
 12123
 12124
 12125
 12126
 12127
 12128
 12129
 12130
 12131
 12132
 12133
 12134
 12135
 12136
 12137
 12138
 12139
 12140
 12141
 12142
 12143
 12144
 12145
 12146
 12147
 12148
 12149
 12150
 12151
 12152
 12153
 12154
 12155
 12156
 12157
 12158
 12159
 12160
 12161
 12162
 12163
 12164
 12165
 12166
 12167
 12168
 12169
 12170
 12171
 12172
 12173
 12174
 12175
 12176
 12177
 12178
 12179
 12180
 12181
 12182
 12183
 12184
 12185
 12186
 12187
 12188
 12189
 12190
 12191
 12192
 12193
 12194
 12195
 12196
 12197
 12198
 12199
 12200
 12201
 12202
 12203
 12204
 12205
 12206
 12207
 12208
 12209
 12210
 12211
 12212
 12213
 12214
 12215
 12216
 12217
 12218
 12219
 12220
 12221
 12222
 12223
 12224
 12225
 12226
 12227
 12228
 12229
 12230
 12231
 12232
 12233
 12234
 12235
 12236
 12237
 12238
 12239
 12240
 12241
 12242
 12243
 12244
 12245
 12246
 12247
 12248
 12249
 12250
 12251
 12252
 12253
 12254
 12255
 12256
 12257
 12258
 12259
 12260
 12261
 12262
 12263
 12264
 12265
 12266
 12267
 12268
 12269
 12270
 12271
 12272
 12273
 12274
 12275
 12276
 12277
 12278
 12279
 12280
 12281
 12282
 12283
 12284
 12285
 12286
 12287
 12288
 12289
 12290
 12291
 12292
 12293
 12294
 12295
 12296
 12297
 12298
 12299
 12300
 12301
 12302
 12303
 12304
 12305
 12306
 12307
 12308
 12309
 12310
 12311
 12312
 12313
 12314
 12315
 12316
 12317
 12318
 12319
 12320
 12321
 12322
 12323
 12324
 12325
 12326
 12327
 12328
 12329
 12330
 12331
 12332
 12333
 12334
 12335
 12336
 12337
 12338
 12339
 12340
 12341
 12342
 12343
 12344
 12345
 12346
 12347
 12348
 12349
 12350
 12351
 12352
 12353
 12354
 12355
 12356
 12357
 12358
 12359
 12360
 12361
 12362
 12363
 12364
 12365
 12366
 12367
 12368
 12369
 12370
 12371
 12372
 12373
 12374
 12375
 12376
 12377
 12378
 12379
 12380
 12381
 12382
 12383
 12384
 12385
 12386
 12387
 12388
 12389
 12390
 12391
 12392
 12393
 12394
 12395
 12396
 12397
 12398
 12399
 12400
 12401
 12402
 12403
 12404
 12405
 12406
 12407
 12408
 12409
 12410
 12411
 12412
 12413
 12414
 12415
 12416
 12417
 12418
 12419
 12420
 12421
 12422
 12423
 12424
 12425
 12426
 12427
 12428
 12429
 12430
 12431
 12432
 12433
 12434
 12435
 12436
 12437
 12438
 12439
 12440
 12441
 12442
 12443
 12444
 12445
 12446
 12447
 12448
 12449
 12450
 12451
 12452
 12453
 12454
 12455
 12456
 12457
 12458
 12459
 12460
 12461
 12462
 12463
 12464
 12465
 12466
 12467
 12468
 12469
 12470
 12471
 12472
 12473
 12474
 12475
 12476
 12477
 12478
 12479
 12480
 12481
 12482
 12483
 12484
 12485
 12486
 12487
 12488
 12489
 12490
 12491
 12492
 12493
 12494
 12495
 12496
 12497
 12498
 12499
 12500
 12501
 12502
 12503
 12504
 12505
 12506
 12507
 12508
 12509
 12510
 12511
 12512
 12513
 12514
 12515
 12516
 12517
 12518
 12519
 12520
 12521
 12522
 12523
 12524
 12525
 12526
 12527
 12528
 12529
 12530
 12531
 12532
 12533
 12534
 12535
 12536
 12537
 12538
 12539
 12540
 12541
 12542
 12543
 12544
 12545
 12546
 12547
 12548
 12549
 12550
 12551
 12552
 12553
 12554
 12555
 12556
 12557
 12558
 12559
 12560
 12561
 12562
 12563
 12564
 12565
 12566
 12567
 12568
 12569
 12570
 12571
 12572
 12573
 12574
 12575
 12576
 12577
 12578
 12579
 12580
 12581
 12582
 12583
 12584
 12585
 12586
 12587
 12588
 12589
 12590
 12591
 12592
 12593
 12594
 12595
 12596
 12597
 12598
 12599
 12600
 12601
 12602
 12603
 12604
 12605
 12606
 12607
 12608
 12609
 12610
 12611
 12612
 12613
 12614
 12615
 12616
 12617
 12618
 12619
 12620
 12621
 12622
 12623
 12624
 12625
 12626
 12627
 12628
 12629
 12630
 12631
 12632
 12633
 12634
 12635
 12636
 12637
 12638
 12639
 12640
 12641
 12642
 12643
 12644
 12645
 12646
 12647
 12648
 12649
 12650
 12651
 12652
 12653
 12654
 12655
 12656
 12657
 12658
 12659
 12660
 12661
 12662
 12663
 12664
 12665
 12666
 12667
 12668
 12669
 12670
 12671
 12672
 12673
 12674
 12675
 12676
 12677
 12678
 12679
 12680
 12681
 12682
 12683
 12684
 12685
 12686
 12687
 12688
 12689
 12690
 12691
 12692
 12693
 12694
 12695
 12696
 12697
 12698
 12699
 12700
 12701
 12702
 12703
 12704
 12705
 12706
 12707
 12708
 12709
 12710
 12711
 12712
 12713
 12714
 12715
 12716
 12717
 12718
 12719
 12720
 12721
 12722
 12723
 12724
 12725
 12726
 12727
 12728
 12729
 12730
 12731
 12732
 12733
 12734
 12735
 12736
 12737
 12738
 12739
 12740
 12741
 12742
 12743
 12744
 12745
 12746
 12747
 12748
 12749
 12750
 12751
 12752
 12753
 12754
 12755
 12756
 12757
 12758
 12759
 12760
 12761
 12762
 12763
 12764
 12765
 12766
 12767
 12768
 12769
 12770
 12771
 12772
 12773
 12774
 12775
 12776
 12777
 12778
 12779
 12780
 12781
 12782
 12783
 12784
 12785
 12786
 12787
 12788
 12789
 12790
 12791
 12792
 12793
 12794
 12795
 12796
 12797
 12798
 12799
 12800
 12801
 12802
 12803
 12804
 12805
 12806
 12807
 12808
 12809
 12810
 12811
 12812
 12813
 12814
 12815
 12816
 12817
 12818
 12819
 12820
 12821
 12822
 12823
 12824
 12825
 12826
 12827
 12828
 12829
 12830
 12831
 12832
 12833
 12834
 12835
 12836
 12837
 12838
 12839
 12840
 12841
 12842
 12843
 12844
 12845
 12846
 12847
 12848
 12849
 12850
 12851
 12852
 12853
 12854
 12855
 12856
 12857
 12858
 12859
 12860
 12861
 12862
 12863
 12864
 12865
 12866
 12867
 12868
 12869
 12870
 12871
 12872
 12873
 12874
 12875
 12876
 12877
 12878
 12879
 12880
 12881
 12882
 12883
 12884
 12885
 12886
 12887
 12888
 12889
 12890
 12891
 12892
 12893
 12894
 12895
 12896
 12897
 12898
 12899
 12900
 12901
 12902
 12903
 12904
 12905
 12906
 12907
 12908
 12909
 12910
 12911
 12912
 12913
 12914
 12915
 12916
 12917
 12918
 12919
 12920
 12921
 12922
 12923
 12924
 12925
 12926
 12927
 12928
 12929
 12930
 12931
 12932
 12933
 12934
 12935
 12936
 12937
 12938
 12939
 12940
 12941
 12942
 12943
 12944
 12945
 12946
 12947
 12948
 12949
 12950
 12951
 12952
 12953
 12954
 12955
 12956
 12957
 12958
 12959
 12960
 12961
 12962
 12963
 12964
 12965
 12966
 12967
 12968
 12969
 12970
 12971
 12972
 12973
 12974
 12975
 12976
 12977
 12978
 12979
 12980
 12981
 12982
 12983
 12984
 12985
 12986
 12987
 12988
 12989
 12990
 12991
 12992
 12993
 12994
 12995
 12996
 12997
 12998
 12999
 13000
 13001
 13002
 13003
 13004
 13005
 13006
 13007
 13008
 13009
 13010
 13011
 13012
 13013
 13014
 13015
 13016
 13017
 13018
 13019
 13020
 13021
 13022
 13023
 13024
 13025
 13026
 13027
 13028
 13029
 13030
 13031
 13032
 13033
 13034
 13035
 13036
 13037
 13038
 13039
 13040
 13041
 13042
 13043
 13044
 13045
 13046
 13047
 13048
 13049
 13050
 13051
 13052
 13053
 13054
 13055
 13056
 13057
 13058
 13059
 13060
 13061
 13062
 13063
 13064
 13065
 13066
 13067
 13068
 13069
 13070
 13071
 13072
 13073
 13074
 13075
 13076
 13077
 13078
 13079
 13080
 13081
 13082
 13083
 13084
 13085
 13086
 13087
 13088
 13089
 13090
 13091
 13092
 13093
 13094
 13095
 13096
 13097
 13098
 13099
 13100
 13101
 13102
 13103
 13104
 13105
 13106
 13107
 13108
 13109
 13110
 13111
 13112
 13113
 13114
 13115
 13116
 13117
 13118
 13119
 13120
 13121
 13122
 13123
 13124
 13125
 13126
 13127
 13128
 13129
 13130
 13131
 13132
 13133
 13134
 13135
 13136
 13137
 13138
 13139
 13140
 13141
 13142
 13143
 13144
 13145
 13146
 13147
 13148
 13149
 13150
 13151
 13152
 13153
 13154
 13155
 13156
 13157
 13158
 13159
 13160
 13161
 13162
 13163
 13164
 13165
 13166
 13167
 13168
 13169
 13170
 13171
 13172
 13173
 13174
 13175
 13176
 13177
 13178
 13179
 13180
 13181
 13182
 13183
 13184
 13185
 13186
 13187
 13188
 13189
 13190
 13191
 13192
 13193
 13194
 13195
 13196
 13197
 13198
 13199
 13200
 13201
 13202
 13203
 13204
 13205
 13206
 13207
 13208
 13209
 13210
 13211
 13212
 13213
 13214
 13215
 13216
 13217
 13218
 13219
 13220
 13221
 13222
 13223
 13224
 13225
 13226
 13227
 13228
 13229
 13230
 13231
 13232
 13233
 13234
 13235
 13236
 13237
 13238
 13239
 13240
 13241
 13242
 13243
 13244
 13245
 13246
 13247
 13248
 13249
 13250
 13251
 13252
 13253
 13254
 13255
 13256
 13257
 13258
 13259
 13260
 13261
 13262
 13263
 13264
 13265
 13266
 13267
 13268
 13269
 13270
 13271
 13272
 13273
 13274
 13275
 13276
 13277
 13278
 13279
 13280
 13281
 13282
 13283
 13284
 13285
 13286
 13287
 13288
 13289
 13290
 13291
 13292
 13293
 13294
 13295
 13296
 13297
 13298
 13299
 13300
 13301
 13302
 13303
 13304
 13305
 13306
 13307
 13308
 13309
 13310
 13311
 13312
 13313
 13314
 13315
 13316
 13317
 13318
 13319
 13320
 13321
 13322
 13323
 13324
 13325
 13326
 13327
 13328
 13329
 13330
 13331
 13332
 13333
 13334
 13335
 13336
 13337
 13338
 13339
 13340
 13341
 13342
 13343
 13344
 13345
 13346
 13347
 13348
 13349
 13350
 13351
 13352
 13353
 13354
 13355
 13356
 13357
 13358
 13359
 13360
 13361
 13362
 13363
 13364
 13365
 13366
 13367
 13368
 13369
 13370
 13371
 13372
 13373
 13374
 13375
 13376
 13377
 13378
 13379
 13380
 13381
 13382
 13383
 13384
 13385
 13386
 13387
 13388
 13389
 13390
 13391
 13392
 13393
 13394
 13395
 13396
 13397
 13398
 13399
 13400
 13401
 13402
 13403
 13404
 13405
 13406
 13407
 13408
 13409
 13410
 13411
 13412
 13413
 13414
 13415
 13416
 13417
 13418
 13419
 13420
 13421
 13422
 13423
 13424
 13425
 13426
 13427
 13428
 13429
 13430
 13431
 13432
 13433
 13434
 13435
 13436
 13437
 13438
 13439
 13440
 13441
 13442
 13443
 13444
 13445
 13446
 13447
 13448
 13449
 13450
 13451
 13452
 13453
 13454
 13455
 13456
 13457
 13458
 13459
 13460
 13461
 13462
 13463
 13464
 13465
 13466
 13467
 13468
 13469
 13470
 13471
 13472
 13473
 13474
 13475
 13476
 13477
 13478
 13479
 13480
 13481
 13482
 13483
 13484
 13485
 13486
 13487
 13488
 13489
 13490
 13491
 13492
 13493
 13494
 13495
 13496
 13497
 13498
 13499
 13500
 13501
 13502
 13503
 13504
 13505
 13506
 13507
 13508
 13509
 13510
 13511
 13512
 13513
 13514
 13515
 13516
 13517
 13518
 13519
 13520
 13521
 13522
 13523
 13524
 13525
 13526
 13527
 13528
 13529
 13530
 13531
 13532
 13533
 13534
 13535
 13536
 13537
 13538
 13539
 13540
 13541
 13542
 13543
 13544
 13545
 13546
 13547
 13548
 13549
 13550
 13551
 13552
 13553
 13554
 13555
 13556
 13557
 13558
 13559
 13560
 13561
 13562
 13563
 13564
 13565
 13566
 13567
 13568
 13569
 13570
 13571
 13572
 13573
 13574
 13575
 13576
 13577
 13578
 13579
 13580
 13581
 13582
 13583
 13584
 13585
 13586
 13587
 13588
 13589
 13590
 13591
 13592
 13593
 13594
 13595
 13596
 13597
 13598
 13599
 13600
 13601
 13602
 13603
 13604
 13605
 13606
 13607
 13608
 13609
 13610
 13611
 13612
 13613
 13614
 13615
 13616
 13617
 13618
 13619
 13620
 13621
 13622
 13623
 13624
 13625
 13626
 13627
 13628
 13629
 13630
 13631
 13632
 13633
 13634
 13635
 13636
 13637
 13638
 13639
 13640
 13641
 13642
 13643
 13644
 13645
 13646
 13647
 13648
 13649
 13650
 13651
 13652
 13653
 13654
 13655
 13656
 13657
 13658
 13659
 13660
 13661
 13662
 13663
 13664
 13665
 13666
 13667
 13668
 13669
 13670
 13671
 13672
 13673
 13674
 13675
 13676
 13677
 13678
 13679
 13680
 13681
 13682
 13683
 13684
 13685
 13686
 13687
 13688
 13689
 13690
 13691
 13692
 13693
 13694
 13695
 13696
 13697
 13698
 13699
 13700
 13701
 13702
 13703
 13704
 13705
 13706
 13707
 13708
 13709
 13710
 13711
 13712
 13713
 13714
 13715
 13716
 13717
 13718
 13719
 13720
 13721
 13722
 13723
 13724
 13725
 13726
 13727
 13728
 13729
 13730
 13731
 13732
 13733
 13734
 13735
 13736
 13737
 13738
 13739
 13740
 13741
 13742
 13743
 13744
 13745
 13746
 13747
 13748
 13749
 13750
 13751
 13752
 13753
 13754
 13755
 13756
 13757
 13758
 13759
 13760
 13761
 13762
 13763
 13764
 13765
 13766
 13767
 13768
 13769
 13770
 13771
 13772
 13773
 13774
 13775
 13776
 13777
 13778
 13779
 13780
 13781
 13782
 13783
 13784
 13785
 13786
 13787
 13788
 13789
 13790
 13791
 13792
 13793
 13794
 13795
 13796
 13797
 13798
 13799
 13800
 13801
 13802
 13803
 13804
 13805
 13806
 13807
 13808
 13809
 13810
 13811
 13812
 13813
 13814
 13815
 13816
 13817
 13818
 13819
 13820
 13821
 13822
 13823
 13824
 13825
 13826
 13827
 13828
 13829
 13830
 13831
 13832
 13833
 13834
 13835
 13836
 13837
 13838
 13839
 13840
 13841
 13842
 13843
 13844
 13845
 13846
 13847
 13848
 13849
 13850
 13851
 13852
 13853
 13854
 13855
 13856
 13857
 13858
 13859
 13860
 13861
 13862
 13863
 13864
 13865
 13866
 13867
 13868
 13869
 13870
 13871
 13872
 13873
 13874
 13875
 13876
 13877
 13878
 13879
 13880
 13881
 13882
 13883
 13884
 13885
 13886
 13887
 13888
 13889
 13890
 13891
 13892
 13893
 13894
 13895
 13896
 13897
 13898
 13899
 13900
 13901
 13902
 13903
 13904
 13905
 13906
 13907
 13908
 13909
 13910
 13911
 13912
 13913
 13914
 13915
 13916
 13917
 13918
 13919
 13920
 13921
 13922
 13923
 13924
 13925
 13926
 13927
 13928
 13929
 13930
 13931
 13932
 13933
 13934
 13935
 13936
 13937
 13938
 13939
 13940
 13941
 13942
 13943
 13944
 13945
 13946
 13947
 13948
 13949
 13950
 13951
 13952
 13953
 13954
 13955
 13956
 13957
 13958
 13959
 13960
 13961
 13962
 13963
 13964
 13965
 13966
 13967
 13968
 13969
 13970
 13971
 13972
 13973
 13974
 13975
 13976
 13977
 13978
 13979
 13980
 13981
 13982
 13983
 13984
 13985
 13986
 13987
 13988
 13989
 13990
 13991
 13992
 13993
 13994
 13995
 13996
 13997
 13998
 13999
 14000
 14001
 14002
 14003
 14004
 14005
 14006
 14007
 14008
 14009
 14010
 14011
 14012
 14013
 14014
 14015
 14016
 14017
 14018
 14019
 14020
 14021
 14022
 14023
 14024
 14025
 14026
 14027
 14028
 14029
 14030
 14031
 14032
 14033
 14034
 14035
 14036
 14037
 14038
 14039
 14040
 14041
 14042
 14043
 14044
 14045
 14046
 14047
 14048
 14049
 14050
 14051
 14052
 14053
 14054
 14055
 14056
 14057
 14058
 14059
 14060
 14061
 14062
 14063
 14064
 14065
 14066
 14067
 14068
 14069
 14070
 14071
 14072
 14073
 14074
 14075
 14076
 14077
 14078
 14079
 14080
 14081
 14082
 14083
 14084
 14085
 14086
 14087
 14088
 14089
 14090
 14091
 14092
 14093
 14094
 14095
 14096
 14097
 14098
 14099
 14100
 14101
 14102
 14103
 14104
 14105
 14106
 14107
 14108
 14109
 14110
 14111
 14112
 14113
 14114
 14115
 14116
 14117
 14118
 14119
 14120
 14121
 14122
 14123
 14124
 14125
 14126
 14127
 14128
 14129
 14130
 14131
 14132
 14133
 14134
 14135
 14136
 14137
 14138
 14139
 14140
 14141
 14142
 14143
 14144
 14145
 14146
 14147
 14148
 14149
 14150
 14151
 14152
 14153
 14154
 14155
 14156
 14157
 14158
 14159
 14160
 14161
 14162
 14163
 14164
 14165
 14166
 14167
 14168
 14169
 14170
 14171
 14172
 14173
 14174
 14175
 14176
 14177
 14178
 14179
 14180
 14181
 14182
 14183
 14184
 14185
 14186
 14187
 14188
 14189
 14190
 14191
 14192
 14193
 14194
 14195
 14196
 14197
 14198
 14199
 14200
 14201
 14202
 14203
 14204
 14205
 14206
 14207
 14208
 14209
 14210
 14211
 14212
 14213
 14214
 14215
 14216
 14217
 14218
 14219
 14220
 14221
 14222
 14223
 14224
 14225
 14226
 14227
 14228
 14229
 14230
 14231
 14232
 14233
 14234
 14235
 14236
 14237
 14238
 14239
 14240
 14241
 14242
 14243
 14244
 14245
 14246
 14247
 14248
 14249
 14250
 14251
 14252
 14253
 14254
 14255
 14256
 14257
 14258
 14259
 14260
 14261
 14262
 14263
 14264
 14265
 14266
 14267
 14268
 14269
 14270
 14271
 14272
 14273
 14274
 14275
 14276
 14277
 14278
 14279
 14280
 14281
 14282
 14283
 14284
 14285
 14286
 14287
 14288
 14289
 14290
 14291
 14292
 14293
 14294
 14295
 14296
 14297
 14298
 14299
 14300
 14301
 14302
 14303
 14304
 14305
 14306
 14307
 14308
 14309
 14310
 14311
 14312
 14313
 14314
 14315
 14316
 14317
 14318
 14319
 14320
 14321
 14322
 14323
 14324
 14325
 14326
 14327
 14328
 14329
 14330
 14331
 14332
 14333
 14334
 14335
 14336
 14337
 14338
 14339
 14340
 14341
 14342
 14343
 14344
 14345
 14346
 14347
 14348
 14349
 14350
 14351
 14352
 14353
 14354
 14355
 14356
 14357
 14358
 14359
 14360
 14361
 14362
 14363
 14364
 14365
 14366
 14367
 14368
 14369
 14370
 14371
 14372
 14373
 14374
 14375
 14376
 14377
 14378
 14379
 14380
 14381
 14382
 14383
 14384
 14385
 14386
 14387
 14388
 14389
 14390
 14391
 14392
 14393
 14394
 14395
 14396
 14397
 14398
 14399
 14400
 14401
 14402
 14403
 14404
 14405
 14406
 14407
 14408
 14409
 14410
 14411
 14412
 14413
 14414
 14415
 14416
 14417
 14418
 14419
 14420
 14421
 14422
 14423
 14424
 14425
 14426
 14427
 14428
 14429
 14430
 14431
 14432
 14433
 14434
 14435
 14436
 14437
 14438
 14439
 14440
 14441
 14442
 14443
 14444
 14445
 14446
 14447
 14448
 14449
 14450
 14451
 14452
 14453
 14454
 14455
 14456
 14457
 14458
 14459
 14460
 14461
 14462
 14463
 14464
 14465
 14466
 14467
 14468
 14469
 14470
 14471
 14472
 14473
 14474
 14475
 14476
 14477
 14478
 14479
 14480
 14481
 14482
 14483
 14484
 14485
 14486
 14487
 14488
 14489
 14490
 14491
 14492
 14493
 14494
 14495
 14496
 14497
 14498
 14499
 14500
 14501
 14502
 14503
 14504
 14505
 14506
 14507
 14508
 14509
 14510
 14511
 14512
 14513
 14514
 14515
 14516
 14517
 14518
 14519
 14520
 14521
 14522
 14523
 14524
 14525
 14526
 14527
 14528
 14529
 14530
 14531
 14532
 14533
 14534
 14535
 14536
 14537
 14538
 14539
 14540
 14541
 14542
 14543
 14544
 14545
 14546
 14547
 14548
 14549
 14550
 14551
 14552
 14553
 14554
 14555
 14556
 14557
 14558
 14559
 14560
 14561
 14562
 14563
 14564
 14565
 14566
 14567
 14568
 14569
 14570
 14571
 14572
 14573
 14574
 14575
 14576
 14577
 14578
 14579
 14580
 14581
 14582
 14583
 14584
 14585
 14586
 14587
 14588
 14589
 14590
 14591
 14592
 14593
 14594
 14595
 14596
 14597
 14598
 14599
 14600
 14601
 14602
 14603
 14604
 14605
 14606
 14607
 14608
 14609
 14610
 14611
 14612
 14613
 14614
 14615
 14616
 14617
 14618
 14619
 14620
 14621
 14622
 14623
 14624
 14625
 14626
 14627
 14628
 14629
 14630
 14631
 14632
 14633
 14634
 14635
 14636
 14637
 14638
 14639
 14640
 14641
 14642
 14643
 14644
 14645
 14646
 14647
 14648
 14649
 14650
 14651
 14652
 14653
 14654
 14655
 14656
 14657
 14658
 14659
 14660
 14661
 14662
 14663
 14664
 14665
 14666
 14667
 14668
 14669
 14670
 14671
 14672
 14673
 14674
 14675
 14676
 14677
 14678
 14679
 14680
 14681
 14682
 14683
 14684
 14685
 14686
 14687
 14688
 14689
 14690
 14691
 14692
 14693
 14694
 14695
 14696
 14697
 14698
 14699
 14700
 14701
 14702
 14703
 14704
 14705
 14706
 14707
 14708
 14709
 14710
 14711
 14712
 14713
 14714
 14715
 14716
 14717
 14718
 14719
 14720
 14721
 14722
 14723
 14724
 14725
 14726
 14727
 14728
 14729
 14730
 14731
 14732
 14733
 14734
 14735
 14736
 14737
 14738
 14739
 14740
 14741
 14742
 14743
 14744
 14745
 14746
 14747
 14748
 14749
 14750
 14751
 14752
 14753
 14754
 14755
 14756
 14757
 14758
 14759
 14760
 14761
 14762
 14763
 14764
 14765
 14766
 14767
 14768
 14769
 14770
 14771
 14772
 14773
 14774
 14775
 14776
 14777
 14778
 14779
 14780
 14781
 14782
 14783
 14784
 14785
 14786
 14787
 14788
 14789
 14790
 14791
 14792
 14793
 14794
 14795
 14796
 14797
 14798
 14799
 14800
 14801
 14802
 14803
 14804
 14805
 14806
 14807
 14808
 14809
 14810
 14811
 14812
 14813
 14814
 14815
 14816
 14817
 14818
 14819
 14820
 14821
 14822
 14823
 14824
 14825
 14826
 14827
 14828
 14829
 14830
 14831
 14832
 14833
 14834
 14835
 14836
 14837
 14838
 14839
 14840
 14841
 14842
 14843
 14844
 14845
 14846
 14847
 14848
 14849
 14850
 14851
 14852
 14853
 14854
 14855
 14856
 14857
 14858
 14859
 14860
 14861
 14862
 14863
 14864
 14865
 14866
 14867
 14868
 14869
 14870
 14871
 14872
 14873
 14874
 14875
 14876
 14877
 14878
 14879
 14880
 14881
 14882
 14883
 14884
 14885
 14886
 14887
 14888
 14889
 14890
 14891
 14892
 14893
 14894
 14895
 14896
 14897
 14898
 14899
 14900
 14901
 14902
 14903
 14904
 14905
 14906
 14907
 14908
 14909
 14910
 14911
 14912
 14913
 14914
 14915
 14916
 14917
 14918
 14919
 14920
 14921
 14922
 14923
 14924
 14925
 14926
 14927
 14928
 14929
 14930
 14931
 14932
 14933
 14934
 14935
 14936
 14937
 14938
 14939
 14940
 14941
 14942
 14943
 14944
 14945
 14946
 14947
 14948
 14949
 14950
 14951
 14952
 14953
 14954
 14955
 14956
 14957
 14958
 14959
 14960
 14961
 14962
 14963
 14964
 14965
 14966
 14967
 14968
 14969
 14970
 14971
 14972
 14973
 14974
 14975
 14976
 14977
 14978
 14979
 14980
 14981
 14982
 14983
 14984
 14985
 14986
 14987
 14988
 14989
 14990
 14991
 14992
 14993
 14994
 14995
 14996
 14997
 14998
 14999
 15000
 15001
 15002
 15003
 15004
 15005
 15006
 15007
 15008
 15009
 15010
 15011
 15012
 15013
 15014
 15015
 15016
 15017
 15018
 15019
 15020
 15021
 15022
 15023
 15024
 15025
 15026
 15027
 15028
 15029
 15030
 15031
 15032
 15033
 15034
 15035
 15036
 15037
 15038
 15039
 15040
 15041
 15042
 15043
 15044
 15045
 15046
 15047
 15048
 15049
 15050
 15051
 15052
 15053
 15054
 15055
 15056
 15057
 15058
 15059
 15060
 15061
 15062
 15063
 15064
 15065
 15066
 15067
 15068
 15069
 15070
 15071
 15072
 15073
 15074
 15075
 15076
 15077
 15078
 15079
 15080
 15081
 15082
 15083
 15084
 15085
 15086
 15087
 15088
 15089
 15090
 15091
 15092
 15093
 15094
 15095
 15096
 15097
 15098
 15099
 15100
 15101
 15102
 15103
 15104
 15105
 15106
 15107
 15108
 15109
 15110
 15111
 15112
 15113
 15114
 15115
 15116
 15117
 15118
 15119
 15120
 15121
 15122
 15123
 15124
 15125
 15126
 15127
 15128
 15129
 15130
 15131
 15132
 15133
 15134
 15135
 15136
 15137
 15138
 15139
 15140
 15141
 15142
 15143
 15144
 15145
 15146
 15147
 15148
 15149
 15150
 15151
 15152
 15153
 15154
 15155
 15156
 15157
 15158
 15159
 15160
 15161
 15162
 15163
 15164
 15165
 15166
 15167
 15168
 15169
 15170
 15171
 15172
 15173
 15174
 15175
 15176
 15177
 15178
 15179
 15180
 15181
 15182
 15183
 15184
 15185
 15186
 15187
 15188
 15189
 15190
 15191
 15192
 15193
 15194
 15195
 15196
 15197
 15198
 15199
 15200
 15201
 15202
 15203
 15204
 15205
 15206
 15207
 15208
 15209
 15210
 15211
 15212
 15213
 15214
 15215
 15216
 15217
 15218
 15219
 15220
 15221
 15222
 15223
 15224
 15225
 15226
 15227
 15228
 15229
 15230
 15231
 15232
 15233
 15234
 15235
 15236
 15237
 15238
 15239
 15240
 15241
 15242
 15243
 15244
 15245
 15246
 15247
 15248
 15249
 15250
 15251
 15252
 15253
 15254
 15255
 15256
 15257
 15258
 15259
 15260
 15261
 15262
 15263
 15264
 15265
 15266
 15267
 15268
 15269
 15270
 15271
 15272
 15273
 15274
 15275
 15276
 15277
 15278
 15279
 15280
 15281
 15282
 15283
 15284
 15285
 15286
 15287
 15288
 15289
 15290
 15291
 15292
 15293
 15294
 15295
 15296
 15297
 15298
 15299
 15300
 15301
 15302
 15303
 15304
 15305
 15306
 15307
 15308
 15309
 15310
 15311
 15312
 15313
 15314
 15315
 15316
 15317
 15318
 15319
 15320
 15321
 15322
 15323
 15324
 15325
 15326
 15327
 15328
 15329
 15330
 15331
 15332
 15333
 15334
 15335
 15336
 15337
 15338
 15339
 15340
 15341
 15342
 15343
 15344
 15345
 15346
 15347
 15348
 15349
 15350
 15351
 15352
 15353
 15354
 15355
 15356
 15357
 15358
 15359
 15360
 15361
 15362
 15363
 15364
 15365
 15366
 15367
 15368
 15369
 15370
 15371
 15372
 15373
 15374
 15375
 15376
 15377
 15378
 15379
 15380
 15381
 15382
 15383
 15384
 15385
 15386
 15387
 15388
 15389
 15390
 15391
 15392
 15393
 15394
 15395
 15396
 15397
 15398
 15399
 15400
 15401
 15402
 15403
 15404
 15405
 15406
 15407
 15408
 15409
 15410
 15411
 15412
 15413
 15414
 15415
 15416
 15417
 15418
 15419
 15420
 15421
 15422
 15423
 15424
 15425
 15426
 15427
 15428
 15429
 15430
 15431
 15432
 15433
 15434
 15435
 15436
 15437
 15438
 15439
 15440
 15441
 15442
 15443
 15444
 15445
 15446
 15447
 15448
 15449
 15450
 15451
 15452
 15453
 15454
 15455
 15456
 15457
 15458
 15459
 15460
 15461
 15462
 15463
 15464
 15465
 15466
 15467
 15468
 15469
 15470
 15471
 15472
 15473
 15474
 15475
 15476
 15477
 15478
 15479
 15480
 15481
 15482
 15483
 15484
 15485
 15486
 15487
 15488
 15489
 15490
 15491
 15492
 15493
 15494
 15495
 15496
 15497
 15498
 15499
 15500
 15501
 15502
 15503
 15504
 15505
 15506
 15507
 15508
 15509
 15510
 15511
 15512
 15513
 15514
 15515
 15516
 15517
 15518
 15519
 15520
 15521
 15522
 15523
 15524
 15525
 15526
 15527
 15528
 15529
 15530
 15531
 15532
 15533
 15534
 15535
 15536
 15537
 15538
 15539
 15540
 15541
 15542
 15543
 15544
 15545
 15546
 15547
 15548
 15549
 15550
 15551
 15552
 15553
 15554
 15555
 15556
 15557
 15558
 15559
 15560
 15561
 15562
 15563
 15564
 15565
 15566
 15567
 15568
 15569
 15570
 15571
 15572
 15573
 15574
 15575
 15576
 15577
 15578
 15579
 15580
 15581
 15582
 15583
 15584
 15585
 15586
 15587
 15588
 15589
 15590
 15591
 15592
 15593
 15594
 15595
 15596
 15597
 15598
 15599
 15600
 15601
 15602
 15603
 15604
 15605
 15606
 15607
 15608
 15609
 15610
 15611
 15612
 15613
 15614
 15615
 15616
 15617
 15618
 15619
 15620
 15621
 15622
 15623
 15624
 15625
 15626
 15627
 15628
 15629
 15630
 15631
 15632
 15633
 15634
 15635
 15636
 15637
 15638
 15639
 15640
 15641
 15642
 15643
 15644
 15645
 15646
 15647
 15648
 15649
 15650
 15651
 15652
 15653
 15654
 15655
 15656
 15657
 15658
 15659
 15660
 15661
 15662
 15663
 15664
 15665
 15666
 15667
 15668
 15669
 15670
 15671
 15672
 15673
 15674
 15675
 15676
 15677
 15678
 15679
 15680
 15681
 15682
 15683
 15684
 15685
 15686
 15687
 15688
 15689
 15690
 15691
 15692
 15693
 15694
 15695
 15696
 15697
 15698
 15699
 15700
 15701
 15702
 15703
 15704
 15705
 15706
 15707
 15708
 15709
 15710
 15711
 15712
 15713
 15714
 15715
 15716
 15717
 15718
 15719
 15720
 15721
 15722
 15723
 15724
 15725
 15726
 15727
 15728
 15729
 15730
 15731
 15732
 15733
 15734
 15735
 15736
 15737
 15738
 15739
 15740
 15741
 15742
 15743
 15744
 15745
 15746
 15747
 15748
 15749
 15750
 15751
 15752
 15753
 15754
 15755
 15756
 15757
 15758
 15759
 15760
 15761
 15762
 15763
 15764
 15765
 15766
 15767
 15768
 15769
 15770
 15771
 15772
 15773
 15774
 15775
 15776
 15777
 15778
 15779
 15780
 15781
 15782
 15783
 15784
 15785
 15786
 15787
 15788
 15789
 15790
 15791
 15792
 15793
 15794
 15795
 15796
 15797
 15798
 15799
 15800
 15801
 15802
 15803
 15804
 15805
 15806
 15807
 15808
 15809
 15810
 15811
 15812
 15813
 15814
 15815
 15816
 15817
 15818
 15819
 15820
 15821
 15822
 15823
 15824
 15825
 15826
 15827
 15828
 15829
 15830
 15831
 15832
 15833
 15834
 15835
 15836
 15837
 15838
 15839
 15840
 15841
 15842
 15843
 15844
 15845
 15846
 15847
 15848
 15849
 15850
 15851
 15852
 15853
 15854
 15855
 15856
 15857
 15858
 15859
 15860
 15861
 15862
 15863
 15864
 15865
 15866
 15867
 15868
 15869
 15870
 15871
 15872
 15873
 15874
 15875
 15876
 15877
 15878
 15879
 15880
 15881
 15882
 15883
 15884
 15885
 15886
 15887
 15888
 15889
 15890
 15891
 15892
 15893
 15894
 15895
 15896
 15897
 15898
 15899
 15900
 15901
 15902
 15903
 15904
 15905
 15906
 15907
 15908
 15909
 15910
 15911
 15912
 15913
 15914
 15915
 15916
 15917
 15918
 15919
 15920
 15921
 15922
 15923
 15924
 15925
 15926
 15927
 15928
 15929
 15930
 15931
 15932
 15933
 15934
 15935
 15936
 15937
 15938
 15939
 15940
 15941
 15942
 15943
 15944
 15945
 15946
 15947
 15948
 15949
 15950
 15951
 15952
 15953
 15954
 15955
 15956
 15957
 15958
 15959
 15960
 15961
 15962
 15963
 15964
 15965
 15966
 15967
 15968
 15969
 15970
 15971
 15972
 15973
 15974
 15975
 15976
 15977
 15978
 15979
 15980
 15981
 15982
 15983
 15984
 15985
 15986
 15987
 15988
 15989
 15990
 15991
 15992
 15993
 15994
 15995
 15996
 15997
 15998
 15999
 16000
 16001
 16002
 16003
 16004
 16005
 16006
 16007
 16008
 16009
 16010
 16011
 16012
 16013
 16014
 16015
 16016
 16017
 16018
 16019
 16020
 16021
 16022
 16023
 16024
 16025
 16026
 16027
 16028
 16029
 16030
 16031
 16032
 16033
 16034
 16035
 16036
 16037
 16038
 16039
 16040
 16041
 16042
 16043
 16044
 16045
 16046
 16047
 16048
 16049
 16050
 16051
 16052
 16053
 16054
 16055
 16056
 16057
 16058
 16059
 16060
 16061
 16062
 16063
 16064
 16065
 16066
 16067
 16068
 16069
 16070
 16071
 16072
 16073
 16074
 16075
 16076
 16077
 16078
 16079
 16080
 16081
 16082
 16083
 16084
 16085
 16086
 16087
 16088
 16089
 16090
 16091
 16092
 16093
 16094
 16095
 16096
 16097
 16098
 16099
 16100
 16101
 16102
 16103
 16104
 16105
 16106
 16107
 16108
 16109
 16110
 16111
 16112
 16113
 16114
 16115
 16116
 16117
 16118
 16119
 16120
 16121
 16122
 16123
 16124
 16125
 16126
 16127
 16128
 16129
 16130
 16131
 16132
 16133
 16134
 16135
 16136
 16137
 16138
 16139
 16140
 16141
 16142
 16143
 16144
 16145
 16146
 16147
 16148
 16149
 16150
 16151
 16152
 16153
 16154
 16155
 16156
 16157
 16158
 16159
 16160
 16161
 16162
 16163
 16164
 16165
 16166
 16167
 16168
 16169
 16170
 16171
 16172
 16173
 16174
 16175
 16176
 16177
 16178
 16179
 16180
 16181
 16182
 16183
 16184
 16185
 16186
 16187
 16188
 16189
 16190
 16191
 16192
 16193
 16194
 16195
 16196
 16197
 16198
 16199
 16200
 16201
 16202
 16203
 16204
 16205
 16206
 16207
 16208
 16209
 16210
 16211
 16212
 16213
 16214
 16215
 16216
 16217
 16218
 16219
 16220
 16221
 16222
 16223
 16224
 16225
 16226
 16227
 16228
 16229
 16230
 16231
 16232
 16233
 16234
 16235
 16236
 16237
 16238
 16239
 16240
 16241
 16242
 16243
 16244
 16245
 16246
 16247
 16248
 16249
 16250
 16251
 16252
 16253
 16254
 16255
 16256
 16257
 16258
 16259
 16260
 16261
 16262
 16263
 16264
 16265
 16266
 16267
 16268
 16269
 16270
 16271
 16272
 16273
 16274
 16275
 16276
 16277
 16278
 16279
 16280
 16281
 16282
 16283
 16284
 16285
 16286
 16287
 16288
 16289
 16290
 16291
 16292
 16293
 16294
 16295
 16296
 16297
 16298
 16299
 16300
 16301
 16302
 16303
 16304
 16305
 16306
 16307
 16308
 16309
 16310
 16311
 16312
 16313
 16314
 16315
 16316
 16317
 16318
 16319
 16320
 16321
 16322
 16323
 16324
 16325
 16326
 16327
 16328
 16329
 16330
 16331
 16332
 16333
 16334
 16335
 16336
 16337
 16338
 16339
 16340
 16341
 16342
 16343
 16344
 16345
 16346
 16347
 16348
 16349
 16350
 16351
 16352
 16353
 16354
 16355
 16356
 16357
 16358
 16359
 16360
 16361
 16362
 16363
 16364
 16365
 16366
 16367
 16368
 16369
 16370
 16371
 16372
 16373
 16374
 16375
 16376
 16377
 16378
 16379
 16380
 16381
 16382
 16383
 16384
 16385
 16386
 16387
 16388
 16389
 16390
 16391
 16392
 16393
 16394
 16395
 16396
 16397
 16398
 16399
 16400
 16401
 16402
 16403
 16404
 16405
 16406
 16407
 16408
 16409
 16410
 16411
 16412
 16413
 16414
 16415
 16416
 16417
 16418
 16419
 16420
 16421
 16422
 16423
 16424
 16425
 16426
 16427
 16428
 16429
 16430
 16431
 16432
 16433
 16434
 16435
 16436
 16437
 16438
 16439
 16440
 16441
 16442
 16443
 16444
 16445
 16446
 16447
 16448
 16449
 16450
 16451
 16452
 16453
 16454
 16455
 16456
 16457
 16458
 16459
 16460
 16461
 16462
 16463
 16464
 16465
 16466
 16467
 16468
 16469
 16470
 16471
 16472
 16473
 16474
 16475
 16476
 16477
 16478
 16479
 16480
 16481
 16482
 16483
 16484
 16485
 16486
 16487
 16488
 16489
 16490
 16491
 16492
 16493
 16494
 16495
 16496
 16497
 16498
 16499
 16500
 16501
 16502
 16503
 16504
 16505
 16506
 16507
 16508
 16509
 16510
 16511
 16512
 16513
 16514
 16515
 16516
 16517
 16518
 16519
 16520
 16521
 16522
 16523
 16524
 16525
 16526
 16527
 16528
 16529
 16530
 16531
 16532
 16533
 16534
 16535
 16536
 16537
 16538
 16539
 16540
 16541
 16542
 16543
 16544
 16545
 16546
 16547
 16548
 16549
 16550
 16551
 16552
 16553
 16554
 16555
 16556
 16557
 16558
 16559
 16560
 16561
 16562
 16563
 16564
 16565
 16566
 16567
 16568
 16569
 16570
 16571
 16572
 16573
 16574
 16575
 16576
 16577
 16578
 16579
 16580
 16581
 16582
 16583
 16584
 16585
 16586
 16587
 16588
 16589
 16590
 16591
 16592
 16593
 16594
 16595
 16596
 16597
 16598
 16599
 16600
 16601
 16602
 16603
 16604
 16605
 16606
 16607
 16608
 16609
 16610
 16611
 16612
 16613
 16614
 16615
 16616
 16617
 16618
 16619
 16620
 16621
 16622
 16623
 16624
 16625
 16626
 16627
 16628
 16629
 16630
 16631
 16632
 16633
 16634
 16635
 16636
 16637
 16638
 16639
 16640
 16641
 16642
 16643
 16644
 16645
 16646
 16647
 16648
 16649
 16650
 16651
 16652
 16653
 16654
 16655
 16656
 16657
 16658
 16659
 16660
 16661
 16662
 16663
 16664
 16665
 16666
 16667
 16668
 16669
 16670
 16671
 16672
 16673
 16674
 16675
 16676
 16677
 16678
 16679
 16680
 16681
 16682
 16683
 16684
 16685
 16686
 16687
 16688
 16689
 16690
 16691
 16692
 16693
 16694
 16695
 16696
 16697
 16698
 16699
 16700
 16701
 16702
 16703
 16704
 16705
 16706
 16707
 16708
 16709
 16710
 16711
 16712
 16713
 16714
 16715
 16716
 16717
 16718
 16719
 16720
 16721
 16722
 16723
 16724
 16725
 16726
 16727
 16728
 16729
 16730
 16731
 16732
 16733
 16734
 16735
 16736
 16737
 16738
 16739
 16740
 16741
 16742
 16743
 16744
 16745
 16746
 16747
 16748
 16749
 16750
 16751
 16752
 16753
 16754
 16755
 16756
 16757
 16758
 16759
 16760
 16761
 16762
 16763
 16764
 16765
 16766
 16767
 16768
 16769
 16770
 16771
 16772
 16773
 16774
 16775
 16776
 16777
 16778
 16779
 16780
 16781
 16782
 16783
 16784
 16785
 16786
 16787
 16788
 16789
 16790
 16791
 16792
 16793
 16794
 16795
 16796
 16797
 16798
 16799
 16800
 16801
 16802
 16803
 16804
 16805
 16806
 16807
 16808
 16809
 16810
 16811
 16812
 16813
 16814
 16815
 16816
 16817
 16818
 16819
 16820
 16821
 16822
 16823
 16824
 16825
 16826
 16827
 16828
 16829
 16830
 16831
 16832
 16833
 16834
 16835
 16836
 16837
 16838
 16839
 16840
 16841
 16842
 16843
 16844
 16845
 16846
 16847
 16848
 16849
 16850
 16851
 16852
 16853
 16854
 16855
 16856
 16857
 16858
 16859
 16860
 16861
 16862
 16863
 16864
 16865
 16866
 16867
 16868
 16869
 16870
 16871
 16872
 16873
 16874
 16875
 16876
 16877
 16878
 16879
 16880
 16881
 16882
 16883
 16884
 16885
 16886
 16887
 16888
 16889
 16890
 16891
 16892
 16893
 16894
 16895
 16896
 16897
 16898
 16899
 16900
 16901
 16902
 16903
 16904
 16905
 16906
 16907
 16908
 16909
 16910
 16911
 16912
 16913
 16914
 16915
 16916
 16917
 16918
 16919
 16920
 16921
 16922
 16923
 16924
 16925
 16926
 16927
 16928
 16929
 16930
 16931
 16932
 16933
 16934
 16935
 16936
 16937
 16938
 16939
 16940
 16941
 16942
 16943
 16944
 16945
 16946
 16947
 16948
 16949
 16950
 16951
 16952
 16953
 16954
 16955
 16956
 16957
 16958
 16959
 16960
 16961
 16962
 16963
 16964
 16965
 16966
 16967
 16968
 16969
 16970
 16971
 16972
 16973
 16974
 16975
 16976
 16977
 16978
 16979
 16980
 16981
 16982
 16983
 16984
 16985
 16986
 16987
 16988
 16989
 16990
 16991
 16992
 16993
 16994
 16995
 16996
 16997
 16998
 16999
 17000
 17001
 17002
 17003
 17004
 17005
 17006
 17007
 17008
 17009
 17010
 17011
 17012
 17013
 17014
 17015
 17016
 17017
 17018
 17019
 17020
 17021
 17022
 17023
 17024
 17025
 17026
 17027
 17028
 17029
 17030
 17031
 17032
 17033
 17034
 17035
 17036
 17037
 17038
 17039
 17040
 17041
 17042
 17043
 17044
 17045
 17046
 17047
 17048
 17049
 17050
 17051
 17052
 17053
 17054
 17055
 17056
 17057
 17058
 17059
 17060
 17061
 17062
 17063
 17064
 17065
 17066
 17067
 17068
 17069
 17070
 17071
 17072
 17073
 17074
 17075
 17076
 17077
 17078
 17079
 17080
 17081
 17082
 17083
 17084
 17085
 17086
 17087
 17088
 17089
 17090
 17091
 17092
 17093
 17094
 17095
 17096
 17097
 17098
 17099
 17100
 17101
 17102
 17103
 17104
 17105
 17106
 17107
 17108
 17109
 17110
 17111
 17112
 17113
 17114
 17115
 17116
 17117
 17118
 17119
 17120
 17121
 17122
 17123
 17124
 17125
 17126
 17127
 17128
 17129
 17130
 17131
 17132
 17133
 17134
 17135
 17136
 17137
 17138
 17139
 17140
 17141
 17142
 17143
 17144
 17145
 17146
 17147
 17148
 17149
 17150
 17151
 17152
 17153
 17154
 17155
 17156
 17157
 17158
 17159
 17160
 17161
 17162
 17163
 17164
 17165
 17166
 17167
 17168
 17169
 17170
 17171
 17172
 17173
 17174
 17175
 17176
 17177
 17178
 17179
 17180
 17181
 17182
 17183
 17184
 17185
 17186
 17187
 17188
 17189
 17190
 17191
 17192
 17193
 17194
 17195
 17196
 17197
 17198
 17199
 17200
 17201
 17202
 17203
 17204
 17205
 17206
 17207
 17208
 17209
 17210
 17211
 17212
 17213
 17214
 17215
 17216
 17217
 17218
 17219
 17220
 17221
 17222
 17223
 17224
 17225
 17226
 17227
 17228
 17229
 17230
 17231
 17232
 17233
 17234
 17235
 17236
 17237
 17238
 17239
 17240
 17241
 17242
 17243
 17244
 17245
 17246
 17247
 17248
 17249
 17250
 17251
 17252
 17253
 17254
 17255
 17256
 17257
 17258
 17259
 17260
 17261
 17262
 17263
 17264
 17265
 17266
 17267
 17268
 17269
 17270
 17271
 17272
 17273
 17274
 17275
 17276
 17277
 17278
 17279
 17280
 17281
 17282
 17283
 17284
 17285
 17286
 17287
 17288
 17289
 17290
 17291
 17292
 17293
 17294
 17295
 17296
 17297
 17298
 17299
 17300
 17301
 17302
 17303
 17304
 17305
 17306
 17307
 17308
 17309
 17310
 17311
 17312
 17313
 17314
 17315
 17316
 17317
 17318
 17319
 17320
 17321
 17322
 17323
 17324
 17325
 17326
 17327
 17328
 17329
 17330
 17331
 17332
 17333
 17334
 17335
 17336
 17337
 17338
 17339
 17340
 17341
 17342
 17343
 17344
 17345
 17346
 17347
 17348
 17349
 17350
 17351
 17352
 17353
 17354
 17355
 17356
 17357
 17358
 17359
 17360
 17361
 17362
 17363
 17364
 17365
 17366
 17367
 17368
 17369
 17370
 17371
 17372
 17373
 17374
 17375
 17376
 17377
 17378
 17379
 17380
 17381
 17382
 17383
 17384
 17385
 17386
 17387
 17388
 17389
 17390
 17391
 17392
 17393
 17394
 17395
 17396
 17397
 17398
 17399
 17400
 17401
 17402
 17403
 17404
 17405
 17406
 17407
 17408
 17409
 17410
 17411
 17412
 17413
 17414
 17415
 17416
 17417
 17418
 17419
 17420
 17421
 17422
 17423
 17424
 17425
 17426
 17427
 17428
 17429
 17430
 17431
 17432
 17433
 17434
 17435
 17436
 17437
 17438
 17439
 17440
 17441
 17442
 17443
 17444
 17445
 17446
 17447
 17448
 17449
 17450
 17451
 17452
 17453
 17454
 17455
 17456
 17457
 17458
 17459
 17460
 17461
 17462
 17463
 17464
 17465
 17466
 17467
 17468
 17469
 17470
 17471
 17472
 17473
 17474
 17475
 17476
 17477
 17478
 17479
 17480
 17481
 17482
 17483
 17484
 17485
 17486
 17487
 17488
 17489
 17490
 17491
 17492
 17493
 17494
 17495
 17496
 17497
 17498
 17499
 17500
 17501
 17502
 17503
 17504
 17505
 17506
 17507
 17508
 17509
 17510
 17511
 17512
 17513
 17514
 17515
 17516
 17517
 17518
 17519
 17520
 17521
 17522
 17523
 17524
 17525
 17526
 17527
 17528
 17529
 17530
 17531
 17532
 17533
 17534
 17535
 17536
 17537
 17538
 17539
 17540
 17541
 17542
 17543
 17544
 17545
 17546
 17547
 17548
 17549
 17550
 17551
 17552
 17553
 17554
 17555
 17556
 17557
 17558
 17559
 17560
 17561
 17562
 17563
 17564
 17565
 17566
 17567
 17568
 17569
 17570
 17571
 17572
 17573
 17574
 17575
 17576
 17577
 17578
 17579
 17580
 17581
 17582
 17583
 17584
 17585
 17586
 17587
 17588
 17589
 17590
 17591
 17592
 17593
 17594
 17595
 17596
 17597
 17598
 17599
 17600
 17601
 17602
 17603
 17604
 17605
 17606
 17607
 17608
 17609
 17610
 17611
 17612
 17613
 17614
 17615
 17616
 17617
 17618
 17619
 17620
 17621
 17622
 17623
 17624
 17625
 17626
 17627
 17628
 17629
 17630
 17631
 17632
 17633
 17634
 17635
 17636
 17637
 17638
 17639
 17640
 17641
 17642
 17643
 17644
 17645
 17646
 17647
 17648
 17649
 17650
 17651
 17652
 17653
 17654
 17655
 17656
 17657
 17658
 17659
 17660
 17661
 17662
 17663
 17664
 17665
 17666
 17667
 17668
 17669
 17670
 17671
 17672
 17673
 17674
 17675
 17676
 17677
 17678
 17679
 17680
 17681
 17682
 17683
 17684
 17685
 17686
 17687
 17688
 17689
 17690
 17691
 17692
 17693
 17694
 17695
 17696
 17697
 17698
 17699
 17700
 17701
 17702
 17703
 17704
 17705
 17706
 17707
 17708
 17709
 17710
 17711
 17712
 17713
 17714
 17715
 17716
 17717
 17718
 17719
 17720
 17721
 17722
 17723
 17724
 17725
 17726
 17727
 17728
 17729
 17730
 17731
 17732
 17733
 17734
 17735
 17736
 17737
 17738
 17739
 17740
 17741
 17742
 17743
 17744
 17745
 17746
 17747
 17748
 17749
 17750
 17751
 17752
 17753
 17754
 17755
 17756
 17757
 17758
 17759
 17760
 17761
 17762
 17763
 17764
 17765
 17766
 17767
 17768
 17769
 17770
 17771
 17772
 17773
 17774
 17775
 17776
 17777
 17778
 17779
 17780
 17781
 17782
 17783
 17784
 17785
 17786
 17787
 17788
 17789
 17790
 17791
 17792
 17793
 17794
 17795
 17796
 17797
 17798
 17799
 17800
 17801
 17802
 17803
 17804
 17805
 17806
 17807
 17808
 17809
 17810
 17811
 17812
 17813
 17814
 17815
 17816
 17817
 17818
 17819
 17820
 17821
 17822
 17823
 17824
 17825
 17826
 17827
 17828
 17829
 17830
 17831
 17832
 17833
 17834
 17835
 17836
 17837
 17838
 17839
 17840
 17841
 17842
 17843
 17844
 17845
 17846
 17847
 17848
 17849
 17850
 17851
 17852
 17853
 17854
 17855
 17856
 17857
 17858
 17859
 17860
 17861
 17862
 17863
 17864
 17865
 17866
 17867
 17868
 17869
 17870
 17871
 17872
 17873
 17874
 17875
 17876
 17877
 17878
 17879
 17880
 17881
 17882
 17883
 17884
 17885
 17886
 17887
 17888
 17889
 17890
 17891
 17892
 17893
 17894
 17895
 17896
 17897
 17898
 17899
 17900
 17901
 17902
 17903
 17904
 17905
 17906
 17907
 17908
 17909
 17910
 17911
 17912
 17913
 17914
 17915
 17916
 17917
 17918
 17919
 17920
 17921
 17922
 17923
 17924
 17925
 17926
 17927
 17928
 17929
 17930
 17931
 17932
 17933
 17934
 17935
 17936
 17937
 17938
 17939
 17940
 17941
 17942
 17943
 17944
 17945
 17946
 17947
 17948
 17949
 17950
 17951
 17952
 17953
 17954
 17955
 17956
 17957
 17958
 17959
 17960
 17961
 17962
 17963
 17964
 17965
 17966
 17967
 17968
 17969
 17970
 17971
 17972
 17973
 17974
 17975
 17976
 17977
 17978
 17979
 17980
 17981
 17982
 17983
 17984
 17985
 17986
 17987
 17988
 17989
 17990
 17991
 17992
 17993
 17994
 17995
 17996
 17997
 17998
 17999
 18000
 18001
 18002
 18003
 18004
 18005
 18006
 18007
 18008
 18009
 18010
 18011
 18012
 18013
 18014
 18015
 18016
 18017
 18018
 18019
 18020
 18021
 18022
 18023
 18024
 18025
 18026
 18027
 18028
 18029
 18030
 18031
 18032
 18033
 18034
 18035
 18036
 18037
 18038
 18039
 18040
 18041
 18042
 18043
 18044
 18045
 18046
 18047
 18048
 18049
 18050
 18051
 18052
 18053
 18054
 18055
 18056
 18057
 18058
 18059
 18060
 18061
 18062
 18063
 18064
 18065
 18066
 18067
 18068
 18069
 18070
 18071
 18072
 18073
 18074
 18075
 18076
 18077
 18078
 18079
 18080
 18081
 18082
 18083
 18084
 18085
 18086
 18087
 18088
 18089
 18090
 18091
 18092
 18093
 18094
 18095
 18096
 18097
 18098
 18099
 18100
 18101
 18102
 18103
 18104
 18105
 18106
 18107
 18108
 18109
 18110
 18111
 18112
 18113
 18114
 18115
 18116
 18117
 18118
 18119
 18120
 18121
 18122
 18123
 18124
 18125
 18126
 18127
 18128
 18129
 18130
 18131
 18132
 18133
 18134
 18135
 18136
 18137
 18138
 18139
 18140
 18141
 18142
 18143
 18144
 18145
 18146
 18147
 18148
 18149
 18150
 18151
 18152
 18153
 18154
 18155
 18156
 18157
 18158
 18159
 18160
 18161
 18162
 18163
 18164
 18165
 18166
 18167
 18168
 18169
 18170
 18171
 18172
 18173
 18174
 18175
 18176
 18177
 18178
 18179
 18180
 18181
 18182
 18183
 18184
 18185
 18186
 18187
 18188
 18189
 18190
 18191
 18192
 18193
 18194
 18195
 18196
 18197
 18198
 18199
 18200
 18201
 18202
 18203
 18204
 18205
 18206
 18207
 18208
 18209
 18210
 18211
 18212
 18213
 18214
 18215
 18216
 18217
 18218
 18219
 18220
 18221
 18222
 18223
 18224
 18225
 18226
 18227
 18228
 18229
 18230
 18231
 18232
 18233
 18234
 18235
 18236
 18237
 18238
 18239
 18240
 18241
 18242
 18243
 18244
 18245
 18246
 18247
 18248
 18249
 18250
 18251
 18252
 18253
 18254
 18255
 18256
 18257
 18258
 18259
 18260
 18261
 18262
 18263
 18264
 18265
 18266
 18267
 18268
 18269
 18270
 18271
 18272
 18273
 18274
 18275
 18276
 18277
 18278
 18279
 18280
 18281
 18282
 18283
 18284
 18285
 18286
 18287
 18288
 18289
 18290
 18291
 18292
 18293
 18294
 18295
 18296
 18297
 18298
 18299
 18300
 18301
 18302
 18303
 18304
 18305
 18306
 18307
 18308
 18309
 18310
 18311
 18312
 18313
 18314
 18315
 18316
 18317
 18318
 18319
 18320
 18321
 18322
 18323
 18324
 18325
 18326
 18327
 18328
 18329
 18330
 18331
 18332
 18333
 18334
 18335
 18336
 18337
 18338
 18339
 18340
 18341
 18342
 18343
 18344
 18345
 18346
 18347
 18348
 18349
 18350
 18351
 18352
 18353
 18354
 18355
 18356
 18357
 18358
 18359
 18360
 18361
 18362
 18363
 18364
 18365
 18366
 18367
 18368
 18369
 18370
 18371
 18372
 18373
 18374
 18375
 18376
 18377
 18378
 18379
 18380
 18381
 18382
 18383
 18384
 18385
 18386
 18387
 18388
 18389
 18390
 18391
 18392
 18393
 18394
 18395
 18396
 18397
 18398
 18399
 18400
 18401
 18402
 18403
 18404
 18405
 18406
 18407
 18408
 18409
 18410
 18411
 18412
 18413
 18414
 18415
 18416
 18417
 18418
 18419
 18420
 18421
 18422
 18423
 18424
 18425
 18426
 18427
 18428
 18429
 18430
 18431
 18432
 18433
 18434
 18435
 18436
 18437
 18438
 18439
 18440
 18441
 18442
 18443
 18444
 18445
 18446
 18447
 18448
 18449
 18450
 18451
 18452
 18453
 18454
 18455
 18456
 18457
 18458
 18459
 18460
 18461
 18462
 18463
 18464
 18465
 18466
 18467
 18468
 18469
 18470
 18471
 18472
 18473
 18474
 18475
 18476
 18477
 18478
 18479
 18480
 18481
 18482
 18483
 18484
 18485
 18486
 18487
 18488
 18489
 18490
 18491
 18492
 18493
 18494
 18495
 18496
 18497
 18498
 18499
 18500
 18501
 18502
 18503
 18504
 18505
 18506
 18507
 18508
 18509
 18510
 18511
 18512
 18513
 18514
 18515
 18516
 18517
 18518
 18519
 18520
 18521
 18522
 18523
 18524
 18525
 18526
 18527
 18528
 18529
 18530
 18531
 18532
 18533
 18534
 18535
 18536
 18537
 18538
 18539
 18540
 18541
 18542
 18543
 18544
 18545
 18546
 18547
 18548
 18549
 18550
 18551
 18552
 18553
 18554
 18555
 18556
 18557
 18558
 18559
 18560
 18561
 18562
 18563
 18564
 18565
 18566
 18567
 18568
 18569
 18570
 18571
 18572
 18573
 18574
 18575
 18576
 18577
 18578
 18579
 18580
 18581
 18582
 18583
 18584
 18585
 18586
 18587
 18588
 18589
 18590
 18591
 18592
 18593
 18594
 18595
 18596
 18597
 18598
 18599
 18600
 18601
 18602
 18603
 18604
 18605
 18606
 18607
 18608
 18609
 18610
 18611
 18612
 18613
 18614
 18615
 18616
 18617
 18618
 18619
 18620
 18621
 18622
 18623
 18624
 18625
 18626
 18627
 18628
 18629
 18630
 18631
 18632
 18633
 18634
 18635
 18636
 18637
 18638
 18639
 18640
 18641
 18642
 18643
 18644
 18645
 18646
 18647
 18648
 18649
 18650
 18651
 18652
 18653
 18654
 18655
 18656
 18657
 18658
 18659
 18660
 18661
 18662
 18663
 18664
 18665
 18666
 18667
 18668
 18669
 18670
 18671
 18672
 18673
 18674
 18675
 18676
 18677
 18678
 18679
 18680
 18681
 18682
 18683
 18684
 18685
 18686
 18687
 18688
 18689
 18690
 18691
 18692
 18693
 18694
 18695
 18696
 18697
 18698
 18699
 18700
 18701
 18702
 18703
 18704
 18705
 18706
 18707
 18708
 18709
 18710
 18711
 18712
 18713
 18714
 18715
 18716
 18717
 18718
 18719
 18720
 18721
 18722
 18723
 18724
 18725
 18726
 18727
 18728
 18729
 18730
 18731
 18732
 18733
 18734
 18735
 18736
 18737
 18738
 18739
 18740
 18741
 18742
 18743
 18744
 18745
 18746
 18747
 18748
 18749
 18750
 18751
 18752
 18753
 18754
 18755
 18756
 18757
 18758
 18759
 18760
 18761
 18762
 18763
 18764
 18765
 18766
 18767
 18768
 18769
 18770
 18771
 18772
 18773
 18774
 18775
 18776
 18777
 18778
 18779
 18780
 18781
 18782
 18783
 18784
 18785
 18786
 18787
 18788
 18789
 18790
 18791
 18792
 18793
 18794
 18795
 18796
 18797
 18798
 18799
 18800
 18801
 18802
 18803
 18804
 18805
 18806
 18807
 18808
 18809
 18810
 18811
 18812
 18813
 18814
 18815
 18816
 18817
 18818
 18819
 18820
 18821
 18822
 18823
 18824
 18825
 18826
 18827
 18828
 18829
 18830
 18831
 18832
 18833
 18834
 18835
 18836
 18837
 18838
 18839
 18840
 18841
 18842
 18843
 18844
 18845
 18846
 18847
 18848
 18849
 18850
 18851
 18852
 18853
 18854
 18855
 18856
 18857
 18858
 18859
 18860
 18861
 18862
 18863
 18864
 18865
 18866
 18867
 18868
 18869
 18870
 18871
 18872
 18873
 18874
 18875
 18876
 18877
 18878
 18879
 18880
 18881
 18882
 18883
 18884
 18885
 18886
 18887
 18888
 18889
 18890
 18891
 18892
 18893
 18894
 18895
 18896
 18897
 18898
 18899
 18900
 18901
 18902
 18903
 18904
 18905
 18906
 18907
 18908
 18909
 18910
 18911
 18912
 18913
 18914
 18915
 18916
 18917
 18918
 18919
 18920
 18921
 18922
 18923
 18924
 18925
 18926
 18927
 18928
 18929
 18930
 18931
 18932
 18933
 18934
 18935
 18936
 18937
 18938
 18939
 18940
 18941
 18942
 18943
 18944
 18945
 18946
 18947
 18948
 18949
 18950
 18951
 18952
 18953
 18954
 18955
 18956
 18957
 18958
 18959
 18960
 18961
 18962
 18963
 18964
 18965
 18966
 18967
 18968
 18969
 18970
 18971
 18972
 18973
 18974
 18975
 18976
 18977
 18978
 18979
 18980
 18981
 18982
 18983
 18984
 18985
 18986
 18987
 18988
 18989
 18990
 18991
 18992
 18993
 18994
 18995
 18996
 18997
 18998
 18999
 19000
 19001
 19002
 19003
 19004
 19005
 19006
 19007
 19008
 19009
 19010
 19011
 19012
 19013
 19014
 19015
 19016
 19017
 19018
 19019
 19020
 19021
 19022
 19023
 19024
 19025
 19026
 19027
 19028
 19029
 19030
 19031
 19032
 19033
 19034
 19035
 19036
 19037
 19038
 19039
 19040
 19041
 19042
 19043
 19044
 19045
 19046
 19047
 19048
 19049
 19050
 19051
 19052
 19053
 19054
 19055
 19056
 19057
 19058
 19059
 19060
 19061
 19062
 19063
 19064
 19065
 19066
 19067
 19068
 19069
 19070
 19071
 19072
 19073
 19074
 19075
 19076
 19077
 19078
 19079
 19080
 19081
 19082
 19083
 19084
 19085
 19086
 19087
 19088
 19089
 19090
 19091
 19092
 19093
 19094
 19095
 19096
 19097
 19098
 19099
 19100
 19101
 19102
 19103
 19104
 19105
 19106
 19107
 19108
 19109
 19110
 19111
 19112
 19113
 19114
 19115
 19116
 19117
 19118
 19119
 19120
 19121
 19122
 19123
 19124
 19125
 19126
 19127
 19128
 19129
 19130
 19131
 19132
 19133
 19134
 19135
 19136
 19137
 19138
 19139
 19140
 19141
 19142
 19143
 19144
 19145
 19146
 19147
 19148
 19149
 19150
 19151
 19152
 19153
 19154
 19155
 19156
 19157
 19158
 19159
 19160
 19161
 19162
 19163
 19164
 19165
 19166
 19167
 19168
 19169
 19170
 19171
 19172
 19173
 19174
 19175
 19176
 19177
 19178
 19179
 19180
 19181
 19182
 19183
 19184
 19185
 19186
 19187
 19188
 19189
 19190
 19191
 19192
 19193
 19194
 19195
 19196
 19197
 19198
 19199
 19200
 19201
 19202
 19203
 19204
 19205
 19206
 19207
 19208
 19209
 19210
 19211
 19212
 19213
 19214
 19215
 19216
 19217
 19218
 19219
 19220
 19221
 19222
 19223
 19224
 19225
 19226
 19227
 19228
 19229
 19230
 19231
 19232
 19233
 19234
 19235
 19236
 19237
 19238
 19239
 19240
 19241
 19242
 19243
 19244
 19245
 19246
 19247
 19248
 19249
 19250
 19251
 19252
 19253
 19254
 19255
 19256
 19257
 19258
 19259
 19260
 19261
 19262
 19263
 19264
 19265
 19266
 19267
 19268
 19269
 19270
 19271
 19272
 19273
 19274
 19275
 19276
 19277
 19278
 19279
 19280
 19281
 19282
 19283
 19284
 19285
 19286
 19287
 19288
 19289
 19290
 19291
 19292
 19293
 19294
 19295
 19296
 19297
 19298
 19299
 19300
 19301
 19302
 19303
 19304
 19305
 19306
 19307
 19308
 19309
 19310
 19311
 19312
 19313
 19314
 19315
 19316
 19317
 19318
 19319
 19320
 19321
 19322
 19323
 19324
 19325
 19326
 19327
 19328
 19329
 19330
 19331
 19332
 19333
 19334
 19335
 19336
 19337
 19338
 19339
 19340
 19341
 19342
 19343
 19344
 19345
 19346
 19347
 19348
 19349
 19350
 19351
 19352
 19353
 19354
 19355
 19356
 19357
 19358
 19359
 19360
 19361
 19362
 19363
 19364
 19365
 19366
 19367
 19368
 19369
 19370
 19371
 19372
 19373
 19374
 19375
 19376
 19377
 19378
 19379
 19380
 19381
 19382
 19383
 19384
 19385
 19386
 19387
 19388
 19389
 19390
 19391
 19392
 19393
 19394
 19395
 19396
 19397
 19398
 19399
 19400
 19401
 19402
 19403
 19404
 19405
 19406
 19407
 19408
 19409
 19410
 19411
 19412
 19413
 19414
 19415
 19416
 19417
 19418
 19419
 19420
 19421
 19422
 19423
 19424
 19425
 19426
 19427
 19428
 19429
 19430
 19431
 19432
 19433
 19434
 19435
 19436
 19437
 19438
 19439
 19440
 19441
 19442
 19443
 19444
 19445
 19446
 19447
 19448
 19449
 19450
 19451
 19452
 19453
 19454
 19455
 19456
 19457
 19458
 19459
 19460
 19461
 19462
 19463
 19464
 19465
 19466
 19467
 19468
 19469
 19470
 19471
 19472
 19473
 19474
 19475
 19476
 19477
 19478
 19479
 19480
 19481
 19482
 19483
 19484
 19485
 19486
 19487
 19488
 19489
 19490
 19491
 19492
 19493
 19494
 19495
 19496
 19497
 19498
 19499
 19500
 19501
 19502
 19503
 19504
 19505
 19506
 19507
 19508
 19509
 19510
 19511
 19512
 19513
 19514
 19515
 19516
 19517
 19518
 19519
 19520
 19521
 19522
 19523
 19524
 19525
 19526
 19527
 19528
 19529
 19530
 19531
 19532
 19533
 19534
 19535
 19536
 19537
 19538
 19539
 19540
 19541
 19542
 19543
 19544
 19545
 19546
 19547
 19548
 19549
 19550
 19551
 19552
 19553
 19554
 19555
 19556
 19557
 19558
 19559
 19560
 19561
 19562
 19563
 19564
 19565
 19566
 19567
 19568
 19569
 19570
 19571
 19572
 19573
 19574
 19575
 19576
 19577
 19578
 19579
 19580
 19581
 19582
 19583
 19584
 19585
 19586
 19587
 19588
 19589
 19590
 19591
 19592
 19593
 19594
 19595
 19596
 19597
 19598
 19599
 19600
 19601
 19602
 19603
 19604
 19605
 19606
 19607
 19608
 19609
 19610
 19611
 19612
 19613
 19614
 19615
 19616
 19617
 19618
 19619
 19620
 19621
 19622
 19623
 19624
 19625
 19626
 19627
 19628
 19629
 19630
 19631
 19632
 19633
 19634
 19635
 19636
 19637
 19638
 19639
 19640
 19641
 19642
 19643
 19644
 19645
 19646
 19647
 19648
 19649
 19650
 19651
 19652
 19653
 19654
 19655
 19656
 19657
 19658
 19659
 19660
 19661
 19662
 19663
 19664
 19665
 19666
 19667
 19668
 19669
 19670
 19671
 19672
 19673
 19674
 19675
 19676
 19677
 19678
 19679
 19680
 19681
 19682
 19683
 19684
 19685
 19686
 19687
 19688
 19689
 19690
 19691
 19692
 19693
 19694
 19695
 19696
 19697
 19698
 19699
 19700
 19701
 19702
 19703
 19704
 19705
 19706
 19707
 19708
 19709
 19710
 19711
 19712
 19713
 19714
 19715
 19716
 19717
 19718
 19719
 19720
 19721
 19722
 19723
 19724
 19725
 19726
 19727
 19728
 19729
 19730
 19731
 19732
 19733
 19734
 19735
 19736
 19737
 19738
 19739
 19740
 19741
 19742
 19743
 19744
 19745
 19746
 19747
 19748
 19749
 19750
 19751
 19752
 19753
 19754
 19755
 19756
 19757
 19758
 19759
 19760
 19761
 19762
 19763
 19764
 19765
 19766
 19767
 19768
 19769
 19770
 19771
 19772
 19773
 19774
 19775
 19776
 19777
 19778
 19779
 19780
 19781
 19782
 19783
 19784
 19785
 19786
 19787
 19788
 19789
 19790
 19791
 19792
 19793
 19794
 19795
 19796
 19797
 19798
 19799
 19800
 19801
 19802
 19803
 19804
 19805
 19806
 19807
 19808
 19809
 19810
 19811
 19812
 19813
 19814
 19815
 19816
 19817
 19818
 19819
 19820
 19821
 19822
 19823
 19824
 19825
 19826
 19827
 19828
 19829
 19830
 19831
 19832
 19833
 19834
 19835
 19836
 19837
 19838
 19839
 19840
 19841
 19842
 19843
 19844
 19845
 19846
 19847
 19848
 19849
 19850
 19851
 19852
 19853
 19854
 19855
 19856
 19857
 19858
 19859
 19860
 19861
 19862
 19863
 19864
 19865
 19866
 19867
 19868
 19869
 19870
 19871
 19872
 19873
 19874
 19875
 19876
 19877
 19878
 19879
 19880
 19881
 19882
 19883
 19884
 19885
 19886
 19887
 19888
 19889
 19890
 19891
 19892
 19893
 19894
 19895
 19896
 19897
 19898
 19899
 19900
 19901
 19902
 19903
 19904
 19905
 19906
 19907
 19908
 19909
 19910
 19911
 19912
 19913
 19914
 19915
 19916
 19917
 19918
 19919
 19920
 19921
 19922
 19923
 19924
 19925
 19926
 19927
 19928
 19929
 19930
 19931
 19932
 19933
 19934
 19935
 19936
 19937
 19938
 19939
 19940
 19941
 19942
 19943
 19944
 19945
 19946
 19947
 19948
 19949
 19950
 19951
 19952
 19953
 19954
 19955
 19956
 19957
 19958
 19959
 19960
 19961
 19962
 19963
 19964
 19965
 19966
 19967
 19968
 19969
 19970
 19971
 19972
 19973
 19974
 19975
 19976
 19977
 19978
 19979
 19980
 19981
 19982
 19983
 19984
 19985
 19986
 19987
 19988
 19989
 19990
 19991
 19992
 19993
 19994
 19995
 19996
 19997
 19998
 19999
 20000
 20001
 20002
 20003
 20004
 20005
 20006
 20007
 20008
 20009
 20010
 20011
 20012
 20013
 20014
 20015
 20016
 20017
 20018
 20019
 20020
 20021
 20022
 20023
 20024
 20025
 20026
 20027
 20028
 20029
 20030
 20031
 20032
 20033
 20034
 20035
 20036
 20037
 20038
 20039
 20040
 20041
 20042
 20043
 20044
 20045
 20046
 20047
 20048
 20049
 20050
 20051
 20052
 20053
 20054
 20055
 20056
 20057
 20058
 20059
 20060
 20061
 20062
 20063
 20064
 20065
 20066
 20067
 20068
 20069
 20070
 20071
 20072
 20073
 20074
 20075
 20076
 20077
 20078
 20079
 20080
 20081
 20082
 20083
 20084
 20085
 20086
 20087
 20088
 20089
 20090
 20091
 20092
 20093
 20094
 20095
 20096
 20097
 20098
 20099
 20100
 20101
 20102
 20103
 20104
 20105
 20106
 20107
 20108
 20109
 20110
 20111
 20112
 20113
 20114
 20115
 20116
 20117
 20118
 20119
 20120
 20121
 20122
 20123
 20124
 20125
 20126
 20127
 20128
 20129
 20130
 20131
 20132
 20133
 20134
 20135
 20136
 20137
 20138
 20139
 20140
 20141
 20142
 20143
 20144
 20145
 20146
 20147
 20148
 20149
 20150
 20151
 20152
 20153
 20154
 20155
 20156
 20157
 20158
 20159
 20160
 20161
 20162
 20163
 20164
 20165
 20166
 20167
 20168
 20169
 20170
 20171
 20172
 20173
 20174
 20175
 20176
 20177
 20178
 20179
 20180
 20181
 20182
 20183
 20184
 20185
 20186
 20187
 20188
 20189
 20190
 20191
 20192
 20193
 20194
 20195
 20196
 20197
 20198
 20199
 20200
 20201
 20202
 20203
 20204
 20205
 20206
 20207
 20208
 20209
 20210
 20211
 20212
 20213
 20214
 20215
 20216
 20217
 20218
 20219
 20220
 20221
 20222
 20223
 20224
 20225
 20226
 20227
 20228
 20229
 20230
 20231
 20232
 20233
 20234
 20235
 20236
 20237
 20238
 20239
 20240
 20241
 20242
 20243
 20244
 20245
 20246
 20247
 20248
 20249
 20250
 20251
 20252
 20253
 20254
 20255
 20256
 20257
 20258
 20259
 20260
 20261
 20262
 20263
 20264
 20265
 20266
 20267
 20268
 20269
 20270
 20271
 20272
 20273
 20274
 20275
 20276
 20277
 20278
 20279
 20280
 20281
 20282
 20283
 20284
 20285
 20286
 20287
 20288
 20289
 20290
 20291
 20292
 20293
 20294
 20295
 20296
 20297
 20298
 20299
 20300
 20301
 20302
 20303
 20304
 20305
 20306
 20307
 20308
 20309
 20310
 20311
 20312
 20313
 20314
 20315
 20316
 20317
 20318
 20319
 20320
 20321
 20322
 20323
 20324
 20325
 20326
 20327
 20328
 20329
 20330
 20331
 20332
 20333
 20334
 20335
 20336
 20337
 20338
 20339
 20340
 20341
 20342
 20343
 20344
 20345
 20346
 20347
 20348
 20349
 20350
 20351
 20352
 20353
 20354
 20355
 20356
 20357
 20358
 20359
 20360
 20361
 20362
 20363
 20364
 20365
 20366
 20367
 20368
 20369
 20370
 20371
 20372
 20373
 20374
 20375
 20376
 20377
 20378
 20379
 20380
 20381
 20382
 20383
 20384
 20385
 20386
 20387
 20388
 20389
 20390
 20391
 20392
 20393
 20394
 20395
 20396
 20397
 20398
 20399
 20400
 20401
 20402
 20403
 20404
 20405
 20406
 20407
 20408
 20409
 20410
 20411
 20412
 20413
 20414
 20415
 20416
 20417
 20418
 20419
 20420
 20421
 20422
 20423
 20424
 20425
 20426
 20427
 20428
 20429
 20430
 20431
 20432
 20433
 20434
 20435
 20436
 20437
 20438
 20439
 20440
 20441
 20442
 20443
 20444
 20445
 20446
 20447
 20448
 20449
 20450
 20451
 20452
 20453
 20454
 20455
 20456
 20457
 20458
 20459
 20460
 20461
 20462
 20463
 20464
 20465
 20466
 20467
 20468
 20469
 20470
 20471
 20472
 20473
 20474
 20475
 20476
 20477
 20478
 20479
 20480
 20481
 20482
 20483
 20484
 20485
 20486
 20487
 20488
 20489
 20490
 20491
 20492
 20493
 20494
 20495
 20496
 20497
 20498
 20499
 20500
 20501
 20502
 20503
 20504
 20505
 20506
 20507
 20508
 20509
 20510
 20511
 20512
 20513
 20514
 20515
 20516
 20517
 20518
 20519
 20520
 20521
 20522
 20523
 20524
 20525
 20526
 20527
 20528
 20529
 20530
 20531
 20532
 20533
 20534
 20535
 20536
 20537
 20538
 20539
 20540
 20541
 20542
 20543
 20544
 20545
 20546
 20547
 20548
 20549
 20550
 20551
 20552
 20553
 20554
 20555
 20556
 20557
 20558
 20559
 20560
 20561
 20562
 20563
 20564
 20565
 20566
 20567
 20568
 20569
 20570
 20571
 20572
 20573
 20574
 20575
 20576
 20577
 20578
 20579
 20580
 20581
 20582
 20583
 20584
 20585
 20586
 20587
 20588
 20589
 20590
 20591
 20592
 20593
 20594
 20595
 20596
 20597
 20598
 20599
 20600
 20601
 20602
 20603
 20604
 20605
 20606
 20607
 20608
 20609
 20610
 20611
 20612
 20613
 20614
 20615
 20616
 20617
 20618
 20619
 20620
 20621
 20622
 20623
 20624
 20625
 20626
 20627
 20628
 20629
 20630
 20631
 20632
 20633
 20634
 20635
 20636
 20637
 20638
 20639
 20640
 20641
 20642
 20643
 20644
 20645
 20646
 20647
 20648
 20649
 20650
 20651
 20652
 20653
 20654
 20655
 20656
 20657
 20658
 20659
 20660
 20661
 20662
 20663
 20664
 20665
 20666
 20667
 20668
 20669
 20670
 20671
 20672
 20673
 20674
 20675
 20676
 20677
 20678
 20679
 20680
 20681
 20682
 20683
 20684
 20685
 20686
 20687
 20688
 20689
 20690
 20691
 20692
 20693
 20694
 20695
 20696
 20697
 20698
 20699
 20700
 20701
 20702
 20703
 20704
 20705
 20706
 20707
 20708
 20709
 20710
 20711
 20712
 20713
 20714
 20715
 20716
 20717
 20718
 20719
 20720
 20721
 20722
 20723
 20724
 20725
 20726
 20727
 20728
 20729
 20730
 20731
 20732
 20733
 20734
 20735
 20736
 20737
 20738
 20739
 20740
 20741
 20742
 20743
 20744
 20745
 20746
 20747
 20748
 20749
 20750
 20751
 20752
 20753
 20754
 20755
 20756
 20757
 20758
 20759
 20760
 20761
 20762
 20763
 20764
 20765
 20766
 20767
 20768
 20769
 20770
 20771
 20772
 20773
 20774
 20775
 20776
 20777
 20778
 20779
 20780
 20781
 20782
 20783
 20784
 20785
 20786
 20787
 20788
 20789
 20790
 20791
 20792
 20793
 20794
 20795
 20796
 20797
 20798
 20799
 20800
 20801
 20802
 20803
 20804
 20805
 20806
 20807
 20808
 20809
 20810
 20811
 20812
 20813
 20814
 20815
 20816
 20817
 20818
 20819
 20820
 20821
 20822
 20823
 20824
 20825
 20826
 20827
 20828
 20829
 20830
 20831
 20832
 20833
 20834
 20835
 20836
 20837
 20838
 20839
 20840
 20841
 20842
 20843
 20844
 20845
 20846
 20847
 20848
 20849
 20850
 20851
 20852
 20853
 20854
 20855
 20856
 20857
 20858
 20859
 20860
 20861
 20862
 20863
 20864
 20865
 20866
 20867
 20868
 20869
 20870
 20871
 20872
 20873
 20874
 20875
 20876
 20877
 20878
 20879
 20880
 20881
 20882
 20883
 20884
 20885
 20886
 20887
 20888
 20889
 20890
 20891
 20892
 20893
 20894
 20895
 20896
 20897
 20898
 20899
 20900
 20901
 20902
 20903
 20904
 20905
 20906
 20907
 20908
 20909
 20910
 20911
 20912
 20913
 20914
 20915
 20916
 20917
 20918
 20919
 20920
 20921
 20922
 20923
 20924
 20925
 20926
 20927
 20928
 20929
 20930
 20931
 20932
 20933
 20934
 20935
 20936
 20937
 20938
 20939
 20940
 20941
 20942
 20943
 20944
 20945
 20946
 20947
 20948
 20949
 20950
 20951
 20952
 20953
 20954
 20955
 20956
 20957
 20958
 20959
 20960
 20961
 20962
 20963
 20964
 20965
 20966
 20967
 20968
 20969
 20970
 20971
 20972
 20973
 20974
 20975
 20976
 20977
 20978
 20979
 20980
 20981
 20982
 20983
 20984
 20985
 20986
 20987
 20988
 20989
 20990
 20991
 20992
 20993
 20994
 20995
 20996
 20997
 20998
 20999
 21000
 21001
 21002
 21003
 21004
 21005
 21006
 21007
 21008
 21009
 21010
 21011
 21012
 21013
 21014
 21015
 21016
 21017
 21018
 21019
 21020
 21021
 21022
 21023
 21024
 21025
 21026
 21027
 21028
 21029
 21030
 21031
 21032
 21033
 21034
 21035
 21036
 21037
 21038
 21039
 21040
 21041
 21042
 21043
 21044
 21045
 21046
 21047
 21048
 21049
 21050
 21051
 21052
 21053
 21054
 21055
 21056
 21057
 21058
 21059
 21060
 21061
 21062
 21063
 21064
 21065
 21066
 21067
 21068
 21069
 21070
 21071
 21072
 21073
 21074
 21075
 21076
 21077
 21078
 21079
 21080
 21081
 21082
 21083
 21084
 21085
 21086
 21087
 21088
 21089
 21090
 21091
 21092
 21093
 21094
 21095
 21096
 21097
 21098
 21099
 21100
 21101
 21102
 21103
 21104
 21105
 21106
 21107
 21108
 21109
 21110
 21111
 21112
 21113
 21114
 21115
 21116
 21117
 21118
 21119
 21120
 21121
 21122
 21123
 21124
 21125
 21126
 21127
 21128
 21129
 21130
 21131
 21132
 21133
 21134
 21135
 21136
 21137
 21138
 21139
 21140
 21141
 21142
 21143
 21144
 21145
 21146
 21147
 21148
 21149
 21150
 21151
 21152
 21153
 21154
 21155
 21156
 21157
 21158
 21159
 21160
 21161
 21162
 21163
 21164
 21165
 21166
 21167
 21168
 21169
 21170
 21171
 21172
 21173
 21174
 21175
 21176
 21177
 21178
 21179
 21180
 21181
 21182
 21183
 21184
 21185
 21186
 21187
 21188
 21189
 21190
 21191
 21192
 21193
 21194
 21195
 21196
 21197
 21198
 21199
 21200
 21201
 21202
 21203
 21204
 21205
 21206
 21207
 21208
 21209
 21210
 21211
 21212
 21213
 21214
 21215
 21216
 21217
 21218
 21219
 21220
 21221
 21222
 21223
 21224
 21225
 21226
 21227
 21228
 21229
 21230
 21231
 21232
 21233
 21234
 21235
 21236
 21237
 21238
 21239
 21240
 21241
 21242
 21243
 21244
 21245
 21246
 21247
 21248
 21249
 21250
 21251
 21252
 21253
 21254
 21255
 21256
 21257
 21258
 21259
 21260
 21261
 21262
 21263
 21264
 21265
 21266
 21267
 21268
 21269
 21270
 21271
 21272
 21273
 21274
 21275
 21276
 21277
 21278
 21279
 21280
 21281
 21282
 21283
 21284
 21285
 21286
 21287
 21288
 21289
 21290
 21291
 21292
 21293
 21294
 21295
 21296
 21297
 21298
 21299
 21300
 21301
 21302
 21303
 21304
 21305
 21306
 21307
 21308
 21309
 21310
 21311
 21312
 21313
 21314
 21315
 21316
 21317
 21318
 21319
 21320
 21321
 21322
 21323
 21324
 21325
 21326
 21327
 21328
 21329
 21330
 21331
 21332
 21333
 21334
 21335
 21336
 21337
 21338
 21339
 21340
 21341
 21342
 21343
 21344
 21345
 21346
 21347
 21348
 21349
 21350
 21351
 21352
 21353
 21354
 21355
 21356
 21357
 21358
 21359
 21360
 21361
 21362
 21363
 21364
 21365
 21366
 21367
 21368
 21369
 21370
 21371
 21372
 21373
 21374
 21375
 21376
 21377
 21378
 21379
 21380
 21381
 21382
 21383
 21384
 21385
 21386
 21387
 21388
 21389
 21390
 21391
 21392
 21393
 21394
 21395
 21396
 21397
 21398
 21399
 21400
 21401
 21402
 21403
 21404
 21405
 21406
 21407
 21408
 21409
 21410
 21411
 21412
 21413
 21414
 21415
 21416
 21417
 21418
 21419
 21420
 21421
 21422
 21423
 21424
 21425
 21426
 21427
 21428
 21429
 21430
 21431
 21432
 21433
 21434
 21435
 21436
 21437
 21438
 21439
 21440
 21441
 21442
 21443
 21444
 21445
 21446
 21447
 21448
 21449
 21450
 21451
 21452
 21453
 21454
 21455
 21456
 21457
 21458
 21459
 21460
 21461
 21462
 21463
 21464
 21465
 21466
 21467
 21468
 21469
 21470
 21471
 21472
 21473
 21474
 21475
 21476
 21477
 21478
 21479
 21480
 21481
 21482
 21483
 21484
 21485
 21486
 21487
 21488
 21489
 21490
 21491
 21492
 21493
 21494
 21495
 21496
 21497
 21498
 21499
 21500
 21501
 21502
 21503
 21504
 21505
 21506
 21507
 21508
 21509
 21510
 21511
 21512
 21513
 21514
 21515
 21516
 21517
 21518
 21519
 21520
 21521
 21522
 21523
 21524
 21525
 21526
 21527
 21528
 21529
 21530
 21531
 21532
 21533
 21534
 21535
 21536
 21537
 21538
 21539
 21540
 21541
 21542
 21543
 21544
 21545
 21546
 21547
 21548
 21549
 21550
 21551
 21552
 21553
 21554
 21555
 21556
 21557
 21558
 21559
 21560
 21561
 21562
 21563
 21564
 21565
 21566
 21567
 21568
 21569
 21570
 21571
 21572
 21573
 21574
 21575
 21576
 21577
 21578
 21579
 21580
 21581
 21582
 21583
 21584
 21585
 21586
 21587
 21588
 21589
 21590
 21591
 21592
 21593
 21594
 21595
 21596
 21597
 21598
 21599
 21600
 21601
 21602
 21603
 21604
 21605
 21606
 21607
 21608
 21609
 21610
 21611
 21612
 21613
 21614
 21615
 21616
 21617
 21618
 21619
 21620
 21621
 21622
 21623
 21624
 21625
 21626
 21627
 21628
 21629
 21630
 21631
 21632
 21633
 21634
 21635
 21636
 21637
 21638
 21639
 21640
 21641
 21642
 21643
 21644
 21645
 21646
 21647
 21648
 21649
 21650
 21651
 21652
 21653
 21654
 21655
 21656
 21657
 21658
 21659
 21660
 21661
 21662
 21663
 21664
 21665
 21666
 21667
 21668
 21669
 21670
 21671
 21672
 21673
 21674
 21675
 21676
 21677
 21678
 21679
 21680
 21681
 21682
 21683
 21684
 21685
 21686
 21687
 21688
 21689
 21690
 21691
 21692
 21693
 21694
 21695
 21696
 21697
 21698
 21699
 21700
 21701
 21702
 21703
 21704
 21705
 21706
 21707
 21708
 21709
 21710
 21711
 21712
 21713
 21714
 21715
 21716
 21717
 21718
 21719
 21720
 21721
 21722
 21723
 21724
 21725
 21726
 21727
 21728
 21729
 21730
 21731
 21732
 21733
 21734
 21735
 21736
 21737
 21738
 21739
 21740
 21741
 21742
 21743
 21744
 21745
 21746
 21747
 21748
 21749
 21750
 21751
 21752
 21753
 21754
 21755
 21756
 21757
 21758
 21759
 21760
 21761
 21762
 21763
 21764
 21765
 21766
 21767
 21768
 21769
 21770
 21771
 21772
 21773
 21774
 21775
 21776
 21777
 21778
 21779
 21780
 21781
 21782
 21783
 21784
 21785
 21786
 21787
 21788
 21789
 21790
 21791
 21792
 21793
 21794
 21795
 21796
 21797
 21798
 21799
 21800
 21801
 21802
 21803
 21804
 21805
 21806
 21807
 21808
 21809
 21810
 21811
 21812
 21813
 21814
 21815
 21816
 21817
 21818
 21819
 21820
 21821
 21822
 21823
 21824
 21825
 21826
 21827
 21828
 21829
 21830
 21831
 21832
 21833
 21834
 21835
 21836
 21837
 21838
 21839
 21840
 21841
 21842
 21843
 21844
 21845
 21846
 21847
 21848
 21849
 21850
 21851
 21852
 21853
 21854
 21855
 21856
 21857
 21858
 21859
 21860
 21861
 21862
 21863
 21864
 21865
 21866
 21867
 21868
 21869
 21870
 21871
 21872
 21873
 21874
 21875
 21876
 21877
 21878
 21879
 21880
 21881
 21882
 21883
 21884
 21885
 21886
 21887
 21888
 21889
 21890
 21891
 21892
 21893
 21894
 21895
 21896
 21897
 21898
 21899
 21900
 21901
 21902
 21903
 21904
 21905
 21906
 21907
 21908
 21909
 21910
 21911
 21912
 21913
 21914
 21915
 21916
 21917
 21918
 21919
 21920
 21921
 21922
 21923
 21924
 21925
 21926
 21927
 21928
 21929
 21930
 21931
 21932
 21933
 21934
 21935
 21936
 21937
 21938
 21939
 21940
 21941
 21942
 21943
 21944
 21945
 21946
 21947
 21948
 21949
 21950
 21951
 21952
 21953
 21954
 21955
 21956
 21957
 21958
 21959
 21960
 21961
 21962
 21963
 21964
 21965
 21966
 21967
 21968
 21969
 21970
 21971
 21972
 21973
 21974
 21975
 21976
 21977
 21978
 21979
 21980
 21981
 21982
 21983
 21984
 21985
 21986
 21987
 21988
 21989
 21990
 21991
 21992
 21993
 21994
 21995
 21996
 21997
 21998
 21999
 22000
 22001
 22002
 22003
 22004
 22005
 22006
 22007
 22008
 22009
 22010
 22011
 22012
 22013
 22014
 22015
 22016
 22017
 22018
 22019
 22020
 22021
 22022
 22023
 22024
 22025
 22026
 22027
 22028
 22029
 22030
 22031
 22032
 22033
 22034
 22035
 22036
 22037
 22038
 22039
 22040
 22041
 22042
 22043
 22044
 22045
 22046
 22047
 22048
 22049
 22050
 22051
 22052
 22053
 22054
 22055
 22056
 22057
 22058
 22059
 22060
 22061
 22062
 22063
 22064
 22065
 22066
 22067
 22068
 22069
 22070
 22071
 22072
 22073
 22074
 22075
 22076
 22077
 22078
 22079
 22080
 22081
 22082
 22083
 22084
 22085
 22086
 22087
 22088
 22089
 22090
 22091
 22092
 22093
 22094
 22095
 22096
 22097
 22098
 22099
 22100
 22101
 22102
 22103
 22104
 22105
 22106
 22107
 22108
 22109
 22110
 22111
 22112
 22113
 22114
 22115
 22116
 22117
 22118
 22119
 22120
 22121
 22122
 22123
 22124
 22125
 22126
 22127
 22128
 22129
 22130
 22131
 22132
 22133
 22134
 22135
 22136
 22137
 22138
 22139
 22140
 22141
 22142
 22143
 22144
 22145
 22146
 22147
 22148
 22149
 22150
 22151
 22152
 22153
 22154
 22155
 22156
 22157
 22158
 22159
 22160
 22161
 22162
 22163
 22164
 22165
 22166
 22167
 22168
 22169
 22170
 22171
 22172
 22173
 22174
 22175
 22176
 22177
 22178
 22179
 22180
 22181
 22182
 22183
 22184
 22185
 22186
 22187
 22188
 22189
 22190
 22191
 22192
 22193
 22194
 22195
 22196
 22197
 22198
 22199
 22200
 22201
 22202
 22203
 22204
 22205
 22206
 22207
 22208
 22209
 22210
 22211
 22212
 22213
 22214
 22215
 22216
 22217
 22218
 22219
 22220
 22221
 22222
 22223
 22224
 22225
 22226
 22227
 22228
 22229
 22230
 22231
 22232
 22233
 22234
 22235
 22236
 22237
 22238
 22239
 22240
 22241
 22242
 22243
 22244
 22245
 22246
 22247
 22248
 22249
 22250
 22251
 22252
 22253
 22254
 22255
 22256
 22257
 22258
 22259
 22260
 22261
 22262
 22263
 22264
 22265
 22266
 22267
 22268
 22269
 22270
 22271
 22272
 22273
 22274
 22275
 22276
 22277
 22278
 22279
 22280
 22281
 22282
 22283
 22284
 22285
 22286
 22287
 22288
 22289
 22290
 22291
 22292
 22293
 22294
 22295
 22296
 22297
 22298
 22299
 22300
 22301
 22302
 22303
 22304
 22305
 22306
 22307
 22308
 22309
 22310
 22311
 22312
 22313
 22314
 22315
 22316
 22317
 22318
 22319
 22320
 22321
 22322
 22323
 22324
 22325
 22326
 22327
 22328
 22329
 22330
 22331
 22332
 22333
 22334
 22335
 22336
 22337
 22338
 22339
 22340
 22341
 22342
 22343
 22344
 22345
 22346
 22347
 22348
 22349
 22350
 22351
 22352
 22353
 22354
 22355
 22356
 22357
 22358
 22359
 22360
 22361
 22362
 22363
 22364
 22365
 22366
 22367
 22368
 22369
 22370
 22371
 22372
 22373
 22374
 22375
 22376
 22377
 22378
 22379
 22380
 22381
 22382
 22383
 22384
 22385
 22386
 22387
 22388
 22389
 22390
 22391
 22392
 22393
 22394
 22395
 22396
 22397
 22398
 22399
 22400
 22401
 22402
 22403
 22404
 22405
 22406
 22407
 22408
 22409
 22410
 22411
 22412
 22413
 22414
 22415
 22416
 22417
 22418
 22419
 22420
 22421
 22422
 22423
 22424
 22425
 22426
 22427
 22428
 22429
 22430
 22431
 22432
 22433
 22434
 22435
 22436
 22437
 22438
 22439
 22440
 22441
 22442
 22443
 22444
 22445
 22446
 22447
 22448
 22449
 22450
 22451
 22452
 22453
 22454
 22455
 22456
 22457
 22458
 22459
 22460
 22461
 22462
 22463
 22464
 22465
 22466
 22467
 22468
 22469
 22470
 22471
 22472
 22473
 22474
 22475
 22476
 22477
 22478
 22479
 22480
 22481
 22482
 22483
 22484
 22485
 22486
 22487
 22488
 22489
 22490
 22491
 22492
 22493
 22494
 22495
 22496
 22497
 22498
 22499
 22500
 22501
 22502
 22503
 22504
 22505
 22506
 22507
 22508
 22509
 22510
 22511
 22512
 22513
 22514
 22515
 22516
 22517
 22518
 22519
 22520
 22521
 22522
 22523
 22524
 22525
 22526
 22527
 22528
 22529
 22530
 22531
 22532
 22533
 22534
 22535
 22536
 22537
 22538
 22539
 22540
 22541
 22542
 22543
 22544
 22545
 22546
 22547
 22548
 22549
 22550
 22551
 22552
 22553
 22554
 22555
 22556
 22557
 22558
 22559
 22560
 22561
 22562
 22563
 22564
 22565
 22566
 22567
 22568
 22569
 22570
 22571
 22572
 22573
 22574
 22575
 22576
 22577
 22578
 22579
 22580
 22581
 22582
 22583
 22584
 22585
 22586
 22587
 22588
 22589
 22590
 22591
 22592
 22593
 22594
 22595
 22596
 22597
 22598
 22599
 22600
 22601
 22602
 22603
 22604
 22605
 22606
 22607
 22608
 22609
 22610
 22611
 22612
 22613
 22614
 22615
 22616
 22617
 22618
 22619
 22620
 22621
 22622
 22623
 22624
 22625
 22626
 22627
 22628
 22629
 22630
 22631
 22632
 22633
 22634
 22635
 22636
 22637
 22638
 22639
 22640
 22641
 22642
 22643
 22644
 22645
 22646
 22647
 22648
 22649
 22650
 22651
 22652
 22653
 22654
 22655
 22656
 22657
 22658
 22659
 22660
 22661
 22662
 22663
 22664
 22665
 22666
 22667
 22668
 22669
 22670
 22671
 22672
 22673
 22674
 22675
 22676
 22677
 22678
 22679
 22680
 22681
 22682
 22683
 22684
 22685
 22686
 22687
 22688
 22689
 22690
 22691
 22692
 22693
 22694
 22695
 22696
 22697
 22698
 22699
 22700
 22701
 22702
 22703
 22704
 22705
 22706
 22707
 22708
 22709
 22710
 22711
 22712
 22713
 22714
 22715
 22716
 22717
 22718
 22719
 22720
 22721
 22722
 22723
 22724
 22725
 22726
 22727
 22728
 22729
 22730
 22731
 22732
 22733
 22734
 22735
 22736
 22737
 22738
 22739
 22740
 22741
 22742
 22743
 22744
 22745
 22746
 22747
 22748
 22749
 22750
 22751
 22752
 22753
 22754
 22755
 22756
 22757
 22758
 22759
 22760
 22761
 22762
 22763
 22764
 22765
 22766
 22767
 22768
 22769
 22770
 22771
 22772
 22773
 22774
 22775
 22776
 22777
 22778
 22779
 22780
 22781
 22782
 22783
 22784
 22785
 22786
 22787
 22788
 22789
 22790
 22791
 22792
 22793
 22794
 22795
 22796
 22797
 22798
 22799
 22800
 22801
 22802
 22803
 22804
 22805
 22806
 22807
 22808
 22809
 22810
 22811
 22812
 22813
 22814
 22815
 22816
 22817
 22818
 22819
 22820
 22821
 22822
 22823
 22824
 22825
 22826
 22827
 22828
 22829
 22830
 22831
 22832
 22833
 22834
 22835
 22836
 22837
 22838
 22839
 22840
 22841
 22842
 22843
 22844
 22845
 22846
 22847
 22848
 22849
 22850
 22851
 22852
 22853
 22854
 22855
 22856
 22857
 22858
 22859
 22860
 22861
 22862
 22863
 22864
 22865
 22866
 22867
 22868
 22869
 22870
 22871
 22872
 22873
 22874
 22875
 22876
 22877
 22878
 22879
 22880
 22881
 22882
 22883
 22884
 22885
 22886
 22887
 22888
 22889
 22890
 22891
 22892
 22893
 22894
 22895
 22896
 22897
 22898
 22899
 22900
 22901
 22902
 22903
 22904
 22905
 22906
 22907
 22908
 22909
 22910
 22911
 22912
 22913
 22914
 22915
 22916
 22917
 22918
 22919
 22920
 22921
 22922
 22923
 22924
 22925
 22926
 22927
 22928
 22929
 22930
 22931
 22932
 22933
 22934
 22935
 22936
 22937
 22938
 22939
 22940
 22941
 22942
 22943
 22944
 22945
 22946
 22947
 22948
 22949
 22950
 22951
 22952
 22953
 22954
 22955
 22956
 22957
 22958
 22959
 22960
 22961
 22962
 22963
 22964
 22965
 22966
 22967
 22968
 22969
 22970
 22971
 22972
 22973
 22974
 22975
 22976
 22977
 22978
 22979
 22980
 22981
 22982
 22983
 22984
 22985
 22986
 22987
 22988
 22989
 22990
 22991
 22992
 22993
 22994
 22995
 22996
 22997
 22998
 22999
 23000
 23001
 23002
 23003
 23004
 23005
 23006
 23007
 23008
 23009
 23010
 23011
 23012
 23013
 23014
 23015
 23016
 23017
 23018
 23019
 23020
 23021
 23022
 23023
 23024
 23025
 23026
 23027
 23028
 23029
 23030
 23031
 23032
 23033
 23034
 23035
 23036
 23037
 23038
 23039
 23040
 23041
 23042
 23043
 23044
 23045
 23046
 23047
 23048
 23049
 23050
 23051
 23052
 23053
 23054
 23055
 23056
 23057
 23058
 23059
 23060
 23061
 23062
 23063
 23064
 23065
 23066
 23067
 23068
 23069
 23070
 23071
 23072
 23073
 23074
 23075
 23076
 23077
 23078
 23079
 23080
 23081
 23082
 23083
 23084
 23085
 23086
 23087
 23088
 23089
 23090
 23091
 23092
 23093
 23094
 23095
 23096
 23097
 23098
 23099
 23100
 23101
 23102
 23103
 23104
 23105
 23106
 23107
 23108
 23109
 23110
 23111
 23112
 23113
 23114
 23115
 23116
 23117
 23118
 23119
 23120
 23121
 23122
 23123
 23124
 23125
 23126
 23127
 23128
 23129
 23130
 23131
 23132
 23133
 23134
 23135
 23136
 23137
 23138
 23139
 23140
 23141
 23142
 23143
 23144
 23145
 23146
 23147
 23148
 23149
 23150
 23151
 23152
 23153
 23154
 23155
 23156
 23157
 23158
 23159
 23160
 23161
 23162
 23163
 23164
 23165
 23166
 23167
 23168
 23169
 23170
 23171
 23172
 23173
 23174
 23175
 23176
 23177
 23178
 23179
 23180
 23181
 23182
 23183
 23184
 23185
 23186
 23187
 23188
 23189
 23190
 23191
 23192
 23193
 23194
 23195
 23196
 23197
 23198
 23199
 23200
 23201
 23202
 23203
 23204
 23205
 23206
 23207
 23208
 23209
 23210
 23211
 23212
 23213
 23214
 23215
 23216
 23217
 23218
 23219
 23220
 23221
 23222
 23223
 23224
 23225
 23226
 23227
 23228
 23229
 23230
 23231
 23232
 23233
 23234
 23235
 23236
 23237
 23238
 23239
 23240
 23241
 23242
 23243
 23244
 23245
 23246
 23247
 23248
 23249
 23250
 23251
 23252
 23253
 23254
 23255
 23256
 23257
 23258
 23259
 23260
 23261
 23262
 23263
 23264
 23265
 23266
 23267
 23268
 23269
 23270
 23271
 23272
 23273
 23274
 23275
 23276
 23277
 23278
 23279
 23280
 23281
 23282
 23283
 23284
 23285
 23286
 23287
 23288
 23289
 23290
 23291
 23292
 23293
 23294
 23295
 23296
 23297
 23298
 23299
 23300
 23301
 23302
 23303
 23304
 23305
 23306
 23307
 23308
 23309
 23310
 23311
 23312
 23313
 23314
 23315
 23316
 23317
 23318
 23319
 23320
 23321
 23322
 23323
 23324
 23325
 23326
 23327
 23328
 23329
 23330
 23331
 23332
 23333
 23334
 23335
 23336
 23337
 23338
 23339
 23340
 23341
 23342
 23343
 23344
 23345
 23346
 23347
 23348
 23349
 23350
 23351
 23352
 23353
 23354
 23355
 23356
 23357
 23358
 23359
 23360
 23361
 23362
 23363
 23364
 23365
 23366
 23367
 23368
 23369
 23370
 23371
 23372
 23373
 23374
 23375
 23376
 23377
 23378
 23379
 23380
 23381
 23382
 23383
 23384
 23385
 23386
 23387
 23388
 23389
 23390
 23391
 23392
 23393
 23394
 23395
 23396
 23397
 23398
 23399
 23400
 23401
 23402
 23403
 23404
 23405
 23406
 23407
 23408
 23409
 23410
 23411
 23412
 23413
 23414
 23415
 23416
 23417
 23418
 23419
 23420
 23421
 23422
 23423
 23424
 23425
 23426
 23427
 23428
 23429
 23430
 23431
 23432
 23433
 23434
 23435
 23436
 23437
 23438
 23439
 23440
 23441
 23442
 23443
 23444
 23445
 23446
 23447
 23448
 23449
 23450
 23451
 23452
 23453
 23454
 23455
 23456
 23457
 23458
 23459
 23460
 23461
 23462
 23463
 23464
 23465
 23466
 23467
 23468
 23469
 23470
 23471
 23472
 23473
 23474
 23475
 23476
 23477
 23478
 23479
 23480
 23481
 23482
 23483
 23484
 23485
 23486
 23487
 23488
 23489
 23490
 23491
 23492
 23493
 23494
 23495
 23496
 23497
 23498
 23499
 23500
 23501
 23502
 23503
 23504
 23505
 23506
 23507
 23508
 23509
 23510
 23511
 23512
 23513
 23514
 23515
 23516
 23517
 23518
 23519
 23520
 23521
 23522
 23523
 23524
 23525
 23526
 23527
 23528
 23529
 23530
 23531
 23532
 23533
 23534
 23535
 23536
 23537
 23538
 23539
 23540
 23541
 23542
 23543
 23544
 23545
 23546
 23547
 23548
 23549
 23550
 23551
 23552
 23553
 23554
 23555
 23556
 23557
 23558
 23559
 23560
 23561
 23562
 23563
 23564
 23565
 23566
 23567
 23568
 23569
 23570
 23571
 23572
 23573
 23574
 23575
 23576
 23577
 23578
 23579
 23580
 23581
 23582
 23583
 23584
 23585
 23586
 23587
 23588
 23589
 23590
 23591
 23592
 23593
 23594
 23595
 23596
 23597
 23598
 23599
 23600
 23601
 23602
 23603
 23604
 23605
 23606
 23607
 23608
 23609
 23610
 23611
 23612
 23613
 23614
 23615
 23616
 23617
 23618
 23619
 23620
 23621
 23622
 23623
 23624
 23625
 23626
 23627
 23628
 23629
 23630
 23631
 23632
 23633
 23634
 23635
 23636
 23637
 23638
 23639
 23640
 23641
 23642
 23643
 23644
 23645
 23646
 23647
 23648
 23649
 23650
 23651
 23652
 23653
 23654
 23655
 23656
 23657
 23658
 23659
 23660
 23661
 23662
 23663
 23664
 23665
 23666
 23667
 23668
 23669
 23670
 23671
 23672
 23673
 23674
 23675
 23676
 23677
 23678
 23679
 23680
 23681
 23682
 23683
 23684
 23685
 23686
 23687
 23688
 23689
 23690
 23691
 23692
 23693
 23694
 23695
 23696
 23697
 23698
 23699
 23700
 23701
 23702
 23703
 23704
 23705
 23706
 23707
 23708
 23709
 23710
 23711
 23712
 23713
 23714
 23715
 23716
 23717
 23718
 23719
 23720
 23721
 23722
 23723
 23724
 23725
 23726
 23727
 23728
 23729
 23730
 23731
 23732
 23733
 23734
 23735
 23736
 23737
 23738
 23739
 23740
 23741
 23742
 23743
 23744
 23745
 23746
 23747
 23748
 23749
 23750
 23751
 23752
 23753
 23754
 23755
 23756
 23757
 23758
 23759
 23760
 23761
 23762
 23763
 23764
 23765
 23766
 23767
 23768
 23769
 23770
 23771
 23772
 23773
 23774
 23775
 23776
 23777
 23778
 23779
 23780
 23781
 23782
 23783
 23784
 23785
 23786
 23787
 23788
 23789
 23790
 23791
 23792
 23793
 23794
 23795
 23796
 23797
 23798
 23799
 23800
 23801
 23802
 23803
 23804
 23805
 23806
 23807
 23808
 23809
 23810
 23811
 23812
 23813
 23814
 23815
 23816
 23817
 23818
 23819
 23820
 23821
 23822
 23823
 23824
 23825
 23826
 23827
 23828
 23829
 23830
 23831
 23832
 23833
 23834
 23835
 23836
 23837
 23838
 23839
 23840
 23841
 23842
 23843
 23844
 23845
 23846
 23847
 23848
 23849
 23850
 23851
 23852
 23853
 23854
 23855
 23856
 23857
 23858
 23859
 23860
 23861
 23862
 23863
 23864
 23865
 23866
 23867
 23868
 23869
 23870
 23871
 23872
 23873
 23874
 23875
 23876
 23877
 23878
 23879
 23880
 23881
 23882
 23883
 23884
 23885
 23886
 23887
 23888
 23889
 23890
 23891
 23892
 23893
 23894
 23895
 23896
 23897
 23898
 23899
 23900
 23901
 23902
 23903
 23904
 23905
 23906
 23907
 23908
 23909
 23910
 23911
 23912
 23913
 23914
 23915
 23916
 23917
 23918
 23919
 23920
 23921
 23922
 23923
 23924
 23925
 23926
 23927
 23928
 23929
 23930
 23931
 23932
 23933
 23934
 23935
 23936
 23937
 23938
 23939
 23940
 23941
 23942
 23943
 23944
 23945
 23946
 23947
 23948
 23949
 23950
 23951
 23952
 23953
 23954
 23955
 23956
 23957
 23958
 23959
 23960
 23961
 23962
 23963
 23964
 23965
 23966
 23967
 23968
 23969
 23970
 23971
 23972
 23973
 23974
 23975
 23976
 23977
 23978
 23979
 23980
 23981
 23982
 23983
 23984
 23985
 23986
 23987
 23988
 23989
 23990
 23991
 23992
 23993
 23994
 23995
 23996
 23997
 23998
 23999
 24000
 24001
 24002
 24003
 24004
 24005
 24006
 24007
 24008
 24009
 24010
 24011
 24012
 24013
 24014
 24015
 24016
 24017
 24018
 24019
 24020
 24021
 24022
 24023
 24024
 24025
 24026
 24027
 24028
 24029
 24030
 24031
 24032
 24033
 24034
 24035
 24036
 24037
 24038
 24039
 24040
 24041
 24042
 24043
 24044
 24045
 24046
 24047
 24048
 24049
 24050
 24051
 24052
 24053
 24054
 24055
 24056
 24057
 24058
 24059
 24060
 24061
 24062
 24063
 24064
 24065
 24066
 24067
 24068
 24069
 24070
 24071
 24072
 24073
 24074
 24075
 24076
 24077
 24078
 24079
 24080
 24081
 24082
 24083
 24084
 24085
 24086
 24087
 24088
 24089
 24090
 24091
 24092
 24093
 24094
 24095
 24096
 24097
 24098
 24099
 24100
 24101
 24102
 24103
 24104
 24105
 24106
 24107
 24108
 24109
 24110
 24111
 24112
 24113
 24114
 24115
 24116
 24117
 24118
 24119
 24120
 24121
 24122
 24123
 24124
 24125
 24126
 24127
 24128
 24129
 24130
 24131
 24132
 24133
 24134
 24135
 24136
 24137
 24138
 24139
 24140
 24141
 24142
 24143
 24144
 24145
 24146
 24147
 24148
 24149
 24150
 24151
 24152
 24153
 24154
 24155
 24156
 24157
 24158
 24159
 24160
 24161
 24162
 24163
 24164
 24165
 24166
 24167
 24168
 24169
 24170
 24171
 24172
 24173
 24174
 24175
 24176
 24177
 24178
 24179
 24180
 24181
 24182
 24183
 24184
 24185
 24186
 24187
 24188
 24189
 24190
 24191
 24192
 24193
 24194
 24195
 24196
 24197
 24198
 24199
 24200
 24201
 24202
 24203
 24204
 24205
 24206
 24207
 24208
 24209
 24210
 24211
 24212
 24213
 24214
 24215
 24216
 24217
 24218
 24219
 24220
 24221
 24222
 24223
 24224
 24225
 24226
 24227
 24228
 24229
 24230
 24231
 24232
 24233
 24234
 24235
 24236
 24237
 24238
 24239
 24240
 24241
 24242
 24243
 24244
 24245
 24246
 24247
 24248
 24249
 24250
 24251
 24252
 24253
 24254
 24255
 24256
 24257
 24258
 24259
 24260
 24261
 24262
 24263
 24264
 24265
 24266
 24267
 24268
 24269
 24270
 24271
 24272
 24273
 24274
 24275
 24276
 24277
 24278
 24279
 24280
 24281
 24282
 24283
 24284
 24285
 24286
 24287
 24288
 24289
 24290
 24291
 24292
 24293
 24294
 24295
 24296
 24297
 24298
 24299
 24300
 24301
 24302
 24303
 24304
 24305
 24306
 24307
 24308
 24309
 24310
 24311
 24312
 24313
 24314
 24315
 24316
 24317
 24318
 24319
 24320
 24321
 24322
 24323
 24324
 24325
 24326
 24327
 24328
 24329
 24330
 24331
 24332
 24333
 24334
 24335
 24336
 24337
 24338
 24339
 24340
 24341
 24342
 24343
 24344
 24345
 24346
 24347
 24348
 24349
 24350
 24351
 24352
 24353
 24354
 24355
 24356
 24357
 24358
 24359
 24360
 24361
 24362
 24363
 24364
 24365
 24366
 24367
 24368
 24369
 24370
 24371
 24372
 24373
 24374
 24375
 24376
 24377
 24378
 24379
 24380
 24381
 24382
 24383
 24384
 24385
 24386
 24387
 24388
 24389
 24390
 24391
 24392
 24393
 24394
 24395
 24396
 24397
 24398
 24399
 24400
 24401
 24402
 24403
 24404
 24405
 24406
 24407
 24408
 24409
 24410
 24411
 24412
 24413
 24414
 24415
 24416
 24417
 24418
 24419
 24420
 24421
 24422
 24423
 24424
 24425
 24426
 24427
 24428
 24429
 24430
 24431
 24432
 24433
 24434
 24435
 24436
 24437
 24438
 24439
 24440
 24441
 24442
 24443
 24444
 24445
 24446
 24447
 24448
 24449
 24450
 24451
 24452
 24453
 24454
 24455
 24456
 24457
 24458
 24459
 24460
 24461
 24462
 24463
 24464
 24465
 24466
 24467
 24468
 24469
 24470
 24471
 24472
 24473
 24474
 24475
 24476
 24477
 24478
 24479
 24480
 24481
 24482
 24483
 24484
 24485
 24486
 24487
 24488
 24489
 24490
 24491
 24492
 24493
 24494
 24495
 24496
 24497
 24498
 24499
 24500
 24501
 24502
 24503
 24504
 24505
 24506
 24507
 24508
 24509
 24510
 24511
 24512
 24513
 24514
 24515
 24516
 24517
 24518
 24519
 24520
 24521
 24522
 24523
 24524
 24525
 24526
 24527
 24528
 24529
 24530
 24531
 24532
 24533
 24534
 24535
 24536
 24537
 24538
 24539
 24540
 24541
 24542
 24543
 24544
 24545
 24546
 24547
 24548
 24549
 24550
 24551
 24552
 24553
 24554
 24555
 24556
 24557
 24558
 24559
 24560
 24561
 24562
 24563
 24564
 24565
 24566
 24567
 24568
 24569
 24570
 24571
 24572
 24573
 24574
 24575
 24576
 24577
 24578
 24579
 24580
 24581
 24582
 24583
 24584
 24585
 24586
 24587
 24588
 24589
 24590
 24591
 24592
 24593
 24594
 24595
 24596
 24597
 24598
 24599
 24600
 24601
 24602
 24603
 24604
 24605
 24606
 24607
 24608
 24609
 24610
 24611
 24612
 24613
 24614
 24615
 24616
 24617
 24618
 24619
 24620
 24621
 24622
 24623
 24624
 24625
 24626
 24627
 24628
 24629
 24630
 24631
 24632
 24633
 24634
 24635
 24636
 24637
 24638
 24639
 24640
 24641
 24642
 24643
 24644
 24645
 24646
 24647
 24648
 24649
 24650
 24651
 24652
 24653
 24654
 24655
 24656
 24657
 24658
 24659
 24660
 24661
 24662
 24663
 24664
 24665
 24666
 24667
 24668
 24669
 24670
 24671
 24672
 24673
 24674
 24675
 24676
 24677
 24678
 24679
 24680
 24681
 24682
 24683
 24684
 24685
 24686
 24687
 24688
 24689
 24690
 24691
 24692
 24693
 24694
 24695
 24696
 24697
 24698
 24699
 24700
 24701
 24702
 24703
 24704
 24705
 24706
 24707
 24708
 24709
 24710
 24711
 24712
 24713
 24714
 24715
 24716
 24717
 24718
 24719
 24720
 24721
 24722
 24723
 24724
 24725
 24726
 24727
 24728
 24729
 24730
 24731
 24732
 24733
 24734
 24735
 24736
 24737
 24738
 24739
 24740
 24741
 24742
 24743
 24744
 24745
 24746
 24747
 24748
 24749
 24750
 24751
 24752
 24753
 24754
 24755
 24756
 24757
 24758
 24759
 24760
 24761
 24762
 24763
 24764
 24765
 24766
 24767
 24768
 24769
 24770
 24771
 24772
 24773
 24774
 24775
 24776
 24777
 24778
 24779
 24780
 24781
 24782
 24783
 24784
 24785
 24786
 24787
 24788
 24789
 24790
 24791
 24792
 24793
 24794
 24795
 24796
 24797
 24798
 24799
 24800
 24801
 24802
 24803
 24804
 24805
 24806
 24807
 24808
 24809
 24810
 24811
 24812
 24813
 24814
 24815
 24816
 24817
 24818
 24819
 24820
 24821
 24822
 24823
 24824
 24825
 24826
 24827
 24828
 24829
 24830
 24831
 24832
 24833
 24834
 24835
 24836
 24837
 24838
 24839
 24840
 24841
 24842
 24843
 24844
 24845
 24846
 24847
 24848
 24849
 24850
 24851
 24852
 24853
 24854
 24855
 24856
 24857
 24858
 24859
 24860
 24861
 24862
 24863
 24864
 24865
 24866
 24867
 24868
 24869
 24870
 24871
 24872
 24873
 24874
 24875
 24876
 24877
 24878
 24879
 24880
 24881
 24882
 24883
 24884
 24885
 24886
 24887
 24888
 24889
 24890
 24891
 24892
 24893
 24894
 24895
 24896
 24897
 24898
 24899
 24900
 24901
 24902
 24903
 24904
 24905
 24906
 24907
 24908
 24909
 24910
 24911
 24912
 24913
 24914
 24915
 24916
 24917
 24918
 24919
 24920
 24921
 24922
 24923
 24924
 24925
 24926
 24927
 24928
 24929
 24930
 24931
 24932
 24933
 24934
 24935
 24936
 24937
 24938
 24939
 24940
 24941
 24942
 24943
 24944
 24945
 24946
 24947
 24948
 24949
 24950
 24951
 24952
 24953
 24954
 24955
 24956
 24957
 24958
 24959
 24960
 24961
 24962
 24963
 24964
 24965
 24966
 24967
 24968
 24969
 24970
 24971
 24972
 24973
 24974
 24975
 24976
 24977
 24978
 24979
 24980
 24981
 24982
 24983
 24984
 24985
 24986
 24987
 24988
 24989
 24990
 24991
 24992
 24993
 24994
 24995
 24996
 24997
 24998
 24999
 25000
 25001
 25002
 25003
 25004
 25005
 25006
 25007
 25008
 25009
 25010
 25011
 25012
 25013
 25014
 25015
 25016
 25017
 25018
 25019
 25020
 25021
 25022
 25023
 25024
 25025
 25026
 25027
 25028
 25029
 25030
 25031
 25032
 25033
 25034
 25035
 25036
 25037
 25038
 25039
 25040
 25041
 25042
 25043
 25044
 25045
 25046
 25047
 25048
 25049
 25050
 25051
 25052
 25053
 25054
 25055
 25056
 25057
 25058
 25059
 25060
 25061
 25062
 25063
 25064
 25065
 25066
 25067
 25068
 25069
 25070
 25071
 25072
 25073
 25074
 25075
 25076
 25077
 25078
 25079
 25080
 25081
 25082
 25083
 25084
 25085
 25086
 25087
 25088
 25089
 25090
 25091
 25092
 25093
 25094
 25095
 25096
 25097
 25098
 25099
 25100
 25101
 25102
 25103
 25104
 25105
 25106
 25107
 25108
 25109
 25110
 25111
 25112
 25113
 25114
 25115
 25116
 25117
 25118
 25119
 25120
 25121
 25122
 25123
 25124
 25125
 25126
 25127
 25128
 25129
 25130
 25131
 25132
 25133
 25134
 25135
 25136
 25137
 25138
 25139
 25140
 25141
 25142
 25143
 25144
 25145
 25146
 25147
 25148
 25149
 25150
 25151
 25152
 25153
 25154
 25155
 25156
 25157
 25158
 25159
 25160
 25161
 25162
 25163
 25164
 25165
 25166
 25167
 25168
 25169
 25170
 25171
 25172
 25173
 25174
 25175
 25176
 25177
 25178
 25179
 25180
 25181
 25182
 25183
 25184
 25185
 25186
 25187
 25188
 25189
 25190
 25191
 25192
 25193
 25194
 25195
 25196
 25197
 25198
 25199
 25200
 25201
 25202
 25203
 25204
 25205
 25206
 25207
 25208
 25209
 25210
 25211
 25212
 25213
 25214
 25215
 25216
 25217
 25218
 25219
 25220
 25221
 25222
 25223
 25224
 25225
 25226
 25227
 25228
 25229
 25230
 25231
 25232
 25233
 25234
 25235
 25236
 25237
 25238
 25239
 25240
 25241
 25242
 25243
 25244
 25245
 25246
 25247
 25248
 25249
 25250
 25251
 25252
 25253
 25254
 25255
 25256
 25257
 25258
 25259
 25260
 25261
 25262
 25263
 25264
 25265
 25266
 25267
 25268
 25269
 25270
 25271
 25272
 25273
 25274
 25275
 25276
 25277
 25278
 25279
 25280
 25281
 25282
 25283
 25284
 25285
 25286
 25287
 25288
 25289
 25290
 25291
 25292
 25293
 25294
 25295
 25296
 25297
 25298
 25299
 25300
 25301
 25302
 25303
 25304
 25305
 25306
 25307
 25308
 25309
 25310
 25311
 25312
 25313
 25314
 25315
 25316
 25317
 25318
 25319
 25320
 25321
 25322
 25323
 25324
 25325
 25326
 25327
 25328
 25329
 25330
 25331
 25332
 25333
 25334
 25335
 25336
 25337
 25338
 25339
 25340
 25341
 25342
 25343
 25344
 25345
 25346
 25347
 25348
 25349
 25350
 25351
 25352
 25353
 25354
 25355
 25356
 25357
 25358
 25359
 25360
 25361
 25362
 25363
 25364
 25365
 25366
 25367
 25368
 25369
 25370
 25371
 25372
 25373
 25374
 25375
 25376
 25377
 25378
 25379
 25380
 25381
 25382
 25383
 25384
 25385
 25386
 25387
 25388
 25389
 25390
 25391
 25392
 25393
 25394
 25395
 25396
 25397
 25398
 25399
 25400
 25401
 25402
 25403
 25404
 25405
 25406
 25407
 25408
 25409
 25410
 25411
 25412
 25413
 25414
 25415
 25416
 25417
 25418
 25419
 25420
 25421
 25422
 25423
 25424
 25425
 25426
 25427
 25428
 25429
 25430
 25431
 25432
 25433
 25434
 25435
 25436
 25437
 25438
 25439
 25440
 25441
 25442
 25443
 25444
 25445
 25446
 25447
 25448
 25449
 25450
 25451
 25452
 25453
 25454
 25455
 25456
 25457
 25458
 25459
 25460
 25461
 25462
 25463
 25464
 25465
 25466
 25467
 25468
 25469
 25470
 25471
 25472
 25473
 25474
 25475
 25476
 25477
 25478
 25479
 25480
 25481
 25482
 25483
 25484
 25485
 25486
 25487
 25488
 25489
 25490
 25491
 25492
 25493
 25494
 25495
 25496
 25497
 25498
 25499
 25500
 25501
 25502
 25503
 25504
 25505
 25506
 25507
 25508
 25509
 25510
 25511
 25512
 25513
 25514
 25515
 25516
 25517
 25518
 25519
 25520
 25521
 25522
 25523
 25524
 25525
 25526
 25527
 25528
 25529
 25530
 25531
 25532
 25533
 25534
 25535
 25536
 25537
 25538
 25539
 25540
 25541
 25542
 25543
 25544
 25545
 25546
 25547
 25548
 25549
 25550
 25551
 25552
 25553
 25554
 25555
 25556
 25557
 25558
 25559
 25560
 25561
 25562
 25563
 25564
 25565
 25566
 25567
 25568
 25569
 25570
 25571
 25572
 25573
 25574
 25575
 25576
 25577
 25578
 25579
 25580
 25581
 25582
 25583
 25584
 25585
 25586
 25587
 25588
 25589
 25590
 25591
 25592
 25593
 25594
 25595
 25596
 25597
 25598
 25599
 25600
 25601
 25602
 25603
 25604
 25605
 25606
 25607
 25608
 25609
 25610
 25611
 25612
 25613
 25614
 25615
 25616
 25617
 25618
 25619
 25620
 25621
 25622
 25623
 25624
 25625
 25626
 25627
 25628
 25629
 25630
 25631
 25632
 25633
 25634
 25635
 25636
 25637
 25638
 25639
 25640
 25641
 25642
 25643
 25644
 25645
 25646
 25647
 25648
 25649
 25650
 25651
 25652
 25653
 25654
 25655
 25656
 25657
 25658
 25659
 25660
 25661
 25662
 25663
 25664
 25665
 25666
 25667
 25668
 25669
 25670
 25671
 25672
 25673
 25674
 25675
 25676
 25677
 25678
 25679
 25680
 25681
 25682
 25683
 25684
 25685
 25686
 25687
 25688
 25689
 25690
 25691
 25692
 25693
 25694
 25695
 25696
 25697
 25698
 25699
 25700
 25701
 25702
 25703
 25704
 25705
 25706
 25707
 25708
 25709
 25710
 25711
 25712
 25713
 25714
 25715
 25716
 25717
 25718
 25719
 25720
 25721
 25722
 25723
 25724
 25725
 25726
 25727
 25728
 25729
 25730
 25731
 25732
 25733
 25734
 25735
 25736
 25737
 25738
 25739
 25740
 25741
 25742
 25743
 25744
 25745
 25746
 25747
 25748
 25749
 25750
 25751
 25752
 25753
 25754
 25755
 25756
 25757
 25758
 25759
 25760
 25761
 25762
 25763
 25764
 25765
 25766
 25767
 25768
 25769
 25770
 25771
 25772
 25773
 25774
 25775
 25776
 25777
 25778
 25779
 25780
 25781
 25782
 25783
 25784
 25785
 25786
 25787
 25788
 25789
 25790
 25791
 25792
 25793
 25794
 25795
 25796
 25797
 25798
 25799
 25800
 25801
 25802
 25803
 25804
 25805
 25806
 25807
 25808
 25809
 25810
 25811
 25812
 25813
 25814
 25815
 25816
 25817
 25818
 25819
 25820
 25821
 25822
 25823
 25824
 25825
 25826
 25827
 25828
 25829
 25830
 25831
 25832
 25833
 25834
 25835
 25836
 25837
 25838
 25839
 25840
 25841
 25842
 25843
 25844
 25845
 25846
 25847
 25848
 25849
 25850
 25851
 25852
 25853
 25854
 25855
 25856
 25857
 25858
 25859
 25860
 25861
 25862
 25863
 25864
 25865
 25866
 25867
 25868
 25869
 25870
 25871
 25872
 25873
 25874
 25875
 25876
 25877
 25878
 25879
 25880
 25881
 25882
 25883
 25884
 25885
 25886
 25887
 25888
 25889
 25890
 25891
 25892
 25893
 25894
 25895
 25896
 25897
 25898
 25899
 25900
 25901
 25902
 25903
 25904
 25905
 25906
 25907
 25908
 25909
 25910
 25911
 25912
 25913
 25914
 25915
 25916
 25917
 25918
 25919
 25920
 25921
 25922
 25923
 25924
 25925
 25926
 25927
 25928
 25929
 25930
 25931
 25932
 25933
 25934
 25935
 25936
 25937
 25938
 25939
 25940
 25941
 25942
 25943
 25944
 25945
 25946
 25947
 25948
 25949
 25950
 25951
 25952
 25953
 25954
 25955
 25956
 25957
 25958
 25959
 25960
 25961
 25962
 25963
 25964
 25965
 25966
 25967
 25968
 25969
 25970
 25971
 25972
 25973
 25974
 25975
 25976
 25977
 25978
 25979
 25980
 25981
 25982
 25983
 25984
 25985
 25986
 25987
 25988
 25989
 25990
 25991
 25992
 25993
 25994
 25995
 25996
 25997
 25998
 25999
 26000
 26001
 26002
 26003
 26004
 26005
 26006
 26007
 26008
 26009
 26010
 26011
 26012
 26013
 26014
 26015
 26016
 26017
 26018
 26019
 26020
 26021
 26022
 26023
 26024
 26025
 26026
 26027
 26028
 26029
 26030
 26031
 26032
 26033
 26034
 26035
 26036
 26037
 26038
 26039
 26040
 26041
 26042
 26043
 26044
 26045
 26046
 26047
 26048
 26049
 26050
 26051
 26052
 26053
 26054
 26055
 26056
 26057
 26058
 26059
 26060
 26061
 26062
 26063
 26064
 26065
 26066
 26067
 26068
 26069
 26070
 26071
 26072
 26073
 26074
 26075
 26076
 26077
 26078
 26079
 26080
 26081
 26082
 26083
 26084
 26085
 26086
 26087
 26088
 26089
 26090
 26091
 26092
 26093
 26094
 26095
 26096
 26097
 26098
 26099
 26100
 26101
 26102
 26103
 26104
 26105
 26106
 26107
 26108
 26109
 26110
 26111
 26112
 26113
 26114
 26115
 26116
 26117
 26118
 26119
 26120
 26121
 26122
 26123
 26124
 26125
 26126
 26127
 26128
 26129
 26130
 26131
 26132
 26133
 26134
 26135
 26136
 26137
 26138
 26139
 26140
 26141
 26142
 26143
 26144
 26145
 26146
 26147
 26148
 26149
 26150
 26151
 26152
 26153
 26154
 26155
 26156
 26157
 26158
 26159
 26160
 26161
 26162
 26163
 26164
 26165
 26166
 26167
 26168
 26169
 26170
 26171
 26172
 26173
 26174
 26175
 26176
 26177
 26178
 26179
 26180
 26181
 26182
 26183
 26184
 26185
 26186
 26187
 26188
 26189
 26190
 26191
 26192
 26193
 26194
 26195
 26196
 26197
 26198
 26199
 26200
 26201
 26202
 26203
 26204
 26205
 26206
 26207
 26208
 26209
 26210
 26211
 26212
 26213
 26214
 26215
 26216
 26217
 26218
 26219
 26220
 26221
 26222
 26223
 26224
 26225
 26226
 26227
 26228
 26229
 26230
 26231
 26232
 26233
 26234
 26235
 26236
 26237
 26238
 26239
 26240
 26241
 26242
 26243
 26244
 26245
 26246
 26247
 26248
 26249
 26250
 26251
 26252
 26253
 26254
 26255
 26256
 26257
 26258
 26259
 26260
 26261
 26262
 26263
 26264
 26265
 26266
 26267
 26268
 26269
 26270
 26271
 26272
 26273
 26274
 26275
 26276
 26277
 26278
 26279
 26280
 26281
 26282
 26283
 26284
 26285
 26286
 26287
 26288
 26289
 26290
 26291
 26292
 26293
 26294
 26295
 26296
 26297
 26298
 26299
 26300
 26301
 26302
 26303
 26304
 26305
 26306
 26307
 26308
 26309
 26310
 26311
 26312
 26313
 26314
 26315
 26316
 26317
 26318
 26319
 26320
 26321
 26322
 26323
 26324
 26325
 26326
 26327
 26328
 26329
 26330
 26331
 26332
 26333
 26334
 26335
 26336
 26337
 26338
 26339
 26340
 26341
 26342
 26343
 26344
 26345
 26346
 26347
 26348
 26349
 26350
 26351
 26352
 26353
 26354
 26355
 26356
 26357
 26358
 26359
 26360
 26361
 26362
 26363
 26364
 26365
 26366
 26367
 26368
 26369
 26370
 26371
 26372
 26373
 26374
 26375
 26376
 26377
 26378
 26379
 26380
 26381
 26382
 26383
 26384
 26385
 26386
 26387
 26388
 26389
 26390
 26391
 26392
 26393
 26394
 26395
 26396
 26397
 26398
 26399
 26400
 26401
 26402
 26403
 26404
 26405
 26406
 26407
 26408
 26409
 26410
 26411
 26412
 26413
 26414
 26415
 26416
 26417
 26418
 26419
 26420
 26421
 26422
 26423
 26424
 26425
 26426
 26427
 26428
 26429
 26430
 26431
 26432
 26433
 26434
 26435
 26436
 26437
 26438
 26439
 26440
 26441
 26442
 26443
 26444
 26445
 26446
 26447
 26448
 26449
 26450
 26451
 26452
 26453
 26454
 26455
 26456
 26457
 26458
 26459
 26460
 26461
 26462
 26463
 26464
 26465
 26466
 26467
 26468
 26469
 26470
 26471
 26472
 26473
 26474
 26475
 26476
 26477
 26478
 26479
 26480
 26481
 26482
 26483
 26484
 26485
 26486
 26487
 26488
 26489
 26490
 26491
 26492
 26493
 26494
 26495
 26496
 26497
 26498
 26499
 26500
 26501
 26502
 26503
 26504
 26505
 26506
 26507
 26508
 26509
 26510
 26511
 26512
 26513
 26514
 26515
 26516
 26517
 26518
 26519
 26520
 26521
 26522
 26523
 26524
 26525
 26526
 26527
 26528
 26529
 26530
 26531
 26532
 26533
 26534
 26535
 26536
 26537
 26538
 26539
 26540
 26541
 26542
 26543
 26544
 26545
 26546
 26547
 26548
 26549
 26550
 26551
 26552
 26553
 26554
 26555
 26556
 26557
 26558
 26559
 26560
 26561
 26562
 26563
 26564
 26565
 26566
 26567
 26568
 26569
 26570
 26571
 26572
 26573
 26574
 26575
 26576
 26577
 26578
 26579
 26580
 26581
 26582
 26583
 26584
 26585
 26586
 26587
 26588
 26589
 26590
 26591
 26592
 26593
 26594
 26595
 26596
 26597
 26598
 26599
 26600
 26601
 26602
 26603
 26604
 26605
 26606
 26607
 26608
 26609
 26610
 26611
 26612
 26613
 26614
 26615
 26616
 26617
 26618
 26619
 26620
 26621
 26622
 26623
 26624
 26625
 26626
 26627
 26628
 26629
 26630
 26631
 26632
 26633
 26634
 26635
 26636
 26637
 26638
 26639
 26640
 26641
 26642
 26643
 26644
 26645
 26646
 26647
 26648
 26649
 26650
 26651
 26652
 26653
 26654
 26655
 26656
 26657
 26658
 26659
 26660
 26661
 26662
 26663
 26664
 26665
 26666
 26667
 26668
 26669
 26670
 26671
 26672
 26673
 26674
 26675
 26676
 26677
 26678
 26679
 26680
 26681
 26682
 26683
 26684
 26685
 26686
 26687
 26688
 26689
 26690
 26691
 26692
 26693
 26694
 26695
 26696
 26697
 26698
 26699
 26700
 26701
 26702
 26703
 26704
 26705
 26706
 26707
 26708
 26709
 26710
 26711
 26712
 26713
 26714
 26715
 26716
 26717
 26718
 26719
 26720
 26721
 26722
 26723
 26724
 26725
 26726
 26727
 26728
 26729
 26730
 26731
 26732
 26733
 26734
 26735
 26736
 26737
 26738
 26739
 26740
 26741
 26742
 26743
 26744
 26745
 26746
 26747
 26748
 26749
 26750
 26751
 26752
 26753
 26754
 26755
 26756
 26757
 26758
 26759
 26760
 26761
 26762
 26763
 26764
 26765
 26766
 26767
 26768
 26769
 26770
 26771
 26772
 26773
 26774
 26775
 26776
 26777
 26778
 26779
 26780
 26781
 26782
 26783
 26784
 26785
 26786
 26787
 26788
 26789
 26790
 26791
 26792
 26793
 26794
 26795
 26796
 26797
 26798
 26799
 26800
 26801
 26802
 26803
 26804
 26805
 26806
 26807
 26808
 26809
 26810
 26811
 26812
 26813
 26814
 26815
 26816
 26817
 26818
 26819
 26820
 26821
 26822
 26823
 26824
 26825
 26826
 26827
 26828
 26829
 26830
 26831
 26832
 26833
 26834
 26835
 26836
 26837
 26838
 26839
 26840
 26841
 26842
 26843
 26844
 26845
 26846
 26847
 26848
 26849
 26850
 26851
 26852
 26853
 26854
 26855
 26856
 26857
 26858
 26859
 26860
 26861
 26862
 26863
 26864
 26865
 26866
 26867
 26868
 26869
 26870
 26871
 26872
 26873
 26874
 26875
 26876
 26877
 26878
 26879
 26880
 26881
 26882
 26883
 26884
 26885
 26886
 26887
 26888
 26889
 26890
 26891
 26892
 26893
 26894
 26895
 26896
 26897
 26898
 26899
 26900
 26901
 26902
 26903
 26904
 26905
 26906
 26907
 26908
 26909
 26910
 26911
 26912
 26913
 26914
 26915
 26916
 26917
 26918
 26919
 26920
 26921
 26922
 26923
 26924
 26925
 26926
 26927
 26928
 26929
 26930
 26931
 26932
 26933
 26934
 26935
 26936
 26937
 26938
 26939
 26940
 26941
 26942
 26943
 26944
 26945
 26946
 26947
 26948
 26949
 26950
 26951
 26952
 26953
 26954
 26955
 26956
 26957
 26958
 26959
 26960
 26961
 26962
 26963
 26964
 26965
 26966
 26967
 26968
 26969
 26970
 26971
 26972
 26973
 26974
 26975
 26976
 26977
 26978
 26979
 26980
 26981
 26982
 26983
 26984
 26985
 26986
 26987
 26988
 26989
 26990
 26991
 26992
 26993
 26994
 26995
 26996
 26997
 26998
 26999
 27000
 27001
 27002
 27003
 27004
 27005
 27006
 27007
 27008
 27009
 27010
 27011
 27012
 27013
 27014
 27015
 27016
 27017
 27018
 27019
 27020
 27021
 27022
 27023
 27024
 27025
 27026
 27027
 27028
 27029
 27030
 27031
 27032
 27033
 27034
 27035
 27036
 27037
 27038
 27039
 27040
 27041
 27042
 27043
 27044
 27045
 27046
 27047
 27048
 27049
 27050
 27051
 27052
 27053
 27054
 27055
 27056
 27057
 27058
 27059
 27060
 27061
 27062
 27063
 27064
 27065
 27066
 27067
 27068
 27069
 27070
 27071
 27072
 27073
 27074
 27075
 27076
 27077
 27078
 27079
 27080
 27081
 27082
 27083
 27084
 27085
 27086
 27087
 27088
 27089
 27090
 27091
 27092
 27093
 27094
 27095
 27096
 27097
 27098
 27099
 27100
 27101
 27102
 27103
 27104
 27105
 27106
 27107
 27108
 27109
 27110
 27111
 27112
 27113
 27114
 27115
 27116
 27117
 27118
 27119
 27120
 27121
 27122
 27123
 27124
 27125
 27126
 27127
 27128
 27129
 27130
 27131
 27132
 27133
 27134
 27135
 27136
 27137
 27138
 27139
 27140
 27141
 27142
 27143
 27144
 27145
 27146
 27147
 27148
 27149
 27150
 27151
 27152
 27153
 27154
 27155
 27156
 27157
 27158
 27159
 27160
 27161
 27162
 27163
 27164
 27165
 27166
 27167
 27168
 27169
 27170
 27171
 27172
 27173
 27174
 27175
 27176
 27177
 27178
 27179
 27180
 27181
 27182
 27183
 27184
 27185
 27186
 27187
 27188
 27189
 27190
 27191
 27192
 27193
 27194
 27195
 27196
 27197
 27198
 27199
 27200
 27201
 27202
 27203
 27204
 27205
 27206
 27207
 27208
 27209
 27210
 27211
 27212
 27213
 27214
 27215
 27216
 27217
 27218
 27219
 27220
 27221
 27222
 27223
 27224
 27225
 27226
 27227
 27228
 27229
 27230
 27231
 27232
 27233
 27234
 27235
 27236
 27237
 27238
 27239
 27240
 27241
 27242
 27243
 27244
 27245
 27246
 27247
 27248
 27249
 27250
 27251
 27252
 27253
 27254
 27255
 27256
 27257
 27258
 27259
 27260
 27261
 27262
 27263
 27264
 27265
 27266
 27267
 27268
 27269
 27270
 27271
 27272
 27273
 27274
 27275
 27276
 27277
 27278
 27279
 27280
 27281
 27282
 27283
 27284
 27285
 27286
 27287
 27288
 27289
 27290
 27291
 27292
 27293
 27294
 27295
 27296
 27297
 27298
 27299
 27300
 27301
 27302
 27303
 27304
 27305
 27306
 27307
 27308
 27309
 27310
 27311
 27312
 27313
 27314
 27315
 27316
 27317
 27318
 27319
 27320
 27321
 27322
 27323
 27324
 27325
 27326
 27327
 27328
 27329
 27330
 27331
 27332
 27333
 27334
 27335
 27336
 27337
 27338
 27339
 27340
 27341
 27342
 27343
 27344
 27345
 27346
 27347
 27348
 27349
 27350
 27351
 27352
 27353
 27354
 27355
 27356
 27357
 27358
 27359
 27360
 27361
 27362
 27363
 27364
 27365
 27366
 27367
 27368
 27369
 27370
 27371
 27372
 27373
 27374
 27375
 27376
 27377
 27378
 27379
 27380
 27381
 27382
 27383
 27384
 27385
 27386
 27387
 27388
 27389
 27390
 27391
 27392
 27393
 27394
 27395
 27396
 27397
 27398
 27399
 27400
 27401
 27402
 27403
 27404
 27405
 27406
 27407
 27408
 27409
 27410
 27411
 27412
 27413
 27414
 27415
 27416
 27417
 27418
 27419
 27420
 27421
 27422
 27423
 27424
 27425
 27426
 27427
 27428
 27429
 27430
 27431
 27432
 27433
 27434
 27435
 27436
 27437
 27438
 27439
 27440
 27441
 27442
 27443
 27444
 27445
 27446
 27447
 27448
 27449
 27450
 27451
 27452
 27453
 27454
 27455
 27456
 27457
 27458
 27459
 27460
 27461
 27462
 27463
 27464
 27465
 27466
 27467
 27468
 27469
 27470
 27471
 27472
 27473
 27474
 27475
 27476
 27477
 27478
 27479
 27480
 27481
 27482
 27483
 27484
 27485
 27486
 27487
 27488
 27489
 27490
 27491
 27492
 27493
 27494
 27495
 27496
 27497
 27498
 27499
 27500
 27501
 27502
 27503
 27504
 27505
 27506
 27507
 27508
 27509
 27510
 27511
 27512
 27513
 27514
 27515
 27516
 27517
 27518
 27519
 27520
 27521
 27522
 27523
 27524
 27525
 27526
 27527
 27528
 27529
 27530
 27531
 27532
 27533
 27534
 27535
 27536
 27537
 27538
 27539
 27540
 27541
 27542
 27543
 27544
 27545
 27546
 27547
 27548
 27549
 27550
 27551
 27552
 27553
 27554
 27555
 27556
 27557
 27558
 27559
 27560
 27561
 27562
 27563
 27564
 27565
 27566
 27567
 27568
 27569
 27570
 27571
 27572
 27573
 27574
 27575
 27576
 27577
 27578
 27579
 27580
 27581
 27582
 27583
 27584
 27585
 27586
 27587
 27588
 27589
 27590
 27591
 27592
 27593
 27594
 27595
 27596
 27597
 27598
 27599
 27600
 27601
 27602
 27603
 27604
 27605
 27606
 27607
 27608
 27609
 27610
 27611
 27612
 27613
 27614
 27615
 27616
 27617
 27618
 27619
 27620
 27621
 27622
 27623
 27624
 27625
 27626
 27627
 27628
 27629
 27630
 27631
 27632
 27633
 27634
 27635
 27636
 27637
 27638
 27639
 27640
 27641
 27642
 27643
 27644
 27645
 27646
 27647
 27648
 27649
 27650
 27651
 27652
 27653
 27654
 27655
 27656
 27657
 27658
 27659
 27660
 27661
 27662
 27663
 27664
 27665
 27666
 27667
 27668
 27669
 27670
 27671
 27672
 27673
 27674
 27675
 27676
 27677
 27678
 27679
 27680
 27681
 27682
 27683
 27684
 27685
 27686
 27687
 27688
 27689
 27690
 27691
 27692
 27693
 27694
 27695
 27696
 27697
 27698
 27699
 27700
 27701
 27702
 27703
 27704
 27705
 27706
 27707
 27708
 27709
 27710
 27711
 27712
 27713
 27714
 27715
 27716
 27717
 27718
 27719
 27720
 27721
 27722
 27723
 27724
 27725
 27726
 27727
 27728
 27729
 27730
 27731
 27732
 27733
 27734
 27735
 27736
 27737
 27738
 27739
 27740
 27741
 27742
 27743
 27744
 27745
 27746
 27747
 27748
 27749
 27750
 27751
 27752
 27753
 27754
 27755
 27756
 27757
 27758
 27759
 27760
 27761
 27762
 27763
 27764
 27765
 27766
 27767
 27768
 27769
 27770
 27771
 27772
 27773
 27774
 27775
 27776
 27777
 27778
 27779
 27780
 27781
 27782
 27783
 27784
 27785
 27786
 27787
 27788
 27789
 27790
 27791
 27792
 27793
 27794
 27795
 27796
 27797
 27798
 27799
 27800
 27801
 27802
 27803
 27804
 27805
 27806
 27807
 27808
 27809
 27810
 27811
 27812
 27813
 27814
 27815
 27816
 27817
 27818
 27819
 27820
 27821
 27822
 27823
 27824
 27825
 27826
 27827
 27828
 27829
 27830
 27831
 27832
 27833
 27834
 27835
 27836
 27837
 27838
 27839
 27840
 27841
 27842
 27843
 27844
 27845
 27846
 27847
 27848
 27849
 27850
 27851
 27852
 27853
 27854
 27855
 27856
 27857
 27858
 27859
 27860
 27861
 27862
 27863
 27864
 27865
 27866
 27867
 27868
 27869
 27870
 27871
 27872
 27873
 27874
 27875
 27876
 27877
 27878
 27879
 27880
 27881
 27882
 27883
 27884
 27885
 27886
 27887
 27888
 27889
 27890
 27891
 27892
 27893
 27894
 27895
 27896
 27897
 27898
 27899
 27900
 27901
 27902
 27903
 27904
 27905
 27906
 27907
 27908
 27909
 27910
 27911
 27912
 27913
 27914
 27915
 27916
 27917
 27918
 27919
 27920
 27921
 27922
 27923
 27924
 27925
 27926
 27927
 27928
 27929
 27930
 27931
 27932
 27933
 27934
 27935
 27936
 27937
 27938
 27939
 27940
 27941
 27942
 27943
 27944
 27945
 27946
 27947
 27948
 27949
 27950
 27951
 27952
 27953
 27954
 27955
 27956
 27957
 27958
 27959
 27960
 27961
 27962
 27963
 27964
 27965
 27966
 27967
 27968
 27969
 27970
 27971
 27972
 27973
 27974
 27975
 27976
 27977
 27978
 27979
 27980
 27981
 27982
 27983
 27984
 27985
 27986
 27987
 27988
 27989
 27990
 27991
 27992
 27993
 27994
 27995
 27996
 27997
 27998
 27999
 28000
 28001
 28002
 28003
 28004
 28005
 28006
 28007
 28008
 28009
 28010
 28011
 28012
 28013
 28014
 28015
 28016
 28017
 28018
 28019
 28020
 28021
 28022
 28023
 28024
 28025
 28026
 28027
 28028
 28029
 28030
 28031
 28032
 28033
 28034
 28035
 28036
 28037
 28038
 28039
 28040
 28041
 28042
 28043
 28044
 28045
 28046
 28047
 28048
 28049
 28050
 28051
 28052
 28053
 28054
 28055
 28056
 28057
 28058
 28059
 28060
 28061
 28062
 28063
 28064
 28065
 28066
 28067
 28068
 28069
 28070
 28071
 28072
 28073
 28074
 28075
 28076
 28077
 28078
 28079
 28080
 28081
 28082
 28083
 28084
 28085
 28086
 28087
 28088
 28089
 28090
 28091
 28092
 28093
 28094
 28095
 28096
 28097
 28098
 28099
 28100
 28101
 28102
 28103
 28104
 28105
 28106
 28107
 28108
 28109
 28110
 28111
 28112
 28113
 28114
 28115
 28116
 28117
 28118
 28119
 28120
 28121
 28122
 28123
 28124
 28125
 28126
 28127
 28128
 28129
 28130
 28131
 28132
 28133
 28134
 28135
 28136
 28137
 28138
 28139
 28140
 28141
 28142
 28143
 28144
 28145
 28146
 28147
 28148
 28149
 28150
 28151
 28152
 28153
 28154
 28155
 28156
 28157
 28158
 28159
 28160
 28161
 28162
 28163
 28164
 28165
 28166
 28167
 28168
 28169
 28170
 28171
 28172
 28173
 28174
 28175
 28176
 28177
 28178
 28179
 28180
 28181
 28182
 28183
 28184
 28185
 28186
 28187
 28188
 28189
 28190
 28191
 28192
 28193
 28194
 28195
 28196
 28197
 28198
 28199
 28200
 28201
 28202
 28203
 28204
 28205
 28206
 28207
 28208
 28209
 28210
 28211
 28212
 28213
 28214
 28215
 28216
 28217
 28218
 28219
 28220
 28221
 28222
 28223
 28224
 28225
 28226
 28227
 28228
 28229
 28230
 28231
 28232
 28233
 28234
 28235
 28236
 28237
 28238
 28239
 28240
 28241
 28242
 28243
 28244
 28245
 28246
 28247
 28248
 28249
 28250
 28251
 28252
 28253
 28254
 28255
 28256
 28257
 28258
 28259
 28260
 28261
 28262
 28263
 28264
 28265
 28266
 28267
 28268
 28269
 28270
 28271
 28272
 28273
 28274
 28275
 28276
 28277
 28278
 28279
 28280
 28281
 28282
 28283
 28284
 28285
 28286
 28287
 28288
 28289
 28290
 28291
 28292
 28293
 28294
 28295
 28296
 28297
 28298
 28299
 28300
 28301
 28302
 28303
 28304
 28305
 28306
 28307
 28308
 28309
 28310
 28311
 28312
 28313
 28314
 28315
 28316
 28317
 28318
 28319
 28320
 28321
 28322
 28323
 28324
 28325
 28326
 28327
 28328
 28329
 28330
 28331
 28332
 28333
 28334
 28335
 28336
 28337
 28338
 28339
 28340
 28341
 28342
 28343
 28344
 28345
 28346
 28347
 28348
 28349
 28350
 28351
 28352
 28353
 28354
 28355
 28356
 28357
 28358
 28359
 28360
 28361
 28362
 28363
 28364
 28365
 28366
 28367
 28368
 28369
 28370
 28371
 28372
 28373
 28374
 28375
 28376
 28377
 28378
 28379
 28380
 28381
 28382
 28383
 28384
 28385
 28386
 28387
 28388
 28389
 28390
 28391
 28392
 28393
 28394
 28395
 28396
 28397
 28398
 28399
 28400
 28401
 28402
 28403
 28404
 28405
 28406
 28407
 28408
 28409
 28410
 28411
 28412
 28413
 28414
 28415
 28416
 28417
 28418
 28419
 28420
 28421
 28422
 28423
 28424
 28425
 28426
 28427
 28428
 28429
 28430
 28431
 28432
 28433
 28434
 28435
 28436
 28437
 28438
 28439
 28440
 28441
 28442
 28443
 28444
 28445
 28446
 28447
 28448
 28449
 28450
 28451
 28452
 28453
 28454
 28455
 28456
 28457
 28458
 28459
 28460
 28461
 28462
 28463
 28464
 28465
 28466
 28467
 28468
 28469
 28470
 28471
 28472
 28473
 28474
 28475
 28476
 28477
 28478
 28479
 28480
 28481
 28482
 28483
 28484
 28485
 28486
 28487
 28488
 28489
 28490
 28491
 28492
 28493
 28494
 28495
 28496
 28497
 28498
 28499
 28500
 28501
 28502
 28503
 28504
 28505
 28506
 28507
 28508
 28509
 28510
 28511
 28512
 28513
 28514
 28515
 28516
 28517
 28518
 28519
 28520
 28521
 28522
 28523
 28524
 28525
 28526
 28527
 28528
 28529
 28530
 28531
 28532
 28533
 28534
 28535
 28536
 28537
 28538
 28539
 28540
 28541
 28542
 28543
 28544
 28545
 28546
 28547
 28548
 28549
 28550
 28551
 28552
 28553
 28554
 28555
 28556
 28557
 28558
 28559
 28560
 28561
 28562
 28563
 28564
 28565
 28566
 28567
 28568
 28569
 28570
 28571
 28572
 28573
 28574
 28575
 28576
 28577
 28578
 28579
 28580
 28581
 28582
 28583
 28584
 28585
 28586
 28587
 28588
 28589
 28590
 28591
 28592
 28593
 28594
 28595
 28596
 28597
 28598
 28599
 28600
 28601
 28602
 28603
 28604
 28605
 28606
 28607
 28608
 28609
 28610
 28611
 28612
 28613
 28614
 28615
 28616
 28617
 28618
 28619
 28620
 28621
 28622
 28623
 28624
 28625
 28626
 28627
 28628
 28629
 28630
 28631
 28632
 28633
 28634
 28635
 28636
 28637
 28638
 28639
 28640
 28641
 28642
 28643
 28644
 28645
 28646
 28647
 28648
 28649
 28650
 28651
 28652
 28653
 28654
 28655
 28656
 28657
 28658
 28659
 28660
 28661
 28662
 28663
 28664
 28665
 28666
 28667
 28668
 28669
 28670
 28671
 28672
 28673
 28674
 28675
 28676
 28677
 28678
 28679
 28680
 28681
 28682
 28683
 28684
 28685
 28686
 28687
 28688
 28689
 28690
 28691
 28692
 28693
 28694
 28695
 28696
 28697
 28698
 28699
 28700
 28701
 28702
 28703
 28704
 28705
 28706
 28707
 28708
 28709
 28710
 28711
 28712
 28713
 28714
 28715
 28716
 28717
 28718
 28719
 28720
 28721
 28722
 28723
 28724
 28725
 28726
 28727
 28728
 28729
 28730
 28731
 28732
 28733
 28734
 28735
 28736
 28737
 28738
 28739
 28740
 28741
 28742
 28743
 28744
 28745
 28746
 28747
 28748
 28749
 28750
 28751
 28752
 28753
 28754
 28755
 28756
 28757
 28758
 28759
 28760
 28761
 28762
 28763
 28764
 28765
 28766
 28767
 28768
 28769
 28770
 28771
 28772
 28773
 28774
 28775
 28776
 28777
 28778
 28779
 28780
 28781
 28782
 28783
 28784
 28785
 28786
 28787
 28788
 28789
 28790
 28791
 28792
 28793
 28794
 28795
 28796
 28797
 28798
 28799
 28800
 28801
 28802
 28803
 28804
 28805
 28806
 28807
 28808
 28809
 28810
 28811
 28812
 28813
 28814
 28815
 28816
 28817
 28818
 28819
 28820
 28821
 28822
 28823
 28824
 28825
 28826
 28827
 28828
 28829
 28830
 28831
 28832
 28833
 28834
 28835
 28836
 28837
 28838
 28839
 28840
 28841
 28842
 28843
 28844
 28845
 28846
 28847
 28848
 28849
 28850
 28851
 28852
 28853
 28854
 28855
 28856
 28857
 28858
 28859
 28860
 28861
 28862
 28863
 28864
 28865
 28866
 28867
 28868
 28869
 28870
 28871
 28872
 28873
 28874
 28875
 28876
 28877
 28878
 28879
 28880
 28881
 28882
 28883
 28884
 28885
 28886
 28887
 28888
 28889
 28890
 28891
 28892
 28893
 28894
 28895
 28896
 28897
 28898
 28899
 28900
 28901
 28902
 28903
 28904
 28905
 28906
 28907
 28908
 28909
 28910
 28911
 28912
 28913
 28914
 28915
 28916
 28917
 28918
 28919
 28920
 28921
 28922
 28923
 28924
 28925
 28926
 28927
 28928
 28929
 28930
 28931
 28932
 28933
 28934
 28935
 28936
 28937
 28938
 28939
 28940
 28941
 28942
 28943
 28944
 28945
 28946
 28947
 28948
 28949
 28950
 28951
 28952
 28953
 28954
 28955
 28956
 28957
 28958
 28959
 28960
 28961
 28962
 28963
 28964
 28965
 28966
 28967
 28968
 28969
 28970
 28971
 28972
 28973
 28974
 28975
 28976
 28977
 28978
 28979
 28980
 28981
 28982
 28983
 28984
 28985
 28986
 28987
 28988
 28989
 28990
 28991
 28992
 28993
 28994
 28995
 28996
 28997
 28998
 28999
 29000
 29001
 29002
 29003
 29004
 29005
 29006
 29007
 29008
 29009
 29010
 29011
 29012
 29013
 29014
 29015
 29016
 29017
 29018
 29019
 29020
 29021
 29022
 29023
 29024
 29025
 29026
 29027
 29028
 29029
 29030
 29031
 29032
 29033
 29034
 29035
 29036
 29037
 29038
 29039
 29040
 29041
 29042
 29043
 29044
 29045
 29046
 29047
 29048
 29049
 29050
 29051
 29052
 29053
 29054
 29055
 29056
 29057
 29058
 29059
 29060
 29061
 29062
 29063
 29064
 29065
 29066
 29067
 29068
 29069
 29070
 29071
 29072
 29073
 29074
 29075
 29076
 29077
 29078
 29079
 29080
 29081
 29082
 29083
 29084
 29085
 29086
 29087
 29088
 29089
 29090
 29091
 29092
 29093
 29094
 29095
 29096
 29097
 29098
 29099
 29100
 29101
 29102
 29103
 29104
 29105
 29106
 29107
 29108
 29109
 29110
 29111
 29112
 29113
 29114
 29115
 29116
 29117
 29118
 29119
 29120
 29121
 29122
 29123
 29124
 29125
 29126
 29127
 29128
 29129
 29130
 29131
 29132
 29133
 29134
 29135
 29136
 29137
 29138
 29139
 29140
 29141
 29142
 29143
 29144
 29145
 29146
 29147
 29148
 29149
 29150
 29151
 29152
 29153
 29154
 29155
 29156
 29157
 29158
 29159
 29160
 29161
 29162
 29163
 29164
 29165
 29166
 29167
 29168
 29169
 29170
 29171
 29172
 29173
 29174
 29175
 29176
 29177
 29178
 29179
 29180
 29181
 29182
 29183
 29184
 29185
 29186
 29187
 29188
 29189
 29190
 29191
 29192
 29193
 29194
 29195
 29196
 29197
 29198
 29199
 29200
 29201
 29202
 29203
 29204
 29205
 29206
 29207
 29208
 29209
 29210
 29211
 29212
 29213
 29214
 29215
 29216
 29217
 29218
 29219
 29220
 29221
 29222
 29223
 29224
 29225
 29226
 29227
 29228
 29229
 29230
 29231
 29232
 29233
 29234
 29235
 29236
 29237
 29238
 29239
 29240
 29241
 29242
 29243
 29244
 29245
 29246
 29247
 29248
 29249
 29250
 29251
 29252
 29253
 29254
 29255
 29256
 29257
 29258
 29259
 29260
 29261
 29262
 29263
 29264
 29265
 29266
 29267
 29268
 29269
 29270
 29271
 29272
 29273
 29274
 29275
 29276
 29277
 29278
 29279
 29280
 29281
 29282
 29283
 29284
 29285
 29286
 29287
 29288
 29289
 29290
 29291
 29292
 29293
 29294
 29295
 29296
 29297
 29298
 29299
 29300
 29301
 29302
 29303
 29304
 29305
 29306
 29307
 29308
 29309
 29310
 29311
 29312
 29313
 29314
 29315
 29316
 29317
 29318
 29319
 29320
 29321
 29322
 29323
 29324
 29325
 29326
 29327
 29328
 29329
 29330
 29331
 29332
 29333
 29334
 29335
 29336
 29337
 29338
 29339
 29340
 29341
 29342
 29343
 29344
 29345
 29346
 29347
 29348
 29349
 29350
 29351
 29352
 29353
 29354
 29355
 29356
 29357
 29358
 29359
 29360
 29361
 29362
 29363
 29364
 29365
 29366
 29367
 29368
 29369
 29370
 29371
 29372
 29373
 29374
 29375
 29376
 29377
 29378
 29379
 29380
 29381
 29382
 29383
 29384
 29385
 29386
 29387
 29388
 29389
 29390
 29391
 29392
 29393
 29394
 29395
 29396
 29397
 29398
 29399
 29400
 29401
 29402
 29403
 29404
 29405
 29406
 29407
 29408
 29409
 29410
 29411
 29412
 29413
 29414
 29415
 29416
 29417
 29418
 29419
 29420
 29421
 29422
 29423
 29424
 29425
 29426
 29427
 29428
 29429
 29430
 29431
 29432
 29433
 29434
 29435
 29436
 29437
 29438
 29439
 29440
 29441
 29442
 29443
 29444
 29445
 29446
 29447
 29448
 29449
 29450
 29451
 29452
 29453
 29454
 29455
 29456
 29457
 29458
 29459
 29460
 29461
 29462
 29463
 29464
 29465
 29466
 29467
 29468
 29469
 29470
 29471
 29472
 29473
 29474
 29475
 29476
 29477
 29478
 29479
 29480
 29481
 29482
 29483
 29484
 29485
 29486
 29487
 29488
 29489
 29490
 29491
 29492
 29493
 29494
 29495
 29496
 29497
 29498
 29499
 29500
 29501
 29502
 29503
 29504
 29505
 29506
 29507
 29508
 29509
 29510
 29511
 29512
 29513
 29514
 29515
 29516
 29517
 29518
 29519
 29520
 29521
 29522
 29523
 29524
 29525
 29526
 29527
 29528
 29529
 29530
 29531
 29532
 29533
 29534
 29535
 29536
 29537
 29538
 29539
 29540
 29541
 29542
 29543
 29544
 29545
 29546
 29547
 29548
 29549
 29550
 29551
 29552
 29553
 29554
 29555
 29556
 29557
 29558
 29559
 29560
 29561
 29562
 29563
 29564
 29565
 29566
 29567
 29568
 29569
 29570
 29571
 29572
 29573
 29574
 29575
 29576
 29577
 29578
 29579
 29580
 29581
 29582
 29583
 29584
 29585
 29586
 29587
 29588
 29589
 29590
 29591
 29592
 29593
 29594
 29595
 29596
 29597
 29598
 29599
 29600
 29601
 29602
 29603
 29604
 29605
 29606
 29607
 29608
 29609
 29610
 29611
 29612
 29613
 29614
 29615
 29616
 29617
 29618
 29619
 29620
 29621
 29622
 29623
 29624
 29625
 29626
 29627
 29628
 29629
 29630
 29631
 29632
 29633
 29634
 29635
 29636
 29637
 29638
 29639
 29640
 29641
 29642
 29643
 29644
 29645
 29646
 29647
 29648
 29649
 29650
 29651
 29652
 29653
 29654
 29655
 29656
 29657
 29658
 29659
 29660
 29661
 29662
 29663
 29664
 29665
 29666
 29667
 29668
 29669
 29670
 29671
 29672
 29673
 29674
 29675
 29676
 29677
 29678
 29679
 29680
 29681
 29682
 29683
 29684
 29685
 29686
 29687
 29688
 29689
 29690
 29691
 29692
 29693
 29694
 29695
 29696
 29697
 29698
 29699
 29700
 29701
 29702
 29703
 29704
 29705
 29706
 29707
 29708
 29709
 29710
 29711
 29712
 29713
 29714
 29715
 29716
 29717
 29718
 29719
 29720
 29721
 29722
 29723
 29724
 29725
 29726
 29727
 29728
 29729
 29730
 29731
 29732
 29733
 29734
 29735
 29736
 29737
 29738
 29739
 29740
 29741
 29742
 29743
 29744
 29745
 29746
 29747
 29748
 29749
 29750
 29751
 29752
 29753
 29754
 29755
 29756
 29757
 29758
 29759
 29760
 29761
 29762
 29763
 29764
 29765
 29766
 29767
 29768
 29769
 29770
 29771
 29772
 29773
 29774
 29775
 29776
 29777
 29778
 29779
 29780
 29781
 29782
 29783
 29784
 29785
 29786
 29787
 29788
 29789
 29790
 29791
 29792
 29793
 29794
 29795
 29796
 29797
 29798
 29799
 29800
 29801
 29802
 29803
 29804
 29805
 29806
 29807
 29808
 29809
 29810
 29811
 29812
 29813
 29814
 29815
 29816
 29817
 29818
 29819
 29820
 29821
 29822
 29823
 29824
 29825
 29826
 29827
 29828
 29829
 29830
 29831
 29832
 29833
 29834
 29835
 29836
 29837
 29838
 29839
 29840
 29841
 29842
 29843
 29844
 29845
 29846
 29847
 29848
 29849
 29850
 29851
 29852
 29853
 29854
 29855
 29856
 29857
 29858
 29859
 29860
 29861
 29862
 29863
 29864
 29865
 29866
 29867
 29868
 29869
 29870
 29871
 29872
 29873
 29874
 29875
 29876
 29877
 29878
 29879
 29880
 29881
 29882
 29883
 29884
 29885
 29886
 29887
 29888
 29889
 29890
 29891
 29892
 29893
 29894
 29895
 29896
 29897
 29898
 29899
 29900
 29901
 29902
 29903
 29904
 29905
 29906
 29907
 29908
 29909
 29910
 29911
 29912
 29913
 29914
 29915
 29916
 29917
 29918
 29919
 29920
 29921
 29922
 29923
 29924
 29925
 29926
 29927
 29928
 29929
 29930
 29931
 29932
 29933
 29934
 29935
 29936
 29937
 29938
 29939
 29940
 29941
 29942
 29943
 29944
 29945
 29946
 29947
 29948
 29949
 29950
 29951
 29952
 29953
 29954
 29955
 29956
 29957
 29958
 29959
 29960
 29961
 29962
 29963
 29964
 29965
 29966
 29967
 29968
 29969
 29970
 29971
 29972
 29973
 29974
 29975
 29976
 29977
 29978
 29979
 29980
 29981
 29982
 29983
 29984
 29985
 29986
 29987
 29988
 29989
 29990
 29991
 29992
 29993
 29994
 29995
 29996
 29997
 29998
 29999
 30000
 30001
 30002
 30003
 30004
 30005
 30006
 30007
 30008
 30009
 30010
 30011
 30012
 30013
 30014
 30015
 30016
 30017
 30018
 30019
 30020
 30021
 30022
 30023
 30024
 30025
 30026
 30027
 30028
 30029
 30030
 30031
 30032
 30033
 30034
 30035
 30036
 30037
 30038
 30039
 30040
 30041
 30042
 30043
 30044
 30045
 30046
 30047
 30048
 30049
 30050
 30051
 30052
 30053
 30054
 30055
 30056
 30057
 30058
 30059
 30060
 30061
 30062
 30063
 30064
 30065
 30066
 30067
 30068
 30069
 30070
 30071
 30072
 30073
 30074
 30075
 30076
 30077
 30078
 30079
 30080
 30081
 30082
 30083
 30084
 30085
 30086
 30087
 30088
 30089
 30090
 30091
 30092
 30093
 30094
 30095
 30096
 30097
 30098
 30099
 30100
 30101
 30102
 30103
 30104
 30105
 30106
 30107
 30108
 30109
 30110
 30111
 30112
 30113
 30114
 30115
 30116
 30117
 30118
 30119
 30120
 30121
 30122
 30123
 30124
 30125
 30126
 30127
 30128
 30129
 30130
 30131
 30132
 30133
 30134
 30135
 30136
 30137
 30138
 30139
 30140
 30141
 30142
 30143
 30144
 30145
 30146
 30147
 30148
 30149
 30150
 30151
 30152
 30153
 30154
 30155
 30156
 30157
 30158
 30159
 30160
 30161
 30162
 30163
 30164
 30165
 30166
 30167
 30168
 30169
 30170
 30171
 30172
 30173
 30174
 30175
 30176
 30177
 30178
 30179
 30180
 30181
 30182
 30183
 30184
 30185
 30186
 30187
 30188
 30189
 30190
 30191
 30192
 30193
 30194
 30195
 30196
 30197
 30198
 30199
 30200
 30201
 30202
 30203
 30204
 30205
 30206
 30207
 30208
 30209
 30210
 30211
 30212
 30213
 30214
 30215
 30216
 30217
 30218
 30219
 30220
 30221
 30222
 30223
 30224
 30225
 30226
 30227
 30228
 30229
 30230
 30231
 30232
 30233
 30234
 30235
 30236
 30237
 30238
 30239
 30240
 30241
 30242
 30243
 30244
 30245
 30246
 30247
 30248
 30249
 30250
 30251
 30252
 30253
 30254
 30255
 30256
 30257
 30258
 30259
 30260
 30261
 30262
 30263
 30264
 30265
 30266
 30267
 30268
 30269
 30270
 30271
 30272
 30273
 30274
 30275
 30276
 30277
 30278
 30279
 30280
 30281
 30282
 30283
 30284
 30285
 30286
 30287
 30288
 30289
 30290
 30291
 30292
 30293
 30294
 30295
 30296
 30297
 30298
 30299
 30300
 30301
 30302
 30303
 30304
 30305
 30306
 30307
 30308
 30309
 30310
 30311
 30312
 30313
 30314
 30315
 30316
 30317
 30318
 30319
 30320
 30321
 30322
 30323
 30324
 30325
 30326
 30327
 30328
 30329
 30330
 30331
 30332
 30333
 30334
 30335
 30336
 30337
 30338
 30339
 30340
 30341
 30342
 30343
 30344
 30345
 30346
 30347
 30348
 30349
 30350
 30351
 30352
 30353
 30354
 30355
 30356
 30357
 30358
 30359
 30360
 30361
 30362
 30363
 30364
 30365
 30366
 30367
 30368
 30369
 30370
 30371
 30372
 30373
 30374
 30375
 30376
 30377
 30378
 30379
 30380
 30381
 30382
 30383
 30384
 30385
 30386
 30387
 30388
 30389
 30390
 30391
 30392
 30393
 30394
 30395
 30396
 30397
 30398
 30399
 30400
 30401
 30402
 30403
 30404
 30405
 30406
 30407
 30408
 30409
 30410
 30411
 30412
 30413
 30414
 30415
 30416
 30417
 30418
 30419
 30420
 30421
 30422
 30423
 30424
 30425
 30426
 30427
 30428
 30429
 30430
 30431
 30432
 30433
 30434
 30435
 30436
 30437
 30438
 30439
 30440
 30441
 30442
 30443
 30444
 30445
 30446
 30447
 30448
 30449
 30450
 30451
 30452
 30453
 30454
 30455
 30456
 30457
 30458
 30459
 30460
 30461
 30462
 30463
 30464
 30465
 30466
 30467
 30468
 30469
 30470
 30471
 30472
 30473
 30474
 30475
 30476
 30477
 30478
 30479
 30480
 30481
 30482
 30483
 30484
 30485
 30486
 30487
 30488
 30489
 30490
 30491
 30492
 30493
 30494
 30495
 30496
 30497
 30498
 30499
 30500
 30501
 30502
 30503
 30504
 30505
 30506
 30507
 30508
 30509
 30510
 30511
 30512
 30513
 30514
 30515
 30516
 30517
 30518
 30519
 30520
 30521
 30522
 30523
 30524
 30525
 30526
 30527
 30528
 30529
 30530
 30531
 30532
 30533
 30534
 30535
 30536
 30537
 30538
 30539
 30540
 30541
 30542
 30543
 30544
 30545
 30546
 30547
 30548
 30549
 30550
 30551
 30552
 30553
 30554
 30555
 30556
 30557
 30558
 30559
 30560
 30561
 30562
 30563
 30564
 30565
 30566
 30567
 30568
 30569
 30570
 30571
 30572
 30573
 30574
 30575
 30576
 30577
 30578
 30579
 30580
 30581
 30582
 30583
 30584
 30585
 30586
 30587
 30588
 30589
 30590
 30591
 30592
 30593
 30594
 30595
 30596
 30597
 30598
 30599
 30600
 30601
 30602
 30603
 30604
 30605
 30606
 30607
 30608
 30609
 30610
 30611
 30612
 30613
 30614
 30615
 30616
 30617
 30618
 30619
 30620
 30621
 30622
 30623
 30624
 30625
 30626
 30627
 30628
 30629
 30630
 30631
 30632
 30633
 30634
 30635
 30636
 30637
 30638
 30639
 30640
 30641
 30642
 30643
 30644
 30645
 30646
 30647
 30648
 30649
 30650
 30651
 30652
 30653
 30654
 30655
 30656
 30657
 30658
 30659
 30660
 30661
 30662
 30663
 30664
 30665
 30666
 30667
 30668
 30669
 30670
 30671
 30672
 30673
 30674
 30675
 30676
 30677
 30678
 30679
 30680
 30681
 30682
 30683
 30684
 30685
 30686
 30687
 30688
 30689
 30690
 30691
 30692
 30693
 30694
 30695
 30696
 30697
 30698
 30699
 30700
 30701
 30702
 30703
 30704
 30705
 30706
 30707
 30708
 30709
 30710
 30711
 30712
 30713
 30714
 30715
 30716
 30717
 30718
 30719
 30720
 30721
 30722
 30723
 30724
 30725
 30726
 30727
 30728
 30729
 30730
 30731
 30732
 30733
 30734
 30735
 30736
 30737
 30738
 30739
 30740
 30741
 30742
 30743
 30744
 30745
 30746
 30747
 30748
 30749
 30750
 30751
 30752
 30753
 30754
 30755
 30756
 30757
 30758
 30759
 30760
 30761
 30762
 30763
 30764
 30765
 30766
 30767
 30768
 30769
 30770
 30771
 30772
 30773
 30774
 30775
 30776
 30777
 30778
 30779
 30780
 30781
 30782
 30783
 30784
 30785
 30786
 30787
 30788
 30789
 30790
 30791
 30792
 30793
 30794
 30795
 30796
 30797
 30798
 30799
 30800
 30801
 30802
 30803
 30804
 30805
 30806
 30807
 30808
 30809
 30810
 30811
 30812
 30813
 30814
 30815
 30816
 30817
 30818
 30819
 30820
 30821
 30822
 30823
 30824
 30825
 30826
 30827
 30828
 30829
 30830
 30831
 30832
 30833
 30834
 30835
 30836
 30837
 30838
 30839
 30840
 30841
 30842
 30843
 30844
 30845
 30846
 30847
 30848
 30849
 30850
 30851
 30852
 30853
 30854
 30855
 30856
 30857
 30858
 30859
 30860
 30861
 30862
 30863
 30864
 30865
 30866
 30867
 30868
 30869
 30870
 30871
 30872
 30873
 30874
 30875
 30876
 30877
 30878
 30879
 30880
 30881
 30882
 30883
 30884
 30885
 30886
 30887
 30888
 30889
 30890
 30891
 30892
 30893
 30894
 30895
 30896
 30897
 30898
 30899
 30900
 30901
 30902
 30903
 30904
 30905
 30906
 30907
 30908
 30909
 30910
 30911
 30912
 30913
 30914
 30915
 30916
 30917
 30918
 30919
 30920
 30921
 30922
 30923
 30924
 30925
 30926
 30927
 30928
 30929
 30930
 30931
 30932
 30933
 30934
 30935
 30936
 30937
 30938
 30939
 30940
 30941
 30942
 30943
 30944
 30945
 30946
 30947
 30948
 30949
 30950
 30951
 30952
 30953
 30954
 30955
 30956
 30957
 30958
 30959
 30960
 30961
 30962
 30963
 30964
 30965
 30966
 30967
 30968
 30969
 30970
 30971
 30972
 30973
 30974
 30975
 30976
 30977
 30978
 30979
 30980
 30981
 30982
 30983
 30984
 30985
 30986
 30987
 30988
 30989
 30990
 30991
 30992
 30993
 30994
 30995
 30996
 30997
 30998
 30999
 31000
 31001
 31002
 31003
 31004
 31005
 31006
 31007
 31008
 31009
 31010
 31011
 31012
 31013
 31014
 31015
 31016
 31017
 31018
 31019
 31020
 31021
 31022
 31023
 31024
 31025
 31026
 31027
 31028
 31029
 31030
 31031
 31032
 31033
 31034
 31035
 31036
 31037
 31038
 31039
 31040
 31041
 31042
 31043
 31044
 31045
 31046
 31047
 31048
 31049
 31050
 31051
 31052
 31053
 31054
 31055
 31056
 31057
 31058
 31059
 31060
 31061
 31062
 31063
 31064
 31065
 31066
 31067
 31068
 31069
 31070
 31071
 31072
 31073
 31074
 31075
 31076
 31077
 31078
 31079
 31080
 31081
 31082
 31083
 31084
 31085
 31086
 31087
 31088
 31089
 31090
 31091
 31092
 31093
 31094
 31095
 31096
 31097
 31098
 31099
 31100
 31101
 31102
 31103
 31104
 31105
 31106
 31107
 31108
 31109
 31110
 31111
 31112
 31113
 31114
 31115
 31116
 31117
 31118
 31119
 31120
 31121
 31122
 31123
 31124
 31125
 31126
 31127
 31128
 31129
 31130
 31131
 31132
 31133
 31134
 31135
 31136
 31137
 31138
 31139
 31140
 31141
 31142
 31143
 31144
 31145
 31146
 31147
 31148
 31149
 31150
 31151
 31152
 31153
 31154
 31155
 31156
 31157
 31158
 31159
 31160
 31161
 31162
 31163
 31164
 31165
 31166
 31167
 31168
 31169
 31170
 31171
 31172
 31173
 31174
 31175
 31176
 31177
 31178
 31179
 31180
 31181
 31182
 31183
 31184
 31185
 31186
 31187
 31188
 31189
 31190
 31191
 31192
 31193
 31194
 31195
 31196
 31197
 31198
 31199
 31200
 31201
 31202
 31203
 31204
 31205
 31206
 31207
 31208
 31209
 31210
 31211
 31212
 31213
 31214
 31215
 31216
 31217
 31218
 31219
 31220
 31221
 31222
 31223
 31224
 31225
 31226
 31227
 31228
 31229
 31230
 31231
 31232
 31233
 31234
 31235
 31236
 31237
 31238
 31239
 31240
 31241
 31242
 31243
 31244
 31245
 31246
 31247
 31248
 31249
 31250
 31251
 31252
 31253
 31254
 31255
 31256
 31257
 31258
 31259
 31260
 31261
 31262
 31263
 31264
 31265
 31266
 31267
 31268
 31269
 31270
 31271
 31272
 31273
 31274
 31275
 31276
 31277
 31278
 31279
 31280
 31281
 31282
 31283
 31284
 31285
 31286
 31287
 31288
 31289
 31290
 31291
 31292
 31293
 31294
 31295
 31296
 31297
 31298
 31299
 31300
 31301
 31302
 31303
 31304
 31305
 31306
 31307
 31308
 31309
 31310
 31311
 31312
 31313
 31314
 31315
 31316
 31317
 31318
 31319
 31320
 31321
 31322
 31323
 31324
 31325
 31326
 31327
 31328
 31329
 31330
 31331
 31332
 31333
 31334
 31335
 31336
 31337
 31338
 31339
 31340
 31341
 31342
 31343
 31344
 31345
 31346
 31347
 31348
 31349
 31350
 31351
 31352
 31353
 31354
 31355
 31356
 31357
 31358
 31359
 31360
 31361
 31362
 31363
 31364
 31365
 31366
 31367
 31368
 31369
 31370
 31371
 31372
 31373
 31374
 31375
 31376
 31377
 31378
 31379
 31380
 31381
 31382
 31383
 31384
 31385
 31386
 31387
 31388
 31389
 31390
 31391
 31392
 31393
 31394
 31395
 31396
 31397
 31398
 31399
 31400
 31401
 31402
 31403
 31404
 31405
 31406
 31407
 31408
 31409
 31410
 31411
 31412
 31413
 31414
 31415
 31416
 31417
 31418
 31419
 31420
 31421
 31422
 31423
 31424
 31425
 31426
 31427
 31428
 31429
 31430
 31431
 31432
 31433
 31434
 31435
 31436
 31437
 31438
 31439
 31440
 31441
 31442
 31443
 31444
 31445
 31446
 31447
 31448
 31449
 31450
 31451
 31452
 31453
 31454
 31455
 31456
 31457
 31458
 31459
 31460
 31461
 31462
 31463
 31464
 31465
 31466
 31467
 31468
 31469
 31470
 31471
 31472
 31473
 31474
 31475
 31476
 31477
 31478
 31479
 31480
 31481
 31482
 31483
 31484
 31485
 31486
 31487
 31488
 31489
 31490
 31491
 31492
 31493
 31494
 31495
 31496
 31497
 31498
 31499
 31500
 31501
 31502
 31503
 31504
 31505
 31506
 31507
 31508
 31509
 31510
 31511
 31512
 31513
 31514
 31515
 31516
 31517
 31518
 31519
 31520
 31521
 31522
 31523
 31524
 31525
 31526
 31527
 31528
 31529
 31530
 31531
 31532
 31533
 31534
 31535
 31536
 31537
 31538
 31539
 31540
 31541
 31542
 31543
 31544
 31545
 31546
 31547
 31548
 31549
 31550
 31551
 31552
 31553
 31554
 31555
 31556
 31557
 31558
 31559
 31560
 31561
 31562
 31563
 31564
 31565
 31566
 31567
 31568
 31569
 31570
 31571
 31572
 31573
 31574
 31575
 31576
 31577
 31578
 31579
 31580
 31581
 31582
 31583
 31584
 31585
 31586
 31587
 31588
 31589
 31590
 31591
 31592
 31593
 31594
 31595
 31596
 31597
 31598
 31599
 31600
 31601
 31602
 31603
 31604
 31605
 31606
 31607
 31608
 31609
 31610
 31611
 31612
 31613
 31614
 31615
 31616
 31617
 31618
 31619
 31620
 31621
 31622
 31623
 31624
 31625
 31626
 31627
 31628
 31629
 31630
 31631
 31632
 31633
 31634
 31635
 31636
 31637
 31638
 31639
 31640
 31641
 31642
 31643
 31644
 31645
 31646
 31647
 31648
 31649
 31650
 31651
 31652
 31653
 31654
 31655
 31656
 31657
 31658
 31659
 31660
 31661
 31662
 31663
 31664
 31665
 31666
 31667
 31668
 31669
 31670
 31671
 31672
 31673
 31674
 31675
 31676
 31677
 31678
 31679
 31680
 31681
 31682
 31683
 31684
 31685
 31686
 31687
 31688
 31689
 31690
 31691
 31692
 31693
 31694
 31695
 31696
 31697
 31698
 31699
 31700
 31701
 31702
 31703
 31704
 31705
 31706
 31707
 31708
 31709
 31710
 31711
 31712
 31713
 31714
 31715
 31716
 31717
 31718
 31719
 31720
 31721
 31722
 31723
 31724
 31725
 31726
 31727
 31728
 31729
 31730
 31731
 31732
 31733
 31734
 31735
 31736
 31737
 31738
 31739
 31740
 31741
 31742
 31743
 31744
 31745
 31746
 31747
 31748
 31749
 31750
 31751
 31752
 31753
 31754
 31755
 31756
 31757
 31758
 31759
 31760
 31761
 31762
 31763
 31764
 31765
 31766
 31767
 31768
 31769
 31770
 31771
 31772
 31773
 31774
 31775
 31776
 31777
 31778
 31779
 31780
 31781
 31782
 31783
 31784
 31785
 31786
 31787
 31788
 31789
 31790
 31791
 31792
 31793
 31794
 31795
 31796
 31797
 31798
 31799
 31800
 31801
 31802
 31803
 31804
 31805
 31806
 31807
 31808
 31809
 31810
 31811
 31812
 31813
 31814
 31815
 31816
 31817
 31818
 31819
 31820
 31821
 31822
 31823
 31824
 31825
 31826
 31827
 31828
 31829
 31830
 31831
 31832
 31833
 31834
 31835
 31836
 31837
 31838
 31839
 31840
 31841
 31842
 31843
 31844
 31845
 31846
 31847
 31848
 31849
 31850
 31851
 31852
 31853
 31854
 31855
 31856
 31857
 31858
 31859
 31860
 31861
 31862
 31863
 31864
 31865
 31866
 31867
 31868
 31869
 31870
 31871
 31872
 31873
 31874
 31875
 31876
 31877
 31878
 31879
 31880
 31881
 31882
 31883
 31884
 31885
 31886
 31887
 31888
 31889
 31890
 31891
 31892
 31893
 31894
 31895
 31896
 31897
 31898
 31899
 31900
 31901
 31902
 31903
 31904
 31905
 31906
 31907
 31908
 31909
 31910
 31911
 31912
 31913
 31914
 31915
 31916
 31917
 31918
 31919
 31920
 31921
 31922
 31923
 31924
 31925
 31926
 31927
 31928
 31929
 31930
 31931
 31932
 31933
 31934
 31935
 31936
 31937
 31938
 31939
 31940
 31941
 31942
 31943
 31944
 31945
 31946
 31947
 31948
 31949
 31950
 31951
 31952
 31953
 31954
 31955
 31956
 31957
 31958
 31959
 31960
 31961
 31962
 31963
 31964
 31965
 31966
 31967
 31968
 31969
 31970
 31971
 31972
 31973
 31974
 31975
 31976
 31977
 31978
 31979
 31980
 31981
 31982
 31983
 31984
 31985
 31986
 31987
 31988
 31989
 31990
 31991
 31992
 31993
 31994
 31995
 31996
 31997
 31998
 31999
 32000
 32001
 32002
 32003
 32004
 32005
 32006
 32007
 32008
 32009
 32010
 32011
 32012
 32013
 32014
 32015
 32016
 32017
 32018
 32019
 32020
 32021
 32022
 32023
 32024
 32025
 32026
 32027
 32028
 32029
 32030
 32031
 32032
 32033
 32034
 32035
 32036
 32037
 32038
 32039
 32040
 32041
 32042
 32043
 32044
 32045
 32046
 32047
 32048
 32049
 32050
 32051
 32052
 32053
 32054
 32055
 32056
 32057
 32058
 32059
 32060
 32061
 32062
 32063
 32064
 32065
 32066
 32067
 32068
 32069
 32070
 32071
 32072
 32073
 32074
 32075
 32076
 32077
 32078
 32079
 32080
 32081
 32082
 32083
 32084
 32085
 32086
 32087
 32088
 32089
 32090
 32091
 32092
 32093
 32094
 32095
 32096
 32097
 32098
 32099
 32100
 32101
 32102
 32103
 32104
 32105
 32106
 32107
 32108
 32109
 32110
 32111
 32112
 32113
 32114
 32115
 32116
 32117
 32118
 32119
 32120
 32121
 32122
 32123
 32124
 32125
 32126
 32127
 32128
 32129
 32130
 32131
 32132
 32133
 32134
 32135
 32136
 32137
 32138
 32139
 32140
 32141
 32142
 32143
 32144
 32145
 32146
 32147
 32148
 32149
 32150
 32151
 32152
 32153
 32154
 32155
 32156
 32157
 32158
 32159
 32160
 32161
 32162
 32163
 32164
 32165
 32166
 32167
 32168
 32169
 32170
 32171
 32172
 32173
 32174
 32175
 32176
 32177
 32178
 32179
 32180
 32181
 32182
 32183
 32184
 32185
 32186
 32187
 32188
 32189
 32190
 32191
 32192
 32193
 32194
 32195
 32196
 32197
 32198
 32199
 32200
 32201
 32202
 32203
 32204
 32205
 32206
 32207
 32208
 32209
 32210
 32211
 32212
 32213
 32214
 32215
 32216
 32217
 32218
 32219
 32220
 32221
 32222
 32223
 32224
 32225
 32226
 32227
 32228
 32229
 32230
 32231
 32232
 32233
 32234
 32235
 32236
 32237
 32238
 32239
 32240
 32241
 32242
 32243
 32244
 32245
 32246
 32247
 32248
 32249
 32250
 32251
 32252
 32253
 32254
 32255
 32256
 32257
 32258
 32259
 32260
 32261
 32262
 32263
 32264
 32265
 32266
 32267
 32268
 32269
 32270
 32271
 32272
 32273
 32274
 32275
 32276
 32277
 32278
 32279
 32280
 32281
 32282
 32283
 32284
 32285
 32286
 32287
 32288
 32289
 32290
 32291
 32292
 32293
 32294
 32295
 32296
 32297
 32298
 32299
 32300
 32301
 32302
 32303
 32304
 32305
 32306
 32307
 32308
 32309
 32310
 32311
 32312
 32313
 32314
 32315
 32316
 32317
 32318
 32319
 32320
 32321
 32322
 32323
 32324
 32325
 32326
 32327
 32328
 32329
 32330
 32331
 32332
 32333
 32334
 32335
 32336
 32337
 32338
 32339
 32340
 32341
 32342
 32343
 32344
 32345
 32346
 32347
 32348
 32349
 32350
 32351
 32352
 32353
 32354
 32355
 32356
 32357
 32358
 32359
 32360
 32361
 32362
 32363
 32364
 32365
 32366
 32367
 32368
 32369
 32370
 32371
 32372
 32373
 32374
 32375
 32376
 32377
 32378
 32379
 32380
 32381
 32382
 32383
 32384
 32385
 32386
 32387
 32388
 32389
 32390
 32391
 32392
 32393
 32394
 32395
 32396
 32397
 32398
 32399
 32400
 32401
 32402
 32403
 32404
 32405
 32406
 32407
 32408
 32409
 32410
 32411
 32412
 32413
 32414
 32415
 32416
 32417
 32418
 32419
 32420
 32421
 32422
 32423
 32424
 32425
 32426
 32427
 32428
 32429
 32430
 32431
 32432
 32433
 32434
 32435
 32436
 32437
 32438
 32439
 32440
 32441
 32442
 32443
 32444
 32445
 32446
 32447
 32448
 32449
 32450
 32451
 32452
 32453
 32454
 32455
 32456
 32457
 32458
 32459
 32460
 32461
 32462
 32463
 32464
 32465
 32466
 32467
 32468
 32469
 32470
 32471
 32472
 32473
 32474
 32475
 32476
 32477
 32478
 32479
 32480
 32481
 32482
 32483
 32484
 32485
 32486
 32487
 32488
 32489
 32490
 32491
 32492
 32493
 32494
 32495
 32496
 32497
 32498
 32499
 32500
 32501
 32502
 32503
 32504
 32505
 32506
 32507
 32508
 32509
 32510
 32511
 32512
 32513
 32514
 32515
 32516
 32517
 32518
 32519
 32520
 32521
 32522
 32523
 32524
 32525
 32526
 32527
 32528
 32529
 32530
 32531
 32532
 32533
 32534
 32535
 32536
 32537
 32538
 32539
 32540
 32541
 32542
 32543
 32544
 32545
 32546
 32547
 32548
 32549
 32550
 32551
 32552
 32553
 32554
 32555
 32556
 32557
 32558
 32559
 32560
 32561
 32562
 32563
 32564
 32565
 32566
 32567
 32568
 32569
 32570
 32571
 32572
 32573
 32574
 32575
 32576
 32577
 32578
 32579
 32580
 32581
 32582
 32583
 32584
 32585
 32586
 32587
 32588
 32589
 32590
 32591
 32592
 32593
 32594
 32595
 32596
 32597
 32598
 32599
 32600
 32601
 32602
 32603
 32604
 32605
 32606
 32607
 32608
 32609
 32610
 32611
 32612
 32613
 32614
 32615
 32616
 32617
 32618
 32619
 32620
 32621
 32622
 32623
 32624
 32625
 32626
 32627
 32628
 32629
 32630
 32631
 32632
 32633
 32634
 32635
 32636
 32637
 32638
 32639
 32640
 32641
 32642
 32643
 32644
 32645
 32646
 32647
 32648
 32649
 32650
 32651
 32652
 32653
 32654
 32655
 32656
 32657
 32658
 32659
 32660
 32661
 32662
 32663
 32664
 32665
 32666
 32667
 32668
 32669
 32670
 32671
 32672
 32673
 32674
 32675
 32676
 32677
 32678
 32679
 32680
 32681
 32682
 32683
 32684
 32685
 32686
 32687
 32688
 32689
 32690
 32691
 32692
 32693
 32694
 32695
 32696
 32697
 32698
 32699
 32700
 32701
 32702
 32703
 32704
 32705
 32706
 32707
 32708
 32709
 32710
 32711
 32712
 32713
 32714
 32715
 32716
 32717
 32718
 32719
 32720
 32721
 32722
 32723
 32724
 32725
 32726
 32727
 32728
 32729
 32730
 32731
 32732
 32733
 32734
 32735
 32736
 32737
 32738
 32739
 32740
 32741
 32742
 32743
 32744
 32745
 32746
 32747
 32748
 32749
 32750
 32751
 32752
 32753
 32754
 32755
 32756
 32757
 32758
 32759
 32760
 32761
 32762
 32763
 32764
 32765
 32766
 32767
 32768
 32769
 32770
 32771
 32772
 32773
 32774
 32775
 32776
 32777
 32778
 32779
 32780
 32781
 32782
 32783
 32784
 32785
 32786
 32787
 32788
 32789
 32790
 32791
 32792
 32793
 32794
 32795
 32796
 32797
 32798
 32799
 32800
 32801
 32802
 32803
 32804
 32805
 32806
 32807
 32808
 32809
 32810
 32811
 32812
 32813
 32814
 32815
 32816
 32817
 32818
 32819
 32820
 32821
 32822
 32823
 32824
 32825
 32826
 32827
 32828
 32829
 32830
 32831
 32832
 32833
 32834
 32835
 32836
 32837
 32838
 32839
 32840
 32841
 32842
 32843
 32844
 32845
 32846
 32847
 32848
 32849
 32850
 32851
 32852
 32853
 32854
 32855
 32856
 32857
 32858
 32859
 32860
 32861
 32862
 32863
 32864
 32865
 32866
 32867
 32868
 32869
 32870
 32871
 32872
 32873
 32874
 32875
 32876
 32877
 32878
 32879
 32880
 32881
 32882
 32883
 32884
 32885
 32886
 32887
 32888
 32889
 32890
 32891
 32892
 32893
 32894
 32895
 32896
 32897
 32898
 32899
 32900
 32901
 32902
 32903
 32904
 32905
 32906
 32907
 32908
 32909
 32910
 32911
 32912
 32913
 32914
 32915
 32916
 32917
 32918
 32919
 32920
 32921
 32922
 32923
 32924
 32925
 32926
 32927
 32928
 32929
 32930
 32931
 32932
 32933
 32934
 32935
 32936
 32937
 32938
 32939
 32940
 32941
 32942
 32943
 32944
 32945
 32946
 32947
 32948
 32949
 32950
 32951
 32952
 32953
 32954
 32955
 32956
 32957
 32958
 32959
 32960
 32961
 32962
 32963
 32964
 32965
 32966
 32967
 32968
 32969
 32970
 32971
 32972
 32973
 32974
 32975
 32976
 32977
 32978
 32979
 32980
 32981
 32982
 32983
 32984
 32985
 32986
 32987
 32988
 32989
 32990
 32991
 32992
 32993
 32994
 32995
 32996
 32997
 32998
 32999
 33000
 33001
 33002
 33003
 33004
 33005
 33006
 33007
 33008
 33009
 33010
 33011
 33012
 33013
 33014
 33015
 33016
 33017
 33018
 33019
 33020
 33021
 33022
 33023
 33024
 33025
 33026
 33027
 33028
 33029
 33030
 33031
 33032
 33033
 33034
 33035
 33036
 33037
 33038
 33039
 33040
 33041
 33042
 33043
 33044
 33045
 33046
 33047
 33048
 33049
 33050
 33051
 33052
 33053
 33054
 33055
 33056
 33057
 33058
 33059
 33060
 33061
 33062
 33063
 33064
 33065
 33066
 33067
 33068
 33069
 33070
 33071
 33072
 33073
 33074
 33075
 33076
 33077
 33078
 33079
 33080
 33081
 33082
 33083
 33084
 33085
 33086
 33087
 33088
 33089
 33090
 33091
 33092
 33093
 33094
 33095
 33096
 33097
 33098
 33099
 33100
 33101
 33102
 33103
 33104
 33105
 33106
 33107
 33108
 33109
 33110
 33111
 33112
 33113
 33114
 33115
 33116
 33117
 33118
 33119
 33120
 33121
 33122
 33123
 33124
 33125
 33126
 33127
 33128
 33129
 33130
 33131
 33132
 33133
 33134
 33135
 33136
 33137
 33138
 33139
 33140
 33141
 33142
 33143
 33144
 33145
 33146
 33147
 33148
 33149
 33150
 33151
 33152
 33153
 33154
 33155
 33156
 33157
 33158
 33159
 33160
 33161
 33162
 33163
 33164
 33165
 33166
 33167
 33168
 33169
 33170
 33171
 33172
 33173
 33174
 33175
 33176
 33177
 33178
 33179
 33180
 33181
 33182
 33183
 33184
 33185
 33186
 33187
 33188
 33189
 33190
 33191
 33192
 33193
 33194
 33195
 33196
 33197
 33198
 33199
 33200
 33201
 33202
 33203
 33204
 33205
 33206
 33207
 33208
 33209
 33210
 33211
 33212
 33213
 33214
 33215
 33216
 33217
 33218
 33219
 33220
 33221
 33222
 33223
 33224
 33225
 33226
 33227
 33228
 33229
 33230
 33231
 33232
 33233
 33234
 33235
 33236
 33237
 33238
 33239
 33240
 33241
 33242
 33243
 33244
 33245
 33246
 33247
 33248
 33249
 33250
 33251
 33252
 33253
 33254
 33255
 33256
 33257
 33258
 33259
 33260
 33261
 33262
 33263
 33264
 33265
 33266
 33267
 33268
 33269
 33270
 33271
 33272
 33273
 33274
 33275
 33276
 33277
 33278
 33279
 33280
 33281
 33282
 33283
 33284
 33285
 33286
 33287
 33288
 33289
 33290
 33291
 33292
 33293
 33294
 33295
 33296
 33297
 33298
 33299
 33300
 33301
 33302
 33303
 33304
 33305
 33306
 33307
 33308
 33309
 33310
 33311
 33312
 33313
 33314
 33315
 33316
 33317
 33318
 33319
 33320
 33321
 33322
 33323
 33324
 33325
 33326
 33327
 33328
 33329
 33330
 33331
 33332
 33333
 33334
 33335
 33336
 33337
 33338
 33339
 33340
 33341
 33342
 33343
 33344
 33345
 33346
 33347
 33348
 33349
 33350
 33351
 33352
 33353
 33354
 33355
 33356
 33357
 33358
 33359
 33360
 33361
 33362
 33363
 33364
 33365
 33366
 33367
 33368
 33369
 33370
 33371
 33372
 33373
 33374
 33375
 33376
 33377
 33378
 33379
 33380
 33381
 33382
 33383
 33384
 33385
 33386
 33387
 33388
 33389
 33390
 33391
 33392
 33393
 33394
 33395
 33396
 33397
 33398
 33399
 33400
 33401
 33402
 33403
 33404
 33405
 33406
 33407
 33408
 33409
 33410
 33411
 33412
 33413
 33414
 33415
 33416
 33417
 33418
 33419
 33420
 33421
 33422
 33423
 33424
 33425
 33426
 33427
 33428
 33429
 33430
 33431
 33432
 33433
 33434
 33435
 33436
 33437
 33438
 33439
 33440
 33441
 33442
 33443
 33444
 33445
 33446
 33447
 33448
 33449
 33450
 33451
 33452
 33453
 33454
 33455
 33456
 33457
 33458
 33459
 33460
 33461
 33462
 33463
 33464
 33465
 33466
 33467
 33468
 33469
 33470
 33471
 33472
 33473
 33474
 33475
 33476
 33477
 33478
 33479
 33480
 33481
 33482
 33483
 33484
 33485
 33486
 33487
 33488
 33489
 33490
 33491
 33492
 33493
 33494
 33495
 33496
 33497
 33498
 33499
 33500
 33501
 33502
 33503
 33504
 33505
 33506
 33507
 33508
 33509
 33510
 33511
 33512
 33513
 33514
 33515
 33516
 33517
 33518
 33519
 33520
 33521
 33522
 33523
 33524
 33525
 33526
 33527
 33528
 33529
 33530
 33531
 33532
 33533
 33534
 33535
 33536
 33537
 33538
 33539
 33540
 33541
 33542
 33543
 33544
 33545
 33546
 33547
 33548
 33549
 33550
 33551
 33552
 33553
 33554
 33555
 33556
 33557
 33558
 33559
 33560
 33561
 33562
 33563
 33564
 33565
 33566
 33567
 33568
 33569
 33570
 33571
 33572
 33573
 33574
 33575
 33576
 33577
 33578
 33579
 33580
 33581
 33582
 33583
 33584
 33585
 33586
 33587
 33588
 33589
 33590
 33591
 33592
 33593
 33594
 33595
 33596
 33597
 33598
 33599
 33600
 33601
 33602
 33603
 33604
 33605
 33606
 33607
 33608
 33609
 33610
 33611
 33612
 33613
 33614
 33615
 33616
 33617
 33618
 33619
 33620
 33621
 33622
 33623
 33624
 33625
 33626
 33627
 33628
 33629
 33630
 33631
 33632
 33633
 33634
 33635
 33636
 33637
 33638
 33639
 33640
 33641
 33642
 33643
 33644
 33645
 33646
 33647
 33648
 33649
 33650
 33651
 33652
 33653
 33654
 33655
 33656
 33657
 33658
 33659
 33660
 33661
 33662
 33663
 33664
 33665
 33666
 33667
 33668
 33669
 33670
 33671
 33672
 33673
 33674
 33675
 33676
 33677
 33678
 33679
 33680
 33681
 33682
 33683
 33684
 33685
 33686
 33687
 33688
 33689
 33690
 33691
 33692
 33693
 33694
 33695
 33696
 33697
 33698
 33699
 33700
 33701
 33702
 33703
 33704
 33705
 33706
 33707
 33708
 33709
 33710
 33711
 33712
 33713
 33714
 33715
 33716
 33717
 33718
 33719
 33720
 33721
 33722
 33723
 33724
 33725
 33726
 33727
 33728
 33729
 33730
 33731
 33732
 33733
 33734
 33735
 33736
 33737
 33738
 33739
 33740
 33741
 33742
 33743
 33744
 33745
 33746
 33747
 33748
 33749
 33750
 33751
 33752
 33753
 33754
 33755
 33756
 33757
 33758
 33759
 33760
 33761
 33762
 33763
 33764
 33765
 33766
 33767
 33768
 33769
 33770
 33771
 33772
 33773
 33774
 33775
 33776
 33777
 33778
 33779
 33780
 33781
 33782
 33783
 33784
 33785
 33786
 33787
 33788
 33789
 33790
 33791
 33792
 33793
 33794
 33795
 33796
 33797
 33798
 33799
 33800
 33801
 33802
 33803
 33804
 33805
 33806
 33807
 33808
 33809
 33810
 33811
 33812
 33813
 33814
 33815
 33816
 33817
 33818
 33819
 33820
 33821
 33822
 33823
 33824
 33825
 33826
 33827
 33828
 33829
 33830
 33831
 33832
 33833
 33834
 33835
 33836
 33837
 33838
 33839
 33840
 33841
 33842
 33843
 33844
 33845
 33846
 33847
 33848
 33849
 33850
 33851
 33852
 33853
 33854
 33855
 33856
 33857
 33858
 33859
 33860
 33861
 33862
 33863
 33864
 33865
 33866
 33867
 33868
 33869
 33870
 33871
 33872
 33873
 33874
 33875
 33876
 33877
 33878
 33879
 33880
 33881
 33882
 33883
 33884
 33885
 33886
 33887
 33888
 33889
 33890
 33891
 33892
 33893
 33894
 33895
 33896
 33897
 33898
 33899
 33900
 33901
 33902
 33903
 33904
 33905
 33906
 33907
 33908
 33909
 33910
 33911
 33912
 33913
 33914
 33915
 33916
 33917
 33918
 33919
 33920
 33921
 33922
 33923
 33924
 33925
 33926
 33927
 33928
 33929
 33930
 33931
 33932
 33933
 33934
 33935
 33936
 33937
 33938
 33939
 33940
 33941
 33942
 33943
 33944
 33945
 33946
 33947
 33948
 33949
 33950
 33951
 33952
 33953
 33954
 33955
 33956
 33957
 33958
 33959
 33960
 33961
 33962
 33963
 33964
 33965
 33966
 33967
 33968
 33969
 33970
 33971
 33972
 33973
 33974
 33975
 33976
 33977
 33978
 33979
 33980
 33981
 33982
 33983
 33984
 33985
 33986
 33987
 33988
 33989
 33990
 33991
 33992
 33993
 33994
 33995
 33996
 33997
 33998
 33999
 34000
 34001
 34002
 34003
 34004
 34005
 34006
 34007
 34008
 34009
 34010
 34011
 34012
 34013
 34014
 34015
 34016
 34017
 34018
 34019
 34020
 34021
 34022
 34023
 34024
 34025
 34026
 34027
 34028
 34029
 34030
 34031
 34032
 34033
 34034
 34035
 34036
 34037
 34038
 34039
 34040
 34041
 34042
 34043
 34044
 34045
 34046
 34047
 34048
 34049
 34050
 34051
 34052
 34053
 34054
 34055
 34056
 34057
 34058
 34059
 34060
 34061
 34062
 34063
 34064
 34065
 34066
 34067
 34068
 34069
 34070
 34071
 34072
 34073
 34074
 34075
 34076
 34077
 34078
 34079
 34080
 34081
 34082
 34083
 34084
 34085
 34086
 34087
 34088
 34089
 34090
 34091
 34092
 34093
 34094
 34095
 34096
 34097
 34098
 34099
 34100
 34101
 34102
 34103
 34104
 34105
 34106
 34107
 34108
 34109
 34110
 34111
 34112
 34113
 34114
 34115
 34116
 34117
 34118
 34119
 34120
 34121
 34122
 34123
 34124
 34125
 34126
 34127
 34128
 34129
 34130
 34131
 34132
 34133
 34134
 34135
 34136
 34137
 34138
 34139
 34140
 34141
 34142
 34143
 34144
 34145
 34146
 34147
 34148
 34149
 34150
 34151
 34152
 34153
 34154
 34155
 34156
 34157
 34158
 34159
 34160
 34161
 34162
 34163
 34164
 34165
 34166
 34167
 34168
 34169
 34170
 34171
 34172
 34173
 34174
 34175
 34176
 34177
 34178
 34179
 34180
 34181
 34182
 34183
 34184
 34185
 34186
 34187
 34188
 34189
 34190
 34191
 34192
 34193
 34194
 34195
 34196
 34197
 34198
 34199
 34200
 34201
 34202
 34203
 34204
 34205
 34206
 34207
 34208
 34209
 34210
 34211
 34212
 34213
 34214
 34215
 34216
 34217
 34218
 34219
 34220
 34221
 34222
 34223
 34224
 34225
 34226
 34227
 34228
 34229
 34230
 34231
 34232
 34233
 34234
 34235
 34236
 34237
 34238
 34239
 34240
 34241
 34242
 34243
 34244
 34245
 34246
 34247
 34248
 34249
 34250
 34251
 34252
 34253
 34254
 34255
 34256
 34257
 34258
 34259
 34260
 34261
 34262
 34263
 34264
 34265
 34266
 34267
 34268
 34269
 34270
 34271
 34272
 34273
 34274
 34275
 34276
 34277
 34278
 34279
 34280
 34281
 34282
 34283
 34284
 34285
 34286
 34287
 34288
 34289
 34290
 34291
 34292
 34293
 34294
 34295
 34296
 34297
 34298
 34299
 34300
 34301
 34302
 34303
 34304
 34305
 34306
 34307
 34308
 34309
 34310
 34311
 34312
 34313
 34314
 34315
 34316
 34317
 34318
 34319
 34320
 34321
 34322
 34323
 34324
 34325
 34326
 34327
 34328
 34329
 34330
 34331
 34332
 34333
 34334
 34335
 34336
 34337
 34338
 34339
 34340
 34341
 34342
 34343
 34344
 34345
 34346
 34347
 34348
 34349
 34350
 34351
 34352
 34353
 34354
 34355
 34356
 34357
 34358
 34359
 34360
 34361
 34362
 34363
 34364
 34365
 34366
 34367
 34368
 34369
 34370
 34371
 34372
 34373
 34374
 34375
 34376
 34377
 34378
 34379
 34380
 34381
 34382
 34383
 34384
 34385
 34386
 34387
 34388
 34389
 34390
 34391
 34392
 34393
 34394
 34395
 34396
 34397
 34398
 34399
 34400
 34401
 34402
 34403
 34404
 34405
 34406
 34407
 34408
 34409
 34410
 34411
 34412
 34413
 34414
 34415
 34416
 34417
 34418
 34419
 34420
 34421
 34422
 34423
 34424
 34425
 34426
 34427
 34428
 34429
 34430
 34431
 34432
 34433
 34434
 34435
 34436
 34437
 34438
 34439
 34440
 34441
 34442
 34443
 34444
 34445
 34446
 34447
 34448
 34449
 34450
 34451
 34452
 34453
 34454
 34455
 34456
 34457
 34458
 34459
 34460
 34461
 34462
 34463
 34464
 34465
 34466
 34467
 34468
 34469
 34470
 34471
 34472
 34473
 34474
 34475
 34476
 34477
 34478
 34479
 34480
 34481
 34482
 34483
 34484
 34485
 34486
 34487
 34488
 34489
 34490
 34491
 34492
 34493
 34494
 34495
 34496
 34497
 34498
 34499
 34500
 34501
 34502
 34503
 34504
 34505
 34506
 34507
 34508
 34509
 34510
 34511
 34512
 34513
 34514
 34515
 34516
 34517
 34518
 34519
 34520
 34521
 34522
 34523
 34524
 34525
 34526
 34527
 34528
 34529
 34530
 34531
 34532
 34533
 34534
 34535
 34536
 34537
 34538
 34539
 34540
 34541
 34542
 34543
 34544
 34545
 34546
 34547
 34548
 34549
 34550
 34551
 34552
 34553
 34554
 34555
 34556
 34557
 34558
 34559
 34560
 34561
 34562
 34563
 34564
 34565
 34566
 34567
 34568
 34569
 34570
 34571
 34572
 34573
 34574
 34575
 34576
 34577
 34578
 34579
 34580
 34581
 34582
 34583
 34584
 34585
 34586
 34587
 34588
 34589
 34590
 34591
 34592
 34593
 34594
 34595
 34596
 34597
 34598
 34599
 34600
 34601
 34602
 34603
 34604
 34605
 34606
 34607
 34608
 34609
 34610
 34611
 34612
 34613
 34614
 34615
 34616
 34617
 34618
 34619
 34620
 34621
 34622
 34623
 34624
 34625
 34626
 34627
 34628
 34629
 34630
 34631
 34632
 34633
 34634
 34635
 34636
 34637
 34638
 34639
 34640
 34641
 34642
 34643
 34644
 34645
 34646
 34647
 34648
 34649
 34650
 34651
 34652
 34653
 34654
 34655
 34656
 34657
 34658
 34659
 34660
 34661
 34662
 34663
 34664
 34665
 34666
 34667
 34668
 34669
 34670
 34671
 34672
 34673
 34674
 34675
 34676
 34677
 34678
 34679
 34680
 34681
 34682
 34683
 34684
 34685
 34686
 34687
 34688
 34689
 34690
 34691
 34692
 34693
 34694
 34695
 34696
 34697
 34698
 34699
 34700
 34701
 34702
 34703
 34704
 34705
 34706
 34707
 34708
 34709
 34710
 34711
 34712
 34713
 34714
 34715
 34716
 34717
 34718
 34719
 34720
 34721
 34722
 34723
 34724
 34725
 34726
 34727
 34728
 34729
 34730
 34731
 34732
 34733
 34734
 34735
 34736
 34737
 34738
 34739
 34740
 34741
 34742
 34743
 34744
 34745
 34746
 34747
 34748
 34749
 34750
 34751
 34752
 34753
 34754
 34755
 34756
 34757
 34758
 34759
 34760
 34761
 34762
 34763
 34764
 34765
 34766
 34767
 34768
 34769
 34770
 34771
 34772
 34773
 34774
 34775
 34776
 34777
 34778
 34779
 34780
 34781
 34782
 34783
 34784
 34785
 34786
 34787
 34788
 34789
 34790
 34791
 34792
 34793
 34794
 34795
 34796
 34797
 34798
 34799
 34800
 34801
 34802
 34803
 34804
 34805
 34806
 34807
 34808
 34809
 34810
 34811
 34812
 34813
 34814
 34815
 34816
 34817
 34818
 34819
 34820
 34821
 34822
 34823
 34824
 34825
 34826
 34827
 34828
 34829
 34830
 34831
 34832
 34833
 34834
 34835
 34836
 34837
 34838
 34839
 34840
 34841
 34842
 34843
 34844
 34845
 34846
 34847
 34848
 34849
 34850
 34851
 34852
 34853
 34854
 34855
 34856
 34857
 34858
 34859
 34860
 34861
 34862
 34863
 34864
 34865
 34866
 34867
 34868
 34869
 34870
 34871
 34872
 34873
 34874
 34875
 34876
 34877
 34878
 34879
 34880
 34881
 34882
 34883
 34884
 34885
 34886
 34887
 34888
 34889
 34890
 34891
 34892
 34893
 34894
 34895
 34896
 34897
 34898
 34899
 34900
 34901
 34902
 34903
 34904
 34905
 34906
 34907
 34908
 34909
 34910
 34911
 34912
 34913
 34914
 34915
 34916
 34917
 34918
 34919
 34920
 34921
 34922
 34923
 34924
 34925
 34926
 34927
 34928
 34929
 34930
 34931
 34932
 34933
 34934
 34935
 34936
 34937
 34938
 34939
 34940
 34941
 34942
 34943
 34944
 34945
 34946
 34947
 34948
 34949
 34950
 34951
 34952
 34953
 34954
 34955
 34956
 34957
 34958
 34959
 34960
 34961
 34962
 34963
 34964
 34965
 34966
 34967
 34968
 34969
 34970
 34971
 34972
 34973
 34974
 34975
 34976
 34977
 34978
 34979
 34980
 34981
 34982
 34983
 34984
 34985
 34986
 34987
 34988
 34989
 34990
 34991
 34992
 34993
 34994
 34995
 34996
 34997
 34998
 34999
 35000
 35001
 35002
 35003
 35004
 35005
 35006
 35007
 35008
 35009
 35010
 35011
 35012
 35013
 35014
 35015
 35016
 35017
 35018
 35019
 35020
 35021
 35022
 35023
 35024
 35025
 35026
 35027
 35028
 35029
 35030
 35031
 35032
 35033
 35034
 35035
 35036
 35037
 35038
 35039
 35040
 35041
 35042
 35043
 35044
 35045
 35046
 35047
 35048
 35049
 35050
 35051
 35052
 35053
 35054
 35055
 35056
 35057
 35058
 35059
 35060
 35061
 35062
 35063
 35064
 35065
 35066
 35067
 35068
 35069
 35070
 35071
 35072
 35073
 35074
 35075
 35076
 35077
 35078
 35079
 35080
 35081
 35082
 35083
 35084
 35085
 35086
 35087
 35088
 35089
 35090
 35091
 35092
 35093
 35094
 35095
 35096
 35097
 35098
 35099
 35100
 35101
 35102
 35103
 35104
 35105
 35106
 35107
 35108
 35109
 35110
 35111
 35112
 35113
 35114
 35115
 35116
 35117
 35118
 35119
 35120
 35121
 35122
 35123
 35124
 35125
 35126
 35127
 35128
 35129
 35130
 35131
 35132
 35133
 35134
 35135
 35136
 35137
 35138
 35139
 35140
 35141
 35142
 35143
 35144
 35145
 35146
 35147
 35148
 35149
 35150
 35151
 35152
 35153
 35154
 35155
 35156
 35157
 35158
 35159
 35160
 35161
 35162
 35163
 35164
 35165
 35166
 35167
 35168
 35169
 35170
 35171
 35172
 35173
 35174
 35175
 35176
 35177
 35178
 35179
 35180
 35181
 35182
 35183
 35184
 35185
 35186
 35187
 35188
 35189
 35190
 35191
 35192
 35193
 35194
 35195
 35196
 35197
 35198
 35199
 35200
 35201
 35202
 35203
 35204
 35205
 35206
 35207
 35208
 35209
 35210
 35211
 35212
 35213
 35214
 35215
 35216
 35217
 35218
 35219
 35220
 35221
 35222
 35223
 35224
 35225
 35226
 35227
 35228
 35229
 35230
 35231
 35232
 35233
 35234
 35235
 35236
 35237
 35238
 35239
 35240
 35241
 35242
 35243
 35244
 35245
 35246
 35247
 35248
 35249
 35250
 35251
 35252
 35253
 35254
 35255
 35256
 35257
 35258
 35259
 35260
 35261
 35262
 35263
 35264
 35265
 35266
 35267
 35268
 35269
 35270
 35271
 35272
 35273
 35274
 35275
 35276
 35277
 35278
 35279
 35280
 35281
 35282
 35283
 35284
 35285
 35286
 35287
 35288
 35289
 35290
 35291
 35292
 35293
 35294
 35295
 35296
 35297
 35298
 35299
 35300
 35301
 35302
 35303
 35304
 35305
 35306
 35307
 35308
 35309
 35310
 35311
 35312
 35313
 35314
 35315
 35316
 35317
 35318
 35319
 35320
 35321
 35322
 35323
 35324
 35325
 35326
 35327
 35328
 35329
 35330
 35331
 35332
 35333
 35334
 35335
 35336
 35337
 35338
 35339
 35340
 35341
 35342
 35343
 35344
 35345
 35346
 35347
 35348
 35349
 35350
 35351
 35352
 35353
 35354
 35355
 35356
 35357
 35358
 35359
 35360
 35361
 35362
 35363
 35364
 35365
 35366
 35367
 35368
 35369
 35370
 35371
 35372
 35373
 35374
 35375
 35376
 35377
 35378
 35379
 35380
 35381
 35382
 35383
 35384
 35385
 35386
 35387
 35388
 35389
 35390
 35391
 35392
 35393
 35394
 35395
 35396
 35397
 35398
 35399
 35400
 35401
 35402
 35403
 35404
 35405
 35406
 35407
 35408
 35409
 35410
 35411
 35412
 35413
 35414
 35415
 35416
 35417
 35418
 35419
 35420
 35421
 35422
 35423
 35424
 35425
 35426
 35427
 35428
 35429
 35430
 35431
 35432
 35433
 35434
 35435
 35436
 35437
 35438
 35439
 35440
 35441
 35442
 35443
 35444
 35445
 35446
 35447
 35448
 35449
 35450
 35451
 35452
 35453
 35454
 35455
 35456
 35457
 35458
 35459
 35460
 35461
 35462
 35463
 35464
 35465
 35466
 35467
 35468
 35469
 35470
 35471
 35472
 35473
 35474
 35475
 35476
 35477
 35478
 35479
 35480
 35481
 35482
 35483
 35484
 35485
 35486
 35487
 35488
 35489
 35490
 35491
 35492
 35493
 35494
 35495
 35496
 35497
 35498
 35499
 35500
 35501
 35502
 35503
 35504
 35505
 35506
 35507
 35508
 35509
 35510
 35511
 35512
 35513
 35514
 35515
 35516
 35517
 35518
 35519
 35520
 35521
 35522
 35523
 35524
 35525
 35526
 35527
 35528
 35529
 35530
 35531
 35532
 35533
 35534
 35535
 35536
 35537
 35538
 35539
 35540
 35541
 35542
 35543
 35544
 35545
 35546
 35547
 35548
 35549
 35550
 35551
 35552
 35553
 35554
 35555
 35556
 35557
 35558
 35559
 35560
 35561
 35562
 35563
 35564
 35565
 35566
 35567
 35568
 35569
 35570
 35571
 35572
 35573
 35574
 35575
 35576
 35577
 35578
 35579
 35580
 35581
 35582
 35583
 35584
 35585
 35586
 35587
 35588
 35589
 35590
 35591
 35592
 35593
 35594
 35595
 35596
 35597
 35598
 35599
 35600
 35601
 35602
 35603
 35604
 35605
 35606
 35607
 35608
 35609
 35610
 35611
 35612
 35613
 35614
 35615
 35616
 35617
 35618
 35619
 35620
 35621
 35622
 35623
 35624
 35625
 35626
 35627
 35628
 35629
 35630
 35631
 35632
 35633
 35634
 35635
 35636
 35637
 35638
 35639
 35640
 35641
 35642
 35643
 35644
 35645
 35646
 35647
 35648
 35649
 35650
 35651
 35652
 35653
 35654
 35655
 35656
 35657
 35658
 35659
 35660
 35661
 35662
 35663
 35664
 35665
 35666
 35667
 35668
 35669
 35670
 35671
 35672
 35673
 35674
 35675
 35676
 35677
 35678
 35679
 35680
 35681
 35682
 35683
 35684
 35685
 35686
 35687
 35688
 35689
 35690
 35691
 35692
 35693
 35694
 35695
 35696
 35697
 35698
 35699
 35700
 35701
 35702
 35703
 35704
 35705
 35706
 35707
 35708
 35709
 35710
 35711
 35712
 35713
 35714
 35715
 35716
 35717
 35718
 35719
 35720
 35721
 35722
 35723
 35724
 35725
 35726
 35727
 35728
 35729
 35730
 35731
 35732
 35733
 35734
 35735
 35736
 35737
 35738
 35739
 35740
 35741
 35742
 35743
 35744
 35745
 35746
 35747
 35748
 35749
 35750
 35751
 35752
 35753
 35754
 35755
 35756
 35757
 35758
 35759
 35760
 35761
 35762
 35763
 35764
 35765
 35766
 35767
 35768
 35769
 35770
 35771
 35772
 35773
 35774
 35775
 35776
 35777
 35778
 35779
 35780
 35781
 35782
 35783
 35784
 35785
 35786
 35787
 35788
 35789
 35790
 35791
 35792
 35793
 35794
 35795
 35796
 35797
 35798
 35799
 35800
 35801
 35802
 35803
 35804
 35805
 35806
 35807
 35808
 35809
 35810
 35811
 35812
 35813
 35814
 35815
 35816
 35817
 35818
 35819
 35820
 35821
 35822
 35823
 35824
 35825
 35826
 35827
 35828
 35829
 35830
 35831
 35832
 35833
 35834
 35835
 35836
 35837
 35838
 35839
 35840
 35841
 35842
 35843
 35844
 35845
 35846
 35847
 35848
 35849
 35850
 35851
 35852
 35853
 35854
 35855
 35856
 35857
 35858
 35859
 35860
 35861
 35862
 35863
 35864
 35865
 35866
 35867
 35868
 35869
 35870
 35871
 35872
 35873
 35874
 35875
 35876
 35877
 35878
 35879
 35880
 35881
 35882
 35883
 35884
 35885
 35886
 35887
 35888
 35889
 35890
 35891
 35892
 35893
 35894
 35895
 35896
 35897
 35898
 35899
 35900
 35901
 35902
 35903
 35904
 35905
 35906
 35907
 35908
 35909
 35910
 35911
 35912
 35913
 35914
 35915
 35916
 35917
 35918
 35919
 35920
 35921
 35922
 35923
 35924
 35925
 35926
 35927
 35928
 35929
 35930
 35931
 35932
 35933
 35934
 35935
 35936
 35937
 35938
 35939
 35940
 35941
 35942
 35943
 35944
 35945
 35946
 35947
 35948
 35949
 35950
 35951
 35952
 35953
 35954
 35955
 35956
 35957
 35958
 35959
 35960
 35961
 35962
 35963
 35964
 35965
 35966
 35967
 35968
 35969
 35970
 35971
 35972
 35973
 35974
 35975
 35976
 35977
 35978
 35979
 35980
 35981
 35982
 35983
 35984
 35985
 35986
 35987
 35988
 35989
 35990
 35991
 35992
 35993
 35994
 35995
 35996
 35997
 35998
 35999
 36000
 36001
 36002
 36003
 36004
 36005
 36006
 36007
 36008
 36009
 36010
 36011
 36012
 36013
 36014
 36015
 36016
 36017
 36018
 36019
 36020
 36021
 36022
 36023
 36024
 36025
 36026
 36027
 36028
 36029
 36030
 36031
 36032
 36033
 36034
 36035
 36036
 36037
 36038
 36039
 36040
 36041
 36042
 36043
 36044
 36045
 36046
 36047
 36048
 36049
 36050
 36051
 36052
 36053
 36054
 36055
 36056
 36057
 36058
 36059
 36060
 36061
 36062
 36063
 36064
 36065
 36066
 36067
 36068
 36069
 36070
 36071
 36072
 36073
 36074
 36075
 36076
 36077
 36078
 36079
 36080
 36081
 36082
 36083
 36084
 36085
 36086
 36087
 36088
 36089
 36090
 36091
 36092
 36093
 36094
 36095
 36096
 36097
 36098
 36099
 36100
 36101
 36102
 36103
 36104
 36105
 36106
 36107
 36108
 36109
 36110
 36111
 36112
 36113
 36114
 36115
 36116
 36117
 36118
 36119
 36120
 36121
 36122
 36123
 36124
 36125
 36126
 36127
 36128
 36129
 36130
 36131
 36132
 36133
 36134
 36135
 36136
 36137
 36138
 36139
 36140
 36141
 36142
 36143
 36144
 36145
 36146
 36147
 36148
 36149
 36150
 36151
 36152
 36153
 36154
 36155
 36156
 36157
 36158
 36159
 36160
 36161
 36162
 36163
 36164
 36165
 36166
 36167
 36168
 36169
 36170
 36171
 36172
 36173
 36174
 36175
 36176
 36177
 36178
 36179
 36180
 36181
 36182
 36183
 36184
 36185
 36186
 36187
 36188
 36189
 36190
 36191
 36192
 36193
 36194
 36195
 36196
 36197
 36198
 36199
 36200
 36201
 36202
 36203
 36204
 36205
 36206
 36207
 36208
 36209
 36210
 36211
 36212
 36213
 36214
 36215
 36216
 36217
 36218
 36219
 36220
 36221
 36222
 36223
 36224
 36225
 36226
 36227
 36228
 36229
 36230
 36231
 36232
 36233
 36234
 36235
 36236
 36237
 36238
 36239
 36240
 36241
 36242
 36243
 36244
 36245
 36246
 36247
 36248
 36249
 36250
 36251
 36252
 36253
 36254
 36255
 36256
 36257
 36258
 36259
 36260
 36261
 36262
 36263
 36264
 36265
 36266
 36267
 36268
 36269
 36270
 36271
 36272
 36273
 36274
 36275
 36276
 36277
 36278
 36279
 36280
 36281
 36282
 36283
 36284
 36285
 36286
 36287
 36288
 36289
 36290
 36291
 36292
 36293
 36294
 36295
 36296
 36297
 36298
 36299
 36300
 36301
 36302
 36303
 36304
 36305
 36306
 36307
 36308
 36309
 36310
 36311
 36312
 36313
 36314
 36315
 36316
 36317
 36318
 36319
 36320
 36321
 36322
 36323
 36324
 36325
 36326
 36327
 36328
 36329
 36330
 36331
 36332
 36333
 36334
 36335
 36336
 36337
 36338
 36339
 36340
 36341
 36342
 36343
 36344
 36345
 36346
 36347
 36348
 36349
 36350
 36351
 36352
 36353
 36354
 36355
 36356
 36357
 36358
 36359
 36360
 36361
 36362
 36363
 36364
 36365
 36366
 36367
 36368
 36369
 36370
 36371
 36372
 36373
 36374
 36375
 36376
 36377
 36378
 36379
 36380
 36381
 36382
 36383
 36384
 36385
 36386
 36387
 36388
 36389
 36390
 36391
 36392
 36393
 36394
 36395
 36396
 36397
 36398
 36399
 36400
 36401
 36402
 36403
 36404
 36405
 36406
 36407
 36408
 36409
 36410
 36411
 36412
 36413
 36414
 36415
 36416
 36417
 36418
 36419
 36420
 36421
 36422
 36423
 36424
 36425
 36426
 36427
 36428
 36429
 36430
 36431
 36432
 36433
 36434
 36435
 36436
 36437
 36438
 36439
 36440
 36441
 36442
 36443
 36444
 36445
 36446
 36447
 36448
 36449
 36450
 36451
 36452
 36453
 36454
 36455
 36456
 36457
 36458
 36459
 36460
 36461
 36462
 36463
 36464
 36465
 36466
 36467
 36468
 36469
 36470
 36471
 36472
 36473
 36474
 36475
 36476
 36477
 36478
 36479
 36480
 36481
 36482
 36483
 36484
 36485
 36486
 36487
 36488
 36489
 36490
 36491
 36492
 36493
 36494
 36495
 36496
 36497
 36498
 36499
 36500
 36501
 36502
 36503
 36504
 36505
 36506
 36507
 36508
 36509
 36510
 36511
 36512
 36513
 36514
 36515
 36516
 36517
 36518
 36519
 36520
 36521
 36522
 36523
 36524
 36525
 36526
 36527
 36528
 36529
 36530
 36531
 36532
 36533
 36534
 36535
 36536
 36537
 36538
 36539
 36540
 36541
 36542
 36543
 36544
 36545
 36546
 36547
 36548
 36549
 36550
 36551
 36552
 36553
 36554
 36555
 36556
 36557
 36558
 36559
 36560
 36561
 36562
 36563
 36564
 36565
 36566
 36567
 36568
 36569
 36570
 36571
 36572
 36573
 36574
 36575
 36576
 36577
 36578
 36579
 36580
 36581
 36582
 36583
 36584
 36585
 36586
 36587
 36588
 36589
 36590
 36591
 36592
 36593
 36594
 36595
 36596
 36597
 36598
 36599
 36600
 36601
 36602
 36603
 36604
 36605
 36606
 36607
 36608
 36609
 36610
 36611
 36612
 36613
 36614
 36615
 36616
 36617
 36618
 36619
 36620
 36621
 36622
 36623
 36624
 36625
 36626
 36627
 36628
 36629
 36630
 36631
 36632
 36633
 36634
 36635
 36636
 36637
 36638
 36639
 36640
 36641
 36642
 36643
 36644
 36645
 36646
 36647
 36648
 36649
 36650
 36651
 36652
 36653
 36654
 36655
 36656
 36657
 36658
 36659
 36660
 36661
 36662
 36663
 36664
 36665
 36666
 36667
 36668
 36669
 36670
 36671
 36672
 36673
 36674
 36675
 36676
 36677
 36678
 36679
 36680
 36681
 36682
 36683
 36684
 36685
 36686
 36687
 36688
 36689
 36690
 36691
 36692
 36693
 36694
 36695
 36696
 36697
 36698
 36699
 36700
 36701
 36702
 36703
 36704
 36705
 36706
 36707
 36708
 36709
 36710
 36711
 36712
 36713
 36714
 36715
 36716
 36717
 36718
 36719
 36720
 36721
 36722
 36723
 36724
 36725
 36726
 36727
 36728
 36729
 36730
 36731
 36732
 36733
 36734
 36735
 36736
 36737
 36738
 36739
 36740
 36741
 36742
 36743
 36744
 36745
 36746
 36747
 36748
 36749
 36750
 36751
 36752
 36753
 36754
 36755
 36756
 36757
 36758
 36759
 36760
 36761
 36762
 36763
 36764
 36765
 36766
 36767
 36768
 36769
 36770
 36771
 36772
 36773
 36774
 36775
 36776
 36777
 36778
 36779
 36780
 36781
 36782
 36783
 36784
 36785
 36786
 36787
 36788
 36789
 36790
 36791
 36792
 36793
 36794
 36795
 36796
 36797
 36798
 36799
 36800
 36801
 36802
 36803
 36804
 36805
 36806
 36807
 36808
 36809
 36810
 36811
 36812
 36813
 36814
 36815
 36816
 36817
 36818
 36819
 36820
 36821
 36822
 36823
 36824
 36825
 36826
 36827
 36828
 36829
 36830
 36831
 36832
 36833
 36834
 36835
 36836
 36837
 36838
 36839
 36840
 36841
 36842
 36843
 36844
 36845
 36846
 36847
 36848
 36849
 36850
 36851
 36852
 36853
 36854
 36855
 36856
 36857
 36858
 36859
 36860
 36861
 36862
 36863
 36864
 36865
 36866
 36867
 36868
 36869
 36870
 36871
 36872
 36873
 36874
 36875
 36876
 36877
 36878
 36879
 36880
 36881
 36882
 36883
 36884
 36885
 36886
 36887
 36888
 36889
 36890
 36891
 36892
 36893
 36894
 36895
 36896
 36897
 36898
 36899
 36900
 36901
 36902
 36903
 36904
 36905
 36906
 36907
 36908
 36909
 36910
 36911
 36912
 36913
 36914
 36915
 36916
 36917
 36918
 36919
 36920
 36921
 36922
 36923
 36924
 36925
 36926
 36927
 36928
 36929
 36930
 36931
 36932
 36933
 36934
 36935
 36936
 36937
 36938
 36939
 36940
 36941
 36942
 36943
 36944
 36945
 36946
 36947
 36948
 36949
 36950
 36951
 36952
 36953
 36954
 36955
 36956
 36957
 36958
 36959
 36960
 36961
 36962
 36963
 36964
 36965
 36966
 36967
 36968
 36969
 36970
 36971
 36972
 36973
 36974
 36975
 36976
 36977
 36978
 36979
 36980
 36981
 36982
 36983
 36984
 36985
 36986
 36987
 36988
 36989
 36990
 36991
 36992
 36993
 36994
 36995
 36996
 36997
 36998
 36999
 37000
 37001
 37002
 37003
 37004
 37005
 37006
 37007
 37008
 37009
 37010
 37011
 37012
 37013
 37014
 37015
 37016
 37017
 37018
 37019
 37020
 37021
 37022
 37023
 37024
 37025
 37026
 37027
 37028
 37029
 37030
 37031
 37032
 37033
 37034
 37035
 37036
 37037
 37038
 37039
 37040
 37041
 37042
 37043
 37044
 37045
 37046
 37047
 37048
 37049
 37050
 37051
 37052
 37053
 37054
 37055
 37056
 37057
 37058
 37059
 37060
 37061
 37062
 37063
 37064
 37065
 37066
 37067
 37068
 37069
 37070
 37071
 37072
 37073
 37074
 37075
 37076
 37077
 37078
 37079
 37080
 37081
 37082
 37083
 37084
 37085
 37086
 37087
 37088
 37089
 37090
 37091
 37092
 37093
 37094
 37095
 37096
 37097
 37098
 37099
 37100
 37101
 37102
 37103
 37104
 37105
 37106
 37107
 37108
 37109
 37110
 37111
 37112
 37113
 37114
 37115
 37116
 37117
 37118
 37119
 37120
 37121
 37122
 37123
 37124
 37125
 37126
 37127
 37128
 37129
 37130
 37131
 37132
 37133
 37134
 37135
 37136
 37137
 37138
 37139
 37140
 37141
 37142
 37143
 37144
 37145
 37146
 37147
 37148
 37149
 37150
 37151
 37152
 37153
 37154
 37155
 37156
 37157
 37158
 37159
 37160
 37161
 37162
 37163
 37164
 37165
 37166
 37167
 37168
 37169
 37170
 37171
 37172
 37173
 37174
 37175
 37176
 37177
 37178
 37179
 37180
 37181
 37182
 37183
 37184
 37185
 37186
 37187
 37188
 37189
 37190
 37191
 37192
 37193
 37194
 37195
 37196
 37197
 37198
 37199
 37200
 37201
 37202
 37203
 37204
 37205
 37206
 37207
 37208
 37209
 37210
 37211
 37212
 37213
 37214
 37215
 37216
 37217
 37218
 37219
 37220
 37221
 37222
 37223
 37224
 37225
 37226
 37227
 37228
 37229
 37230
 37231
 37232
 37233
 37234
 37235
 37236
 37237
 37238
 37239
 37240
 37241
 37242
 37243
 37244
 37245
 37246
 37247
 37248
 37249
 37250
 37251
 37252
 37253
 37254
 37255
 37256
 37257
 37258
 37259
 37260
 37261
 37262
 37263
 37264
 37265
 37266
 37267
 37268
 37269
 37270
 37271
 37272
 37273
 37274
 37275
 37276
 37277
 37278
 37279
 37280
 37281
 37282
 37283
 37284
 37285
 37286
 37287
 37288
 37289
 37290
 37291
 37292
 37293
 37294
 37295
 37296
 37297
 37298
 37299
 37300
 37301
 37302
 37303
 37304
 37305
 37306
 37307
 37308
 37309
 37310
 37311
 37312
 37313
 37314
 37315
 37316
 37317
 37318
 37319
 37320
 37321
 37322
 37323
 37324
 37325
 37326
 37327
 37328
 37329
 37330
 37331
 37332
 37333
 37334
 37335
 37336
 37337
 37338
 37339
 37340
 37341
 37342
 37343
 37344
 37345
 37346
 37347
 37348
 37349
 37350
 37351
 37352
 37353
 37354
 37355
 37356
 37357
 37358
 37359
 37360
 37361
 37362
 37363
 37364
 37365
 37366
 37367
 37368
 37369
 37370
 37371
 37372
 37373
 37374
 37375
 37376
 37377
 37378
 37379
 37380
 37381
 37382
 37383
 37384
 37385
 37386
 37387
 37388
 37389
 37390
 37391
 37392
 37393
 37394
 37395
 37396
 37397
 37398
 37399
 37400
 37401
 37402
 37403
 37404
 37405
 37406
 37407
 37408
 37409
 37410
 37411
 37412
 37413
 37414
 37415
 37416
 37417
 37418
 37419
 37420
 37421
 37422
 37423
 37424
 37425
 37426
 37427
 37428
 37429
 37430
 37431
 37432
 37433
 37434
 37435
 37436
 37437
 37438
 37439
 37440
 37441
 37442
 37443
 37444
 37445
 37446
 37447
 37448
 37449
 37450
 37451
 37452
 37453
 37454
 37455
 37456
 37457
 37458
 37459
 37460
 37461
 37462
 37463
 37464
 37465
 37466
 37467
 37468
 37469
 37470
 37471
 37472
 37473
 37474
 37475
 37476
 37477
 37478
 37479
 37480
 37481
 37482
 37483
 37484
 37485
 37486
 37487
 37488
 37489
 37490
 37491
 37492
 37493
 37494
 37495
 37496
 37497
 37498
 37499
 37500
 37501
 37502
 37503
 37504
 37505
 37506
 37507
 37508
 37509
 37510
 37511
 37512
 37513
 37514
 37515
 37516
 37517
 37518
 37519
 37520
 37521
 37522
 37523
 37524
 37525
 37526
 37527
 37528
 37529
 37530
 37531
 37532
 37533
 37534
 37535
 37536
 37537
 37538
 37539
 37540
 37541
 37542
 37543
 37544
 37545
 37546
 37547
 37548
 37549
 37550
 37551
 37552
 37553
 37554
 37555
 37556
 37557
 37558
 37559
 37560
 37561
 37562
 37563
 37564
 37565
 37566
 37567
 37568
 37569
 37570
 37571
 37572
 37573
 37574
 37575
 37576
 37577
 37578
 37579
 37580
 37581
 37582
 37583
 37584
 37585
 37586
 37587
 37588
 37589
 37590
 37591
 37592
 37593
 37594
 37595
 37596
 37597
 37598
 37599
 37600
 37601
 37602
 37603
 37604
 37605
 37606
 37607
 37608
 37609
 37610
 37611
 37612
 37613
 37614
 37615
 37616
 37617
 37618
 37619
 37620
 37621
 37622
 37623
 37624
 37625
 37626
 37627
 37628
 37629
 37630
 37631
 37632
 37633
 37634
 37635
 37636
 37637
 37638
 37639
 37640
 37641
 37642
 37643
 37644
 37645
 37646
 37647
 37648
 37649
 37650
 37651
 37652
 37653
 37654
 37655
 37656
 37657
 37658
 37659
 37660
 37661
 37662
 37663
 37664
 37665
 37666
 37667
 37668
 37669
 37670
 37671
 37672
 37673
 37674
 37675
 37676
 37677
 37678
 37679
 37680
 37681
 37682
 37683
 37684
 37685
 37686
 37687
 37688
 37689
 37690
 37691
 37692
 37693
 37694
 37695
 37696
 37697
 37698
 37699
 37700
 37701
 37702
 37703
 37704
 37705
 37706
 37707
 37708
 37709
 37710
 37711
 37712
 37713
 37714
 37715
 37716
 37717
 37718
 37719
 37720
 37721
 37722
 37723
 37724
 37725
 37726
 37727
 37728
 37729
 37730
 37731
 37732
 37733
 37734
 37735
 37736
 37737
 37738
 37739
 37740
 37741
 37742
 37743
 37744
 37745
 37746
 37747
 37748
 37749
 37750
 37751
 37752
 37753
 37754
 37755
 37756
 37757
 37758
 37759
 37760
 37761
 37762
 37763
 37764
 37765
 37766
 37767
 37768
 37769
 37770
 37771
 37772
 37773
 37774
 37775
 37776
 37777
 37778
 37779
 37780
 37781
 37782
 37783
 37784
 37785
 37786
 37787
 37788
 37789
 37790
 37791
 37792
 37793
 37794
 37795
 37796
 37797
 37798
 37799
 37800
 37801
 37802
 37803
 37804
 37805
 37806
 37807
 37808
 37809
 37810
 37811
 37812
 37813
 37814
 37815
 37816
 37817
 37818
 37819
 37820
 37821
 37822
 37823
 37824
 37825
 37826
 37827
 37828
 37829
 37830
 37831
 37832
 37833
 37834
 37835
 37836
 37837
 37838
 37839
 37840
 37841
 37842
 37843
 37844
 37845
 37846
 37847
 37848
 37849
 37850
 37851
 37852
 37853
 37854
 37855
 37856
 37857
 37858
 37859
 37860
 37861
 37862
 37863
 37864
 37865
 37866
 37867
 37868
 37869
 37870
 37871
 37872
 37873
 37874
 37875
 37876
 37877
 37878
 37879
 37880
 37881
 37882
 37883
 37884
 37885
 37886
 37887
 37888
 37889
 37890
 37891
 37892
 37893
 37894
 37895
 37896
 37897
 37898
 37899
 37900
 37901
 37902
 37903
 37904
 37905
 37906
 37907
 37908
 37909
 37910
 37911
 37912
 37913
 37914
 37915
 37916
 37917
 37918
 37919
 37920
 37921
 37922
 37923
 37924
 37925
 37926
 37927
 37928
 37929
 37930
 37931
 37932
 37933
 37934
 37935
 37936
 37937
 37938
 37939
 37940
 37941
 37942
 37943
 37944
 37945
 37946
 37947
 37948
 37949
 37950
 37951
 37952
 37953
 37954
 37955
 37956
 37957
 37958
 37959
 37960
 37961
 37962
 37963
 37964
 37965
 37966
 37967
 37968
 37969
 37970
 37971
 37972
 37973
 37974
 37975
 37976
 37977
 37978
 37979
 37980
 37981
 37982
 37983
 37984
 37985
 37986
 37987
 37988
 37989
 37990
 37991
 37992
 37993
 37994
 37995
 37996
 37997
 37998
 37999
 38000
 38001
 38002
 38003
 38004
 38005
 38006
 38007
 38008
 38009
 38010
 38011
 38012
 38013
 38014
 38015
 38016
 38017
 38018
 38019
 38020
 38021
 38022
 38023
 38024
 38025
 38026
 38027
 38028
 38029
 38030
 38031
 38032
 38033
 38034
 38035
 38036
 38037
 38038
 38039
 38040
 38041
 38042
 38043
 38044
 38045
 38046
 38047
 38048
 38049
 38050
 38051
 38052
 38053
 38054
 38055
 38056
 38057
 38058
 38059
 38060
 38061
 38062
 38063
 38064
 38065
 38066
 38067
 38068
 38069
 38070
 38071
 38072
 38073
 38074
 38075
 38076
 38077
 38078
 38079
 38080
 38081
 38082
 38083
 38084
 38085
 38086
 38087
 38088
 38089
 38090
 38091
 38092
 38093
 38094
 38095
 38096
 38097
 38098
 38099
 38100
 38101
 38102
 38103
 38104
 38105
 38106
 38107
 38108
 38109
 38110
 38111
 38112
 38113
 38114
 38115
 38116
 38117
 38118
 38119
 38120
 38121
 38122
 38123
 38124
 38125
 38126
 38127
 38128
 38129
 38130
 38131
 38132
 38133
 38134
 38135
 38136
 38137
 38138
 38139
 38140
 38141
 38142
 38143
 38144
 38145
 38146
 38147
 38148
 38149
 38150
 38151
 38152
 38153
 38154
 38155
 38156
 38157
 38158
 38159
 38160
 38161
 38162
 38163
 38164
 38165
 38166
 38167
 38168
 38169
 38170
 38171
 38172
 38173
 38174
 38175
 38176
 38177
 38178
 38179
 38180
 38181
 38182
 38183
 38184
 38185
 38186
 38187
 38188
 38189
 38190
 38191
 38192
 38193
 38194
 38195
 38196
 38197
 38198
 38199
 38200
 38201
 38202
 38203
 38204
 38205
 38206
 38207
 38208
 38209
 38210
 38211
 38212
 38213
 38214
 38215
 38216
 38217
 38218
 38219
 38220
 38221
 38222
 38223
 38224
 38225
 38226
 38227
 38228
 38229
 38230
 38231
 38232
 38233
 38234
 38235
 38236
 38237
 38238
 38239
 38240
 38241
 38242
 38243
 38244
 38245
 38246
 38247
 38248
 38249
 38250
 38251
 38252
 38253
 38254
 38255
 38256
 38257
 38258
 38259
 38260
 38261
 38262
 38263
 38264
 38265
 38266
 38267
 38268
 38269
 38270
 38271
 38272
 38273
 38274
 38275
 38276
 38277
 38278
 38279
 38280
 38281
 38282
 38283
 38284
 38285
 38286
 38287
 38288
 38289
 38290
 38291
 38292
 38293
 38294
 38295
 38296
 38297
 38298
 38299
 38300
 38301
 38302
 38303
 38304
 38305
 38306
 38307
 38308
 38309
 38310
 38311
 38312
 38313
 38314
 38315
 38316
 38317
 38318
 38319
 38320
 38321
 38322
 38323
 38324
 38325
 38326
 38327
 38328
 38329
 38330
 38331
 38332
 38333
 38334
 38335
 38336
 38337
 38338
 38339
 38340
 38341
 38342
 38343
 38344
 38345
 38346
 38347
 38348
 38349
 38350
 38351
 38352
 38353
 38354
 38355
 38356
 38357
 38358
 38359
 38360
 38361
 38362
 38363
 38364
 38365
 38366
 38367
 38368
 38369
 38370
 38371
 38372
 38373
 38374
 38375
 38376
 38377
 38378
 38379
 38380
 38381
 38382
 38383
 38384
 38385
 38386
 38387
 38388
 38389
 38390
 38391
 38392
 38393
 38394
 38395
 38396
 38397
 38398
 38399
 38400
 38401
 38402
 38403
 38404
 38405
 38406
 38407
 38408
 38409
 38410
 38411
 38412
 38413
 38414
 38415
 38416
 38417
 38418
 38419
 38420
 38421
 38422
 38423
 38424
 38425
 38426
 38427
 38428
 38429
 38430
 38431
 38432
 38433
 38434
 38435
 38436
 38437
 38438
 38439
 38440
 38441
 38442
 38443
 38444
 38445
 38446
 38447
 38448
 38449
 38450
 38451
 38452
 38453
 38454
 38455
 38456
 38457
 38458
 38459
 38460
 38461
 38462
 38463
 38464
 38465
 38466
 38467
 38468
 38469
 38470
 38471
 38472
 38473
 38474
 38475
 38476
 38477
 38478
 38479
 38480
 38481
 38482
 38483
 38484
 38485
 38486
 38487
 38488
 38489
 38490
 38491
 38492
 38493
 38494
 38495
 38496
 38497
 38498
 38499
 38500
 38501
 38502
 38503
 38504
 38505
 38506
 38507
 38508
 38509
 38510
 38511
 38512
 38513
 38514
 38515
 38516
 38517
 38518
 38519
 38520
 38521
 38522
 38523
 38524
 38525
 38526
 38527
 38528
 38529
 38530
 38531
 38532
 38533
 38534
 38535
 38536
 38537
 38538
 38539
 38540
 38541
 38542
 38543
 38544
 38545
 38546
 38547
 38548
 38549
 38550
 38551
 38552
 38553
 38554
 38555
 38556
 38557
 38558
 38559
 38560
 38561
 38562
 38563
 38564
 38565
 38566
 38567
 38568
 38569
 38570
 38571
 38572
 38573
 38574
 38575
 38576
 38577
 38578
 38579
 38580
 38581
 38582
 38583
 38584
 38585
 38586
 38587
 38588
 38589
 38590
 38591
 38592
 38593
 38594
 38595
 38596
 38597
 38598
 38599
 38600
 38601
 38602
 38603
 38604
 38605
 38606
 38607
 38608
 38609
 38610
 38611
 38612
 38613
 38614
 38615
 38616
 38617
 38618
 38619
 38620
 38621
 38622
 38623
 38624
 38625
 38626
 38627
 38628
 38629
 38630
 38631
 38632
 38633
 38634
 38635
 38636
 38637
 38638
 38639
 38640
 38641
 38642
 38643
 38644
 38645
 38646
 38647
 38648
 38649
 38650
 38651
 38652
 38653
 38654
 38655
 38656
 38657
 38658
 38659
 38660
 38661
 38662
 38663
 38664
 38665
 38666
 38667
 38668
 38669
 38670
 38671
 38672
 38673
 38674
 38675
 38676
 38677
 38678
 38679
 38680
 38681
 38682
 38683
 38684
 38685
 38686
 38687
 38688
 38689
 38690
 38691
 38692
 38693
 38694
 38695
 38696
 38697
 38698
 38699
 38700
 38701
 38702
 38703
 38704
 38705
 38706
 38707
 38708
 38709
 38710
 38711
 38712
 38713
 38714
 38715
 38716
 38717
 38718
 38719
 38720
 38721
 38722
 38723
 38724
 38725
 38726
 38727
 38728
 38729
 38730
 38731
 38732
 38733
 38734
 38735
 38736
 38737
 38738
 38739
 38740
 38741
 38742
 38743
 38744
 38745
 38746
 38747
 38748
 38749
 38750
 38751
 38752
 38753
 38754
 38755
 38756
 38757
 38758
 38759
 38760
 38761
 38762
 38763
 38764
 38765
 38766
 38767
 38768
 38769
 38770
 38771
 38772
 38773
 38774
 38775
 38776
 38777
 38778
 38779
 38780
 38781
 38782
 38783
 38784
 38785
 38786
 38787
 38788
 38789
 38790
 38791
 38792
 38793
 38794
 38795
 38796
 38797
 38798
 38799
 38800
 38801
 38802
 38803
 38804
 38805
 38806
 38807
 38808
 38809
 38810
 38811
 38812
 38813
 38814
 38815
 38816
 38817
 38818
 38819
 38820
 38821
 38822
 38823
 38824
 38825
 38826
 38827
 38828
 38829
 38830
 38831
 38832
 38833
 38834
 38835
 38836
 38837
 38838
 38839
 38840
 38841
 38842
 38843
 38844
 38845
 38846
 38847
 38848
 38849
 38850
 38851
 38852
 38853
 38854
 38855
 38856
 38857
 38858
 38859
 38860
 38861
 38862
 38863
 38864
 38865
 38866
 38867
 38868
 38869
 38870
 38871
 38872
 38873
 38874
 38875
 38876
 38877
 38878
 38879
 38880
 38881
 38882
 38883
 38884
 38885
 38886
 38887
 38888
 38889
 38890
 38891
 38892
 38893
 38894
 38895
 38896
 38897
 38898
 38899
 38900
 38901
 38902
 38903
 38904
 38905
 38906
 38907
 38908
 38909
 38910
 38911
 38912
 38913
 38914
 38915
 38916
 38917
 38918
 38919
 38920
 38921
 38922
 38923
 38924
 38925
 38926
 38927
 38928
 38929
 38930
 38931
 38932
 38933
 38934
 38935
 38936
 38937
 38938
 38939
 38940
 38941
 38942
 38943
 38944
 38945
 38946
 38947
 38948
 38949
 38950
 38951
 38952
 38953
 38954
 38955
 38956
 38957
 38958
 38959
 38960
 38961
 38962
 38963
 38964
 38965
 38966
 38967
 38968
 38969
 38970
 38971
 38972
 38973
 38974
 38975
 38976
 38977
 38978
 38979
 38980
 38981
 38982
 38983
 38984
 38985
 38986
 38987
 38988
 38989
 38990
 38991
 38992
 38993
 38994
 38995
 38996
 38997
 38998
 38999
 39000
 39001
 39002
 39003
 39004
 39005
 39006
 39007
 39008
 39009
 39010
 39011
 39012
 39013
 39014
 39015
 39016
 39017
 39018
 39019
 39020
 39021
 39022
 39023
 39024
 39025
 39026
 39027
 39028
 39029
 39030
 39031
 39032
 39033
 39034
 39035
 39036
 39037
 39038
 39039
 39040
 39041
 39042
 39043
 39044
 39045
 39046
 39047
 39048
 39049
 39050
 39051
 39052
 39053
 39054
 39055
 39056
 39057
 39058
 39059
 39060
 39061
 39062
 39063
 39064
 39065
 39066
 39067
 39068
 39069
 39070
 39071
 39072
 39073
 39074
 39075
 39076
 39077
 39078
 39079
 39080
 39081
 39082
 39083
 39084
 39085
 39086
 39087
 39088
 39089
 39090
 39091
 39092
 39093
 39094
 39095
 39096
 39097
 39098
 39099
 39100
 39101
 39102
 39103
 39104
 39105
 39106
 39107
 39108
 39109
 39110
 39111
 39112
 39113
 39114
 39115
 39116
 39117
 39118
 39119
 39120
 39121
 39122
 39123
 39124
 39125
 39126
 39127
 39128
 39129
 39130
 39131
 39132
 39133
 39134
 39135
 39136
 39137
 39138
 39139
 39140
 39141
 39142
 39143
 39144
 39145
 39146
 39147
 39148
 39149
 39150
 39151
 39152
 39153
 39154
 39155
 39156
 39157
 39158
 39159
 39160
 39161
 39162
 39163
 39164
 39165
 39166
 39167
 39168
 39169
 39170
 39171
 39172
 39173
 39174
 39175
 39176
 39177
 39178
 39179
 39180
 39181
 39182
 39183
 39184
 39185
 39186
 39187
 39188
 39189
 39190
 39191
 39192
 39193
 39194
 39195
 39196
 39197
 39198
 39199
 39200
 39201
 39202
 39203
 39204
 39205
 39206
 39207
 39208
 39209
 39210
 39211
 39212
 39213
 39214
 39215
 39216
 39217
 39218
 39219
 39220
 39221
 39222
 39223
 39224
 39225
 39226
 39227
 39228
 39229
 39230
 39231
 39232
 39233
 39234
 39235
 39236
 39237
 39238
 39239
 39240
 39241
 39242
 39243
 39244
 39245
 39246
 39247
 39248
 39249
 39250
 39251
 39252
 39253
 39254
 39255
 39256
 39257
 39258
 39259
 39260
 39261
 39262
 39263
 39264
 39265
 39266
 39267
 39268
 39269
 39270
 39271
 39272
 39273
 39274
 39275
 39276
 39277
 39278
 39279
 39280
 39281
 39282
 39283
 39284
 39285
 39286
 39287
 39288
 39289
 39290
 39291
 39292
 39293
 39294
 39295
 39296
 39297
 39298
 39299
 39300
 39301
 39302
 39303
 39304
 39305
 39306
 39307
 39308
 39309
 39310
 39311
 39312
 39313
 39314
 39315
 39316
 39317
 39318
 39319
 39320
 39321
 39322
 39323
 39324
 39325
 39326
 39327
 39328
 39329
 39330
 39331
 39332
 39333
 39334
 39335
 39336
 39337
 39338
 39339
 39340
 39341
 39342
 39343
 39344
 39345
 39346
 39347
 39348
 39349
 39350
 39351
 39352
 39353
 39354
 39355
 39356
 39357
 39358
 39359
 39360
 39361
 39362
 39363
 39364
 39365
 39366
 39367
 39368
 39369
 39370
 39371
 39372
 39373
 39374
 39375
 39376
 39377
 39378
 39379
 39380
 39381
 39382
 39383
 39384
 39385
 39386
 39387
 39388
 39389
 39390
 39391
 39392
 39393
 39394
 39395
 39396
 39397
 39398
 39399
 39400
 39401
 39402
 39403
 39404
 39405
 39406
 39407
 39408
 39409
 39410
 39411
 39412
 39413
 39414
 39415
 39416
 39417
 39418
 39419
 39420
 39421
 39422
 39423
 39424
 39425
 39426
 39427
 39428
 39429
 39430
 39431
 39432
 39433
 39434
 39435
 39436
 39437
 39438
 39439
 39440
 39441
 39442
 39443
 39444
 39445
 39446
 39447
 39448
 39449
 39450
 39451
 39452
 39453
 39454
 39455
 39456
 39457
 39458
 39459
 39460
 39461
 39462
 39463
 39464
 39465
 39466
 39467
 39468
 39469
 39470
 39471
 39472
 39473
 39474
 39475
 39476
 39477
 39478
 39479
 39480
 39481
 39482
 39483
 39484
 39485
 39486
 39487
 39488
 39489
 39490
 39491
 39492
 39493
 39494
 39495
 39496
 39497
 39498
 39499
 39500
 39501
 39502
 39503
 39504
 39505
 39506
 39507
 39508
 39509
 39510
 39511
 39512
 39513
 39514
 39515
 39516
 39517
 39518
 39519
 39520
 39521
 39522
 39523
 39524
 39525
 39526
 39527
 39528
 39529
 39530
 39531
 39532
 39533
 39534
 39535
 39536
 39537
 39538
 39539
 39540
 39541
 39542
 39543
 39544
 39545
 39546
 39547
 39548
 39549
 39550
 39551
 39552
 39553
 39554
 39555
 39556
 39557
 39558
 39559
 39560
 39561
 39562
 39563
 39564
 39565
 39566
 39567
 39568
 39569
 39570
 39571
 39572
 39573
 39574
 39575
 39576
 39577
 39578
 39579
 39580
 39581
 39582
 39583
 39584
 39585
 39586
 39587
 39588
 39589
 39590
 39591
 39592
 39593
 39594
 39595
 39596
 39597
 39598
 39599
 39600
 39601
 39602
 39603
 39604
 39605
 39606
 39607
 39608
 39609
 39610
 39611
 39612
 39613
 39614
 39615
 39616
 39617
 39618
 39619
 39620
 39621
 39622
 39623
 39624
 39625
 39626
 39627
 39628
 39629
 39630
 39631
 39632
 39633
 39634
 39635
 39636
 39637
 39638
 39639
 39640
 39641
 39642
 39643
 39644
 39645
 39646
 39647
 39648
 39649
 39650
 39651
 39652
 39653
 39654
 39655
 39656
 39657
 39658
 39659
 39660
 39661
 39662
 39663
 39664
 39665
 39666
 39667
 39668
 39669
 39670
 39671
 39672
 39673
 39674
 39675
 39676
 39677
 39678
 39679
 39680
 39681
 39682
 39683
 39684
 39685
 39686
 39687
 39688
 39689
 39690
 39691
 39692
 39693
 39694
 39695
 39696
 39697
 39698
 39699
 39700
 39701
 39702
 39703
 39704
 39705
 39706
 39707
 39708
 39709
 39710
 39711
 39712
 39713
 39714
 39715
 39716
 39717
 39718
 39719
 39720
 39721
 39722
 39723
 39724
 39725
 39726
 39727
 39728
 39729
 39730
 39731
 39732
 39733
 39734
 39735
 39736
 39737
 39738
 39739
 39740
 39741
 39742
 39743
 39744
 39745
 39746
 39747
 39748
 39749
 39750
 39751
 39752
 39753
 39754
 39755
 39756
 39757
 39758
 39759
 39760
 39761
 39762
 39763
 39764
 39765
 39766
 39767
 39768
 39769
 39770
 39771
 39772
 39773
 39774
 39775
 39776
 39777
 39778
 39779
 39780
 39781
 39782
 39783
 39784
 39785
 39786
 39787
 39788
 39789
 39790
 39791
 39792
 39793
 39794
 39795
 39796
 39797
 39798
 39799
 39800
 39801
 39802
 39803
 39804
 39805
 39806
 39807
 39808
 39809
 39810
 39811
 39812
 39813
 39814
 39815
 39816
 39817
 39818
 39819
 39820
 39821
 39822
 39823
 39824
 39825
 39826
 39827
 39828
 39829
 39830
 39831
 39832
 39833
 39834
 39835
 39836
 39837
 39838
 39839
 39840
 39841
 39842
 39843
 39844
 39845
 39846
 39847
 39848
 39849
 39850
 39851
 39852
 39853
 39854
 39855
 39856
 39857
 39858
 39859
 39860
 39861
 39862
 39863
 39864
 39865
 39866
 39867
 39868
 39869
 39870
 39871
 39872
 39873
 39874
 39875
 39876
 39877
 39878
 39879
 39880
 39881
 39882
 39883
 39884
 39885
 39886
 39887
 39888
 39889
 39890
 39891
 39892
 39893
 39894
 39895
 39896
 39897
 39898
 39899
 39900
 39901
 39902
 39903
 39904
 39905
 39906
 39907
 39908
 39909
 39910
 39911
 39912
 39913
 39914
 39915
 39916
 39917
 39918
 39919
 39920
 39921
 39922
 39923
 39924
 39925
 39926
 39927
 39928
 39929
 39930
 39931
 39932
 39933
 39934
 39935
 39936
 39937
 39938
 39939
 39940
 39941
 39942
 39943
 39944
 39945
 39946
 39947
 39948
 39949
 39950
 39951
 39952
 39953
 39954
 39955
 39956
 39957
 39958
 39959
 39960
 39961
 39962
 39963
 39964
 39965
 39966
 39967
 39968
 39969
 39970
 39971
 39972
 39973
 39974
 39975
 39976
 39977
 39978
 39979
 39980
 39981
 39982
 39983
 39984
 39985
 39986
 39987
 39988
 39989
 39990
 39991
 39992
 39993
 39994
 39995
 39996
 39997
 39998
 39999
 40000
 40001
 40002
 40003
 40004
 40005
 40006
 40007
 40008
 40009
 40010
 40011
 40012
 40013
 40014
 40015
 40016
 40017
 40018
 40019
 40020
 40021
 40022
 40023
 40024
 40025
 40026
 40027
 40028
 40029
 40030
 40031
 40032
 40033
 40034
 40035
 40036
 40037
 40038
 40039
 40040
 40041
 40042
 40043
 40044
 40045
 40046
 40047
 40048
 40049
 40050
 40051
 40052
 40053
 40054
 40055
 40056
 40057
 40058
 40059
 40060
 40061
 40062
 40063
 40064
 40065
 40066
 40067
 40068
 40069
 40070
 40071
 40072
 40073
 40074
 40075
 40076
 40077
 40078
 40079
 40080
 40081
 40082
 40083
 40084
 40085
 40086
 40087
 40088
 40089
 40090
 40091
 40092
 40093
 40094
 40095
 40096
 40097
 40098
 40099
 40100
 40101
 40102
 40103
 40104
 40105
 40106
 40107
 40108
 40109
 40110
 40111
 40112
 40113
 40114
 40115
 40116
 40117
 40118
 40119
 40120
 40121
 40122
 40123
 40124
 40125
 40126
 40127
 40128
 40129
 40130
 40131
 40132
 40133
 40134
 40135
 40136
 40137
 40138
 40139
 40140
 40141
 40142
 40143
 40144
 40145
 40146
 40147
 40148
 40149
 40150
 40151
 40152
 40153
 40154
 40155
 40156
 40157
 40158
 40159
 40160
 40161
 40162
 40163
 40164
 40165
 40166
 40167
 40168
 40169
 40170
 40171
 40172
 40173
 40174
 40175
 40176
 40177
 40178
 40179
 40180
 40181
 40182
 40183
 40184
 40185
 40186
 40187
 40188
 40189
 40190
 40191
 40192
 40193
 40194
 40195
 40196
 40197
 40198
 40199
 40200
 40201
 40202
 40203
 40204
 40205
 40206
 40207
 40208
 40209
 40210
 40211
 40212
 40213
 40214
 40215
 40216
 40217
 40218
 40219
 40220
 40221
 40222
 40223
 40224
 40225
 40226
 40227
 40228
 40229
 40230
 40231
 40232
 40233
 40234
 40235
 40236
 40237
 40238
 40239
 40240
 40241
 40242
 40243
 40244
 40245
 40246
 40247
 40248
 40249
 40250
 40251
 40252
 40253
 40254
 40255
 40256
 40257
 40258
 40259
 40260
 40261
 40262
 40263
 40264
 40265
 40266
 40267
 40268
 40269
 40270
 40271
 40272
 40273
 40274
 40275
 40276
 40277
 40278
 40279
 40280
 40281
 40282
 40283
 40284
 40285
 40286
 40287
 40288
 40289
 40290
 40291
 40292
 40293
 40294
 40295
 40296
 40297
 40298
 40299
 40300
 40301
 40302
 40303
 40304
 40305
 40306
 40307
 40308
 40309
 40310
 40311
 40312
 40313
 40314
 40315
 40316
 40317
 40318
 40319
 40320
 40321
 40322
 40323
 40324
 40325
 40326
 40327
 40328
 40329
 40330
 40331
 40332
 40333
 40334
 40335
 40336
 40337
 40338
 40339
 40340
 40341
 40342
 40343
 40344
 40345
 40346
 40347
 40348
 40349
 40350
 40351
 40352
 40353
 40354
 40355
 40356
 40357
 40358
 40359
 40360
 40361
 40362
 40363
 40364
 40365
 40366
 40367
 40368
 40369
 40370
 40371
 40372
 40373
 40374
 40375
 40376
 40377
 40378
 40379
 40380
 40381
 40382
 40383
 40384
 40385
 40386
 40387
 40388
 40389
 40390
 40391
 40392
 40393
 40394
 40395
 40396
 40397
 40398
 40399
 40400
 40401
 40402
 40403
 40404
 40405
 40406
 40407
 40408
 40409
 40410
 40411
 40412
 40413
 40414
 40415
 40416
 40417
 40418
 40419
 40420
 40421
 40422
 40423
 40424
 40425
 40426
 40427
 40428
 40429
 40430
 40431
 40432
 40433
 40434
 40435
 40436
 40437
 40438
 40439
 40440
 40441
 40442
 40443
 40444
 40445
 40446
 40447
 40448
 40449
 40450
 40451
 40452
 40453
 40454
 40455
 40456
 40457
 40458
 40459
 40460
 40461
 40462
 40463
 40464
 40465
 40466
 40467
 40468
 40469
 40470
 40471
 40472
 40473
 40474
 40475
 40476
 40477
 40478
 40479
 40480
 40481
 40482
 40483
 40484
 40485
 40486
 40487
 40488
 40489
 40490
 40491
 40492
 40493
 40494
 40495
 40496
 40497
 40498
 40499
 40500
 40501
 40502
 40503
 40504
 40505
 40506
 40507
 40508
 40509
 40510
 40511
 40512
 40513
 40514
 40515
 40516
 40517
 40518
 40519
 40520
 40521
 40522
 40523
 40524
 40525
 40526
 40527
 40528
 40529
 40530
 40531
 40532
 40533
 40534
 40535
 40536
 40537
 40538
 40539
 40540
 40541
 40542
 40543
 40544
 40545
 40546
 40547
 40548
 40549
 40550
 40551
 40552
 40553
 40554
 40555
 40556
 40557
 40558
 40559
 40560
 40561
 40562
 40563
 40564
 40565
 40566
 40567
 40568
 40569
 40570
 40571
 40572
 40573
 40574
 40575
 40576
 40577
 40578
 40579
 40580
 40581
 40582
 40583
 40584
 40585
 40586
 40587
 40588
 40589
 40590
 40591
 40592
 40593
 40594
 40595
 40596
 40597
 40598
 40599
 40600
 40601
 40602
 40603
 40604
 40605
 40606
 40607
 40608
 40609
 40610
 40611
 40612
 40613
 40614
 40615
 40616
 40617
 40618
 40619
 40620
 40621
 40622
 40623
 40624
 40625
 40626
 40627
 40628
 40629
 40630
 40631
 40632
 40633
 40634
 40635
 40636
 40637
 40638
 40639
 40640
 40641
 40642
 40643
 40644
 40645
 40646
 40647
 40648
 40649
 40650
 40651
 40652
 40653
 40654
 40655
 40656
 40657
 40658
 40659
 40660
 40661
 40662
 40663
 40664
 40665
 40666
 40667
 40668
 40669
 40670
 40671
 40672
 40673
 40674
 40675
 40676
 40677
 40678
 40679
 40680
 40681
 40682
 40683
 40684
 40685
 40686
 40687
 40688
 40689
 40690
 40691
 40692
 40693
 40694
 40695
 40696
 40697
 40698
 40699
 40700
 40701
 40702
 40703
 40704
 40705
 40706
 40707
 40708
 40709
 40710
 40711
 40712
 40713
 40714
 40715
 40716
 40717
 40718
 40719
 40720
 40721
 40722
 40723
 40724
 40725
 40726
 40727
 40728
 40729
 40730
 40731
 40732
 40733
 40734
 40735
 40736
 40737
 40738
 40739
 40740
 40741
 40742
 40743
 40744
 40745
 40746
 40747
 40748
 40749
 40750
 40751
 40752
 40753
 40754
 40755
 40756
 40757
 40758
 40759
 40760
 40761
 40762
 40763
 40764
 40765
 40766
 40767
 40768
 40769
 40770
 40771
 40772
 40773
 40774
 40775
 40776
 40777
 40778
 40779
 40780
 40781
 40782
 40783
 40784
 40785
 40786
 40787
 40788
 40789
 40790
 40791
 40792
 40793
 40794
 40795
 40796
 40797
 40798
 40799
 40800
 40801
 40802
 40803
 40804
 40805
 40806
 40807
 40808
 40809
 40810
 40811
 40812
 40813
 40814
 40815
 40816
 40817
 40818
 40819
 40820
 40821
 40822
 40823
 40824
 40825
 40826
 40827
 40828
 40829
 40830
 40831
 40832
 40833
 40834
 40835
 40836
 40837
 40838
 40839
 40840
 40841
 40842
 40843
 40844
 40845
 40846
 40847
 40848
 40849
 40850
 40851
 40852
 40853
 40854
 40855
 40856
 40857
 40858
 40859
 40860
 40861
 40862
 40863
 40864
 40865
 40866
 40867
 40868
 40869
 40870
 40871
 40872
 40873
 40874
 40875
 40876
 40877
 40878
 40879
 40880
 40881
 40882
 40883
 40884
 40885
 40886
 40887
 40888
 40889
 40890
 40891
 40892
 40893
 40894
 40895
 40896
 40897
 40898
 40899
 40900
 40901
 40902
 40903
 40904
 40905
 40906
 40907
 40908
 40909
 40910
 40911
 40912
 40913
 40914
 40915
 40916
 40917
 40918
 40919
 40920
 40921
 40922
 40923
 40924
 40925
 40926
 40927
 40928
 40929
 40930
 40931
 40932
 40933
 40934
 40935
 40936
 40937
 40938
 40939
 40940
 40941
 40942
 40943
 40944
 40945
 40946
 40947
 40948
 40949
 40950
 40951
 40952
 40953
 40954
 40955
 40956
 40957
 40958
 40959
 40960
 40961
 40962
 40963
 40964
 40965
 40966
 40967
 40968
 40969
 40970
 40971
 40972
 40973
 40974
 40975
 40976
 40977
 40978
 40979
 40980
 40981
 40982
 40983
 40984
 40985
 40986
 40987
 40988
 40989
 40990
 40991
 40992
 40993
 40994
 40995
 40996
 40997
 40998
 40999
 41000
 41001
 41002
 41003
 41004
 41005
 41006
 41007
 41008
 41009
 41010
 41011
 41012
 41013
 41014
 41015
 41016
 41017
 41018
 41019
 41020
 41021
 41022
 41023
 41024
 41025
 41026
 41027
 41028
 41029
 41030
 41031
 41032
 41033
 41034
 41035
 41036
 41037
 41038
 41039
 41040
 41041
 41042
 41043
 41044
 41045
 41046
 41047
 41048
 41049
 41050
 41051
 41052
 41053
 41054
 41055
 41056
 41057
 41058
 41059
 41060
 41061
 41062
 41063
 41064
 41065
 41066
 41067
 41068
 41069
 41070
 41071
 41072
 41073
 41074
 41075
 41076
 41077
 41078
 41079
 41080
 41081
 41082
 41083
 41084
 41085
 41086
 41087
 41088
 41089
 41090
 41091
 41092
 41093
 41094
 41095
 41096
 41097
 41098
 41099
 41100
 41101
 41102
 41103
 41104
 41105
 41106
 41107
 41108
 41109
 41110
 41111
 41112
 41113
 41114
 41115
 41116
 41117
 41118
 41119
 41120
 41121
 41122
 41123
 41124
 41125
 41126
 41127
 41128
 41129
 41130
 41131
 41132
 41133
 41134
 41135
 41136
 41137
 41138
 41139
 41140
 41141
 41142
 41143
 41144
 41145
 41146
 41147
 41148
 41149
 41150
 41151
 41152
 41153
 41154
 41155
 41156
 41157
 41158
 41159
 41160
 41161
 41162
 41163
 41164
 41165
 41166
 41167
 41168
 41169
 41170
 41171
 41172
 41173
 41174
 41175
 41176
 41177
 41178
 41179
 41180
 41181
 41182
 41183
 41184
 41185
 41186
 41187
 41188
 41189
 41190
 41191
 41192
 41193
 41194
 41195
 41196
 41197
 41198
 41199
 41200
 41201
 41202
 41203
 41204
 41205
 41206
 41207
 41208
 41209
 41210
 41211
 41212
 41213
 41214
 41215
 41216
 41217
 41218
 41219
 41220
 41221
 41222
 41223
 41224
 41225
 41226
 41227
 41228
 41229
 41230
 41231
 41232
 41233
 41234
 41235
 41236
 41237
 41238
 41239
 41240
 41241
 41242
 41243
 41244
 41245
 41246
 41247
 41248
 41249
 41250
 41251
 41252
 41253
 41254
 41255
 41256
 41257
 41258
 41259
 41260
 41261
 41262
 41263
 41264
 41265
 41266
 41267
 41268
 41269
 41270
 41271
 41272
 41273
 41274
 41275
 41276
 41277
 41278
 41279
 41280
 41281
 41282
 41283
 41284
 41285
 41286
 41287
 41288
 41289
 41290
 41291
 41292
 41293
 41294
 41295
 41296
 41297
 41298
 41299
 41300
 41301
 41302
 41303
 41304
 41305
 41306
 41307
 41308
 41309
 41310
 41311
 41312
 41313
 41314
 41315
 41316
 41317
 41318
 41319
 41320
 41321
 41322
 41323
 41324
 41325
 41326
 41327
 41328
 41329
 41330
 41331
 41332
 41333
 41334
 41335
 41336
 41337
 41338
 41339
 41340
 41341
 41342
 41343
 41344
 41345
 41346
 41347
 41348
 41349
 41350
 41351
 41352
 41353
 41354
 41355
 41356
 41357
 41358
 41359
 41360
 41361
 41362
 41363
 41364
 41365
 41366
 41367
 41368
 41369
 41370
 41371
 41372
 41373
 41374
 41375
 41376
 41377
 41378
 41379
 41380
 41381
 41382
 41383
 41384
 41385
 41386
 41387
 41388
 41389
 41390
 41391
 41392
 41393
 41394
 41395
 41396
 41397
 41398
 41399
 41400
 41401
 41402
 41403
 41404
 41405
 41406
 41407
 41408
 41409
 41410
 41411
 41412
 41413
 41414
 41415
 41416
 41417
 41418
 41419
 41420
 41421
 41422
 41423
 41424
 41425
 41426
 41427
 41428
 41429
 41430
 41431
 41432
 41433
 41434
 41435
 41436
 41437
 41438
 41439
 41440
 41441
 41442
 41443
 41444
 41445
 41446
 41447
 41448
 41449
 41450
 41451
 41452
 41453
 41454
 41455
 41456
 41457
 41458
 41459
 41460
 41461
 41462
 41463
 41464
 41465
 41466
 41467
 41468
 41469
 41470
 41471
 41472
 41473
 41474
 41475
 41476
 41477
 41478
 41479
 41480
 41481
 41482
 41483
 41484
 41485
 41486
 41487
 41488
 41489
 41490
 41491
 41492
 41493
 41494
 41495
 41496
 41497
 41498
 41499
 41500
 41501
 41502
 41503
 41504
 41505
 41506
 41507
 41508
 41509
 41510
 41511
 41512
 41513
 41514
 41515
 41516
 41517
 41518
 41519
 41520
 41521
 41522
 41523
 41524
 41525
 41526
 41527
 41528
 41529
 41530
 41531
 41532
 41533
 41534
 41535
 41536
 41537
 41538
 41539
 41540
 41541
 41542
 41543
 41544
 41545
 41546
 41547
 41548
 41549
 41550
 41551
 41552
 41553
 41554
 41555
 41556
 41557
 41558
 41559
 41560
 41561
 41562
 41563
 41564
 41565
 41566
 41567
 41568
 41569
 41570
 41571
 41572
 41573
 41574
 41575
 41576
 41577
 41578
 41579
 41580
 41581
 41582
 41583
 41584
 41585
 41586
 41587
 41588
 41589
 41590
 41591
 41592
 41593
 41594
 41595
 41596
 41597
 41598
 41599
 41600
 41601
 41602
 41603
 41604
 41605
 41606
 41607
 41608
 41609
 41610
 41611
 41612
 41613
 41614
 41615
 41616
 41617
 41618
 41619
 41620
 41621
 41622
 41623
 41624
 41625
 41626
 41627
 41628
 41629
 41630
 41631
 41632
 41633
 41634
 41635
 41636
 41637
 41638
 41639
 41640
 41641
 41642
 41643
 41644
 41645
 41646
 41647
 41648
 41649
 41650
 41651
 41652
 41653
 41654
 41655
 41656
 41657
 41658
 41659
 41660
 41661
 41662
 41663
 41664
 41665
 41666
 41667
 41668
 41669
 41670
 41671
 41672
 41673
 41674
 41675
 41676
 41677
 41678
 41679
 41680
 41681
 41682
 41683
 41684
 41685
 41686
 41687
 41688
 41689
 41690
 41691
 41692
 41693
 41694
 41695
 41696
 41697
 41698
 41699
 41700
 41701
 41702
 41703
 41704
 41705
 41706
 41707
 41708
 41709
 41710
 41711
 41712
 41713
 41714
 41715
 41716
 41717
 41718
 41719
 41720
 41721
 41722
 41723
 41724
 41725
 41726
 41727
 41728
 41729
 41730
 41731
 41732
 41733
 41734
 41735
 41736
 41737
 41738
 41739
 41740
 41741
 41742
 41743
 41744
 41745
 41746
 41747
 41748
 41749
 41750
 41751
 41752
 41753
 41754
 41755
 41756
 41757
 41758
 41759
 41760
 41761
 41762
 41763
 41764
 41765
 41766
 41767
 41768
 41769
 41770
 41771
 41772
 41773
 41774
 41775
 41776
 41777
 41778
 41779
 41780
 41781
 41782
 41783
 41784
 41785
 41786
 41787
 41788
 41789
 41790
 41791
 41792
 41793
 41794
 41795
 41796
 41797
 41798
 41799
 41800
 41801
 41802
 41803
 41804
 41805
 41806
 41807
 41808
 41809
 41810
 41811
 41812
 41813
 41814
 41815
 41816
 41817
 41818
 41819
 41820
 41821
 41822
 41823
 41824
 41825
 41826
 41827
 41828
 41829
 41830
 41831
 41832
 41833
 41834
 41835
 41836
 41837
 41838
 41839
 41840
 41841
 41842
 41843
 41844
 41845
 41846
 41847
 41848
 41849
 41850
 41851
 41852
 41853
 41854
 41855
 41856
 41857
 41858
 41859
 41860
 41861
 41862
 41863
 41864
 41865
 41866
 41867
 41868
 41869
 41870
 41871
 41872
 41873
 41874
 41875
 41876
 41877
 41878
 41879
 41880
 41881
 41882
 41883
 41884
 41885
 41886
 41887
 41888
 41889
 41890
 41891
 41892
 41893
 41894
 41895
 41896
 41897
 41898
 41899
 41900
 41901
 41902
 41903
 41904
 41905
 41906
 41907
 41908
 41909
 41910
 41911
 41912
 41913
 41914
 41915
 41916
 41917
 41918
 41919
 41920
 41921
 41922
 41923
 41924
 41925
 41926
 41927
 41928
 41929
 41930
 41931
 41932
 41933
 41934
 41935
 41936
 41937
 41938
 41939
 41940
 41941
 41942
 41943
 41944
 41945
 41946
 41947
 41948
 41949
 41950
 41951
 41952
 41953
 41954
 41955
 41956
 41957
 41958
 41959
 41960
 41961
 41962
 41963
 41964
 41965
 41966
 41967
 41968
 41969
 41970
 41971
 41972
 41973
 41974
 41975
 41976
 41977
 41978
 41979
 41980
 41981
 41982
 41983
 41984
 41985
 41986
 41987
 41988
 41989
 41990
 41991
 41992
 41993
 41994
 41995
 41996
 41997
 41998
 41999
 42000
 42001
 42002
 42003
 42004
 42005
 42006
 42007
 42008
 42009
 42010
 42011
 42012
 42013
 42014
 42015
 42016
 42017
 42018
 42019
 42020
 42021
 42022
 42023
 42024
 42025
 42026
 42027
 42028
 42029
 42030
 42031
 42032
 42033
 42034
 42035
 42036
 42037
 42038
 42039
 42040
 42041
 42042
 42043
 42044
 42045
 42046
 42047
 42048
 42049
 42050
 42051
 42052
 42053
 42054
 42055
 42056
 42057
 42058
 42059
 42060
 42061
 42062
 42063
 42064
 42065
 42066
 42067
 42068
 42069
 42070
 42071
 42072
 42073
 42074
 42075
 42076
 42077
 42078
 42079
 42080
 42081
 42082
 42083
 42084
 42085
 42086
 42087
 42088
 42089
 42090
 42091
 42092
 42093
 42094
 42095
 42096
 42097
 42098
 42099
 42100
 42101
 42102
 42103
 42104
 42105
 42106
 42107
 42108
 42109
 42110
 42111
 42112
 42113
 42114
 42115
 42116
 42117
 42118
 42119
 42120
 42121
 42122
 42123
 42124
 42125
 42126
 42127
 42128
 42129
 42130
 42131
 42132
 42133
 42134
 42135
 42136
 42137
 42138
 42139
 42140
 42141
 42142
 42143
 42144
 42145
 42146
 42147
 42148
 42149
 42150
 42151
 42152
 42153
 42154
 42155
 42156
 42157
 42158
 42159
 42160
 42161
 42162
 42163
 42164
 42165
 42166
 42167
 42168
 42169
 42170
 42171
 42172
 42173
 42174
 42175
 42176
 42177
 42178
 42179
 42180
 42181
 42182
 42183
 42184
 42185
 42186
 42187
 42188
 42189
 42190
 42191
 42192
 42193
 42194
 42195
 42196
 42197
 42198
 42199
 42200
 42201
 42202
 42203
 42204
 42205
 42206
 42207
 42208
 42209
 42210
 42211
 42212
 42213
 42214
 42215
 42216
 42217
 42218
 42219
 42220
 42221
 42222
 42223
 42224
 42225
 42226
 42227
 42228
 42229
 42230
 42231
 42232
 42233
 42234
 42235
 42236
 42237
 42238
 42239
 42240
 42241
 42242
 42243
 42244
 42245
 42246
 42247
 42248
 42249
 42250
 42251
 42252
 42253
 42254
 42255
 42256
 42257
 42258
 42259
 42260
 42261
 42262
 42263
 42264
 42265
 42266
 42267
 42268
 42269
 42270
 42271
 42272
 42273
 42274
 42275
 42276
 42277
 42278
 42279
 42280
 42281
 42282
 42283
 42284
 42285
 42286
 42287
 42288
 42289
 42290
 42291
 42292
 42293
 42294
 42295
 42296
 42297
 42298
 42299
 42300
 42301
 42302
 42303
 42304
 42305
 42306
 42307
 42308
 42309
 42310
 42311
 42312
 42313
 42314
 42315
 42316
 42317
 42318
 42319
 42320
 42321
 42322
 42323
 42324
 42325
 42326
 42327
 42328
 42329
 42330
 42331
 42332
 42333
 42334
 42335
 42336
 42337
 42338
 42339
 42340
 42341
 42342
 42343
 42344
 42345
 42346
 42347
 42348
 42349
 42350
 42351
 42352
 42353
 42354
 42355
 42356
 42357
 42358
 42359
 42360
 42361
 42362
 42363
 42364
 42365
 42366
 42367
 42368
 42369
 42370
 42371
 42372
 42373
 42374
 42375
 42376
 42377
 42378
 42379
 42380
 42381
 42382
 42383
 42384
 42385
 42386
 42387
 42388
 42389
 42390
 42391
 42392
 42393
 42394
 42395
 42396
 42397
 42398
 42399
 42400
 42401
 42402
 42403
 42404
 42405
 42406
 42407
 42408
 42409
 42410
 42411
 42412
 42413
 42414
 42415
 42416
 42417
 42418
 42419
 42420
 42421
 42422
 42423
 42424
 42425
 42426
 42427
 42428
 42429
 42430
 42431
 42432
 42433
 42434
 42435
 42436
 42437
 42438
 42439
 42440
 42441
 42442
 42443
 42444
 42445
 42446
 42447
 42448
 42449
 42450
 42451
 42452
 42453
 42454
 42455
 42456
 42457
 42458
 42459
 42460
 42461
 42462
 42463
 42464
 42465
 42466
 42467
 42468
 42469
 42470
 42471
 42472
 42473
 42474
 42475
 42476
 42477
 42478
 42479
 42480
 42481
 42482
 42483
 42484
 42485
 42486
 42487
 42488
 42489
 42490
 42491
 42492
 42493
 42494
 42495
 42496
 42497
 42498
 42499
 42500
 42501
 42502
 42503
 42504
 42505
 42506
 42507
 42508
 42509
 42510
 42511
 42512
 42513
 42514
 42515
 42516
 42517
 42518
 42519
 42520
 42521
 42522
 42523
 42524
 42525
 42526
 42527
 42528
 42529
 42530
 42531
 42532
 42533
 42534
 42535
 42536
 42537
 42538
 42539
 42540
 42541
 42542
 42543
 42544
 42545
 42546
 42547
 42548
 42549
 42550
 42551
 42552
 42553
 42554
 42555
 42556
 42557
 42558
 42559
 42560
 42561
 42562
 42563
 42564
 42565
 42566
 42567
 42568
 42569
 42570
 42571
 42572
 42573
 42574
 42575
 42576
 42577
 42578
 42579
 42580
 42581
 42582
 42583
 42584
 42585
 42586
 42587
 42588
 42589
 42590
 42591
 42592
 42593
 42594
 42595
 42596
 42597
 42598
 42599
 42600
 42601
 42602
 42603
 42604
 42605
 42606
 42607
 42608
 42609
 42610
 42611
 42612
 42613
 42614
 42615
 42616
 42617
 42618
 42619
 42620
 42621
 42622
 42623
 42624
 42625
 42626
 42627
 42628
 42629
 42630
 42631
 42632
 42633
 42634
 42635
 42636
 42637
 42638
 42639
 42640
 42641
 42642
 42643
 42644
 42645
 42646
 42647
 42648
 42649
 42650
 42651
 42652
 42653
 42654
 42655
 42656
 42657
 42658
 42659
 42660
 42661
 42662
 42663
 42664
 42665
 42666
 42667
 42668
 42669
 42670
 42671
 42672
 42673
 42674
 42675
 42676
 42677
 42678
 42679
 42680
 42681
 42682
 42683
 42684
 42685
 42686
 42687
 42688
 42689
 42690
 42691
 42692
 42693
 42694
 42695
 42696
 42697
 42698
 42699
 42700
 42701
 42702
 42703
 42704
 42705
 42706
 42707
 42708
 42709
 42710
 42711
 42712
 42713
 42714
 42715
 42716
 42717
 42718
 42719
 42720
 42721
 42722
 42723
 42724
 42725
 42726
 42727
 42728
 42729
 42730
 42731
 42732
 42733
 42734
 42735
 42736
 42737
 42738
 42739
 42740
 42741
 42742
 42743
 42744
 42745
 42746
 42747
 42748
 42749
 42750
 42751
 42752
 42753
 42754
 42755
 42756
 42757
 42758
 42759
 42760
 42761
 42762
 42763
 42764
 42765
 42766
 42767
 42768
 42769
 42770
 42771
 42772
 42773
 42774
 42775
 42776
 42777
 42778
 42779
 42780
 42781
 42782
 42783
 42784
 42785
 42786
 42787
 42788
 42789
 42790
 42791
 42792
 42793
 42794
 42795
 42796
 42797
 42798
 42799
 42800
 42801
 42802
 42803
 42804
 42805
 42806
 42807
 42808
 42809
 42810
 42811
 42812
 42813
 42814
 42815
 42816
 42817
 42818
 42819
 42820
 42821
 42822
 42823
 42824
 42825
 42826
 42827
 42828
 42829
 42830
 42831
 42832
 42833
 42834
 42835
 42836
 42837
 42838
 42839
 42840
 42841
 42842
 42843
 42844
 42845
 42846
 42847
 42848
 42849
 42850
 42851
 42852
 42853
 42854
 42855
 42856
 42857
 42858
 42859
 42860
 42861
 42862
 42863
 42864
 42865
 42866
 42867
 42868
 42869
 42870
 42871
 42872
 42873
 42874
 42875
 42876
 42877
 42878
 42879
 42880
 42881
 42882
 42883
 42884
 42885
 42886
 42887
 42888
 42889
 42890
 42891
 42892
 42893
 42894
 42895
 42896
 42897
 42898
 42899
 42900
 42901
 42902
 42903
 42904
 42905
 42906
 42907
 42908
 42909
 42910
 42911
 42912
 42913
 42914
 42915
 42916
 42917
 42918
 42919
 42920
 42921
 42922
 42923
 42924
 42925
 42926
 42927
 42928
 42929
 42930
 42931
 42932
 42933
 42934
 42935
 42936
 42937
 42938
 42939
 42940
 42941
 42942
 42943
 42944
 42945
 42946
 42947
 42948
 42949
 42950
 42951
 42952
 42953
 42954
 42955
 42956
 42957
 42958
 42959
 42960
 42961
 42962
 42963
 42964
 42965
 42966
 42967
 42968
 42969
 42970
 42971
 42972
 42973
 42974
 42975
 42976
 42977
 42978
 42979
 42980
 42981
 42982
 42983
 42984
 42985
 42986
 42987
 42988
 42989
 42990
 42991
 42992
 42993
 42994
 42995
 42996
 42997
 42998
 42999
 43000
 43001
 43002
 43003
 43004
 43005
 43006
 43007
 43008
 43009
 43010
 43011
 43012
 43013
 43014
 43015
 43016
 43017
 43018
 43019
 43020
 43021
 43022
 43023
 43024
 43025
 43026
 43027
 43028
 43029
 43030
 43031
 43032
 43033
 43034
 43035
 43036
 43037
 43038
 43039
 43040
 43041
 43042
 43043
 43044
 43045
 43046
 43047
 43048
 43049
 43050
 43051
 43052
 43053
 43054
 43055
 43056
 43057
 43058
 43059
 43060
 43061
 43062
 43063
 43064
 43065
 43066
 43067
 43068
 43069
 43070
 43071
 43072
 43073
 43074
 43075
 43076
 43077
 43078
 43079
 43080
 43081
 43082
 43083
 43084
 43085
 43086
 43087
 43088
 43089
 43090
 43091
 43092
 43093
 43094
 43095
 43096
 43097
 43098
 43099
 43100
 43101
 43102
 43103
 43104
 43105
 43106
 43107
 43108
 43109
 43110
 43111
 43112
 43113
 43114
 43115
 43116
 43117
 43118
 43119
 43120
 43121
 43122
 43123
 43124
 43125
 43126
 43127
 43128
 43129
 43130
 43131
 43132
 43133
 43134
 43135
 43136
 43137
 43138
 43139
 43140
 43141
 43142
 43143
 43144
 43145
 43146
 43147
 43148
 43149
 43150
 43151
 43152
 43153
 43154
 43155
 43156
 43157
 43158
 43159
 43160
 43161
 43162
 43163
 43164
 43165
 43166
 43167
 43168
 43169
 43170
 43171
 43172
 43173
 43174
 43175
 43176
 43177
 43178
 43179
 43180
 43181
 43182
 43183
 43184
 43185
 43186
 43187
 43188
 43189
 43190
 43191
 43192
 43193
 43194
 43195
 43196
 43197
 43198
 43199
 43200
 43201
 43202
 43203
 43204
 43205
 43206
 43207
 43208
 43209
 43210
 43211
 43212
 43213
 43214
 43215
 43216
 43217
 43218
 43219
 43220
 43221
 43222
 43223
 43224
 43225
 43226
 43227
 43228
 43229
 43230
 43231
 43232
 43233
 43234
 43235
 43236
 43237
 43238
 43239
 43240
 43241
 43242
 43243
 43244
 43245
 43246
 43247
 43248
 43249
 43250
 43251
 43252
 43253
 43254
 43255
 43256
 43257
 43258
 43259
 43260
 43261
 43262
 43263
 43264
 43265
 43266
 43267
 43268
 43269
 43270
 43271
 43272
 43273
 43274
 43275
 43276
 43277
 43278
 43279
 43280
 43281
 43282
 43283
 43284
 43285
 43286
 43287
 43288
 43289
 43290
 43291
 43292
 43293
 43294
 43295
 43296
 43297
 43298
 43299
 43300
 43301
 43302
 43303
 43304
 43305
 43306
 43307
 43308
 43309
 43310
 43311
 43312
 43313
 43314
 43315
 43316
 43317
 43318
 43319
 43320
 43321
 43322
 43323
 43324
 43325
 43326
 43327
 43328
 43329
 43330
 43331
 43332
 43333
 43334
 43335
 43336
 43337
 43338
 43339
 43340
 43341
 43342
 43343
 43344
 43345
 43346
 43347
 43348
 43349
 43350
 43351
 43352
 43353
 43354
 43355
 43356
 43357
 43358
 43359
 43360
 43361
 43362
 43363
 43364
 43365
 43366
 43367
 43368
 43369
 43370
 43371
 43372
 43373
 43374
 43375
 43376
 43377
 43378
 43379
 43380
 43381
 43382
 43383
 43384
 43385
 43386
 43387
 43388
 43389
 43390
 43391
 43392
 43393
 43394
 43395
 43396
 43397
 43398
 43399
 43400
 43401
 43402
 43403
 43404
 43405
 43406
 43407
 43408
 43409
 43410
 43411
 43412
 43413
 43414
 43415
 43416
 43417
 43418
 43419
 43420
 43421
 43422
 43423
 43424
 43425
 43426
 43427
 43428
 43429
 43430
 43431
 43432
 43433
 43434
 43435
 43436
 43437
 43438
 43439
 43440
 43441
 43442
 43443
 43444
 43445
 43446
 43447
 43448
 43449
 43450
 43451
 43452
 43453
 43454
 43455
 43456
 43457
 43458
 43459
 43460
 43461
 43462
 43463
 43464
 43465
 43466
 43467
 43468
 43469
 43470
 43471
 43472
 43473
 43474
 43475
 43476
 43477
 43478
 43479
 43480
 43481
 43482
 43483
 43484
 43485
 43486
 43487
 43488
 43489
 43490
 43491
 43492
 43493
 43494
 43495
 43496
 43497
 43498
 43499
 43500
 43501
 43502
 43503
 43504
 43505
 43506
 43507
 43508
 43509
 43510
 43511
 43512
 43513
 43514
 43515
 43516
 43517
 43518
 43519
 43520
 43521
 43522
 43523
 43524
 43525
 43526
 43527
 43528
 43529
 43530
 43531
 43532
 43533
 43534
 43535
 43536
 43537
 43538
 43539
 43540
 43541
 43542
 43543
 43544
 43545
 43546
 43547
 43548
 43549
 43550
 43551
 43552
 43553
 43554
 43555
 43556
 43557
 43558
 43559
 43560
 43561
 43562
 43563
 43564
 43565
 43566
 43567
 43568
 43569
 43570
 43571
 43572
 43573
 43574
 43575
 43576
 43577
 43578
 43579
 43580
 43581
 43582
 43583
 43584
 43585
 43586
 43587
 43588
 43589
 43590
 43591
 43592
 43593
 43594
 43595
 43596
 43597
 43598
 43599
 43600
 43601
 43602
 43603
 43604
 43605
 43606
 43607
 43608
 43609
 43610
 43611
 43612
 43613
 43614
 43615
 43616
 43617
 43618
 43619
 43620
 43621
 43622
 43623
 43624
 43625
 43626
 43627
 43628
 43629
 43630
 43631
 43632
 43633
 43634
 43635
 43636
 43637
 43638
 43639
 43640
 43641
 43642
 43643
 43644
 43645
 43646
 43647
 43648
 43649
 43650
 43651
 43652
 43653
 43654
 43655
 43656
 43657
 43658
 43659
 43660
 43661
 43662
 43663
 43664
 43665
 43666
 43667
 43668
 43669
 43670
 43671
 43672
 43673
 43674
 43675
 43676
 43677
 43678
 43679
 43680
 43681
 43682
 43683
 43684
 43685
 43686
 43687
 43688
 43689
 43690
 43691
 43692
 43693
 43694
 43695
 43696
 43697
 43698
 43699
 43700
 43701
 43702
 43703
 43704
 43705
 43706
 43707
 43708
 43709
 43710
 43711
 43712
 43713
 43714
 43715
 43716
 43717
 43718
 43719
 43720
 43721
 43722
 43723
 43724
 43725
 43726
 43727
 43728
 43729
 43730
 43731
 43732
 43733
 43734
 43735
 43736
 43737
 43738
 43739
 43740
 43741
 43742
 43743
 43744
 43745
 43746
 43747
 43748
 43749
 43750
 43751
 43752
 43753
 43754
 43755
 43756
 43757
 43758
 43759
 43760
 43761
 43762
 43763
 43764
 43765
 43766
 43767
 43768
 43769
 43770
 43771
 43772
 43773
 43774
 43775
 43776
 43777
 43778
 43779
 43780
 43781
 43782
 43783
 43784
 43785
 43786
 43787
 43788
 43789
 43790
 43791
 43792
 43793
 43794
 43795
 43796
 43797
 43798
 43799
 43800
 43801
 43802
 43803
 43804
 43805
 43806
 43807
 43808
 43809
 43810
 43811
 43812
 43813
 43814
 43815
 43816
 43817
 43818
 43819
 43820
 43821
 43822
 43823
 43824
 43825
 43826
 43827
 43828
 43829
 43830
 43831
 43832
 43833
 43834
 43835
 43836
 43837
 43838
 43839
 43840
 43841
 43842
 43843
 43844
 43845
 43846
 43847
 43848
 43849
 43850
 43851
 43852
 43853
 43854
 43855
 43856
 43857
 43858
 43859
 43860
 43861
 43862
 43863
 43864
 43865
 43866
 43867
 43868
 43869
 43870
 43871
 43872
 43873
 43874
 43875
 43876
 43877
 43878
 43879
 43880
 43881
 43882
 43883
 43884
 43885
 43886
 43887
 43888
 43889
 43890
 43891
 43892
 43893
 43894
 43895
 43896
 43897
 43898
 43899
 43900
 43901
 43902
 43903
 43904
 43905
 43906
 43907
 43908
 43909
 43910
 43911
 43912
 43913
 43914
 43915
 43916
 43917
 43918
 43919
 43920
 43921
 43922
 43923
 43924
 43925
 43926
 43927
 43928
 43929
 43930
 43931
 43932
 43933
 43934
 43935
 43936
 43937
 43938
 43939
 43940
 43941
 43942
 43943
 43944
 43945
 43946
 43947
 43948
 43949
 43950
 43951
 43952
 43953
 43954
 43955
 43956
 43957
 43958
 43959
 43960
 43961
 43962
 43963
 43964
 43965
 43966
 43967
 43968
 43969
 43970
 43971
 43972
 43973
 43974
 43975
 43976
 43977
 43978
 43979
 43980
 43981
 43982
 43983
 43984
 43985
 43986
 43987
 43988
 43989
 43990
 43991
 43992
 43993
 43994
 43995
 43996
 43997
 43998
 43999
 44000
 44001
 44002
 44003
 44004
 44005
 44006
 44007
 44008
 44009
 44010
 44011
 44012
 44013
 44014
 44015
 44016
 44017
 44018
 44019
 44020
 44021
 44022
 44023
 44024
 44025
 44026
 44027
 44028
 44029
 44030
 44031
 44032
 44033
 44034
 44035
 44036
 44037
 44038
 44039
 44040
 44041
 44042
 44043
 44044
 44045
 44046
 44047
 44048
 44049
 44050
 44051
 44052
 44053
 44054
 44055
 44056
 44057
 44058
 44059
 44060
 44061
 44062
 44063
 44064
 44065
 44066
 44067
 44068
 44069
 44070
 44071
 44072
 44073
 44074
 44075
 44076
 44077
 44078
 44079
 44080
 44081
 44082
 44083
 44084
 44085
 44086
 44087
 44088
 44089
 44090
 44091
 44092
 44093
 44094
 44095
 44096
 44097
 44098
 44099
 44100
 44101
 44102
 44103
 44104
 44105
 44106
 44107
 44108
 44109
 44110
 44111
 44112
 44113
 44114
 44115
 44116
 44117
 44118
 44119
 44120
 44121
 44122
 44123
 44124
 44125
 44126
 44127
 44128
 44129
 44130
 44131
 44132
 44133
 44134
 44135
 44136
 44137
 44138
 44139
 44140
 44141
 44142
 44143
 44144
 44145
 44146
 44147
 44148
 44149
 44150
 44151
 44152
 44153
 44154
 44155
 44156
 44157
 44158
 44159
 44160
 44161
 44162
 44163
 44164
 44165
 44166
 44167
 44168
 44169
 44170
 44171
 44172
 44173
 44174
 44175
 44176
 44177
 44178
 44179
 44180
 44181
 44182
 44183
 44184
 44185
 44186
 44187
 44188
 44189
 44190
 44191
 44192
 44193
 44194
 44195
 44196
 44197
 44198
 44199
 44200
 44201
 44202
 44203
 44204
 44205
 44206
 44207
 44208
 44209
 44210
 44211
 44212
 44213
 44214
 44215
 44216
 44217
 44218
 44219
 44220
 44221
 44222
 44223
 44224
 44225
 44226
 44227
 44228
 44229
 44230
 44231
 44232
 44233
 44234
 44235
 44236
 44237
 44238
 44239
 44240
 44241
 44242
 44243
 44244
 44245
 44246
 44247
 44248
 44249
 44250
 44251
 44252
 44253
 44254
 44255
 44256
 44257
 44258
 44259
 44260
 44261
 44262
 44263
 44264
 44265
 44266
 44267
 44268
 44269
 44270
 44271
 44272
 44273
 44274
 44275
 44276
 44277
 44278
 44279
 44280
 44281
 44282
 44283
 44284
 44285
 44286
 44287
 44288
 44289
 44290
 44291
 44292
 44293
 44294
 44295
 44296
 44297
 44298
 44299
 44300
 44301
 44302
 44303
 44304
 44305
 44306
 44307
 44308
 44309
 44310
 44311
 44312
 44313
 44314
 44315
 44316
 44317
 44318
 44319
 44320
 44321
 44322
 44323
 44324
 44325
 44326
 44327
 44328
 44329
 44330
 44331
 44332
 44333
 44334
 44335
 44336
 44337
 44338
 44339
 44340
 44341
 44342
 44343
 44344
 44345
 44346
 44347
 44348
 44349
 44350
 44351
 44352
 44353
 44354
 44355
 44356
 44357
 44358
 44359
 44360
 44361
 44362
 44363
 44364
 44365
 44366
 44367
 44368
 44369
 44370
 44371
 44372
 44373
 44374
 44375
 44376
 44377
 44378
 44379
 44380
 44381
 44382
 44383
 44384
 44385
 44386
 44387
 44388
 44389
 44390
 44391
 44392
 44393
 44394
 44395
 44396
 44397
 44398
 44399
 44400
 44401
 44402
 44403
 44404
 44405
 44406
 44407
 44408
 44409
 44410
 44411
 44412
 44413
 44414
 44415
 44416
 44417
 44418
 44419
 44420
 44421
 44422
 44423
 44424
 44425
 44426
 44427
 44428
 44429
 44430
 44431
 44432
 44433
 44434
 44435
 44436
 44437
 44438
 44439
 44440
 44441
 44442
 44443
 44444
 44445
 44446
 44447
 44448
 44449
 44450
 44451
 44452
 44453
 44454
 44455
 44456
 44457
 44458
 44459
 44460
 44461
 44462
 44463
 44464
 44465
 44466
 44467
 44468
 44469
 44470
 44471
 44472
 44473
 44474
 44475
 44476
 44477
 44478
 44479
 44480
 44481
 44482
 44483
 44484
 44485
 44486
 44487
 44488
 44489
 44490
 44491
 44492
 44493
 44494
 44495
 44496
 44497
 44498
 44499
 44500
 44501
 44502
 44503
 44504
 44505
 44506
 44507
 44508
 44509
 44510
 44511
 44512
 44513
 44514
 44515
 44516
 44517
 44518
 44519
 44520
 44521
 44522
 44523
 44524
 44525
 44526
 44527
 44528
 44529
 44530
 44531
 44532
 44533
 44534
 44535
 44536
 44537
 44538
 44539
 44540
 44541
 44542
 44543
 44544
 44545
 44546
 44547
 44548
 44549
 44550
 44551
 44552
 44553
 44554
 44555
 44556
 44557
 44558
 44559
 44560
 44561
 44562
 44563
 44564
 44565
 44566
 44567
 44568
 44569
 44570
 44571
 44572
 44573
 44574
 44575
 44576
 44577
 44578
 44579
 44580
 44581
 44582
 44583
 44584
 44585
 44586
 44587
 44588
 44589
 44590
 44591
 44592
 44593
 44594
 44595
 44596
 44597
 44598
 44599
 44600
 44601
 44602
 44603
 44604
 44605
 44606
 44607
 44608
 44609
 44610
 44611
 44612
 44613
 44614
 44615
 44616
 44617
 44618
 44619
 44620
 44621
 44622
 44623
 44624
 44625
 44626
 44627
 44628
 44629
 44630
 44631
 44632
 44633
 44634
 44635
 44636
 44637
 44638
 44639
 44640
 44641
 44642
 44643
 44644
 44645
 44646
 44647
 44648
 44649
 44650
 44651
 44652
 44653
 44654
 44655
 44656
 44657
 44658
 44659
 44660
 44661
 44662
 44663
 44664
 44665
 44666
 44667
 44668
 44669
 44670
 44671
 44672
 44673
 44674
 44675
 44676
 44677
 44678
 44679
 44680
 44681
 44682
 44683
 44684
 44685
 44686
 44687
 44688
 44689
 44690
 44691
 44692
 44693
 44694
 44695
 44696
 44697
 44698
 44699
 44700
 44701
 44702
 44703
 44704
 44705
 44706
 44707
 44708
 44709
 44710
 44711
 44712
 44713
 44714
 44715
 44716
 44717
 44718
 44719
 44720
 44721
 44722
 44723
 44724
 44725
 44726
 44727
 44728
 44729
 44730
 44731
 44732
 44733
 44734
 44735
 44736
 44737
 44738
 44739
 44740
 44741
 44742
 44743
 44744
 44745
 44746
 44747
 44748
 44749
 44750
 44751
 44752
 44753
 44754
 44755
 44756
 44757
 44758
 44759
 44760
 44761
 44762
 44763
 44764
 44765
 44766
 44767
 44768
 44769
 44770
 44771
 44772
 44773
 44774
 44775
 44776
 44777
 44778
 44779
 44780
 44781
 44782
 44783
 44784
 44785
 44786
 44787
 44788
 44789
 44790
 44791
 44792
 44793
 44794
 44795
 44796
 44797
 44798
 44799
 44800
 44801
 44802
 44803
 44804
 44805
 44806
 44807
 44808
 44809
 44810
 44811
 44812
 44813
 44814
 44815
 44816
 44817
 44818
 44819
 44820
 44821
 44822
 44823
 44824
 44825
 44826
 44827
 44828
 44829
 44830
 44831
 44832
 44833
 44834
 44835
 44836
 44837
 44838
 44839
 44840
 44841
 44842
 44843
 44844
 44845
 44846
 44847
 44848
 44849
 44850
 44851
 44852
 44853
 44854
 44855
 44856
 44857
 44858
 44859
 44860
 44861
 44862
 44863
 44864
 44865
 44866
 44867
 44868
 44869
 44870
 44871
 44872
 44873
 44874
 44875
 44876
 44877
 44878
 44879
 44880
 44881
 44882
 44883
 44884
 44885
 44886
 44887
 44888
 44889
 44890
 44891
 44892
 44893
 44894
 44895
 44896
 44897
 44898
 44899
 44900
 44901
 44902
 44903
 44904
 44905
 44906
 44907
 44908
 44909
 44910
 44911
 44912
 44913
 44914
 44915
 44916
 44917
 44918
 44919
 44920
 44921
 44922
 44923
 44924
 44925
 44926
 44927
 44928
 44929
 44930
 44931
 44932
 44933
 44934
 44935
 44936
 44937
 44938
 44939
 44940
 44941
 44942
 44943
 44944
 44945
 44946
 44947
 44948
 44949
 44950
 44951
 44952
 44953
 44954
 44955
 44956
 44957
 44958
 44959
 44960
 44961
 44962
 44963
 44964
 44965
 44966
 44967
 44968
 44969
 44970
 44971
 44972
 44973
 44974
 44975
 44976
 44977
 44978
 44979
 44980
 44981
 44982
 44983
 44984
 44985
 44986
 44987
 44988
 44989
 44990
 44991
 44992
 44993
 44994
 44995
 44996
 44997
 44998
 44999
 45000
 45001
 45002
 45003
 45004
 45005
 45006
 45007
 45008
 45009
 45010
 45011
 45012
 45013
 45014
 45015
 45016
 45017
 45018
 45019
 45020
 45021
 45022
 45023
 45024
 45025
 45026
 45027
 45028
 45029
 45030
 45031
 45032
 45033
 45034
 45035
 45036
 45037
 45038
 45039
 45040
 45041
 45042
 45043
 45044
 45045
 45046
 45047
 45048
 45049
 45050
 45051
 45052
 45053
 45054
 45055
 45056
 45057
 45058
 45059
 45060
 45061
 45062
 45063
 45064
 45065
 45066
 45067
 45068
 45069
 45070
 45071
 45072
 45073
 45074
 45075
 45076
 45077
 45078
 45079
 45080
 45081
 45082
 45083
 45084
 45085
 45086
 45087
 45088
 45089
 45090
 45091
 45092
 45093
 45094
 45095
 45096
 45097
 45098
 45099
 45100
 45101
 45102
 45103
 45104
 45105
 45106
 45107
 45108
 45109
 45110
 45111
 45112
 45113
 45114
 45115
 45116
 45117
 45118
 45119
 45120
 45121
 45122
 45123
 45124
 45125
 45126
 45127
 45128
 45129
 45130
 45131
 45132
 45133
 45134
 45135
 45136
 45137
 45138
 45139
 45140
 45141
 45142
 45143
 45144
 45145
 45146
 45147
 45148
 45149
 45150
 45151
 45152
 45153
 45154
 45155
 45156
 45157
 45158
 45159
 45160
 45161
 45162
 45163
 45164
 45165
 45166
 45167
 45168
 45169
 45170
 45171
 45172
 45173
 45174
 45175
 45176
 45177
 45178
 45179
 45180
 45181
 45182
 45183
 45184
 45185
 45186
 45187
 45188
 45189
 45190
 45191
 45192
 45193
 45194
 45195
 45196
 45197
 45198
 45199
 45200
 45201
 45202
 45203
 45204
 45205
 45206
 45207
 45208
 45209
 45210
 45211
 45212
 45213
 45214
 45215
 45216
 45217
 45218
 45219
 45220
 45221
 45222
 45223
 45224
 45225
 45226
 45227
 45228
 45229
 45230
 45231
 45232
 45233
 45234
 45235
 45236
 45237
 45238
 45239
 45240
 45241
 45242
 45243
 45244
 45245
 45246
 45247
 45248
 45249
 45250
 45251
 45252
 45253
 45254
 45255
 45256
 45257
 45258
 45259
 45260
 45261
 45262
 45263
 45264
 45265
 45266
 45267
 45268
 45269
 45270
 45271
 45272
 45273
 45274
 45275
 45276
 45277
 45278
 45279
 45280
 45281
 45282
 45283
 45284
 45285
 45286
 45287
 45288
 45289
 45290
 45291
 45292
 45293
 45294
 45295
 45296
 45297
 45298
 45299
 45300
 45301
 45302
 45303
 45304
 45305
 45306
 45307
 45308
 45309
 45310
 45311
 45312
 45313
 45314
 45315
 45316
 45317
 45318
 45319
 45320
 45321
 45322
 45323
 45324
 45325
 45326
 45327
 45328
 45329
 45330
 45331
 45332
 45333
 45334
 45335
 45336
 45337
 45338
 45339
 45340
 45341
 45342
 45343
 45344
 45345
 45346
 45347
 45348
 45349
 45350
 45351
 45352
 45353
 45354
 45355
 45356
 45357
 45358
 45359
 45360
 45361
 45362
 45363
 45364
 45365
 45366
 45367
 45368
 45369
 45370
 45371
 45372
 45373
 45374
 45375
 45376
 45377
 45378
 45379
 45380
 45381
 45382
 45383
 45384
 45385
 45386
 45387
 45388
 45389
 45390
 45391
 45392
 45393
 45394
 45395
 45396
 45397
 45398
 45399
 45400
 45401
 45402
 45403
 45404
 45405
 45406
 45407
 45408
 45409
 45410
 45411
 45412
 45413
 45414
 45415
 45416
 45417
 45418
 45419
 45420
 45421
 45422
 45423
 45424
 45425
 45426
 45427
 45428
 45429
 45430
 45431
 45432
 45433
 45434
 45435
 45436
 45437
 45438
 45439
 45440
 45441
 45442
 45443
 45444
 45445
 45446
 45447
 45448
 45449
 45450
 45451
 45452
 45453
 45454
 45455
 45456
 45457
 45458
 45459
 45460
 45461
 45462
 45463
 45464
 45465
 45466
 45467
 45468
 45469
 45470
 45471
 45472
 45473
 45474
 45475
 45476
 45477
 45478
 45479
 45480
 45481
 45482
 45483
 45484
 45485
 45486
 45487
 45488
 45489
 45490
 45491
 45492
 45493
 45494
 45495
 45496
 45497
 45498
 45499
 45500
 45501
 45502
 45503
 45504
 45505
 45506
 45507
 45508
 45509
 45510
 45511
 45512
 45513
 45514
 45515
 45516
 45517
 45518
 45519
 45520
 45521
 45522
 45523
 45524
 45525
 45526
 45527
 45528
 45529
 45530
 45531
 45532
 45533
 45534
 45535
 45536
 45537
 45538
 45539
 45540
 45541
 45542
 45543
 45544
 45545
 45546
 45547
 45548
 45549
 45550
 45551
 45552
 45553
 45554
 45555
 45556
 45557
 45558
 45559
 45560
 45561
 45562
 45563
 45564
 45565
 45566
 45567
 45568
 45569
 45570
 45571
 45572
 45573
 45574
 45575
 45576
 45577
 45578
 45579
 45580
 45581
 45582
 45583
 45584
 45585
 45586
 45587
 45588
 45589
 45590
 45591
 45592
 45593
 45594
 45595
 45596
 45597
 45598
 45599
 45600
 45601
 45602
 45603
 45604
 45605
 45606
 45607
 45608
 45609
 45610
 45611
 45612
 45613
 45614
 45615
 45616
 45617
 45618
 45619
 45620
 45621
 45622
 45623
 45624
 45625
 45626
 45627
 45628
 45629
 45630
 45631
 45632
 45633
 45634
 45635
 45636
 45637
 45638
 45639
 45640
 45641
 45642
 45643
 45644
 45645
 45646
 45647
 45648
 45649
 45650
 45651
 45652
 45653
 45654
 45655
 45656
 45657
 45658
 45659
 45660
 45661
 45662
 45663
 45664
 45665
 45666
 45667
 45668
 45669
 45670
 45671
 45672
 45673
 45674
 45675
 45676
 45677
 45678
 45679
 45680
 45681
 45682
 45683
 45684
 45685
 45686
 45687
 45688
 45689
 45690
 45691
 45692
 45693
 45694
 45695
 45696
 45697
 45698
 45699
 45700
 45701
 45702
 45703
 45704
 45705
 45706
 45707
 45708
 45709
 45710
 45711
 45712
 45713
 45714
 45715
 45716
 45717
 45718
 45719
 45720
 45721
 45722
 45723
 45724
 45725
 45726
 45727
 45728
 45729
 45730
 45731
 45732
 45733
 45734
 45735
 45736
 45737
 45738
 45739
 45740
 45741
 45742
 45743
 45744
 45745
 45746
 45747
 45748
 45749
 45750
 45751
 45752
 45753
 45754
 45755
 45756
 45757
 45758
 45759
 45760
 45761
 45762
 45763
 45764
 45765
 45766
 45767
 45768
 45769
 45770
 45771
 45772
 45773
 45774
 45775
 45776
 45777
 45778
 45779
 45780
 45781
 45782
 45783
 45784
 45785
 45786
 45787
 45788
 45789
 45790
 45791
 45792
 45793
 45794
 45795
 45796
 45797
 45798
 45799
 45800
 45801
 45802
 45803
 45804
 45805
 45806
 45807
 45808
 45809
 45810
 45811
 45812
 45813
 45814
 45815
 45816
 45817
 45818
 45819
 45820
 45821
 45822
 45823
 45824
 45825
 45826
 45827
 45828
 45829
 45830
 45831
 45832
 45833
 45834
 45835
 45836
 45837
 45838
 45839
 45840
 45841
 45842
 45843
 45844
 45845
 45846
 45847
 45848
 45849
 45850
 45851
 45852
 45853
 45854
 45855
 45856
 45857
 45858
 45859
 45860
 45861
 45862
 45863
 45864
 45865
 45866
 45867
 45868
 45869
 45870
 45871
 45872
 45873
 45874
 45875
 45876
 45877
 45878
 45879
 45880
 45881
 45882
 45883
 45884
 45885
 45886
 45887
 45888
 45889
 45890
 45891
 45892
 45893
 45894
 45895
 45896
 45897
 45898
 45899
 45900
 45901
 45902
 45903
 45904
 45905
 45906
 45907
 45908
 45909
 45910
 45911
 45912
 45913
 45914
 45915
 45916
 45917
 45918
 45919
 45920
 45921
 45922
 45923
 45924
 45925
 45926
 45927
 45928
 45929
 45930
 45931
 45932
 45933
 45934
 45935
 45936
 45937
 45938
 45939
 45940
 45941
 45942
 45943
 45944
 45945
 45946
 45947
 45948
 45949
 45950
 45951
 45952
 45953
 45954
 45955
 45956
 45957
 45958
 45959
 45960
 45961
 45962
 45963
 45964
 45965
 45966
 45967
 45968
 45969
 45970
 45971
 45972
 45973
 45974
 45975
 45976
 45977
 45978
 45979
 45980
 45981
 45982
 45983
 45984
 45985
 45986
 45987
 45988
 45989
 45990
 45991
 45992
 45993
 45994
 45995
 45996
 45997
 45998
 45999
 46000
 46001
 46002
 46003
 46004
 46005
 46006
 46007
 46008
 46009
 46010
 46011
 46012
 46013
 46014
 46015
 46016
 46017
 46018
 46019
 46020
 46021
 46022
 46023
 46024
 46025
 46026
 46027
 46028
 46029
 46030
 46031
 46032
 46033
 46034
 46035
 46036
 46037
 46038
 46039
 46040
 46041
 46042
 46043
 46044
 46045
 46046
 46047
 46048
 46049
 46050
 46051
 46052
 46053
 46054
 46055
 46056
 46057
 46058
 46059
 46060
 46061
 46062
 46063
 46064
 46065
 46066
 46067
 46068
 46069
 46070
 46071
 46072
 46073
 46074
 46075
 46076
 46077
 46078
 46079
 46080
 46081
 46082
 46083
 46084
 46085
 46086
 46087
 46088
 46089
 46090
 46091
 46092
 46093
 46094
 46095
 46096
 46097
 46098
 46099
 46100
 46101
 46102
 46103
 46104
 46105
 46106
 46107
 46108
 46109
 46110
 46111
 46112
 46113
 46114
 46115
 46116
 46117
 46118
 46119
 46120
 46121
 46122
 46123
 46124
 46125
 46126
 46127
 46128
 46129
 46130
 46131
 46132
 46133
 46134
 46135
 46136
 46137
 46138
 46139
 46140
 46141
 46142
 46143
 46144
 46145
 46146
 46147
 46148
 46149
 46150
 46151
 46152
 46153
 46154
 46155
 46156
 46157
 46158
 46159
 46160
 46161
 46162
 46163
 46164
 46165
 46166
 46167
 46168
 46169
 46170
 46171
 46172
 46173
 46174
 46175
 46176
 46177
 46178
 46179
 46180
 46181
 46182
 46183
 46184
 46185
 46186
 46187
 46188
 46189
 46190
 46191
 46192
 46193
 46194
 46195
 46196
 46197
 46198
 46199
 46200
 46201
 46202
 46203
 46204
 46205
 46206
 46207
 46208
 46209
 46210
 46211
 46212
 46213
 46214
 46215
 46216
 46217
 46218
 46219
 46220
 46221
 46222
 46223
 46224
 46225
 46226
 46227
 46228
 46229
 46230
 46231
 46232
 46233
 46234
 46235
 46236
 46237
 46238
 46239
 46240
 46241
 46242
 46243
 46244
 46245
 46246
 46247
 46248
 46249
 46250
 46251
 46252
 46253
 46254
 46255
 46256
 46257
 46258
 46259
 46260
 46261
 46262
 46263
 46264
 46265
 46266
 46267
 46268
 46269
 46270
 46271
 46272
 46273
 46274
 46275
 46276
 46277
 46278
 46279
 46280
 46281
 46282
 46283
 46284
 46285
 46286
 46287
 46288
 46289
 46290
 46291
 46292
 46293
 46294
 46295
 46296
 46297
 46298
 46299
 46300
 46301
 46302
 46303
 46304
 46305
 46306
 46307
 46308
 46309
 46310
 46311
 46312
 46313
 46314
 46315
 46316
 46317
 46318
 46319
 46320
 46321
 46322
 46323
 46324
 46325
 46326
 46327
 46328
 46329
 46330
 46331
 46332
 46333
 46334
 46335
 46336
 46337
 46338
 46339
 46340
 46341
 46342
 46343
 46344
 46345
 46346
 46347
 46348
 46349
 46350
 46351
 46352
 46353
 46354
 46355
 46356
 46357
 46358
 46359
 46360
 46361
 46362
 46363
 46364
 46365
 46366
 46367
 46368
 46369
 46370
 46371
 46372
 46373
 46374
 46375
 46376
 46377
 46378
 46379
 46380
 46381
 46382
 46383
 46384
 46385
 46386
 46387
 46388
 46389
 46390
 46391
 46392
 46393
 46394
 46395
 46396
 46397
 46398
 46399
 46400
 46401
 46402
 46403
 46404
 46405
 46406
 46407
 46408
 46409
 46410
 46411
 46412
 46413
 46414
 46415
 46416
 46417
 46418
 46419
 46420
 46421
 46422
 46423
 46424
 46425
 46426
 46427
 46428
 46429
 46430
 46431
 46432
 46433
 46434
 46435
 46436
 46437
 46438
 46439
 46440
 46441
 46442
 46443
 46444
 46445
 46446
 46447
 46448
 46449
 46450
 46451
 46452
 46453
 46454
 46455
 46456
 46457
 46458
 46459
 46460
 46461
 46462
 46463
 46464
 46465
 46466
 46467
 46468
 46469
 46470
 46471
 46472
 46473
 46474
 46475
 46476
 46477
 46478
 46479
 46480
 46481
 46482
 46483
 46484
 46485
 46486
 46487
 46488
 46489
 46490
 46491
 46492
 46493
 46494
 46495
 46496
 46497
 46498
 46499
 46500
 46501
 46502
 46503
 46504
 46505
 46506
 46507
 46508
 46509
 46510
 46511
 46512
 46513
 46514
 46515
 46516
 46517
 46518
 46519
 46520
 46521
 46522
 46523
 46524
 46525
 46526
 46527
 46528
 46529
 46530
 46531
 46532
 46533
 46534
 46535
 46536
 46537
 46538
 46539
 46540
 46541
 46542
 46543
 46544
 46545
 46546
 46547
 46548
 46549
 46550
 46551
 46552
 46553
 46554
 46555
 46556
 46557
 46558
 46559
 46560
 46561
 46562
 46563
 46564
 46565
 46566
 46567
 46568
 46569
 46570
 46571
 46572
 46573
 46574
 46575
 46576
 46577
 46578
 46579
 46580
 46581
 46582
 46583
 46584
 46585
 46586
 46587
 46588
 46589
 46590
 46591
 46592
 46593
 46594
 46595
 46596
 46597
 46598
 46599
 46600
 46601
 46602
 46603
 46604
 46605
 46606
 46607
 46608
 46609
 46610
 46611
 46612
 46613
 46614
 46615
 46616
 46617
 46618
 46619
 46620
 46621
 46622
 46623
 46624
 46625
 46626
 46627
 46628
 46629
 46630
 46631
 46632
 46633
 46634
 46635
 46636
 46637
 46638
 46639
 46640
 46641
 46642
 46643
 46644
 46645
 46646
 46647
 46648
 46649
 46650
 46651
 46652
 46653
 46654
 46655
 46656
 46657
 46658
 46659
 46660
 46661
 46662
 46663
 46664
 46665
 46666
 46667
 46668
 46669
 46670
 46671
 46672
 46673
 46674
 46675
 46676
 46677
 46678
 46679
 46680
 46681
 46682
 46683
 46684
 46685
 46686
 46687
 46688
 46689
 46690
 46691
 46692
 46693
 46694
 46695
 46696
 46697
 46698
 46699
 46700
 46701
 46702
 46703
 46704
 46705
 46706
 46707
 46708
 46709
 46710
 46711
 46712
 46713
 46714
 46715
 46716
 46717
 46718
 46719
 46720
 46721
 46722
 46723
 46724
 46725
 46726
 46727
 46728
 46729
 46730
 46731
 46732
 46733
 46734
 46735
 46736
 46737
 46738
 46739
 46740
 46741
 46742
 46743
 46744
 46745
 46746
 46747
 46748
 46749
 46750
 46751
 46752
 46753
 46754
 46755
 46756
 46757
 46758
 46759
 46760
 46761
 46762
 46763
 46764
 46765
 46766
 46767
 46768
 46769
 46770
 46771
 46772
 46773
 46774
 46775
 46776
 46777
 46778
 46779
 46780
 46781
 46782
 46783
 46784
 46785
 46786
 46787
 46788
 46789
 46790
 46791
 46792
 46793
 46794
 46795
 46796
 46797
 46798
 46799
 46800
 46801
 46802
 46803
 46804
 46805
 46806
 46807
 46808
 46809
 46810
 46811
 46812
 46813
 46814
 46815
 46816
 46817
 46818
 46819
 46820
 46821
 46822
 46823
 46824
 46825
 46826
 46827
 46828
 46829
 46830
 46831
 46832
 46833
 46834
 46835
 46836
 46837
 46838
 46839
 46840
 46841
 46842
 46843
 46844
 46845
 46846
 46847
 46848
 46849
 46850
 46851
 46852
 46853
 46854
 46855
 46856
 46857
 46858
 46859
 46860
 46861
 46862
 46863
 46864
 46865
 46866
 46867
 46868
 46869
 46870
 46871
 46872
 46873
 46874
 46875
 46876
 46877
 46878
 46879
 46880
 46881
 46882
 46883
 46884
 46885
 46886
 46887
 46888
 46889
 46890
 46891
 46892
 46893
 46894
 46895
 46896
 46897
 46898
 46899
 46900
 46901
 46902
 46903
 46904
 46905
 46906
 46907
 46908
 46909
 46910
 46911
 46912
 46913
 46914
 46915
 46916
 46917
 46918
 46919
 46920
 46921
 46922
 46923
 46924
 46925
 46926
 46927
 46928
 46929
 46930
 46931
 46932
 46933
 46934
 46935
 46936
 46937
 46938
 46939
 46940
 46941
 46942
 46943
 46944
 46945
 46946
 46947
 46948
 46949
 46950
 46951
 46952
 46953
 46954
 46955
 46956
 46957
 46958
 46959
 46960
 46961
 46962
 46963
 46964
 46965
 46966
 46967
 46968
 46969
 46970
 46971
 46972
 46973
 46974
 46975
 46976
 46977
 46978
 46979
 46980
 46981
 46982
 46983
 46984
 46985
 46986
 46987
 46988
 46989
 46990
 46991
 46992
 46993
 46994
 46995
 46996
 46997
 46998
 46999
 47000
 47001
 47002
 47003
 47004
 47005
 47006
 47007
 47008
 47009
 47010
 47011
 47012
 47013
 47014
 47015
 47016
 47017
 47018
 47019
 47020
 47021
 47022
 47023
 47024
 47025
 47026
 47027
 47028
 47029
 47030
 47031
 47032
 47033
 47034
 47035
 47036
 47037
 47038
 47039
 47040
 47041
 47042
 47043
 47044
 47045
 47046
 47047
 47048
 47049
 47050
 47051
 47052
 47053
 47054
 47055
 47056
 47057
 47058
 47059
 47060
 47061
 47062
 47063
 47064
 47065
 47066
 47067
 47068
 47069
 47070
 47071
 47072
 47073
 47074
 47075
 47076
 47077
 47078
 47079
 47080
 47081
 47082
 47083
 47084
 47085
 47086
 47087
 47088
 47089
 47090
 47091
 47092
 47093
 47094
 47095
 47096
 47097
 47098
 47099
 47100
 47101
 47102
 47103
 47104
 47105
 47106
 47107
 47108
 47109
 47110
 47111
 47112
 47113
 47114
 47115
 47116
 47117
 47118
 47119
 47120
 47121
 47122
 47123
 47124
 47125
 47126
 47127
 47128
 47129
 47130
 47131
 47132
 47133
 47134
 47135
 47136
 47137
 47138
 47139
 47140
 47141
 47142
 47143
 47144
 47145
 47146
 47147
 47148
 47149
 47150
 47151
 47152
 47153
 47154
 47155
 47156
 47157
 47158
 47159
 47160
 47161
 47162
 47163
 47164
 47165
 47166
 47167
 47168
 47169
 47170
 47171
 47172
 47173
 47174
 47175
 47176
 47177
 47178
 47179
 47180
 47181
 47182
 47183
 47184
 47185
 47186
 47187
 47188
 47189
 47190
 47191
 47192
 47193
 47194
 47195
 47196
 47197
 47198
 47199
 47200
 47201
 47202
 47203
 47204
 47205
 47206
 47207
 47208
 47209
 47210
 47211
 47212
 47213
 47214
 47215
 47216
 47217
 47218
 47219
 47220
 47221
 47222
 47223
 47224
 47225
 47226
 47227
 47228
 47229
 47230
 47231
 47232
 47233
 47234
 47235
 47236
 47237
 47238
 47239
 47240
 47241
 47242
 47243
 47244
 47245
 47246
 47247
 47248
 47249
 47250
 47251
 47252
 47253
 47254
 47255
 47256
 47257
 47258
 47259
 47260
 47261
 47262
 47263
 47264
 47265
 47266
 47267
 47268
 47269
 47270
 47271
 47272
 47273
 47274
 47275
 47276
 47277
 47278
 47279
 47280
 47281
 47282
 47283
 47284
 47285
 47286
 47287
 47288
 47289
 47290
 47291
 47292
 47293
 47294
 47295
 47296
 47297
 47298
 47299
 47300
 47301
 47302
 47303
 47304
 47305
 47306
 47307
 47308
 47309
 47310
 47311
 47312
 47313
 47314
 47315
 47316
 47317
 47318
 47319
 47320
 47321
 47322
 47323
 47324
 47325
 47326
 47327
 47328
 47329
 47330
 47331
 47332
 47333
 47334
 47335
 47336
 47337
 47338
 47339
 47340
 47341
 47342
 47343
 47344
 47345
 47346
 47347
 47348
 47349
 47350
 47351
 47352
 47353
 47354
 47355
 47356
 47357
 47358
 47359
 47360
 47361
 47362
 47363
 47364
 47365
 47366
 47367
 47368
 47369
 47370
 47371
 47372
 47373
 47374
 47375
 47376
 47377
 47378
 47379
 47380
 47381
 47382
 47383
 47384
 47385
 47386
 47387
 47388
 47389
 47390
 47391
 47392
 47393
 47394
 47395
 47396
 47397
 47398
 47399
 47400
 47401
 47402
 47403
 47404
 47405
 47406
 47407
 47408
 47409
 47410
 47411
 47412
 47413
 47414
 47415
 47416
 47417
 47418
 47419
 47420
 47421
 47422
 47423
 47424
 47425
 47426
 47427
 47428
 47429
 47430
 47431
 47432
 47433
 47434
 47435
 47436
 47437
 47438
 47439
 47440
 47441
 47442
 47443
 47444
 47445
 47446
 47447
 47448
 47449
 47450
 47451
 47452
 47453
 47454
 47455
 47456
 47457
 47458
 47459
 47460
 47461
 47462
 47463
 47464
 47465
 47466
 47467
 47468
 47469
 47470
 47471
 47472
 47473
 47474
 47475
 47476
 47477
 47478
 47479
 47480
 47481
 47482
 47483
 47484
 47485
 47486
 47487
 47488
 47489
 47490
 47491
 47492
 47493
 47494
 47495
 47496
 47497
 47498
 47499
 47500
 47501
 47502
 47503
 47504
 47505
 47506
 47507
 47508
 47509
 47510
 47511
 47512
 47513
 47514
 47515
 47516
 47517
 47518
 47519
 47520
 47521
 47522
 47523
 47524
 47525
 47526
 47527
 47528
 47529
 47530
 47531
 47532
 47533
 47534
 47535
 47536
 47537
 47538
 47539
 47540
 47541
 47542
 47543
 47544
 47545
 47546
 47547
 47548
 47549
 47550
 47551
 47552
 47553
 47554
 47555
 47556
 47557
 47558
 47559
 47560
 47561
 47562
 47563
 47564
 47565
 47566
 47567
 47568
 47569
 47570
 47571
 47572
 47573
 47574
 47575
 47576
 47577
 47578
 47579
 47580
 47581
 47582
 47583
 47584
 47585
 47586
 47587
 47588
 47589
 47590
 47591
 47592
 47593
 47594
 47595
 47596
 47597
 47598
 47599
 47600
 47601
 47602
 47603
 47604
 47605
 47606
 47607
 47608
 47609
 47610
 47611
 47612
 47613
 47614
 47615
 47616
 47617
 47618
 47619
 47620
 47621
 47622
 47623
 47624
 47625
 47626
 47627
 47628
 47629
 47630
 47631
 47632
 47633
 47634
 47635
 47636
 47637
 47638
 47639
 47640
 47641
 47642
 47643
 47644
 47645
 47646
 47647
 47648
 47649
 47650
 47651
 47652
 47653
 47654
 47655
 47656
 47657
 47658
 47659
 47660
 47661
 47662
 47663
 47664
 47665
 47666
 47667
 47668
 47669
 47670
 47671
 47672
 47673
 47674
 47675
 47676
 47677
 47678
 47679
 47680
 47681
 47682
 47683
 47684
 47685
 47686
 47687
 47688
 47689
 47690
 47691
 47692
 47693
 47694
 47695
 47696
 47697
 47698
 47699
 47700
 47701
 47702
 47703
 47704
 47705
 47706
 47707
 47708
 47709
 47710
 47711
 47712
 47713
 47714
 47715
 47716
 47717
 47718
 47719
 47720
 47721
 47722
 47723
 47724
 47725
 47726
 47727
 47728
 47729
 47730
 47731
 47732
 47733
 47734
 47735
 47736
 47737
 47738
 47739
 47740
 47741
 47742
 47743
 47744
 47745
 47746
 47747
 47748
 47749
 47750
 47751
 47752
 47753
 47754
 47755
 47756
 47757
 47758
 47759
 47760
 47761
 47762
 47763
 47764
 47765
 47766
 47767
 47768
 47769
 47770
 47771
 47772
 47773
 47774
 47775
 47776
 47777
 47778
 47779
 47780
 47781
 47782
 47783
 47784
 47785
 47786
 47787
 47788
 47789
 47790
 47791
 47792
 47793
 47794
 47795
 47796
 47797
 47798
 47799
 47800
 47801
 47802
 47803
 47804
 47805
 47806
 47807
 47808
 47809
 47810
 47811
 47812
 47813
 47814
 47815
 47816
 47817
 47818
 47819
 47820
 47821
 47822
 47823
 47824
 47825
 47826
 47827
 47828
 47829
 47830
 47831
 47832
 47833
 47834
 47835
 47836
 47837
 47838
 47839
 47840
 47841
 47842
 47843
 47844
 47845
 47846
 47847
 47848
 47849
 47850
 47851
 47852
 47853
 47854
 47855
 47856
 47857
 47858
 47859
 47860
 47861
 47862
 47863
 47864
 47865
 47866
 47867
 47868
 47869
 47870
 47871
 47872
 47873
 47874
 47875
 47876
 47877
 47878
 47879
 47880
 47881
 47882
 47883
 47884
 47885
 47886
 47887
 47888
 47889
 47890
 47891
 47892
 47893
 47894
 47895
 47896
 47897
 47898
 47899
 47900
 47901
 47902
 47903
 47904
 47905
 47906
 47907
 47908
 47909
 47910
 47911
 47912
 47913
 47914
 47915
 47916
 47917
 47918
 47919
 47920
 47921
 47922
 47923
 47924
 47925
 47926
 47927
 47928
 47929
 47930
 47931
 47932
 47933
 47934
 47935
 47936
 47937
 47938
 47939
 47940
 47941
 47942
 47943
 47944
 47945
 47946
 47947
 47948
 47949
 47950
 47951
 47952
 47953
 47954
 47955
 47956
 47957
 47958
 47959
 47960
 47961
 47962
 47963
 47964
 47965
 47966
 47967
 47968
 47969
 47970
 47971
 47972
 47973
 47974
 47975
 47976
 47977
 47978
 47979
 47980
 47981
 47982
 47983
 47984
 47985
 47986
 47987
 47988
 47989
 47990
 47991
 47992
 47993
 47994
 47995
 47996
 47997
 47998
 47999
 48000
 48001
 48002
 48003
 48004
 48005
 48006
 48007
 48008
 48009
 48010
 48011
 48012
 48013
 48014
 48015
 48016
 48017
 48018
 48019
 48020
 48021
 48022
 48023
 48024
 48025
 48026
 48027
 48028
 48029
 48030
 48031
 48032
 48033
 48034
 48035
 48036
 48037
 48038
 48039
 48040
 48041
 48042
 48043
 48044
 48045
 48046
 48047
 48048
 48049
 48050
 48051
 48052
 48053
 48054
 48055
 48056
 48057
 48058
 48059
 48060
 48061
 48062
 48063
 48064
 48065
 48066
 48067
 48068
 48069
 48070
 48071
 48072
 48073
 48074
 48075
 48076
 48077
 48078
 48079
 48080
 48081
 48082
 48083
 48084
 48085
 48086
 48087
 48088
 48089
 48090
 48091
 48092
 48093
 48094
 48095
 48096
 48097
 48098
 48099
 48100
 48101
 48102
 48103
 48104
 48105
 48106
 48107
 48108
 48109
 48110
 48111
 48112
 48113
 48114
 48115
 48116
 48117
 48118
 48119
 48120
 48121
 48122
 48123
 48124
 48125
 48126
 48127
 48128
 48129
 48130
 48131
 48132
 48133
 48134
 48135
 48136
 48137
 48138
 48139
 48140
 48141
 48142
 48143
 48144
 48145
 48146
 48147
 48148
 48149
 48150
 48151
 48152
 48153
 48154
 48155
 48156
 48157
 48158
 48159
 48160
 48161
 48162
 48163
 48164
 48165
 48166
 48167
 48168
 48169
 48170
 48171
 48172
 48173
 48174
 48175
 48176
 48177
 48178
 48179
 48180
 48181
 48182
 48183
 48184
 48185
 48186
 48187
 48188
 48189
 48190
 48191
 48192
 48193
 48194
 48195
 48196
 48197
 48198
 48199
 48200
 48201
 48202
 48203
 48204
 48205
 48206
 48207
 48208
 48209
 48210
 48211
 48212
 48213
 48214
 48215
 48216
 48217
 48218
 48219
 48220
 48221
 48222
 48223
 48224
 48225
 48226
 48227
 48228
 48229
 48230
 48231
 48232
 48233
 48234
 48235
 48236
 48237
 48238
 48239
 48240
 48241
 48242
 48243
 48244
 48245
 48246
 48247
 48248
 48249
 48250
 48251
 48252
 48253
 48254
 48255
 48256
 48257
 48258
 48259
 48260
 48261
 48262
 48263
 48264
 48265
 48266
 48267
 48268
 48269
 48270
 48271
 48272
 48273
 48274
 48275
 48276
 48277
 48278
 48279
 48280
 48281
 48282
 48283
 48284
 48285
 48286
 48287
 48288
 48289
 48290
 48291
 48292
 48293
 48294
 48295
 48296
 48297
 48298
 48299
 48300
 48301
 48302
 48303
 48304
 48305
 48306
 48307
 48308
 48309
 48310
 48311
 48312
 48313
 48314
 48315
 48316
 48317
 48318
 48319
 48320
 48321
 48322
 48323
 48324
 48325
 48326
 48327
 48328
 48329
 48330
 48331
 48332
 48333
 48334
 48335
 48336
 48337
 48338
 48339
 48340
 48341
 48342
 48343
 48344
 48345
 48346
 48347
 48348
 48349
 48350
 48351
 48352
 48353
 48354
 48355
 48356
 48357
 48358
 48359
 48360
 48361
 48362
 48363
 48364
 48365
 48366
 48367
 48368
 48369
 48370
 48371
 48372
 48373
 48374
 48375
 48376
 48377
 48378
 48379
 48380
 48381
 48382
 48383
 48384
 48385
 48386
 48387
 48388
 48389
 48390
 48391
 48392
 48393
 48394
 48395
 48396
 48397
 48398
 48399
 48400
 48401
 48402
 48403
 48404
 48405
 48406
 48407
 48408
 48409
 48410
 48411
 48412
 48413
 48414
 48415
 48416
 48417
 48418
 48419
 48420
 48421
 48422
 48423
 48424
 48425
 48426
 48427
 48428
 48429
 48430
 48431
 48432
 48433
 48434
 48435
 48436
 48437
 48438
 48439
 48440
 48441
 48442
 48443
 48444
 48445
 48446
 48447
 48448
 48449
 48450
 48451
 48452
 48453
 48454
 48455
 48456
 48457
 48458
 48459
 48460
 48461
 48462
 48463
 48464
 48465
 48466
 48467
 48468
 48469
 48470
 48471
 48472
 48473
 48474
 48475
 48476
 48477
 48478
 48479
 48480
 48481
 48482
 48483
 48484
 48485
 48486
 48487
 48488
 48489
 48490
 48491
 48492
 48493
 48494
 48495
 48496
 48497
 48498
 48499
 48500
 48501
 48502
 48503
 48504
 48505
 48506
 48507
 48508
 48509
 48510
 48511
 48512
 48513
 48514
 48515
 48516
 48517
 48518
 48519
 48520
 48521
 48522
 48523
 48524
 48525
 48526
 48527
 48528
 48529
 48530
 48531
 48532
 48533
 48534
 48535
 48536
 48537
 48538
 48539
 48540
 48541
 48542
 48543
 48544
 48545
 48546
 48547
 48548
 48549
 48550
 48551
 48552
 48553
 48554
 48555
 48556
 48557
 48558
 48559
 48560
 48561
 48562
 48563
 48564
 48565
 48566
 48567
 48568
 48569
 48570
 48571
 48572
 48573
 48574
 48575
 48576
 48577
 48578
 48579
 48580
 48581
 48582
 48583
 48584
 48585
 48586
 48587
 48588
 48589
 48590
 48591
 48592
 48593
 48594
 48595
 48596
 48597
 48598
 48599
 48600
 48601
 48602
 48603
 48604
 48605
 48606
 48607
 48608
 48609
 48610
 48611
 48612
 48613
 48614
 48615
 48616
 48617
 48618
 48619
 48620
 48621
 48622
 48623
 48624
 48625
 48626
 48627
 48628
 48629
 48630
 48631
 48632
 48633
 48634
 48635
 48636
 48637
 48638
 48639
 48640
 48641
 48642
 48643
 48644
 48645
 48646
 48647
 48648
 48649
 48650
 48651
 48652
 48653
 48654
 48655
 48656
 48657
 48658
 48659
 48660
 48661
 48662
 48663
 48664
 48665
 48666
 48667
 48668
 48669
 48670
 48671
 48672
 48673
 48674
 48675
 48676
 48677
 48678
 48679
 48680
 48681
 48682
 48683
 48684
 48685
 48686
 48687
 48688
 48689
 48690
 48691
 48692
 48693
 48694
 48695
 48696
 48697
 48698
 48699
 48700
 48701
 48702
 48703
 48704
 48705
 48706
 48707
 48708
 48709
 48710
 48711
 48712
 48713
 48714
 48715
 48716
 48717
 48718
 48719
 48720
 48721
 48722
 48723
 48724
 48725
 48726
 48727
 48728
 48729
 48730
 48731
 48732
 48733
 48734
 48735
 48736
 48737
 48738
 48739
 48740
 48741
 48742
 48743
 48744
 48745
 48746
 48747
 48748
 48749
 48750
 48751
 48752
 48753
 48754
 48755
 48756
 48757
 48758
 48759
 48760
 48761
 48762
 48763
 48764
 48765
 48766
 48767
 48768
 48769
 48770
 48771
 48772
 48773
 48774
 48775
 48776
 48777
 48778
 48779
 48780
 48781
 48782
 48783
 48784
 48785
 48786
 48787
 48788
 48789
 48790
 48791
 48792
 48793
 48794
 48795
 48796
 48797
 48798
 48799
 48800
 48801
 48802
 48803
 48804
 48805
 48806
 48807
 48808
 48809
 48810
 48811
 48812
 48813
 48814
 48815
 48816
 48817
 48818
 48819
 48820
 48821
 48822
 48823
 48824
 48825
 48826
 48827
 48828
 48829
 48830
 48831
 48832
 48833
 48834
 48835
 48836
 48837
 48838
 48839
 48840
 48841
 48842
 48843
 48844
 48845
 48846
 48847
 48848
 48849
 48850
 48851
 48852
 48853
 48854
 48855
 48856
 48857
 48858
 48859
 48860
 48861
 48862
 48863
 48864
 48865
 48866
 48867
 48868
 48869
 48870
 48871
 48872
 48873
 48874
 48875
 48876
 48877
 48878
 48879
 48880
 48881
 48882
 48883
 48884
 48885
 48886
 48887
 48888
 48889
 48890
 48891
 48892
 48893
 48894
 48895
 48896
 48897
 48898
 48899
 48900
 48901
 48902
 48903
 48904
 48905
 48906
 48907
 48908
 48909
 48910
 48911
 48912
 48913
 48914
 48915
 48916
 48917
 48918
 48919
 48920
 48921
 48922
 48923
 48924
 48925
 48926
 48927
 48928
 48929
 48930
 48931
 48932
 48933
 48934
 48935
 48936
 48937
 48938
 48939
 48940
 48941
 48942
 48943
 48944
 48945
 48946
 48947
 48948
 48949
 48950
 48951
 48952
 48953
 48954
 48955
 48956
 48957
 48958
 48959
 48960
 48961
 48962
 48963
 48964
 48965
 48966
 48967
 48968
 48969
 48970
 48971
 48972
 48973
 48974
 48975
 48976
 48977
 48978
 48979
 48980
 48981
 48982
 48983
 48984
 48985
 48986
 48987
 48988
 48989
 48990
 48991
 48992
 48993
 48994
 48995
 48996
 48997
 48998
 48999
 49000
 49001
 49002
 49003
 49004
 49005
 49006
 49007
 49008
 49009
 49010
 49011
 49012
 49013
 49014
 49015
 49016
 49017
 49018
 49019
 49020
 49021
 49022
 49023
 49024
 49025
 49026
 49027
 49028
 49029
 49030
 49031
 49032
 49033
 49034
 49035
 49036
 49037
 49038
 49039
 49040
 49041
 49042
 49043
 49044
 49045
 49046
 49047
 49048
 49049
 49050
 49051
 49052
 49053
 49054
 49055
 49056
 49057
 49058
 49059
 49060
 49061
 49062
 49063
 49064
 49065
 49066
 49067
 49068
 49069
 49070
 49071
 49072
 49073
 49074
 49075
 49076
 49077
 49078
 49079
 49080
 49081
 49082
 49083
 49084
 49085
 49086
 49087
 49088
 49089
 49090
 49091
 49092
 49093
 49094
 49095
 49096
 49097
 49098
 49099
 49100
 49101
 49102
 49103
 49104
 49105
 49106
 49107
 49108
 49109
 49110
 49111
 49112
 49113
 49114
 49115
 49116
 49117
 49118
 49119
 49120
 49121
 49122
 49123
 49124
 49125
 49126
 49127
 49128
 49129
 49130
 49131
 49132
 49133
 49134
 49135
 49136
 49137
 49138
 49139
 49140
 49141
 49142
 49143
 49144
 49145
 49146
 49147
 49148
 49149
 49150
 49151
 49152
 49153
 49154
 49155
 49156
 49157
 49158
 49159
 49160
 49161
 49162
 49163
 49164
 49165
 49166
 49167
 49168
 49169
 49170
 49171
 49172
 49173
 49174
 49175
 49176
 49177
 49178
 49179
 49180
 49181
 49182
 49183
 49184
 49185
 49186
 49187
 49188
 49189
 49190
 49191
 49192
 49193
 49194
 49195
 49196
 49197
 49198
 49199
 49200
 49201
 49202
 49203
 49204
 49205
 49206
 49207
 49208
 49209
 49210
 49211
 49212
 49213
 49214
 49215
 49216
 49217
 49218
 49219
 49220
 49221
 49222
 49223
 49224
 49225
 49226
 49227
 49228
 49229
 49230
 49231
 49232
 49233
 49234
 49235
 49236
 49237
 49238
 49239
 49240
 49241
 49242
 49243
 49244
 49245
 49246
 49247
 49248
 49249
 49250
 49251
 49252
 49253
 49254
 49255
 49256
 49257
 49258
 49259
 49260
 49261
 49262
 49263
 49264
 49265
 49266
 49267
 49268
 49269
 49270
 49271
 49272
 49273
 49274
 49275
 49276
 49277
 49278
 49279
 49280
 49281
 49282
 49283
 49284
 49285
 49286
 49287
 49288
 49289
 49290
 49291
 49292
 49293
 49294
 49295
 49296
 49297
 49298
 49299
 49300
 49301
 49302
 49303
 49304
 49305
 49306
 49307
 49308
 49309
 49310
 49311
 49312
 49313
 49314
 49315
 49316
 49317
 49318
 49319
 49320
 49321
 49322
 49323
 49324
 49325
 49326
 49327
 49328
 49329
 49330
 49331
 49332
 49333
 49334
 49335
 49336
 49337
 49338
 49339
 49340
 49341
 49342
 49343
 49344
 49345
 49346
 49347
 49348
 49349
 49350
 49351
 49352
 49353
 49354
 49355
 49356
 49357
 49358
 49359
 49360
 49361
 49362
 49363
 49364
 49365
 49366
 49367
 49368
 49369
 49370
 49371
 49372
 49373
 49374
 49375
 49376
 49377
 49378
 49379
 49380
 49381
 49382
 49383
 49384
 49385
 49386
 49387
 49388
 49389
 49390
 49391
 49392
 49393
 49394
 49395
 49396
 49397
 49398
 49399
 49400
 49401
 49402
 49403
 49404
 49405
 49406
 49407
 49408
 49409
 49410
 49411
 49412
 49413
 49414
 49415
 49416
 49417
 49418
 49419
 49420
 49421
 49422
 49423
 49424
 49425
 49426
 49427
 49428
 49429
 49430
 49431
 49432
 49433
 49434
 49435
 49436
 49437
 49438
 49439
 49440
 49441
 49442
 49443
 49444
 49445
 49446
 49447
 49448
 49449
 49450
 49451
 49452
 49453
 49454
 49455
 49456
 49457
 49458
 49459
 49460
 49461
 49462
 49463
 49464
 49465
 49466
 49467
 49468
 49469
 49470
 49471
 49472
 49473
 49474
 49475
 49476
 49477
 49478
 49479
 49480
 49481
 49482
 49483
 49484
 49485
 49486
 49487
 49488
 49489
 49490
 49491
 49492
 49493
 49494
 49495
 49496
 49497
 49498
 49499
 49500
 49501
 49502
 49503
 49504
 49505
 49506
 49507
 49508
 49509
 49510
 49511
 49512
 49513
 49514
 49515
 49516
 49517
 49518
 49519
 49520
 49521
 49522
 49523
 49524
 49525
 49526
 49527
 49528
 49529
 49530
 49531
 49532
 49533
 49534
 49535
 49536
 49537
 49538
 49539
 49540
 49541
 49542
 49543
 49544
 49545
 49546
 49547
 49548
 49549
 49550
 49551
 49552
 49553
 49554
 49555
 49556
 49557
 49558
 49559
 49560
 49561
 49562
 49563
 49564
 49565
 49566
 49567
 49568
 49569
 49570
 49571
 49572
 49573
 49574
 49575
 49576
 49577
 49578
 49579
 49580
 49581
 49582
 49583
 49584
 49585
 49586
 49587
 49588
 49589
 49590
 49591
 49592
 49593
 49594
 49595
 49596
 49597
 49598
 49599
 49600
 49601
 49602
 49603
 49604
 49605
 49606
 49607
 49608
 49609
 49610
 49611
 49612
 49613
 49614
 49615
 49616
 49617
 49618
 49619
 49620
 49621
 49622
 49623
 49624
 49625
 49626
 49627
 49628
 49629
 49630
 49631
 49632
 49633
 49634
 49635
 49636
 49637
 49638
 49639
 49640
 49641
 49642
 49643
 49644
 49645
 49646
 49647
 49648
 49649
 49650
 49651
 49652
 49653
 49654
 49655
 49656
 49657
 49658
 49659
 49660
 49661
 49662
 49663
 49664
 49665
 49666
 49667
 49668
 49669
 49670
 49671
 49672
 49673
 49674
 49675
 49676
 49677
 49678
 49679
 49680
 49681
 49682
 49683
 49684
 49685
 49686
 49687
 49688
 49689
 49690
 49691
 49692
 49693
 49694
 49695
 49696
 49697
 49698
 49699
 49700
 49701
 49702
 49703
 49704
 49705
 49706
 49707
 49708
 49709
 49710
 49711
 49712
 49713
 49714
 49715
 49716
 49717
 49718
 49719
 49720
 49721
 49722
 49723
 49724
 49725
 49726
 49727
 49728
 49729
 49730
 49731
 49732
 49733
 49734
 49735
 49736
 49737
 49738
 49739
 49740
 49741
 49742
 49743
 49744
 49745
 49746
 49747
 49748
 49749
 49750
 49751
 49752
 49753
 49754
 49755
 49756
 49757
 49758
 49759
 49760
 49761
 49762
 49763
 49764
 49765
 49766
 49767
 49768
 49769
 49770
 49771
 49772
 49773
 49774
 49775
 49776
 49777
 49778
 49779
 49780
 49781
 49782
 49783
 49784
 49785
 49786
 49787
 49788
 49789
 49790
 49791
 49792
 49793
 49794
 49795
 49796
 49797
 49798
 49799
 49800
 49801
 49802
 49803
 49804
 49805
 49806
 49807
 49808
 49809
 49810
 49811
 49812
 49813
 49814
 49815
 49816
 49817
 49818
 49819
 49820
 49821
 49822
 49823
 49824
 49825
 49826
 49827
 49828
 49829
 49830
 49831
 49832
 49833
 49834
 49835
 49836
 49837
 49838
 49839
 49840
 49841
 49842
 49843
 49844
 49845
 49846
 49847
 49848
 49849
 49850
 49851
 49852
 49853
 49854
 49855
 49856
 49857
 49858
 49859
 49860
 49861
 49862
 49863
 49864
 49865
 49866
 49867
 49868
 49869
 49870
 49871
 49872
 49873
 49874
 49875
 49876
 49877
 49878
 49879
 49880
 49881
 49882
 49883
 49884
 49885
 49886
 49887
 49888
 49889
 49890
 49891
 49892
 49893
 49894
 49895
 49896
 49897
 49898
 49899
 49900
 49901
 49902
 49903
 49904
 49905
 49906
 49907
 49908
 49909
 49910
 49911
 49912
 49913
 49914
 49915
 49916
 49917
 49918
 49919
 49920
 49921
 49922
 49923
 49924
 49925
 49926
 49927
 49928
 49929
 49930
 49931
 49932
 49933
 49934
 49935
 49936
 49937
 49938
 49939
 49940
 49941
 49942
 49943
 49944
 49945
 49946
 49947
 49948
 49949
 49950
 49951
 49952
 49953
 49954
 49955
 49956
 49957
 49958
 49959
 49960
 49961
 49962
 49963
 49964
 49965
 49966
 49967
 49968
 49969
 49970
 49971
 49972
 49973
 49974
 49975
 49976
 49977
 49978
 49979
 49980
 49981
 49982
 49983
 49984
 49985
 49986
 49987
 49988
 49989
 49990
 49991
 49992
 49993
 49994
 49995
 49996
 49997
 49998
 49999
 50000
 50001
 50002
 50003
 50004
 50005
 50006
 50007
 50008
 50009
 50010
 50011
 50012
 50013
 50014
 50015
 50016
 50017
 50018
 50019
 50020
 50021
 50022
 50023
 50024
 50025
 50026
 50027
 50028
 50029
 50030
 50031
 50032
 50033
 50034
 50035
 50036
 50037
 50038
 50039
 50040
 50041
 50042
 50043
 50044
 50045
 50046
 50047
 50048
 50049
 50050
 50051
 50052
 50053
 50054
 50055
 50056
 50057
 50058
 50059
 50060
 50061
 50062
 50063
 50064
 50065
 50066
 50067
 50068
 50069
 50070
 50071
 50072
 50073
 50074
 50075
 50076
 50077
 50078
 50079
 50080
 50081
 50082
 50083
 50084
 50085
 50086
 50087
 50088
 50089
 50090
 50091
 50092
 50093
 50094
 50095
 50096
 50097
 50098
 50099
 50100
 50101
 50102
 50103
 50104
 50105
 50106
 50107
 50108
 50109
 50110
 50111
 50112
 50113
 50114
 50115
 50116
 50117
 50118
 50119
 50120
 50121
 50122
 50123
 50124
 50125
 50126
 50127
 50128
 50129
 50130
 50131
 50132
 50133
 50134
 50135
 50136
 50137
 50138
 50139
 50140
 50141
 50142
 50143
 50144
 50145
 50146
 50147
 50148
 50149
 50150
 50151
 50152
 50153
 50154
 50155
 50156
 50157
 50158
 50159
 50160
 50161
 50162
 50163
 50164
 50165
 50166
 50167
 50168
 50169
 50170
 50171
 50172
 50173
 50174
 50175
 50176
 50177
 50178
 50179
 50180
 50181
 50182
 50183
 50184
 50185
 50186
 50187
 50188
 50189
 50190
 50191
 50192
 50193
 50194
 50195
 50196
 50197
 50198
 50199
 50200
 50201
 50202
 50203
 50204
 50205
 50206
 50207
 50208
 50209
 50210
 50211
 50212
 50213
 50214
 50215
 50216
 50217
 50218
 50219
 50220
 50221
 50222
 50223
 50224
 50225
 50226
 50227
 50228
 50229
 50230
 50231
 50232
 50233
 50234
 50235
 50236
 50237
 50238
 50239
 50240
 50241
 50242
 50243
 50244
 50245
 50246
 50247
 50248
 50249
 50250
 50251
 50252
 50253
 50254
 50255
 50256
 50257
 50258
 50259
 50260
 50261
 50262
 50263
 50264
 50265
 50266
 50267
 50268
 50269
 50270
 50271
 50272
 50273
 50274
 50275
 50276
 50277
 50278
 50279
 50280
 50281
 50282
 50283
 50284
 50285
 50286
 50287
 50288
 50289
 50290
 50291
 50292
 50293
 50294
 50295
 50296
 50297
 50298
 50299
 50300
 50301
 50302
 50303
 50304
 50305
 50306
 50307
 50308
 50309
 50310
 50311
 50312
 50313
 50314
 50315
 50316
 50317
 50318
 50319
 50320
 50321
 50322
 50323
 50324
 50325
 50326
 50327
 50328
 50329
 50330
 50331
 50332
 50333
 50334
 50335
 50336
 50337
 50338
 50339
 50340
 50341
 50342
 50343
 50344
 50345
 50346
 50347
 50348
 50349
 50350
 50351
 50352
 50353
 50354
 50355
 50356
 50357
 50358
 50359
 50360
 50361
 50362
 50363
 50364
 50365
 50366
 50367
 50368
 50369
 50370
 50371
 50372
 50373
 50374
 50375
 50376
 50377
 50378
 50379
 50380
 50381
 50382
 50383
 50384
 50385
 50386
 50387
 50388
 50389
 50390
 50391
 50392
 50393
 50394
 50395
 50396
 50397
 50398
 50399
 50400
 50401
 50402
 50403
 50404
 50405
 50406
 50407
 50408
 50409
 50410
 50411
 50412
 50413
 50414
 50415
 50416
 50417
 50418
 50419
 50420
 50421
 50422
 50423
 50424
 50425
 50426
 50427
 50428
 50429
 50430
 50431
 50432
 50433
 50434
 50435
 50436
 50437
 50438
 50439
 50440
 50441
 50442
 50443
 50444
 50445
 50446
 50447
 50448
 50449
 50450
 50451
 50452
 50453
 50454
 50455
 50456
 50457
 50458
 50459
 50460
 50461
 50462
 50463
 50464
 50465
 50466
 50467
 50468
 50469
 50470
 50471
 50472
 50473
 50474
 50475
 50476
 50477
 50478
 50479
 50480
 50481
 50482
 50483
 50484
 50485
 50486
 50487
 50488
 50489
 50490
 50491
 50492
 50493
 50494
 50495
 50496
 50497
 50498
 50499
 50500
 50501
 50502
 50503
 50504
 50505
 50506
 50507
 50508
 50509
 50510
 50511
 50512
 50513
 50514
 50515
 50516
 50517
 50518
 50519
 50520
 50521
 50522
 50523
 50524
 50525
 50526
 50527
 50528
 50529
 50530
 50531
 50532
 50533
 50534
 50535
 50536
 50537
 50538
 50539
 50540
 50541
 50542
 50543
 50544
 50545
 50546
 50547
 50548
 50549
 50550
 50551
 50552
 50553
 50554
 50555
 50556
 50557
 50558
 50559
 50560
 50561
 50562
 50563
 50564
 50565
 50566
 50567
 50568
 50569
 50570
 50571
 50572
 50573
 50574
 50575
 50576
 50577
 50578
 50579
 50580
 50581
 50582
 50583
 50584
 50585
 50586
 50587
 50588
 50589
 50590
 50591
 50592
 50593
 50594
 50595
 50596
 50597
 50598
 50599
 50600
 50601
 50602
 50603
 50604
 50605
 50606
 50607
 50608
 50609
 50610
 50611
 50612
 50613
 50614
 50615
 50616
 50617
 50618
 50619
 50620
 50621
 50622
 50623
 50624
 50625
 50626
 50627
 50628
 50629
 50630
 50631
 50632
 50633
 50634
 50635
 50636
 50637
 50638
 50639
 50640
 50641
 50642
 50643
 50644
 50645
 50646
 50647
 50648
 50649
 50650
 50651
 50652
 50653
 50654
 50655
 50656
 50657
 50658
 50659
 50660
 50661
 50662
 50663
 50664
 50665
 50666
 50667
 50668
 50669
 50670
 50671
 50672
 50673
 50674
 50675
 50676
 50677
 50678
 50679
 50680
 50681
 50682
 50683
 50684
 50685
 50686
 50687
 50688
 50689
 50690
 50691
 50692
 50693
 50694
 50695
 50696
 50697
 50698
 50699
 50700
 50701
 50702
 50703
 50704
 50705
 50706
 50707
 50708
 50709
 50710
 50711
 50712
 50713
 50714
 50715
 50716
 50717
 50718
 50719
 50720
 50721
 50722
 50723
 50724
 50725
 50726
 50727
 50728
 50729
 50730
 50731
 50732
 50733
 50734
 50735
 50736
 50737
 50738
 50739
 50740
 50741
 50742
 50743
 50744
 50745
 50746
 50747
 50748
 50749
 50750
 50751
 50752
 50753
 50754
 50755
 50756
 50757
 50758
 50759
 50760
 50761
 50762
 50763
 50764
 50765
 50766
 50767
 50768
 50769
 50770
 50771
 50772
 50773
 50774
 50775
 50776
 50777
 50778
 50779
 50780
 50781
 50782
 50783
 50784
 50785
 50786
 50787
 50788
 50789
 50790
 50791
 50792
 50793
 50794
 50795
 50796
 50797
 50798
 50799
 50800
 50801
 50802
 50803
 50804
 50805
 50806
 50807
 50808
 50809
 50810
 50811
 50812
 50813
 50814
 50815
 50816
 50817
 50818
 50819
 50820
 50821
 50822
 50823
 50824
 50825
 50826
 50827
 50828
 50829
 50830
 50831
 50832
 50833
 50834
 50835
 50836
 50837
 50838
 50839
 50840
 50841
 50842
 50843
 50844
 50845
 50846
 50847
 50848
 50849
 50850
 50851
 50852
 50853
 50854
 50855
 50856
 50857
 50858
 50859
 50860
 50861
 50862
 50863
 50864
 50865
 50866
 50867
 50868
 50869
 50870
 50871
 50872
 50873
 50874
 50875
 50876
 50877
 50878
 50879
 50880
 50881
 50882
 50883
 50884
 50885
 50886
 50887
 50888
 50889
 50890
 50891
 50892
 50893
 50894
 50895
 50896
 50897
 50898
 50899
 50900
 50901
 50902
 50903
 50904
 50905
 50906
 50907
 50908
 50909
 50910
 50911
 50912
 50913
 50914
 50915
 50916
 50917
 50918
 50919
 50920
 50921
 50922
 50923
 50924
 50925
 50926
 50927
 50928
 50929
 50930
 50931
 50932
 50933
 50934
 50935
 50936
 50937
 50938
 50939
 50940
 50941
 50942
 50943
 50944
 50945
 50946
 50947
 50948
 50949
 50950
 50951
 50952
 50953
 50954
 50955
 50956
 50957
 50958
 50959
 50960
 50961
 50962
 50963
 50964
 50965
 50966
 50967
 50968
 50969
 50970
 50971
 50972
 50973
 50974
 50975
 50976
 50977
 50978
 50979
 50980
 50981
 50982
 50983
 50984
 50985
 50986
 50987
 50988
 50989
 50990
 50991
 50992
 50993
 50994
 50995
 50996
 50997
 50998
 50999
 51000
 51001
 51002
 51003
 51004
 51005
 51006
 51007
 51008
 51009
 51010
 51011
 51012
 51013
 51014
 51015
 51016
 51017
 51018
 51019
 51020
 51021
 51022
 51023
 51024
 51025
 51026
 51027
 51028
 51029
 51030
 51031
 51032
 51033
 51034
 51035
 51036
 51037
 51038
 51039
 51040
 51041
 51042
 51043
 51044
 51045
 51046
 51047
 51048
 51049
 51050
 51051
 51052
 51053
 51054
 51055
 51056
 51057
 51058
 51059
 51060
 51061
 51062
 51063
 51064
 51065
 51066
 51067
 51068
 51069
 51070
 51071
 51072
 51073
 51074
 51075
 51076
 51077
 51078
 51079
 51080
 51081
 51082
 51083
 51084
 51085
 51086
 51087
 51088
 51089
 51090
 51091
 51092
 51093
 51094
 51095
 51096
 51097
 51098
 51099
 51100
 51101
 51102
 51103
 51104
 51105
 51106
 51107
 51108
 51109
 51110
 51111
 51112
 51113
 51114
 51115
 51116
 51117
 51118
 51119
 51120
 51121
 51122
 51123
 51124
 51125
 51126
 51127
 51128
 51129
 51130
 51131
 51132
 51133
 51134
 51135
 51136
 51137
 51138
 51139
 51140
 51141
 51142
 51143
 51144
 51145
 51146
 51147
 51148
 51149
 51150
 51151
 51152
 51153
 51154
 51155
 51156
 51157
 51158
 51159
 51160
 51161
 51162
 51163
 51164
 51165
 51166
 51167
 51168
 51169
 51170
 51171
 51172
 51173
 51174
 51175
 51176
 51177
 51178
 51179
 51180
 51181
 51182
 51183
 51184
 51185
 51186
 51187
 51188
 51189
 51190
 51191
 51192
 51193
 51194
 51195
 51196
 51197
 51198
 51199
 51200
 51201
 51202
 51203
 51204
 51205
 51206
 51207
 51208
 51209
 51210
 51211
 51212
 51213
 51214
 51215
 51216
 51217
 51218
 51219
 51220
 51221
 51222
 51223
 51224
 51225
 51226
 51227
 51228
 51229
 51230
 51231
 51232
 51233
 51234
 51235
 51236
 51237
 51238
 51239
 51240
 51241
 51242
 51243
 51244
 51245
 51246
 51247
 51248
 51249
 51250
 51251
 51252
 51253
 51254
 51255
 51256
 51257
 51258
 51259
 51260
 51261
 51262
 51263
 51264
 51265
 51266
 51267
 51268
 51269
 51270
 51271
 51272
 51273
 51274
 51275
 51276
 51277
 51278
 51279
 51280
 51281
 51282
 51283
 51284
 51285
 51286
 51287
 51288
 51289
 51290
 51291
 51292
 51293
 51294
 51295
 51296
 51297
 51298
 51299
 51300
 51301
 51302
 51303
 51304
 51305
 51306
 51307
 51308
 51309
 51310
 51311
 51312
 51313
 51314
 51315
 51316
 51317
 51318
 51319
 51320
 51321
 51322
 51323
 51324
 51325
 51326
 51327
 51328
 51329
 51330
 51331
 51332
 51333
 51334
 51335
 51336
 51337
 51338
 51339
 51340
 51341
 51342
 51343
 51344
 51345
 51346
 51347
 51348
 51349
 51350
 51351
 51352
 51353
 51354
 51355
 51356
 51357
 51358
 51359
 51360
 51361
 51362
 51363
 51364
 51365
 51366
 51367
 51368
 51369
 51370
 51371
 51372
 51373
 51374
 51375
 51376
 51377
 51378
 51379
 51380
 51381
 51382
 51383
 51384
 51385
 51386
 51387
 51388
 51389
 51390
 51391
 51392
 51393
 51394
 51395
 51396
 51397
 51398
 51399
 51400
 51401
 51402
 51403
 51404
 51405
 51406
 51407
 51408
 51409
 51410
 51411
 51412
 51413
 51414
 51415
 51416
 51417
 51418
 51419
 51420
 51421
 51422
 51423
 51424
 51425
 51426
 51427
 51428
 51429
 51430
 51431
 51432
 51433
 51434
 51435
 51436
 51437
 51438
 51439
 51440
 51441
 51442
 51443
 51444
 51445
 51446
 51447
 51448
 51449
 51450
 51451
 51452
 51453
 51454
 51455
 51456
 51457
 51458
 51459
 51460
 51461
 51462
 51463
 51464
 51465
 51466
 51467
 51468
 51469
 51470
 51471
 51472
 51473
 51474
 51475
 51476
 51477
 51478
 51479
 51480
 51481
 51482
 51483
 51484
 51485
 51486
 51487
 51488
 51489
 51490
 51491
 51492
 51493
 51494
 51495
 51496
 51497
 51498
 51499
 51500
 51501
 51502
 51503
 51504
 51505
 51506
 51507
 51508
 51509
 51510
 51511
 51512
 51513
 51514
 51515
 51516
 51517
 51518
 51519
 51520
 51521
 51522
 51523
 51524
 51525
 51526
 51527
 51528
 51529
 51530
 51531
 51532
 51533
 51534
 51535
 51536
 51537
 51538
 51539
 51540
 51541
 51542
 51543
 51544
 51545
 51546
 51547
 51548
 51549
 51550
 51551
 51552
 51553
 51554
 51555
 51556
 51557
 51558
 51559
 51560
 51561
 51562
 51563
 51564
 51565
 51566
 51567
 51568
 51569
 51570
 51571
 51572
 51573
 51574
 51575
 51576
 51577
 51578
 51579
 51580
 51581
 51582
 51583
 51584
 51585
 51586
 51587
 51588
 51589
 51590
 51591
 51592
 51593
 51594
 51595
 51596
 51597
 51598
 51599
 51600
 51601
 51602
 51603
 51604
 51605
 51606
 51607
 51608
 51609
 51610
 51611
 51612
 51613
 51614
 51615
 51616
 51617
 51618
 51619
 51620
 51621
 51622
 51623
 51624
 51625
 51626
 51627
 51628
 51629
 51630
 51631
 51632
 51633
 51634
 51635
 51636
 51637
 51638
 51639
 51640
 51641
 51642
 51643
 51644
 51645
 51646
 51647
 51648
 51649
 51650
 51651
 51652
 51653
 51654
 51655
 51656
 51657
 51658
 51659
 51660
 51661
 51662
 51663
 51664
 51665
 51666
 51667
 51668
 51669
 51670
 51671
 51672
 51673
 51674
 51675
 51676
 51677
 51678
 51679
 51680
 51681
 51682
 51683
 51684
 51685
 51686
 51687
 51688
 51689
 51690
 51691
 51692
 51693
 51694
 51695
 51696
 51697
 51698
 51699
 51700
 51701
 51702
 51703
 51704
 51705
 51706
 51707
 51708
 51709
 51710
 51711
 51712
 51713
 51714
 51715
 51716
 51717
 51718
 51719
 51720
 51721
 51722
 51723
 51724
 51725
 51726
 51727
 51728
 51729
 51730
 51731
 51732
 51733
 51734
 51735
 51736
 51737
 51738
 51739
 51740
 51741
 51742
 51743
 51744
 51745
 51746
 51747
 51748
 51749
 51750
 51751
 51752
 51753
 51754
 51755
 51756
 51757
 51758
 51759
 51760
 51761
 51762
 51763
 51764
 51765
 51766
 51767
 51768
 51769
 51770
 51771
 51772
 51773
 51774
 51775
 51776
 51777
 51778
 51779
 51780
 51781
 51782
 51783
 51784
 51785
 51786
 51787
 51788
 51789
 51790
 51791
 51792
 51793
 51794
 51795
 51796
 51797
 51798
 51799
 51800
 51801
 51802
 51803
 51804
 51805
 51806
 51807
 51808
 51809
 51810
 51811
 51812
 51813
 51814
 51815
 51816
 51817
 51818
 51819
 51820
 51821
 51822
 51823
 51824
 51825
 51826
 51827
 51828
 51829
 51830
 51831
 51832
 51833
 51834
 51835
 51836
 51837
 51838
 51839
 51840
 51841
 51842
 51843
 51844
 51845
 51846
 51847
 51848
 51849
 51850
 51851
 51852
 51853
 51854
 51855
 51856
 51857
 51858
 51859
 51860
 51861
 51862
 51863
 51864
 51865
 51866
 51867
 51868
 51869
 51870
 51871
 51872
 51873
 51874
 51875
 51876
 51877
 51878
 51879
 51880
 51881
 51882
 51883
 51884
 51885
 51886
 51887
 51888
 51889
 51890
 51891
 51892
 51893
 51894
 51895
 51896
 51897
 51898
 51899
 51900
 51901
 51902
 51903
 51904
 51905
 51906
 51907
 51908
 51909
 51910
 51911
 51912
 51913
 51914
 51915
 51916
 51917
 51918
 51919
 51920
 51921
 51922
 51923
 51924
 51925
 51926
 51927
 51928
 51929
 51930
 51931
 51932
 51933
 51934
 51935
 51936
 51937
 51938
 51939
 51940
 51941
 51942
 51943
 51944
 51945
 51946
 51947
 51948
 51949
 51950
 51951
 51952
 51953
 51954
 51955
 51956
 51957
 51958
 51959
 51960
 51961
 51962
 51963
 51964
 51965
 51966
 51967
 51968
 51969
 51970
 51971
 51972
 51973
 51974
 51975
 51976
 51977
 51978
 51979
 51980
 51981
 51982
 51983
 51984
 51985
 51986
 51987
 51988
 51989
 51990
 51991
 51992
 51993
 51994
 51995
 51996
 51997
 51998
 51999
 52000
 52001
 52002
 52003
 52004
 52005
 52006
 52007
 52008
 52009
 52010
 52011
 52012
 52013
 52014
 52015
 52016
 52017
 52018
 52019
 52020
 52021
 52022
 52023
 52024
 52025
 52026
 52027
 52028
 52029
 52030
 52031
 52032
 52033
 52034
 52035
 52036
 52037
 52038
 52039
 52040
 52041
 52042
 52043
 52044
 52045
 52046
 52047
 52048
 52049
 52050
 52051
 52052
 52053
 52054
 52055
 52056
 52057
 52058
 52059
 52060
 52061
 52062
 52063
 52064
 52065
 52066
 52067
 52068
 52069
 52070
 52071
 52072
 52073
 52074
 52075
 52076
 52077
 52078
 52079
 52080
 52081
 52082
 52083
 52084
 52085
 52086
 52087
 52088
 52089
 52090
 52091
 52092
 52093
 52094
 52095
 52096
 52097
 52098
 52099
 52100
 52101
 52102
 52103
 52104
 52105
 52106
 52107
 52108
 52109
 52110
 52111
 52112
 52113
 52114
 52115
 52116
 52117
 52118
 52119
 52120
 52121
 52122
 52123
 52124
 52125
 52126
 52127
 52128
 52129
 52130
 52131
 52132
 52133
 52134
 52135
 52136
 52137
 52138
 52139
 52140
 52141
 52142
 52143
 52144
 52145
 52146
 52147
 52148
 52149
 52150
 52151
 52152
 52153
 52154
 52155
 52156
 52157
 52158
 52159
 52160
 52161
 52162
 52163
 52164
 52165
 52166
 52167
 52168
 52169
 52170
 52171
 52172
 52173
 52174
 52175
 52176
 52177
 52178
 52179
 52180
 52181
 52182
 52183
 52184
 52185
 52186
 52187
 52188
 52189
 52190
 52191
 52192
 52193
 52194
 52195
 52196
 52197
 52198
 52199
 52200
 52201
 52202
 52203
 52204
 52205
 52206
 52207
 52208
 52209
 52210
 52211
 52212
 52213
 52214
 52215
 52216
 52217
 52218
 52219
 52220
 52221
 52222
 52223
 52224
 52225
 52226
 52227
 52228
 52229
 52230
 52231
 52232
 52233
 52234
 52235
 52236
 52237
 52238
 52239
 52240
 52241
 52242
 52243
 52244
 52245
 52246
 52247
 52248
 52249
 52250
 52251
 52252
 52253
 52254
 52255
 52256
 52257
 52258
 52259
 52260
 52261
 52262
 52263
 52264
 52265
 52266
 52267
 52268
 52269
 52270
 52271
 52272
 52273
 52274
 52275
 52276
 52277
 52278
 52279
 52280
 52281
 52282
 52283
 52284
 52285
 52286
 52287
 52288
 52289
 52290
 52291
 52292
 52293
 52294
 52295
 52296
 52297
 52298
 52299
 52300
 52301
 52302
 52303
 52304
 52305
 52306
 52307
 52308
 52309
 52310
 52311
 52312
 52313
 52314
 52315
 52316
 52317
 52318
 52319
 52320
 52321
 52322
 52323
 52324
 52325
 52326
 52327
 52328
 52329
 52330
 52331
 52332
 52333
 52334
 52335
 52336
 52337
 52338
 52339
 52340
 52341
 52342
 52343
 52344
 52345
 52346
 52347
 52348
 52349
 52350
 52351
 52352
 52353
 52354
 52355
 52356
 52357
 52358
 52359
 52360
 52361
 52362
 52363
 52364
 52365
 52366
 52367
 52368
 52369
 52370
 52371
 52372
 52373
 52374
 52375
 52376
 52377
 52378
 52379
 52380
 52381
 52382
 52383
 52384
 52385
 52386
 52387
 52388
 52389
 52390
 52391
 52392
 52393
 52394
 52395
 52396
 52397
 52398
 52399
 52400
 52401
 52402
 52403
 52404
 52405
 52406
 52407
 52408
 52409
 52410
 52411
 52412
 52413
 52414
 52415
 52416
 52417
 52418
 52419
 52420
 52421
 52422
 52423
 52424
 52425
 52426
 52427
 52428
 52429
 52430
 52431
 52432
 52433
 52434
 52435
 52436
 52437
 52438
 52439
 52440
 52441
 52442
 52443
 52444
 52445
 52446
 52447
 52448
 52449
 52450
 52451
 52452
 52453
 52454
 52455
 52456
 52457
 52458
 52459
 52460
 52461
 52462
 52463
 52464
 52465
 52466
 52467
 52468
 52469
 52470
 52471
 52472
 52473
 52474
 52475
 52476
 52477
 52478
 52479
 52480
 52481
 52482
 52483
 52484
 52485
 52486
 52487
 52488
 52489
 52490
 52491
 52492
 52493
 52494
 52495
 52496
 52497
 52498
 52499
 52500
 52501
 52502
 52503
 52504
 52505
 52506
 52507
 52508
 52509
 52510
 52511
 52512
 52513
 52514
 52515
 52516
 52517
 52518
 52519
 52520
 52521
 52522
 52523
 52524
 52525
 52526
 52527
 52528
 52529
 52530
 52531
 52532
 52533
 52534
 52535
 52536
 52537
 52538
 52539
 52540
 52541
 52542
 52543
 52544
 52545
 52546
 52547
 52548
 52549
 52550
 52551
 52552
 52553
 52554
 52555
 52556
 52557
 52558
 52559
 52560
 52561
 52562
 52563
 52564
 52565
 52566
 52567
 52568
 52569
 52570
 52571
 52572
 52573
 52574
 52575
 52576
 52577
 52578
 52579
 52580
 52581
 52582
 52583
 52584
 52585
 52586
 52587
 52588
 52589
 52590
 52591
 52592
 52593
 52594
 52595
 52596
 52597
 52598
 52599
 52600
 52601
 52602
 52603
 52604
 52605
 52606
 52607
 52608
 52609
 52610
 52611
 52612
 52613
 52614
 52615
 52616
 52617
 52618
 52619
 52620
 52621
 52622
 52623
 52624
 52625
 52626
 52627
 52628
 52629
 52630
 52631
 52632
 52633
 52634
 52635
 52636
 52637
 52638
 52639
 52640
 52641
 52642
 52643
 52644
 52645
 52646
 52647
 52648
 52649
 52650
 52651
 52652
 52653
 52654
 52655
 52656
 52657
 52658
 52659
 52660
 52661
 52662
 52663
 52664
 52665
 52666
 52667
 52668
 52669
 52670
 52671
 52672
 52673
 52674
 52675
 52676
 52677
 52678
 52679
 52680
 52681
 52682
 52683
 52684
 52685
 52686
 52687
 52688
 52689
 52690
 52691
 52692
 52693
 52694
 52695
 52696
 52697
 52698
 52699
 52700
 52701
 52702
 52703
 52704
 52705
 52706
 52707
 52708
 52709
 52710
 52711
 52712
 52713
 52714
 52715
 52716
 52717
 52718
 52719
 52720
 52721
 52722
 52723
 52724
 52725
 52726
 52727
 52728
 52729
 52730
 52731
 52732
 52733
 52734
 52735
 52736
 52737
 52738
 52739
 52740
 52741
 52742
 52743
 52744
 52745
 52746
 52747
 52748
 52749
 52750
 52751
 52752
 52753
 52754
 52755
 52756
 52757
 52758
 52759
 52760
 52761
 52762
 52763
 52764
 52765
 52766
 52767
 52768
 52769
 52770
 52771
 52772
 52773
 52774
 52775
 52776
 52777
 52778
 52779
 52780
 52781
 52782
 52783
 52784
 52785
 52786
 52787
 52788
 52789
 52790
 52791
 52792
 52793
 52794
 52795
 52796
 52797
 52798
 52799
 52800
 52801
 52802
 52803
 52804
 52805
 52806
 52807
 52808
 52809
 52810
 52811
 52812
 52813
 52814
 52815
 52816
 52817
 52818
 52819
 52820
 52821
 52822
 52823
 52824
 52825
 52826
 52827
 52828
 52829
 52830
 52831
 52832
 52833
 52834
 52835
 52836
 52837
 52838
 52839
 52840
 52841
 52842
 52843
 52844
 52845
 52846
 52847
 52848
 52849
 52850
 52851
 52852
 52853
 52854
 52855
 52856
 52857
 52858
 52859
 52860
 52861
 52862
 52863
 52864
 52865
 52866
 52867
 52868
 52869
 52870
 52871
 52872
 52873
 52874
 52875
 52876
 52877
 52878
 52879
 52880
 52881
 52882
 52883
 52884
 52885
 52886
 52887
 52888
 52889
 52890
 52891
 52892
 52893
 52894
 52895
 52896
 52897
 52898
 52899
 52900
 52901
 52902
 52903
 52904
 52905
 52906
 52907
 52908
 52909
 52910
 52911
 52912
 52913
 52914
 52915
 52916
 52917
 52918
 52919
 52920
 52921
 52922
 52923
 52924
 52925
 52926
 52927
 52928
 52929
 52930
 52931
 52932
 52933
 52934
 52935
 52936
 52937
 52938
 52939
 52940
 52941
 52942
 52943
 52944
 52945
 52946
 52947
 52948
 52949
 52950
 52951
 52952
 52953
 52954
 52955
 52956
 52957
 52958
 52959
 52960
 52961
 52962
 52963
 52964
 52965
 52966
 52967
 52968
 52969
 52970
 52971
 52972
 52973
 52974
 52975
 52976
 52977
 52978
 52979
 52980
 52981
 52982
 52983
 52984
 52985
 52986
 52987
 52988
 52989
 52990
 52991
 52992
 52993
 52994
 52995
 52996
 52997
 52998
 52999
 53000
 53001
 53002
 53003
 53004
 53005
 53006
 53007
 53008
 53009
 53010
 53011
 53012
 53013
 53014
 53015
 53016
 53017
 53018
 53019
 53020
 53021
 53022
 53023
 53024
 53025
 53026
 53027
 53028
 53029
 53030
 53031
 53032
 53033
 53034
 53035
 53036
 53037
 53038
 53039
 53040
 53041
 53042
 53043
 53044
 53045
 53046
 53047
 53048
 53049
 53050
 53051
 53052
 53053
 53054
 53055
 53056
 53057
 53058
 53059
 53060
 53061
 53062
 53063
 53064
 53065
 53066
 53067
 53068
 53069
 53070
 53071
 53072
 53073
 53074
 53075
 53076
 53077
 53078
 53079
 53080
 53081
 53082
 53083
 53084
 53085
 53086
 53087
 53088
 53089
 53090
 53091
 53092
 53093
 53094
 53095
 53096
 53097
 53098
 53099
 53100
 53101
 53102
 53103
 53104
 53105
 53106
 53107
 53108
 53109
 53110
 53111
 53112
 53113
 53114
 53115
 53116
 53117
 53118
 53119
 53120
 53121
 53122
 53123
 53124
 53125
 53126
 53127
 53128
 53129
 53130
 53131
 53132
 53133
 53134
 53135
 53136
 53137
 53138
 53139
 53140
 53141
 53142
 53143
 53144
 53145
 53146
 53147
 53148
 53149
 53150
 53151
 53152
 53153
 53154
 53155
 53156
 53157
 53158
 53159
 53160
 53161
 53162
 53163
 53164
 53165
 53166
 53167
 53168
 53169
 53170
 53171
 53172
 53173
 53174
 53175
 53176
 53177
 53178
 53179
 53180
 53181
 53182
 53183
 53184
 53185
 53186
 53187
 53188
 53189
 53190
 53191
 53192
 53193
 53194
 53195
 53196
 53197
 53198
 53199
 53200
 53201
 53202
 53203
 53204
 53205
 53206
 53207
 53208
 53209
 53210
 53211
 53212
 53213
 53214
 53215
 53216
 53217
 53218
 53219
 53220
 53221
 53222
 53223
 53224
 53225
 53226
 53227
 53228
 53229
 53230
 53231
 53232
 53233
 53234
 53235
 53236
 53237
 53238
 53239
 53240
 53241
 53242
 53243
 53244
 53245
 53246
 53247
 53248
 53249
 53250
 53251
 53252
 53253
 53254
 53255
 53256
 53257
 53258
 53259
 53260
 53261
 53262
 53263
 53264
 53265
 53266
 53267
 53268
 53269
 53270
 53271
 53272
 53273
 53274
 53275
 53276
 53277
 53278
 53279
 53280
 53281
 53282
 53283
 53284
 53285
 53286
 53287
 53288
 53289
 53290
 53291
 53292
 53293
 53294
 53295
 53296
 53297
 53298
 53299
 53300
 53301
 53302
 53303
 53304
 53305
 53306
 53307
 53308
 53309
 53310
 53311
 53312
 53313
 53314
 53315
 53316
 53317
 53318
 53319
 53320
 53321
 53322
 53323
 53324
 53325
 53326
 53327
 53328
 53329
 53330
 53331
 53332
 53333
 53334
 53335
 53336
 53337
 53338
 53339
 53340
 53341
 53342
 53343
 53344
 53345
 53346
 53347
 53348
 53349
 53350
 53351
 53352
 53353
 53354
 53355
 53356
 53357
 53358
 53359
 53360
 53361
 53362
 53363
 53364
 53365
 53366
 53367
 53368
 53369
 53370
 53371
 53372
 53373
 53374
 53375
 53376
 53377
 53378
 53379
 53380
 53381
 53382
 53383
 53384
 53385
 53386
 53387
 53388
 53389
 53390
 53391
 53392
 53393
 53394
 53395
 53396
 53397
 53398
 53399
 53400
 53401
 53402
 53403
 53404
 53405
 53406
 53407
 53408
 53409
 53410
 53411
 53412
 53413
 53414
 53415
 53416
 53417
 53418
 53419
 53420
 53421
 53422
 53423
 53424
 53425
 53426
 53427
 53428
 53429
 53430
 53431
 53432
 53433
 53434
 53435
 53436
 53437
 53438
 53439
 53440
 53441
 53442
 53443
 53444
 53445
 53446
 53447
 53448
 53449
 53450
 53451
 53452
 53453
 53454
 53455
 53456
 53457
 53458
 53459
 53460
 53461
 53462
 53463
 53464
 53465
 53466
 53467
 53468
 53469
 53470
 53471
 53472
 53473
 53474
 53475
 53476
 53477
 53478
 53479
 53480
 53481
 53482
 53483
 53484
 53485
 53486
 53487
 53488
 53489
 53490
 53491
 53492
 53493
 53494
 53495
 53496
 53497
 53498
 53499
 53500
 53501
 53502
 53503
 53504
 53505
 53506
 53507
 53508
 53509
 53510
 53511
 53512
 53513
 53514
 53515
 53516
 53517
 53518
 53519
 53520
 53521
 53522
 53523
 53524
 53525
 53526
 53527
 53528
 53529
 53530
 53531
 53532
 53533
 53534
 53535
 53536
 53537
 53538
 53539
 53540
 53541
 53542
 53543
 53544
 53545
 53546
 53547
 53548
 53549
 53550
 53551
 53552
 53553
 53554
 53555
 53556
 53557
 53558
 53559
 53560
 53561
 53562
 53563
 53564
 53565
 53566
 53567
 53568
 53569
 53570
 53571
 53572
 53573
 53574
 53575
 53576
 53577
 53578
 53579
 53580
 53581
 53582
 53583
 53584
 53585
 53586
 53587
 53588
 53589
 53590
 53591
 53592
 53593
 53594
 53595
 53596
 53597
 53598
 53599
 53600
 53601
 53602
 53603
 53604
 53605
 53606
 53607
 53608
 53609
 53610
 53611
 53612
 53613
 53614
 53615
 53616
 53617
 53618
 53619
 53620
 53621
 53622
 53623
 53624
 53625
 53626
 53627
 53628
 53629
 53630
 53631
 53632
 53633
 53634
 53635
 53636
 53637
 53638
 53639
 53640
 53641
 53642
 53643
 53644
 53645
 53646
 53647
 53648
 53649
 53650
 53651
 53652
 53653
 53654
 53655
 53656
 53657
 53658
 53659
 53660
 53661
 53662
 53663
 53664
 53665
 53666
 53667
 53668
 53669
 53670
 53671
 53672
 53673
 53674
 53675
 53676
 53677
 53678
 53679
 53680
 53681
 53682
 53683
 53684
 53685
 53686
 53687
 53688
 53689
 53690
 53691
 53692
 53693
 53694
 53695
 53696
 53697
 53698
 53699
 53700
 53701
 53702
 53703
 53704
 53705
 53706
 53707
 53708
 53709
 53710
 53711
 53712
 53713
 53714
 53715
 53716
 53717
 53718
 53719
 53720
 53721
 53722
 53723
 53724
 53725
 53726
 53727
 53728
 53729
 53730
 53731
 53732
 53733
 53734
 53735
 53736
 53737
 53738
 53739
 53740
 53741
 53742
 53743
 53744
 53745
 53746
 53747
 53748
 53749
 53750
 53751
 53752
 53753
 53754
 53755
 53756
 53757
 53758
 53759
 53760
 53761
 53762
 53763
 53764
 53765
 53766
 53767
 53768
 53769
 53770
 53771
 53772
 53773
 53774
 53775
 53776
 53777
 53778
 53779
 53780
 53781
 53782
 53783
 53784
 53785
 53786
 53787
 53788
 53789
 53790
 53791
 53792
 53793
 53794
 53795
 53796
 53797
 53798
 53799
 53800
 53801
 53802
 53803
 53804
 53805
 53806
 53807
 53808
 53809
 53810
 53811
 53812
 53813
 53814
 53815
 53816
 53817
 53818
 53819
 53820
 53821
 53822
 53823
 53824
 53825
 53826
 53827
 53828
 53829
 53830
 53831
 53832
 53833
 53834
 53835
 53836
 53837
 53838
 53839
 53840
 53841
 53842
 53843
 53844
 53845
 53846
 53847
 53848
 53849
 53850
 53851
 53852
 53853
 53854
 53855
 53856
 53857
 53858
 53859
 53860
 53861
 53862
 53863
 53864
 53865
 53866
 53867
 53868
 53869
 53870
 53871
 53872
 53873
 53874
 53875
 53876
 53877
 53878
 53879
 53880
 53881
 53882
 53883
 53884
 53885
 53886
 53887
 53888
 53889
 53890
 53891
 53892
 53893
 53894
 53895
 53896
 53897
 53898
 53899
 53900
 53901
 53902
 53903
 53904
 53905
 53906
 53907
 53908
 53909
 53910
 53911
 53912
 53913
 53914
 53915
 53916
 53917
 53918
 53919
 53920
 53921
 53922
 53923
 53924
 53925
 53926
 53927
 53928
 53929
 53930
 53931
 53932
 53933
 53934
 53935
 53936
 53937
 53938
 53939
 53940
 53941
 53942
 53943
 53944
 53945
 53946
 53947
 53948
 53949
 53950
 53951
 53952
 53953
 53954
 53955
 53956
 53957
 53958
 53959
 53960
 53961
 53962
 53963
 53964
 53965
 53966
 53967
 53968
 53969
 53970
 53971
 53972
 53973
 53974
 53975
 53976
 53977
 53978
 53979
 53980
 53981
 53982
 53983
 53984
 53985
 53986
 53987
 53988
 53989
 53990
 53991
 53992
 53993
 53994
 53995
 53996
 53997
 53998
 53999
 54000
 54001
 54002
 54003
 54004
 54005
 54006
 54007
 54008
 54009
 54010
 54011
 54012
 54013
 54014
 54015
 54016
 54017
 54018
 54019
 54020
 54021
 54022
 54023
 54024
 54025
 54026
 54027
 54028
 54029
 54030
 54031
 54032
 54033
 54034
 54035
 54036
 54037
 54038
 54039
 54040
 54041
 54042
 54043
 54044
 54045
 54046
 54047
 54048
 54049
 54050
 54051
 54052
 54053
 54054
 54055
 54056
 54057
 54058
 54059
 54060
 54061
 54062
 54063
 54064
 54065
 54066
 54067
 54068
 54069
 54070
 54071
 54072
 54073
 54074
 54075
 54076
 54077
 54078
 54079
 54080
 54081
 54082
 54083
 54084
 54085
 54086
 54087
 54088
 54089
 54090
 54091
 54092
 54093
 54094
 54095
 54096
 54097
 54098
 54099
 54100
 54101
 54102
 54103
 54104
 54105
 54106
 54107
 54108
 54109
 54110
 54111
 54112
 54113
 54114
 54115
 54116
 54117
 54118
 54119
 54120
 54121
 54122
 54123
 54124
 54125
 54126
 54127
 54128
 54129
 54130
 54131
 54132
 54133
 54134
 54135
 54136
 54137
 54138
 54139
 54140
 54141
 54142
 54143
 54144
 54145
 54146
 54147
 54148
 54149
 54150
 54151
 54152
 54153
 54154
 54155
 54156
 54157
 54158
 54159
 54160
 54161
 54162
 54163
 54164
 54165
 54166
 54167
 54168
 54169
 54170
 54171
 54172
 54173
 54174
 54175
 54176
 54177
 54178
 54179
 54180
 54181
 54182
 54183
 54184
 54185
 54186
 54187
 54188
 54189
 54190
 54191
 54192
 54193
 54194
 54195
 54196
 54197
 54198
 54199
 54200
 54201
 54202
 54203
 54204
 54205
 54206
 54207
 54208
 54209
 54210
 54211
 54212
 54213
 54214
 54215
 54216
 54217
 54218
 54219
 54220
 54221
 54222
 54223
 54224
 54225
 54226
 54227
 54228
 54229
 54230
 54231
 54232
 54233
 54234
 54235
 54236
 54237
 54238
 54239
 54240
 54241
 54242
 54243
 54244
 54245
 54246
 54247
 54248
 54249
 54250
 54251
 54252
 54253
 54254
 54255
 54256
 54257
 54258
 54259
 54260
 54261
 54262
 54263
 54264
 54265
 54266
 54267
 54268
 54269
 54270
 54271
 54272
 54273
 54274
 54275
 54276
 54277
 54278
 54279
 54280
 54281
 54282
 54283
 54284
 54285
 54286
 54287
 54288
 54289
 54290
 54291
 54292
 54293
 54294
 54295
 54296
 54297
 54298
 54299
 54300
 54301
 54302
 54303
 54304
 54305
 54306
 54307
 54308
 54309
 54310
 54311
 54312
 54313
 54314
 54315
 54316
 54317
 54318
 54319
 54320
 54321
 54322
 54323
 54324
 54325
 54326
 54327
 54328
 54329
 54330
 54331
 54332
 54333
 54334
 54335
 54336
 54337
 54338
 54339
 54340
 54341
 54342
 54343
 54344
 54345
 54346
 54347
 54348
 54349
 54350
 54351
 54352
 54353
 54354
 54355
 54356
 54357
 54358
 54359
 54360
 54361
 54362
 54363
 54364
 54365
 54366
 54367
 54368
 54369
 54370
 54371
 54372
 54373
 54374
 54375
 54376
 54377
 54378
 54379
 54380
 54381
 54382
 54383
 54384
 54385
 54386
 54387
 54388
 54389
 54390
 54391
 54392
 54393
 54394
 54395
 54396
 54397
 54398
 54399
 54400
 54401
 54402
 54403
 54404
 54405
 54406
 54407
 54408
 54409
 54410
 54411
 54412
 54413
 54414
 54415
 54416
 54417
 54418
 54419
 54420
 54421
 54422
 54423
 54424
 54425
 54426
 54427
 54428
 54429
 54430
 54431
 54432
 54433
 54434
 54435
 54436
 54437
 54438
 54439
 54440
 54441
 54442
 54443
 54444
 54445
 54446
 54447
 54448
 54449
 54450
 54451
 54452
 54453
 54454
 54455
 54456
 54457
 54458
 54459
 54460
 54461
 54462
 54463
 54464
 54465
 54466
 54467
 54468
 54469
 54470
 54471
 54472
 54473
 54474
 54475
 54476
 54477
 54478
 54479
 54480
 54481
 54482
 54483
 54484
 54485
 54486
 54487
 54488
 54489
 54490
 54491
 54492
 54493
 54494
 54495
 54496
 54497
 54498
 54499
 54500
 54501
 54502
 54503
 54504
 54505
 54506
 54507
 54508
 54509
 54510
 54511
 54512
 54513
 54514
 54515
 54516
 54517
 54518
 54519
 54520
 54521
 54522
 54523
 54524
 54525
 54526
 54527
 54528
 54529
 54530
 54531
 54532
 54533
 54534
 54535
 54536
 54537
 54538
 54539
 54540
 54541
 54542
 54543
 54544
 54545
 54546
 54547
 54548
 54549
 54550
 54551
 54552
 54553
 54554
 54555
 54556
 54557
 54558
 54559
 54560
 54561
 54562
 54563
 54564
 54565
 54566
 54567
 54568
 54569
 54570
 54571
 54572
 54573
 54574
 54575
 54576
 54577
 54578
 54579
 54580
 54581
 54582
 54583
 54584
 54585
 54586
 54587
 54588
 54589
 54590
 54591
 54592
 54593
 54594
 54595
 54596
 54597
 54598
 54599
 54600
 54601
 54602
 54603
 54604
 54605
 54606
 54607
 54608
 54609
 54610
 54611
 54612
 54613
 54614
 54615
 54616
 54617
 54618
 54619
 54620
 54621
 54622
 54623
 54624
 54625
 54626
 54627
 54628
 54629
 54630
 54631
 54632
 54633
 54634
 54635
 54636
 54637
 54638
 54639
 54640
 54641
 54642
 54643
 54644
 54645
 54646
 54647
 54648
 54649
 54650
 54651
 54652
 54653
 54654
 54655
 54656
 54657
 54658
 54659
 54660
 54661
 54662
 54663
 54664
 54665
 54666
 54667
 54668
 54669
 54670
 54671
 54672
 54673
 54674
 54675
 54676
 54677
 54678
 54679
 54680
 54681
 54682
 54683
 54684
 54685
 54686
 54687
 54688
 54689
 54690
 54691
 54692
 54693
 54694
 54695
 54696
 54697
 54698
 54699
 54700
 54701
 54702
 54703
 54704
 54705
 54706
 54707
 54708
 54709
 54710
 54711
 54712
 54713
 54714
 54715
 54716
 54717
 54718
 54719
 54720
 54721
 54722
 54723
 54724
 54725
 54726
 54727
 54728
 54729
 54730
 54731
 54732
 54733
 54734
 54735
 54736
 54737
 54738
 54739
 54740
 54741
 54742
 54743
 54744
 54745
 54746
 54747
 54748
 54749
 54750
 54751
 54752
 54753
 54754
 54755
 54756
 54757
 54758
 54759
 54760
 54761
 54762
 54763
 54764
 54765
 54766
 54767
 54768
 54769
 54770
 54771
 54772
 54773
 54774
 54775
 54776
 54777
 54778
 54779
 54780
 54781
 54782
 54783
 54784
 54785
 54786
 54787
 54788
 54789
 54790
 54791
 54792
 54793
 54794
 54795
 54796
 54797
 54798
 54799
 54800
 54801
 54802
 54803
 54804
 54805
 54806
 54807
 54808
 54809
 54810
 54811
 54812
 54813
 54814
 54815
 54816
 54817
 54818
 54819
 54820
 54821
 54822
 54823
 54824
 54825
 54826
 54827
 54828
 54829
 54830
 54831
 54832
 54833
 54834
 54835
 54836
 54837
 54838
 54839
 54840
 54841
 54842
 54843
 54844
 54845
 54846
 54847
 54848
 54849
 54850
 54851
 54852
 54853
 54854
 54855
 54856
 54857
 54858
 54859
 54860
 54861
 54862
 54863
 54864
 54865
 54866
 54867
 54868
 54869
 54870
 54871
 54872
 54873
 54874
 54875
 54876
 54877
 54878
 54879
 54880
 54881
 54882
 54883
 54884
 54885
 54886
 54887
 54888
 54889
 54890
 54891
 54892
 54893
 54894
 54895
 54896
 54897
 54898
 54899
 54900
 54901
 54902
 54903
 54904
 54905
 54906
 54907
 54908
 54909
 54910
 54911
 54912
 54913
 54914
 54915
 54916
 54917
 54918
 54919
 54920
 54921
 54922
 54923
 54924
 54925
 54926
 54927
 54928
 54929
 54930
 54931
 54932
 54933
 54934
 54935
 54936
 54937
 54938
 54939
 54940
 54941
 54942
 54943
 54944
 54945
 54946
 54947
 54948
 54949
 54950
 54951
 54952
 54953
 54954
 54955
 54956
 54957
 54958
 54959
 54960
 54961
 54962
 54963
 54964
 54965
 54966
 54967
 54968
 54969
 54970
 54971
 54972
 54973
 54974
 54975
 54976
 54977
 54978
 54979
 54980
 54981
 54982
 54983
 54984
 54985
 54986
 54987
 54988
 54989
 54990
 54991
 54992
 54993
 54994
 54995
 54996
 54997
 54998
 54999
 55000
 55001
 55002
 55003
 55004
 55005
 55006
 55007
 55008
 55009
 55010
 55011
 55012
 55013
 55014
 55015
 55016
 55017
 55018
 55019
 55020
 55021
 55022
 55023
 55024
 55025
 55026
 55027
 55028
 55029
 55030
 55031
 55032
 55033
 55034
 55035
 55036
 55037
 55038
 55039
 55040
 55041
 55042
 55043
 55044
 55045
 55046
 55047
 55048
 55049
 55050
 55051
 55052
 55053
 55054
 55055
 55056
 55057
 55058
 55059
 55060
 55061
 55062
 55063
 55064
 55065
 55066
 55067
 55068
 55069
 55070
 55071
 55072
 55073
 55074
 55075
 55076
 55077
 55078
 55079
 55080
 55081
 55082
 55083
 55084
 55085
 55086
 55087
 55088
 55089
 55090
 55091
 55092
 55093
 55094
 55095
 55096
 55097
 55098
 55099
 55100
 55101
 55102
 55103
 55104
 55105
 55106
 55107
 55108
 55109
 55110
 55111
 55112
 55113
 55114
 55115
 55116
 55117
 55118
 55119
 55120
 55121
 55122
 55123
 55124
 55125
 55126
 55127
 55128
 55129
 55130
 55131
 55132
 55133
 55134
 55135
 55136
 55137
 55138
 55139
 55140
 55141
 55142
 55143
 55144
 55145
 55146
 55147
 55148
 55149
 55150
 55151
 55152
 55153
 55154
 55155
 55156
 55157
 55158
 55159
 55160
 55161
 55162
 55163
 55164
 55165
 55166
 55167
 55168
 55169
 55170
 55171
 55172
 55173
 55174
 55175
 55176
 55177
 55178
 55179
 55180
 55181
 55182
 55183
 55184
 55185
 55186
 55187
 55188
 55189
 55190
 55191
 55192
 55193
 55194
 55195
 55196
 55197
 55198
 55199
 55200
 55201
 55202
 55203
 55204
 55205
 55206
 55207
 55208
 55209
 55210
 55211
 55212
 55213
 55214
 55215
 55216
 55217
 55218
 55219
 55220
 55221
 55222
 55223
 55224
 55225
 55226
 55227
 55228
 55229
 55230
 55231
 55232
 55233
 55234
 55235
 55236
 55237
 55238
 55239
 55240
 55241
 55242
 55243
 55244
 55245
 55246
 55247
 55248
 55249
 55250
 55251
 55252
 55253
 55254
 55255
 55256
 55257
 55258
 55259
 55260
 55261
 55262
 55263
 55264
 55265
 55266
 55267
 55268
 55269
 55270
 55271
 55272
 55273
 55274
 55275
 55276
 55277
 55278
 55279
 55280
 55281
 55282
 55283
 55284
 55285
 55286
 55287
 55288
 55289
 55290
 55291
 55292
 55293
 55294
 55295
 55296
 55297
 55298
 55299
 55300
 55301
 55302
 55303
 55304
 55305
 55306
 55307
 55308
 55309
 55310
 55311
 55312
 55313
 55314
 55315
 55316
 55317
 55318
 55319
 55320
 55321
 55322
 55323
 55324
 55325
 55326
 55327
 55328
 55329
 55330
 55331
 55332
 55333
 55334
 55335
 55336
 55337
 55338
 55339
 55340
 55341
 55342
 55343
 55344
 55345
 55346
 55347
 55348
 55349
 55350
 55351
 55352
 55353
 55354
 55355
 55356
 55357
 55358
 55359
 55360
 55361
 55362
 55363
 55364
 55365
 55366
 55367
 55368
 55369
 55370
 55371
 55372
 55373
 55374
 55375
 55376
 55377
 55378
 55379
 55380
 55381
 55382
 55383
 55384
 55385
 55386
 55387
 55388
 55389
 55390
 55391
 55392
 55393
 55394
 55395
 55396
 55397
 55398
 55399
 55400
 55401
 55402
 55403
 55404
 55405
 55406
 55407
 55408
 55409
 55410
 55411
 55412
 55413
 55414
 55415
 55416
 55417
 55418
 55419
 55420
 55421
 55422
 55423
 55424
 55425
 55426
 55427
 55428
 55429
 55430
 55431
 55432
 55433
 55434
 55435
 55436
 55437
 55438
 55439
 55440
 55441
 55442
 55443
 55444
 55445
 55446
 55447
 55448
 55449
 55450
 55451
 55452
 55453
 55454
 55455
 55456
 55457
 55458
 55459
 55460
 55461
 55462
 55463
 55464
 55465
 55466
 55467
 55468
 55469
 55470
 55471
 55472
 55473
 55474
 55475
 55476
 55477
 55478
 55479
 55480
 55481
 55482
 55483
 55484
 55485
 55486
 55487
 55488
 55489
 55490
 55491
 55492
 55493
 55494
 55495
 55496
 55497
 55498
 55499
 55500
 55501
 55502
 55503
 55504
 55505
 55506
 55507
 55508
 55509
 55510
 55511
 55512
 55513
 55514
 55515
 55516
 55517
 55518
 55519
 55520
 55521
 55522
 55523
 55524
 55525
 55526
 55527
 55528
 55529
 55530
 55531
 55532
 55533
 55534
 55535
 55536
 55537
 55538
 55539
 55540
 55541
 55542
 55543
 55544
 55545
 55546
 55547
 55548
 55549
 55550
 55551
 55552
 55553
 55554
 55555
 55556
 55557
 55558
 55559
 55560
 55561
 55562
 55563
 55564
 55565
 55566
 55567
 55568
 55569
 55570
 55571
 55572
 55573
 55574
 55575
 55576
 55577
 55578
 55579
 55580
 55581
 55582
 55583
 55584
 55585
 55586
 55587
 55588
 55589
 55590
 55591
 55592
 55593
 55594
 55595
 55596
 55597
 55598
 55599
 55600
 55601
 55602
 55603
 55604
 55605
 55606
 55607
 55608
 55609
 55610
 55611
 55612
 55613
 55614
 55615
 55616
 55617
 55618
 55619
 55620
 55621
 55622
 55623
 55624
 55625
 55626
 55627
 55628
 55629
 55630
 55631
 55632
 55633
 55634
 55635
 55636
 55637
 55638
 55639
 55640
 55641
 55642
 55643
 55644
 55645
 55646
 55647
 55648
 55649
 55650
 55651
 55652
 55653
 55654
 55655
 55656
 55657
 55658
 55659
 55660
 55661
 55662
 55663
 55664
 55665
 55666
 55667
 55668
 55669
 55670
 55671
 55672
 55673
 55674
 55675
 55676
 55677
 55678
 55679
 55680
 55681
 55682
 55683
 55684
 55685
 55686
 55687
 55688
 55689
 55690
 55691
 55692
 55693
 55694
 55695
 55696
 55697
 55698
 55699
 55700
 55701
 55702
 55703
 55704
 55705
 55706
 55707
 55708
 55709
 55710
 55711
 55712
 55713
 55714
 55715
 55716
 55717
 55718
 55719
 55720
 55721
 55722
 55723
 55724
 55725
 55726
 55727
 55728
 55729
 55730
 55731
 55732
 55733
 55734
 55735
 55736
 55737
 55738
 55739
 55740
 55741
 55742
 55743
 55744
 55745
 55746
 55747
 55748
 55749
 55750
 55751
 55752
 55753
 55754
 55755
 55756
 55757
 55758
 55759
 55760
 55761
 55762
 55763
 55764
 55765
 55766
 55767
 55768
 55769
 55770
 55771
 55772
 55773
 55774
 55775
 55776
 55777
 55778
 55779
 55780
 55781
 55782
 55783
 55784
 55785
 55786
 55787
 55788
 55789
 55790
 55791
 55792
 55793
 55794
 55795
 55796
 55797
 55798
 55799
 55800
 55801
 55802
 55803
 55804
 55805
 55806
 55807
 55808
 55809
 55810
 55811
 55812
 55813
 55814
 55815
 55816
 55817
 55818
 55819
 55820
 55821
 55822
 55823
 55824
 55825
 55826
 55827
 55828
 55829
 55830
 55831
 55832
 55833
 55834
 55835
 55836
 55837
 55838
 55839
 55840
 55841
 55842
 55843
 55844
 55845
 55846
 55847
 55848
 55849
 55850
 55851
 55852
 55853
 55854
 55855
 55856
 55857
 55858
 55859
 55860
 55861
 55862
 55863
 55864
 55865
 55866
 55867
 55868
 55869
 55870
 55871
 55872
 55873
 55874
 55875
 55876
 55877
 55878
 55879
 55880
 55881
 55882
 55883
 55884
 55885
 55886
 55887
 55888
 55889
 55890
 55891
 55892
 55893
 55894
 55895
 55896
 55897
 55898
 55899
 55900
 55901
 55902
 55903
 55904
 55905
 55906
 55907
 55908
 55909
 55910
 55911
 55912
 55913
 55914
 55915
 55916
 55917
 55918
 55919
 55920
 55921
 55922
 55923
 55924
 55925
 55926
 55927
 55928
 55929
 55930
 55931
 55932
 55933
 55934
 55935
 55936
 55937
 55938
 55939
 55940
 55941
 55942
 55943
 55944
 55945
 55946
 55947
 55948
 55949
 55950
 55951
 55952
 55953
 55954
 55955
 55956
 55957
 55958
 55959
 55960
 55961
 55962
 55963
 55964
 55965
 55966
 55967
 55968
 55969
 55970
 55971
 55972
 55973
 55974
 55975
 55976
 55977
 55978
 55979
 55980
 55981
 55982
 55983
 55984
 55985
 55986
 55987
 55988
 55989
 55990
 55991
 55992
 55993
 55994
 55995
 55996
 55997
 55998
 55999
 56000
 56001
 56002
 56003
 56004
 56005
 56006
 56007
 56008
 56009
 56010
 56011
 56012
 56013
 56014
 56015
 56016
 56017
 56018
 56019
 56020
 56021
 56022
 56023
 56024
 56025
 56026
 56027
 56028
 56029
 56030
 56031
 56032
 56033
 56034
 56035
 56036
 56037
 56038
 56039
 56040
 56041
 56042
 56043
 56044
 56045
 56046
 56047
 56048
 56049
 56050
 56051
 56052
 56053
 56054
 56055
 56056
 56057
 56058
 56059
 56060
 56061
 56062
 56063
 56064
 56065
 56066
 56067
 56068
 56069
 56070
 56071
 56072
 56073
 56074
 56075
 56076
 56077
 56078
 56079
 56080
 56081
 56082
 56083
 56084
 56085
 56086
 56087
 56088
 56089
 56090
 56091
 56092
 56093
 56094
 56095
 56096
 56097
 56098
 56099
 56100
 56101
 56102
 56103
 56104
 56105
 56106
 56107
 56108
 56109
 56110
 56111
 56112
 56113
 56114
 56115
 56116
 56117
 56118
 56119
 56120
 56121
 56122
 56123
 56124
 56125
 56126
 56127
 56128
 56129
 56130
 56131
 56132
 56133
 56134
 56135
 56136
 56137
 56138
 56139
 56140
 56141
 56142
 56143
 56144
 56145
 56146
 56147
 56148
 56149
 56150
 56151
 56152
 56153
 56154
 56155
 56156
 56157
 56158
 56159
 56160
 56161
 56162
 56163
 56164
 56165
 56166
 56167
 56168
 56169
 56170
 56171
 56172
 56173
 56174
 56175
 56176
 56177
 56178
 56179
 56180
 56181
 56182
 56183
 56184
 56185
 56186
 56187
 56188
 56189
 56190
 56191
 56192
 56193
 56194
 56195
 56196
 56197
 56198
 56199
 56200
 56201
 56202
 56203
 56204
 56205
 56206
 56207
 56208
 56209
 56210
 56211
 56212
 56213
 56214
 56215
 56216
 56217
 56218
 56219
 56220
 56221
 56222
 56223
 56224
 56225
 56226
 56227
 56228
 56229
 56230
 56231
 56232
 56233
 56234
 56235
 56236
 56237
 56238
 56239
 56240
 56241
 56242
 56243
 56244
 56245
 56246
 56247
 56248
 56249
 56250
 56251
 56252
 56253
 56254
 56255
 56256
 56257
 56258
 56259
 56260
 56261
 56262
 56263
 56264
 56265
 56266
 56267
 56268
 56269
 56270
 56271
 56272
 56273
 56274
 56275
 56276
 56277
 56278
 56279
 56280
 56281
 56282
 56283
 56284
 56285
 56286
 56287
 56288
 56289
 56290
 56291
 56292
 56293
 56294
 56295
 56296
 56297
 56298
 56299
 56300
 56301
 56302
 56303
 56304
 56305
 56306
 56307
 56308
 56309
 56310
 56311
 56312
 56313
 56314
 56315
 56316
 56317
 56318
 56319
 56320
 56321
 56322
 56323
 56324
 56325
 56326
 56327
 56328
 56329
 56330
 56331
 56332
 56333
 56334
 56335
 56336
 56337
 56338
 56339
 56340
 56341
 56342
 56343
 56344
 56345
 56346
 56347
 56348
 56349
 56350
 56351
 56352
 56353
 56354
 56355
 56356
 56357
 56358
 56359
 56360
 56361
 56362
 56363
 56364
 56365
 56366
 56367
 56368
 56369
 56370
 56371
 56372
 56373
 56374
 56375
 56376
 56377
 56378
 56379
 56380
 56381
 56382
 56383
 56384
 56385
 56386
 56387
 56388
 56389
 56390
 56391
 56392
 56393
 56394
 56395
 56396
 56397
 56398
 56399
 56400
 56401
 56402
 56403
 56404
 56405
 56406
 56407
 56408
 56409
 56410
 56411
 56412
 56413
 56414
 56415
 56416
 56417
 56418
 56419
 56420
 56421
 56422
 56423
 56424
 56425
 56426
 56427
 56428
 56429
 56430
 56431
 56432
 56433
 56434
 56435
 56436
 56437
 56438
 56439
 56440
 56441
 56442
 56443
 56444
 56445
 56446
 56447
 56448
 56449
 56450
 56451
 56452
 56453
 56454
 56455
 56456
 56457
 56458
 56459
 56460
 56461
 56462
 56463
 56464
 56465
 56466
 56467
 56468
 56469
 56470
 56471
 56472
 56473
 56474
 56475
 56476
 56477
 56478
 56479
 56480
 56481
 56482
 56483
 56484
 56485
 56486
 56487
 56488
 56489
 56490
 56491
 56492
 56493
 56494
 56495
 56496
 56497
 56498
 56499
 56500
 56501
 56502
 56503
 56504
 56505
 56506
 56507
 56508
 56509
 56510
 56511
 56512
 56513
 56514
 56515
 56516
 56517
 56518
 56519
 56520
 56521
 56522
 56523
 56524
 56525
 56526
 56527
 56528
 56529
 56530
 56531
 56532
 56533
 56534
 56535
 56536
 56537
 56538
 56539
 56540
 56541
 56542
 56543
 56544
 56545
 56546
 56547
 56548
 56549
 56550
 56551
 56552
 56553
 56554
 56555
 56556
 56557
 56558
 56559
 56560
 56561
 56562
 56563
 56564
 56565
 56566
 56567
 56568
 56569
 56570
 56571
 56572
 56573
 56574
 56575
 56576
 56577
 56578
 56579
 56580
 56581
 56582
 56583
 56584
 56585
 56586
 56587
 56588
 56589
 56590
 56591
 56592
 56593
 56594
 56595
 56596
 56597
 56598
 56599
 56600
 56601
 56602
 56603
 56604
 56605
 56606
 56607
 56608
 56609
 56610
 56611
 56612
 56613
 56614
 56615
 56616
 56617
 56618
 56619
 56620
 56621
 56622
 56623
 56624
 56625
 56626
 56627
 56628
 56629
 56630
 56631
 56632
 56633
 56634
 56635
 56636
 56637
 56638
 56639
 56640
 56641
 56642
 56643
 56644
 56645
 56646
 56647
 56648
 56649
 56650
 56651
 56652
 56653
 56654
 56655
 56656
 56657
 56658
 56659
 56660
 56661
 56662
 56663
 56664
 56665
 56666
 56667
 56668
 56669
 56670
 56671
 56672
 56673
 56674
 56675
 56676
 56677
 56678
 56679
 56680
 56681
 56682
 56683
 56684
 56685
 56686
 56687
 56688
 56689
 56690
 56691
 56692
 56693
 56694
 56695
 56696
 56697
 56698
 56699
 56700
 56701
 56702
 56703
 56704
 56705
 56706
 56707
 56708
 56709
 56710
 56711
 56712
 56713
 56714
 56715
 56716
 56717
 56718
 56719
 56720
 56721
 56722
 56723
 56724
 56725
 56726
 56727
 56728
 56729
 56730
 56731
 56732
 56733
 56734
 56735
 56736
 56737
 56738
 56739
 56740
 56741
 56742
 56743
 56744
 56745
 56746
 56747
 56748
 56749
 56750
 56751
 56752
 56753
 56754
 56755
 56756
 56757
 56758
 56759
 56760
 56761
 56762
 56763
 56764
 56765
 56766
 56767
 56768
 56769
 56770
 56771
 56772
 56773
 56774
 56775
 56776
 56777
 56778
 56779
 56780
 56781
 56782
 56783
 56784
 56785
 56786
 56787
 56788
 56789
 56790
 56791
 56792
 56793
 56794
 56795
 56796
 56797
 56798
 56799
 56800
 56801
 56802
 56803
 56804
 56805
 56806
 56807
 56808
 56809
 56810
 56811
 56812
 56813
 56814
 56815
 56816
 56817
 56818
 56819
 56820
 56821
 56822
 56823
 56824
 56825
 56826
 56827
 56828
 56829
 56830
 56831
 56832
 56833
 56834
 56835
 56836
 56837
 56838
 56839
 56840
 56841
 56842
 56843
 56844
 56845
 56846
 56847
 56848
 56849
 56850
 56851
 56852
 56853
 56854
 56855
 56856
 56857
 56858
 56859
 56860
 56861
 56862
 56863
 56864
 56865
 56866
 56867
 56868
 56869
 56870
 56871
 56872
 56873
 56874
 56875
 56876
 56877
 56878
 56879
 56880
 56881
 56882
 56883
 56884
 56885
 56886
 56887
 56888
 56889
 56890
 56891
 56892
 56893
 56894
 56895
 56896
 56897
 56898
 56899
 56900
 56901
 56902
 56903
 56904
 56905
 56906
 56907
 56908
 56909
 56910
 56911
 56912
 56913
 56914
 56915
 56916
 56917
 56918
 56919
 56920
 56921
 56922
 56923
 56924
 56925
 56926
 56927
 56928
 56929
 56930
 56931
 56932
 56933
 56934
 56935
 56936
 56937
 56938
 56939
 56940
 56941
 56942
 56943
 56944
 56945
 56946
 56947
 56948
 56949
 56950
 56951
 56952
 56953
 56954
 56955
 56956
 56957
 56958
 56959
 56960
 56961
 56962
 56963
 56964
 56965
 56966
 56967
 56968
 56969
 56970
 56971
 56972
 56973
 56974
 56975
 56976
 56977
 56978
 56979
 56980
 56981
 56982
 56983
 56984
 56985
 56986
 56987
 56988
 56989
 56990
 56991
 56992
 56993
 56994
 56995
 56996
 56997
 56998
 56999
 57000
 57001
 57002
 57003
 57004
 57005
 57006
 57007
 57008
 57009
 57010
 57011
 57012
 57013
 57014
 57015
 57016
 57017
 57018
 57019
 57020
 57021
 57022
 57023
 57024
 57025
 57026
 57027
 57028
 57029
 57030
 57031
 57032
 57033
 57034
 57035
 57036
 57037
 57038
 57039
 57040
 57041
 57042
 57043
 57044
 57045
 57046
 57047
 57048
 57049
 57050
 57051
 57052
 57053
 57054
 57055
 57056
 57057
 57058
 57059
 57060
 57061
 57062
 57063
 57064
 57065
 57066
 57067
 57068
 57069
 57070
 57071
 57072
 57073
 57074
 57075
 57076
 57077
 57078
 57079
 57080
 57081
 57082
 57083
 57084
 57085
 57086
 57087
 57088
 57089
 57090
 57091
 57092
 57093
 57094
 57095
 57096
 57097
 57098
 57099
 57100
 57101
 57102
 57103
 57104
 57105
 57106
 57107
 57108
 57109
 57110
 57111
 57112
 57113
 57114
 57115
 57116
 57117
 57118
 57119
 57120
 57121
 57122
 57123
 57124
 57125
 57126
 57127
 57128
 57129
 57130
 57131
 57132
 57133
 57134
 57135
 57136
 57137
 57138
 57139
 57140
 57141
 57142
 57143
 57144
 57145
 57146
 57147
 57148
 57149
 57150
 57151
 57152
 57153
 57154
 57155
 57156
 57157
 57158
 57159
 57160
 57161
 57162
 57163
 57164
 57165
 57166
 57167
 57168
 57169
 57170
 57171
 57172
 57173
 57174
 57175
 57176
 57177
 57178
 57179
 57180
 57181
 57182
 57183
 57184
 57185
 57186
 57187
 57188
 57189
 57190
 57191
 57192
 57193
 57194
 57195
 57196
 57197
 57198
 57199
 57200
 57201
 57202
 57203
 57204
 57205
 57206
 57207
 57208
 57209
 57210
 57211
 57212
 57213
 57214
 57215
 57216
 57217
 57218
 57219
 57220
 57221
 57222
 57223
 57224
 57225
 57226
 57227
 57228
 57229
 57230
 57231
 57232
 57233
 57234
 57235
 57236
 57237
 57238
 57239
 57240
 57241
 57242
 57243
 57244
 57245
 57246
 57247
 57248
 57249
 57250
 57251
 57252
 57253
 57254
 57255
 57256
 57257
 57258
 57259
 57260
 57261
 57262
 57263
 57264
 57265
 57266
 57267
 57268
 57269
 57270
 57271
 57272
 57273
 57274
 57275
 57276
 57277
 57278
 57279
 57280
 57281
 57282
 57283
 57284
 57285
 57286
 57287
 57288
 57289
 57290
 57291
 57292
 57293
 57294
 57295
 57296
 57297
 57298
 57299
 57300
 57301
 57302
 57303
 57304
 57305
 57306
 57307
 57308
 57309
 57310
 57311
 57312
 57313
 57314
 57315
 57316
 57317
 57318
 57319
 57320
 57321
 57322
 57323
 57324
 57325
 57326
 57327
 57328
 57329
 57330
 57331
 57332
 57333
 57334
 57335
 57336
 57337
 57338
 57339
 57340
 57341
 57342
 57343
 57344
 57345
 57346
 57347
 57348
 57349
 57350
 57351
 57352
 57353
 57354
 57355
 57356
 57357
 57358
 57359
 57360
 57361
 57362
 57363
 57364
 57365
 57366
 57367
 57368
 57369
 57370
 57371
 57372
 57373
 57374
 57375
 57376
 57377
 57378
 57379
 57380
 57381
 57382
 57383
 57384
 57385
 57386
 57387
 57388
 57389
 57390
 57391
 57392
 57393
 57394
 57395
 57396
 57397
 57398
 57399
 57400
 57401
 57402
 57403
 57404
 57405
 57406
 57407
 57408
 57409
 57410
 57411
 57412
 57413
 57414
 57415
 57416
 57417
 57418
 57419
 57420
 57421
 57422
 57423
 57424
 57425
 57426
 57427
 57428
 57429
 57430
 57431
 57432
 57433
 57434
 57435
 57436
 57437
 57438
 57439
 57440
 57441
 57442
 57443
 57444
 57445
 57446
 57447
 57448
 57449
 57450
 57451
 57452
 57453
 57454
 57455
 57456
 57457
 57458
 57459
 57460
 57461
 57462
 57463
 57464
 57465
 57466
 57467
 57468
 57469
 57470
 57471
 57472
 57473
 57474
 57475
 57476
 57477
 57478
 57479
 57480
 57481
 57482
 57483
 57484
 57485
 57486
 57487
 57488
 57489
 57490
 57491
 57492
 57493
 57494
 57495
 57496
 57497
 57498
 57499
 57500
 57501
 57502
 57503
 57504
 57505
 57506
 57507
 57508
 57509
 57510
 57511
 57512
 57513
 57514
 57515
 57516
 57517
 57518
 57519
 57520
 57521
 57522
 57523
 57524
 57525
 57526
 57527
 57528
 57529
 57530
 57531
 57532
 57533
 57534
 57535
 57536
 57537
 57538
 57539
 57540
 57541
 57542
 57543
 57544
 57545
 57546
 57547
 57548
 57549
 57550
 57551
 57552
 57553
 57554
 57555
 57556
 57557
 57558
 57559
 57560
 57561
 57562
 57563
 57564
 57565
 57566
 57567
 57568
 57569
 57570
 57571
 57572
 57573
 57574
 57575
 57576
 57577
 57578
 57579
 57580
 57581
 57582
 57583
 57584
 57585
 57586
 57587
 57588
 57589
 57590
 57591
 57592
 57593
 57594
 57595
 57596
 57597
 57598
 57599
 57600
 57601
 57602
 57603
 57604
 57605
 57606
 57607
 57608
 57609
 57610
 57611
 57612
 57613
 57614
 57615
 57616
 57617
 57618
 57619
 57620
 57621
 57622
 57623
 57624
 57625
 57626
 57627
 57628
 57629
 57630
 57631
 57632
 57633
 57634
 57635
 57636
 57637
 57638
 57639
 57640
 57641
 57642
 57643
 57644
 57645
 57646
 57647
 57648
 57649
 57650
 57651
 57652
 57653
 57654
 57655
 57656
 57657
 57658
 57659
 57660
 57661
 57662
 57663
 57664
 57665
 57666
 57667
 57668
 57669
 57670
 57671
 57672
 57673
 57674
 57675
 57676
 57677
 57678
 57679
 57680
 57681
 57682
 57683
 57684
 57685
 57686
 57687
 57688
 57689
 57690
 57691
 57692
 57693
 57694
 57695
 57696
 57697
 57698
 57699
 57700
 57701
 57702
 57703
 57704
 57705
 57706
 57707
 57708
 57709
 57710
 57711
 57712
 57713
 57714
 57715
 57716
 57717
 57718
 57719
 57720
 57721
 57722
 57723
 57724
 57725
 57726
 57727
 57728
 57729
 57730
 57731
 57732
 57733
 57734
 57735
 57736
 57737
 57738
 57739
 57740
 57741
 57742
 57743
 57744
 57745
 57746
 57747
 57748
 57749
 57750
 57751
 57752
 57753
 57754
 57755
 57756
 57757
 57758
 57759
 57760
 57761
 57762
 57763
 57764
 57765
 57766
 57767
 57768
 57769
 57770
 57771
 57772
 57773
 57774
 57775
 57776
 57777
 57778
 57779
 57780
 57781
 57782
 57783
 57784
 57785
 57786
 57787
 57788
 57789
 57790
 57791
 57792
 57793
 57794
 57795
 57796
 57797
 57798
 57799
 57800
 57801
 57802
 57803
 57804
 57805
 57806
 57807
 57808
 57809
 57810
 57811
 57812
 57813
 57814
 57815
 57816
 57817
 57818
 57819
 57820
 57821
 57822
 57823
 57824
 57825
 57826
 57827
 57828
 57829
 57830
 57831
 57832
 57833
 57834
 57835
 57836
 57837
 57838
 57839
 57840
 57841
 57842
 57843
 57844
 57845
 57846
 57847
 57848
 57849
 57850
 57851
 57852
 57853
 57854
 57855
 57856
 57857
 57858
 57859
 57860
 57861
 57862
 57863
 57864
 57865
 57866
 57867
 57868
 57869
 57870
 57871
 57872
 57873
 57874
 57875
 57876
 57877
 57878
 57879
 57880
 57881
 57882
 57883
 57884
 57885
 57886
 57887
 57888
 57889
 57890
 57891
 57892
 57893
 57894
 57895
 57896
 57897
 57898
 57899
 57900
 57901
 57902
 57903
 57904
 57905
 57906
 57907
 57908
 57909
 57910
 57911
 57912
 57913
 57914
 57915
 57916
 57917
 57918
 57919
 57920
 57921
 57922
 57923
 57924
 57925
 57926
 57927
 57928
 57929
 57930
 57931
 57932
 57933
 57934
 57935
 57936
 57937
 57938
 57939
 57940
 57941
 57942
 57943
 57944
 57945
 57946
 57947
 57948
 57949
 57950
 57951
 57952
 57953
 57954
 57955
 57956
 57957
 57958
 57959
 57960
 57961
 57962
 57963
 57964
 57965
 57966
 57967
 57968
 57969
 57970
 57971
 57972
 57973
 57974
 57975
 57976
 57977
 57978
 57979
 57980
 57981
 57982
 57983
 57984
 57985
 57986
 57987
 57988
 57989
 57990
 57991
 57992
 57993
 57994
 57995
 57996
 57997
 57998
 57999
 58000
 58001
 58002
 58003
 58004
 58005
 58006
 58007
 58008
 58009
 58010
 58011
 58012
 58013
 58014
 58015
 58016
 58017
 58018
 58019
 58020
 58021
 58022
 58023
 58024
 58025
 58026
 58027
 58028
 58029
 58030
 58031
 58032
 58033
 58034
 58035
 58036
 58037
 58038
 58039
 58040
 58041
 58042
 58043
 58044
 58045
 58046
 58047
 58048
 58049
 58050
 58051
 58052
 58053
 58054
 58055
 58056
 58057
 58058
 58059
 58060
 58061
 58062
 58063
 58064
 58065
 58066
 58067
 58068
 58069
 58070
 58071
 58072
 58073
 58074
 58075
 58076
 58077
 58078
 58079
 58080
 58081
 58082
 58083
 58084
 58085
 58086
 58087
 58088
 58089
 58090
 58091
 58092
 58093
 58094
 58095
 58096
 58097
 58098
 58099
 58100
 58101
 58102
 58103
 58104
 58105
 58106
 58107
 58108
 58109
 58110
 58111
 58112
 58113
 58114
 58115
 58116
 58117
 58118
 58119
 58120
 58121
 58122
 58123
 58124
 58125
 58126
 58127
 58128
 58129
 58130
 58131
 58132
 58133
 58134
 58135
 58136
 58137
 58138
 58139
 58140
 58141
 58142
 58143
 58144
 58145
 58146
 58147
 58148
 58149
 58150
 58151
 58152
 58153
 58154
 58155
 58156
 58157
 58158
 58159
 58160
 58161
 58162
 58163
 58164
 58165
 58166
 58167
 58168
 58169
 58170
 58171
 58172
 58173
 58174
 58175
 58176
 58177
 58178
 58179
 58180
 58181
 58182
 58183
 58184
 58185
 58186
 58187
 58188
 58189
 58190
 58191
 58192
 58193
 58194
 58195
 58196
 58197
 58198
 58199
 58200
 58201
 58202
 58203
 58204
 58205
 58206
 58207
 58208
 58209
 58210
 58211
 58212
 58213
 58214
 58215
 58216
 58217
 58218
 58219
 58220
 58221
 58222
 58223
 58224
 58225
 58226
 58227
 58228
 58229
 58230
 58231
 58232
 58233
 58234
 58235
 58236
 58237
 58238
 58239
 58240
 58241
 58242
 58243
 58244
 58245
 58246
 58247
 58248
 58249
 58250
 58251
 58252
 58253
 58254
 58255
 58256
 58257
 58258
 58259
 58260
 58261
 58262
 58263
 58264
 58265
 58266
 58267
 58268
 58269
 58270
 58271
 58272
 58273
 58274
 58275
 58276
 58277
 58278
 58279
 58280
 58281
 58282
 58283
 58284
 58285
 58286
 58287
 58288
 58289
 58290
 58291
 58292
 58293
 58294
 58295
 58296
 58297
 58298
 58299
 58300
 58301
 58302
 58303
 58304
 58305
 58306
 58307
 58308
 58309
 58310
 58311
 58312
 58313
 58314
 58315
 58316
 58317
 58318
 58319
 58320
 58321
 58322
 58323
 58324
 58325
 58326
 58327
 58328
 58329
 58330
 58331
 58332
 58333
 58334
 58335
 58336
 58337
 58338
 58339
 58340
 58341
 58342
 58343
 58344
 58345
 58346
 58347
 58348
 58349
 58350
 58351
 58352
 58353
 58354
 58355
 58356
 58357
 58358
 58359
 58360
 58361
 58362
 58363
 58364
 58365
 58366
 58367
 58368
 58369
 58370
 58371
 58372
 58373
 58374
 58375
 58376
 58377
 58378
 58379
 58380
 58381
 58382
 58383
 58384
 58385
 58386
 58387
 58388
 58389
 58390
 58391
 58392
 58393
 58394
 58395
 58396
 58397
 58398
 58399
 58400
 58401
 58402
 58403
 58404
 58405
 58406
 58407
 58408
 58409
 58410
 58411
 58412
 58413
 58414
 58415
 58416
 58417
 58418
 58419
 58420
 58421
 58422
 58423
 58424
 58425
 58426
 58427
 58428
 58429
 58430
 58431
 58432
 58433
 58434
 58435
 58436
 58437
 58438
 58439
 58440
 58441
 58442
 58443
 58444
 58445
 58446
 58447
 58448
 58449
 58450
 58451
 58452
 58453
 58454
 58455
 58456
 58457
 58458
 58459
 58460
 58461
 58462
 58463
 58464
 58465
 58466
 58467
 58468
 58469
 58470
 58471
 58472
 58473
 58474
 58475
 58476
 58477
 58478
 58479
 58480
 58481
 58482
 58483
 58484
 58485
 58486
 58487
 58488
 58489
 58490
 58491
 58492
 58493
 58494
 58495
 58496
 58497
 58498
 58499
 58500
 58501
 58502
 58503
 58504
 58505
 58506
 58507
 58508
 58509
 58510
 58511
 58512
 58513
 58514
 58515
 58516
 58517
 58518
 58519
 58520
 58521
 58522
 58523
 58524
 58525
 58526
 58527
 58528
 58529
 58530
 58531
 58532
 58533
 58534
 58535
 58536
 58537
 58538
 58539
 58540
 58541
 58542
 58543
 58544
 58545
 58546
 58547
 58548
 58549
 58550
 58551
 58552
 58553
 58554
 58555
 58556
 58557
 58558
 58559
 58560
 58561
 58562
 58563
 58564
 58565
 58566
 58567
 58568
 58569
 58570
 58571
 58572
 58573
 58574
 58575
 58576
 58577
 58578
 58579
 58580
 58581
 58582
 58583
 58584
 58585
 58586
 58587
 58588
 58589
 58590
 58591
 58592
 58593
 58594
 58595
 58596
 58597
 58598
 58599
 58600
 58601
 58602
 58603
 58604
 58605
 58606
 58607
 58608
 58609
 58610
 58611
 58612
 58613
 58614
 58615
 58616
 58617
 58618
 58619
 58620
 58621
 58622
 58623
 58624
 58625
 58626
 58627
 58628
 58629
 58630
 58631
 58632
 58633
 58634
 58635
 58636
 58637
 58638
 58639
 58640
 58641
 58642
 58643
 58644
 58645
 58646
 58647
 58648
 58649
 58650
 58651
 58652
 58653
 58654
 58655
 58656
 58657
 58658
 58659
 58660
 58661
 58662
 58663
 58664
 58665
 58666
 58667
 58668
 58669
 58670
 58671
 58672
 58673
 58674
 58675
 58676
 58677
 58678
 58679
 58680
 58681
 58682
 58683
 58684
 58685
 58686
 58687
 58688
 58689
 58690
 58691
 58692
 58693
 58694
 58695
 58696
 58697
 58698
 58699
 58700
 58701
 58702
 58703
 58704
 58705
 58706
 58707
 58708
 58709
 58710
 58711
 58712
 58713
 58714
 58715
 58716
 58717
 58718
 58719
 58720
 58721
 58722
 58723
 58724
 58725
 58726
 58727
 58728
 58729
 58730
 58731
 58732
 58733
 58734
 58735
 58736
 58737
 58738
 58739
 58740
 58741
 58742
 58743
 58744
 58745
 58746
 58747
 58748
 58749
 58750
 58751
 58752
 58753
 58754
 58755
 58756
 58757
 58758
 58759
 58760
 58761
 58762
 58763
 58764
 58765
 58766
 58767
 58768
 58769
 58770
 58771
 58772
 58773
 58774
 58775
 58776
 58777
 58778
 58779
 58780
 58781
 58782
 58783
 58784
 58785
 58786
 58787
 58788
 58789
 58790
 58791
 58792
 58793
 58794
 58795
 58796
 58797
 58798
 58799
 58800
 58801
 58802
 58803
 58804
 58805
 58806
 58807
 58808
 58809
 58810
 58811
 58812
 58813
 58814
 58815
 58816
 58817
 58818
 58819
 58820
 58821
 58822
 58823
 58824
 58825
 58826
 58827
 58828
 58829
 58830
 58831
 58832
 58833
 58834
 58835
 58836
 58837
 58838
 58839
 58840
 58841
 58842
 58843
 58844
 58845
 58846
 58847
 58848
 58849
 58850
 58851
 58852
 58853
 58854
 58855
 58856
 58857
 58858
 58859
 58860
 58861
 58862
 58863
 58864
 58865
 58866
 58867
 58868
 58869
 58870
 58871
 58872
 58873
 58874
 58875
 58876
 58877
 58878
 58879
 58880
 58881
 58882
 58883
 58884
 58885
 58886
 58887
 58888
 58889
 58890
 58891
 58892
 58893
 58894
 58895
 58896
 58897
 58898
 58899
 58900
 58901
 58902
 58903
 58904
 58905
 58906
 58907
 58908
 58909
 58910
 58911
 58912
 58913
 58914
 58915
 58916
 58917
 58918
 58919
 58920
 58921
 58922
 58923
 58924
 58925
 58926
 58927
 58928
 58929
 58930
 58931
 58932
 58933
 58934
 58935
 58936
 58937
 58938
 58939
 58940
 58941
 58942
 58943
 58944
 58945
 58946
 58947
 58948
 58949
 58950
 58951
 58952
 58953
 58954
 58955
 58956
 58957
 58958
 58959
 58960
 58961
 58962
 58963
 58964
 58965
 58966
 58967
 58968
 58969
 58970
 58971
 58972
 58973
 58974
 58975
 58976
 58977
 58978
 58979
 58980
 58981
 58982
 58983
 58984
 58985
 58986
 58987
 58988
 58989
 58990
 58991
 58992
 58993
 58994
 58995
 58996
 58997
 58998
 58999
 59000
 59001
 59002
 59003
 59004
 59005
 59006
 59007
 59008
 59009
 59010
 59011
 59012
 59013
 59014
 59015
 59016
 59017
 59018
 59019
 59020
 59021
 59022
 59023
 59024
 59025
 59026
 59027
 59028
 59029
 59030
 59031
 59032
 59033
 59034
 59035
 59036
 59037
 59038
 59039
 59040
 59041
 59042
 59043
 59044
 59045
 59046
 59047
 59048
 59049
 59050
 59051
 59052
 59053
 59054
 59055
 59056
 59057
 59058
 59059
 59060
 59061
 59062
 59063
 59064
 59065
 59066
 59067
 59068
 59069
 59070
 59071
 59072
 59073
 59074
 59075
 59076
 59077
 59078
 59079
 59080
 59081
 59082
 59083
 59084
 59085
 59086
 59087
 59088
 59089
 59090
 59091
 59092
 59093
 59094
 59095
 59096
 59097
 59098
 59099
 59100
 59101
 59102
 59103
 59104
 59105
 59106
 59107
 59108
 59109
 59110
 59111
 59112
 59113
 59114
 59115
 59116
 59117
 59118
 59119
 59120
 59121
 59122
 59123
 59124
 59125
 59126
 59127
 59128
 59129
 59130
 59131
 59132
 59133
 59134
 59135
 59136
 59137
 59138
 59139
 59140
 59141
 59142
 59143
 59144
 59145
 59146
 59147
 59148
 59149
 59150
 59151
 59152
 59153
 59154
 59155
 59156
 59157
 59158
 59159
 59160
 59161
 59162
 59163
 59164
 59165
 59166
 59167
 59168
 59169
 59170
 59171
 59172
 59173
 59174
 59175
 59176
 59177
 59178
 59179
 59180
 59181
 59182
 59183
 59184
 59185
 59186
 59187
 59188
 59189
 59190
 59191
 59192
 59193
 59194
 59195
 59196
 59197
 59198
 59199
 59200
 59201
 59202
 59203
 59204
 59205
 59206
 59207
 59208
 59209
 59210
 59211
 59212
 59213
 59214
 59215
 59216
 59217
 59218
 59219
 59220
 59221
 59222
 59223
 59224
 59225
 59226
 59227
 59228
 59229
 59230
 59231
 59232
 59233
 59234
 59235
 59236
 59237
 59238
 59239
 59240
 59241
 59242
 59243
 59244
 59245
 59246
 59247
 59248
 59249
 59250
 59251
 59252
 59253
 59254
 59255
 59256
 59257
 59258
 59259
 59260
 59261
 59262
 59263
 59264
 59265
 59266
 59267
 59268
 59269
 59270
 59271
 59272
 59273
 59274
 59275
 59276
 59277
 59278
 59279
 59280
 59281
 59282
 59283
 59284
 59285
 59286
 59287
 59288
 59289
 59290
 59291
 59292
 59293
 59294
 59295
 59296
 59297
 59298
 59299
 59300
 59301
 59302
 59303
 59304
 59305
 59306
 59307
 59308
 59309
 59310
 59311
 59312
 59313
 59314
 59315
 59316
 59317
 59318
 59319
 59320
 59321
 59322
 59323
 59324
 59325
 59326
 59327
 59328
 59329
 59330
 59331
 59332
 59333
 59334
 59335
 59336
 59337
 59338
 59339
 59340
 59341
 59342
 59343
 59344
 59345
 59346
 59347
 59348
 59349
 59350
 59351
 59352
 59353
 59354
 59355
 59356
 59357
 59358
 59359
 59360
 59361
 59362
 59363
 59364
 59365
 59366
 59367
 59368
 59369
 59370
 59371
 59372
 59373
 59374
 59375
 59376
 59377
 59378
 59379
 59380
 59381
 59382
 59383
 59384
 59385
 59386
 59387
 59388
 59389
 59390
 59391
 59392
 59393
 59394
 59395
 59396
 59397
 59398
 59399
 59400
 59401
 59402
 59403
 59404
 59405
 59406
 59407
 59408
 59409
 59410
 59411
 59412
 59413
 59414
 59415
 59416
 59417
 59418
 59419
 59420
 59421
 59422
 59423
 59424
 59425
 59426
 59427
 59428
 59429
 59430
 59431
 59432
 59433
 59434
 59435
 59436
 59437
 59438
 59439
 59440
 59441
 59442
 59443
 59444
 59445
 59446
 59447
 59448
 59449
 59450
 59451
 59452
 59453
 59454
 59455
 59456
 59457
 59458
 59459
 59460
 59461
 59462
 59463
 59464
 59465
 59466
 59467
 59468
 59469
 59470
 59471
 59472
 59473
 59474
 59475
 59476
 59477
 59478
 59479
 59480
 59481
 59482
 59483
 59484
 59485
 59486
 59487
 59488
 59489
 59490
 59491
 59492
 59493
 59494
 59495
 59496
 59497
 59498
 59499
 59500
 59501
 59502
 59503
 59504
 59505
 59506
 59507
 59508
 59509
 59510
 59511
 59512
 59513
 59514
 59515
 59516
 59517
 59518
 59519
 59520
 59521
 59522
 59523
 59524
 59525
 59526
 59527
 59528
 59529
 59530
 59531
 59532
 59533
 59534
 59535
 59536
 59537
 59538
 59539
 59540
 59541
 59542
 59543
 59544
 59545
 59546
 59547
 59548
 59549
 59550
 59551
 59552
 59553
 59554
 59555
 59556
 59557
 59558
 59559
 59560
 59561
 59562
 59563
 59564
 59565
 59566
 59567
 59568
 59569
 59570
 59571
 59572
 59573
 59574
 59575
 59576
 59577
 59578
 59579
 59580
 59581
 59582
 59583
 59584
 59585
 59586
 59587
 59588
 59589
 59590
 59591
 59592
 59593
 59594
 59595
 59596
 59597
 59598
 59599
 59600
 59601
 59602
 59603
 59604
 59605
 59606
 59607
 59608
 59609
 59610
 59611
 59612
 59613
 59614
 59615
 59616
 59617
 59618
 59619
 59620
 59621
 59622
 59623
 59624
 59625
 59626
 59627
 59628
 59629
 59630
 59631
 59632
 59633
 59634
 59635
 59636
 59637
 59638
 59639
 59640
 59641
 59642
 59643
 59644
 59645
 59646
 59647
 59648
 59649
 59650
 59651
 59652
 59653
 59654
 59655
 59656
 59657
 59658
 59659
 59660
 59661
 59662
 59663
 59664
 59665
 59666
 59667
 59668
 59669
 59670
 59671
 59672
 59673
 59674
 59675
 59676
 59677
 59678
 59679
 59680
 59681
 59682
 59683
 59684
 59685
 59686
 59687
 59688
 59689
 59690
 59691
 59692
 59693
 59694
 59695
 59696
 59697
 59698
 59699
 59700
 59701
 59702
 59703
 59704
 59705
 59706
 59707
 59708
 59709
 59710
 59711
 59712
 59713
 59714
 59715
 59716
 59717
 59718
 59719
 59720
 59721
 59722
 59723
 59724
 59725
 59726
 59727
 59728
 59729
 59730
 59731
 59732
 59733
 59734
 59735
 59736
 59737
 59738
 59739
 59740
 59741
 59742
 59743
 59744
 59745
 59746
 59747
 59748
 59749
 59750
 59751
 59752
 59753
 59754
 59755
 59756
 59757
 59758
 59759
 59760
 59761
 59762
 59763
 59764
 59765
 59766
 59767
 59768
 59769
 59770
 59771
 59772
 59773
 59774
 59775
 59776
 59777
 59778
 59779
 59780
 59781
 59782
 59783
 59784
 59785
 59786
 59787
 59788
 59789
 59790
 59791
 59792
 59793
 59794
 59795
 59796
 59797
 59798
 59799
 59800
 59801
 59802
 59803
 59804
 59805
 59806
 59807
 59808
 59809
 59810
 59811
 59812
 59813
 59814
 59815
 59816
 59817
 59818
 59819
 59820
 59821
 59822
 59823
 59824
 59825
 59826
 59827
 59828
 59829
 59830
 59831
 59832
 59833
 59834
 59835
 59836
 59837
 59838
 59839
 59840
 59841
 59842
 59843
 59844
 59845
 59846
 59847
 59848
 59849
 59850
 59851
 59852
 59853
 59854
 59855
 59856
 59857
 59858
 59859
 59860
 59861
 59862
 59863
 59864
 59865
 59866
 59867
 59868
 59869
 59870
 59871
 59872
 59873
 59874
 59875
 59876
 59877
 59878
 59879
 59880
 59881
 59882
 59883
 59884
 59885
 59886
 59887
 59888
 59889
 59890
 59891
 59892
 59893
 59894
 59895
 59896
 59897
 59898
 59899
 59900
 59901
 59902
 59903
 59904
 59905
 59906
 59907
 59908
 59909
 59910
 59911
 59912
 59913
 59914
 59915
 59916
 59917
 59918
 59919
 59920
 59921
 59922
 59923
 59924
 59925
 59926
 59927
 59928
 59929
 59930
 59931
 59932
 59933
 59934
 59935
 59936
 59937
 59938
 59939
 59940
 59941
 59942
 59943
 59944
 59945
 59946
 59947
 59948
 59949
 59950
 59951
 59952
 59953
 59954
 59955
 59956
 59957
 59958
 59959
 59960
 59961
 59962
 59963
 59964
 59965
 59966
 59967
 59968
 59969
 59970
 59971
 59972
 59973
 59974
 59975
 59976
 59977
 59978
 59979
 59980
 59981
 59982
 59983
 59984
 59985
 59986
 59987
 59988
 59989
 59990
 59991
 59992
 59993
 59994
 59995
 59996
 59997
 59998
 59999
 60000
 60001
 60002
 60003
 60004
 60005
 60006
 60007
 60008
 60009
 60010
 60011
 60012
 60013
 60014
 60015
 60016
 60017
 60018
 60019
 60020
 60021
 60022
 60023
 60024
 60025
 60026
 60027
 60028
 60029
 60030
 60031
 60032
 60033
 60034
 60035
 60036
 60037
 60038
 60039
 60040
 60041
 60042
 60043
 60044
 60045
 60046
 60047
 60048
 60049
 60050
 60051
 60052
 60053
 60054
 60055
 60056
 60057
 60058
 60059
 60060
 60061
 60062
 60063
 60064
 60065
 60066
 60067
 60068
 60069
 60070
 60071
 60072
 60073
 60074
 60075
 60076
 60077
 60078
 60079
 60080
 60081
 60082
 60083
 60084
 60085
 60086
 60087
 60088
 60089
 60090
 60091
 60092
 60093
 60094
 60095
 60096
 60097
 60098
 60099
 60100
 60101
 60102
 60103
 60104
 60105
 60106
 60107
 60108
 60109
 60110
 60111
 60112
 60113
 60114
 60115
 60116
 60117
 60118
 60119
 60120
 60121
 60122
 60123
 60124
 60125
 60126
 60127
 60128
 60129
 60130
 60131
 60132
 60133
 60134
 60135
 60136
 60137
 60138
 60139
 60140
 60141
 60142
 60143
 60144
 60145
 60146
 60147
 60148
 60149
 60150
 60151
 60152
 60153
 60154
 60155
 60156
 60157
 60158
 60159
 60160
 60161
 60162
 60163
 60164
 60165
 60166
 60167
 60168
 60169
 60170
 60171
 60172
 60173
 60174
 60175
 60176
 60177
 60178
 60179
 60180
 60181
 60182
 60183
 60184
 60185
 60186
 60187
 60188
 60189
 60190
 60191
 60192
 60193
 60194
 60195
 60196
 60197
 60198
 60199
 60200
 60201
 60202
 60203
 60204
 60205
 60206
 60207
 60208
 60209
 60210
 60211
 60212
 60213
 60214
 60215
 60216
 60217
 60218
 60219
 60220
 60221
 60222
 60223
 60224
 60225
 60226
 60227
 60228
 60229
 60230
 60231
 60232
 60233
 60234
 60235
 60236
 60237
 60238
 60239
 60240
 60241
 60242
 60243
 60244
 60245
 60246
 60247
 60248
 60249
 60250
 60251
 60252
 60253
 60254
 60255
 60256
 60257
 60258
 60259
 60260
 60261
 60262
 60263
 60264
 60265
 60266
 60267
 60268
 60269
 60270
 60271
 60272
 60273
 60274
 60275
 60276
 60277
 60278
 60279
 60280
 60281
 60282
 60283
 60284
 60285
 60286
 60287
 60288
 60289
 60290
 60291
 60292
 60293
 60294
 60295
 60296
 60297
 60298
 60299
 60300
 60301
 60302
 60303
 60304
 60305
 60306
 60307
 60308
 60309
 60310
 60311
 60312
 60313
 60314
 60315
 60316
 60317
 60318
 60319
 60320
 60321
 60322
 60323
 60324
 60325
 60326
 60327
 60328
 60329
 60330
 60331
 60332
 60333
 60334
 60335
 60336
 60337
 60338
 60339
 60340
 60341
 60342
 60343
 60344
 60345
 60346
 60347
 60348
 60349
 60350
 60351
 60352
 60353
 60354
 60355
 60356
 60357
 60358
 60359
 60360
 60361
 60362
 60363
 60364
 60365
 60366
 60367
 60368
 60369
 60370
 60371
 60372
 60373
 60374
 60375
 60376
 60377
 60378
 60379
 60380
 60381
 60382
 60383
 60384
 60385
 60386
 60387
 60388
 60389
 60390
 60391
 60392
 60393
 60394
 60395
 60396
 60397
 60398
 60399
 60400
 60401
 60402
 60403
 60404
 60405
 60406
 60407
 60408
 60409
 60410
 60411
 60412
 60413
 60414
 60415
 60416
 60417
 60418
 60419
 60420
 60421
 60422
 60423
 60424
 60425
 60426
 60427
 60428
 60429
 60430
 60431
 60432
 60433
 60434
 60435
 60436
 60437
 60438
 60439
 60440
 60441
 60442
 60443
 60444
 60445
 60446
 60447
 60448
 60449
 60450
 60451
 60452
 60453
 60454
 60455
 60456
 60457
 60458
 60459
 60460
 60461
 60462
 60463
 60464
 60465
 60466
 60467
 60468
 60469
 60470
 60471
 60472
 60473
 60474
 60475
 60476
 60477
 60478
 60479
 60480
 60481
 60482
 60483
 60484
 60485
 60486
 60487
 60488
 60489
 60490
 60491
 60492
 60493
 60494
 60495
 60496
 60497
 60498
 60499
 60500
 60501
 60502
 60503
 60504
 60505
 60506
 60507
 60508
 60509
 60510
 60511
 60512
 60513
 60514
 60515
 60516
 60517
 60518
 60519
 60520
 60521
 60522
 60523
 60524
 60525
 60526
 60527
 60528
 60529
 60530
 60531
 60532
 60533
 60534
 60535
 60536
 60537
 60538
 60539
 60540
 60541
 60542
 60543
 60544
 60545
 60546
 60547
 60548
 60549
 60550
 60551
 60552
 60553
 60554
 60555
 60556
 60557
 60558
 60559
 60560
 60561
 60562
 60563
 60564
 60565
 60566
 60567
 60568
 60569
 60570
 60571
 60572
 60573
 60574
 60575
 60576
 60577
 60578
 60579
 60580
 60581
 60582
 60583
 60584
 60585
 60586
 60587
 60588
 60589
 60590
 60591
 60592
 60593
 60594
 60595
 60596
 60597
 60598
 60599
 60600
 60601
 60602
 60603
 60604
 60605
 60606
 60607
 60608
 60609
 60610
 60611
 60612
 60613
 60614
 60615
 60616
 60617
 60618
 60619
 60620
 60621
 60622
 60623
 60624
 60625
 60626
 60627
 60628
 60629
 60630
 60631
 60632
 60633
 60634
 60635
 60636
 60637
 60638
 60639
 60640
 60641
 60642
 60643
 60644
 60645
 60646
 60647
 60648
 60649
 60650
 60651
 60652
 60653
 60654
 60655
 60656
 60657
 60658
 60659
 60660
 60661
 60662
 60663
 60664
 60665
 60666
 60667
 60668
 60669
 60670
 60671
 60672
 60673
 60674
 60675
 60676
 60677
 60678
 60679
 60680
 60681
 60682
 60683
 60684
 60685
 60686
 60687
 60688
 60689
 60690
 60691
 60692
 60693
 60694
 60695
 60696
 60697
 60698
 60699
 60700
 60701
 60702
 60703
 60704
 60705
 60706
 60707
 60708
 60709
 60710
 60711
 60712
 60713
 60714
 60715
 60716
 60717
 60718
 60719
 60720
 60721
 60722
 60723
 60724
 60725
 60726
 60727
 60728
 60729
 60730
 60731
 60732
 60733
 60734
 60735
 60736
 60737
 60738
 60739
 60740
 60741
 60742
 60743
 60744
 60745
 60746
 60747
 60748
 60749
 60750
 60751
 60752
 60753
 60754
 60755
 60756
 60757
 60758
 60759
 60760
 60761
 60762
 60763
 60764
 60765
 60766
 60767
 60768
 60769
 60770
 60771
 60772
 60773
 60774
 60775
 60776
 60777
 60778
 60779
 60780
 60781
 60782
 60783
 60784
 60785
 60786
 60787
 60788
 60789
 60790
 60791
 60792
 60793
 60794
 60795
 60796
 60797
 60798
 60799
 60800
 60801
 60802
 60803
 60804
 60805
 60806
 60807
 60808
 60809
 60810
 60811
 60812
 60813
 60814
 60815
 60816
 60817
 60818
 60819
 60820
 60821
 60822
 60823
 60824
 60825
 60826
 60827
 60828
 60829
 60830
 60831
 60832
 60833
 60834
 60835
 60836
 60837
 60838
 60839
 60840
 60841
 60842
 60843
 60844
 60845
 60846
 60847
 60848
 60849
 60850
 60851
 60852
 60853
 60854
 60855
 60856
 60857
 60858
 60859
 60860
 60861
 60862
 60863
 60864
 60865
 60866
 60867
 60868
 60869
 60870
 60871
 60872
 60873
 60874
 60875
 60876
 60877
 60878
 60879
 60880
 60881
 60882
 60883
 60884
 60885
 60886
 60887
 60888
 60889
 60890
 60891
 60892
 60893
 60894
 60895
 60896
 60897
 60898
 60899
 60900
 60901
 60902
 60903
 60904
 60905
 60906
 60907
 60908
 60909
 60910
 60911
 60912
 60913
 60914
 60915
 60916
 60917
 60918
 60919
 60920
 60921
 60922
 60923
 60924
 60925
 60926
 60927
 60928
 60929
 60930
 60931
 60932
 60933
 60934
 60935
 60936
 60937
 60938
 60939
 60940
 60941
 60942
 60943
 60944
 60945
 60946
 60947
 60948
 60949
 60950
 60951
 60952
 60953
 60954
 60955
 60956
 60957
 60958
 60959
 60960
 60961
 60962
 60963
 60964
 60965
 60966
 60967
 60968
 60969
 60970
 60971
 60972
 60973
 60974
 60975
 60976
 60977
 60978
 60979
 60980
 60981
 60982
 60983
 60984
 60985
 60986
 60987
 60988
 60989
 60990
 60991
 60992
 60993
 60994
 60995
 60996
 60997
 60998
 60999
 61000
 61001
 61002
 61003
 61004
 61005
 61006
 61007
 61008
 61009
 61010
 61011
 61012
 61013
 61014
 61015
 61016
 61017
 61018
 61019
 61020
 61021
 61022
 61023
 61024
 61025
 61026
 61027
 61028
 61029
 61030
 61031
 61032
 61033
 61034
 61035
 61036
 61037
 61038
 61039
 61040
 61041
 61042
 61043
 61044
 61045
 61046
 61047
 61048
 61049
 61050
 61051
 61052
 61053
 61054
 61055
 61056
 61057
 61058
 61059
 61060
 61061
 61062
 61063
 61064
 61065
 61066
 61067
 61068
 61069
 61070
 61071
 61072
 61073
 61074
 61075
 61076
 61077
 61078
 61079
 61080
 61081
 61082
 61083
 61084
 61085
 61086
 61087
 61088
 61089
 61090
 61091
 61092
 61093
 61094
 61095
 61096
 61097
 61098
 61099
 61100
 61101
 61102
 61103
 61104
 61105
 61106
 61107
 61108
 61109
 61110
 61111
 61112
 61113
 61114
 61115
 61116
 61117
 61118
 61119
 61120
 61121
 61122
 61123
 61124
 61125
 61126
 61127
 61128
 61129
 61130
 61131
 61132
 61133
 61134
 61135
 61136
 61137
 61138
 61139
 61140
 61141
 61142
 61143
 61144
 61145
 61146
 61147
 61148
 61149
 61150
 61151
 61152
 61153
 61154
 61155
 61156
 61157
 61158
 61159
 61160
 61161
 61162
 61163
 61164
 61165
 61166
 61167
 61168
 61169
 61170
 61171
 61172
 61173
 61174
 61175
 61176
 61177
 61178
 61179
 61180
 61181
 61182
 61183
 61184
 61185
 61186
 61187
 61188
 61189
 61190
 61191
 61192
 61193
 61194
 61195
 61196
 61197
 61198
 61199
 61200
 61201
 61202
 61203
 61204
 61205
 61206
 61207
 61208
 61209
 61210
 61211
 61212
 61213
 61214
 61215
 61216
 61217
 61218
 61219
 61220
 61221
 61222
 61223
 61224
 61225
 61226
 61227
 61228
 61229
 61230
 61231
 61232
 61233
 61234
 61235
 61236
 61237
 61238
 61239
 61240
 61241
 61242
 61243
 61244
 61245
 61246
 61247
 61248
 61249
 61250
 61251
 61252
 61253
 61254
 61255
 61256
 61257
 61258
 61259
 61260
 61261
 61262
 61263
 61264
 61265
 61266
 61267
 61268
 61269
 61270
 61271
 61272
 61273
 61274
 61275
 61276
 61277
 61278
 61279
 61280
 61281
 61282
 61283
 61284
 61285
 61286
 61287
 61288
 61289
 61290
 61291
 61292
 61293
 61294
 61295
 61296
 61297
 61298
 61299
 61300
 61301
 61302
 61303
 61304
 61305
 61306
 61307
 61308
 61309
 61310
 61311
 61312
 61313
 61314
 61315
 61316
 61317
 61318
 61319
 61320
 61321
 61322
 61323
 61324
 61325
 61326
 61327
 61328
 61329
 61330
 61331
 61332
 61333
 61334
 61335
 61336
 61337
 61338
 61339
 61340
 61341
 61342
 61343
 61344
 61345
 61346
 61347
 61348
 61349
 61350
 61351
 61352
 61353
 61354
 61355
 61356
 61357
 61358
 61359
 61360
 61361
 61362
 61363
 61364
 61365
 61366
 61367
 61368
 61369
 61370
 61371
 61372
 61373
 61374
 61375
 61376
 61377
 61378
 61379
 61380
 61381
 61382
 61383
 61384
 61385
 61386
 61387
 61388
 61389
 61390
 61391
 61392
 61393
 61394
 61395
 61396
 61397
 61398
 61399
 61400
 61401
 61402
 61403
 61404
 61405
 61406
 61407
 61408
 61409
 61410
 61411
 61412
 61413
 61414
 61415
 61416
 61417
 61418
 61419
 61420
 61421
 61422
 61423
 61424
 61425
 61426
 61427
 61428
 61429
 61430
 61431
 61432
 61433
 61434
 61435
 61436
 61437
 61438
 61439
 61440
 61441
 61442
 61443
 61444
 61445
 61446
 61447
 61448
 61449
 61450
 61451
 61452
 61453
 61454
 61455
 61456
 61457
 61458
 61459
 61460
 61461
 61462
 61463
 61464
 61465
 61466
 61467
 61468
 61469
 61470
 61471
 61472
 61473
 61474
 61475
 61476
 61477
 61478
 61479
 61480
 61481
 61482
 61483
 61484
 61485
 61486
 61487
 61488
 61489
 61490
 61491
 61492
 61493
 61494
 61495
 61496
 61497
 61498
 61499
 61500
 61501
 61502
 61503
 61504
 61505
 61506
 61507
 61508
 61509
 61510
 61511
 61512
 61513
 61514
 61515
 61516
 61517
 61518
 61519
 61520
 61521
 61522
 61523
 61524
 61525
 61526
 61527
 61528
 61529
 61530
 61531
 61532
 61533
 61534
 61535
 61536
 61537
 61538
 61539
 61540
 61541
 61542
 61543
 61544
 61545
 61546
 61547
 61548
 61549
 61550
 61551
 61552
 61553
 61554
 61555
 61556
 61557
 61558
 61559
 61560
 61561
 61562
 61563
 61564
 61565
 61566
 61567
 61568
 61569
 61570
 61571
 61572
 61573
 61574
 61575
 61576
 61577
 61578
 61579
 61580
 61581
 61582
 61583
 61584
 61585
 61586
 61587
 61588
 61589
 61590
 61591
 61592
 61593
 61594
 61595
 61596
 61597
 61598
 61599
 61600
 61601
 61602
 61603
 61604
 61605
 61606
 61607
 61608
 61609
 61610
 61611
 61612
 61613
 61614
 61615
 61616
 61617
 61618
 61619
 61620
 61621
 61622
 61623
 61624
 61625
 61626
 61627
 61628
 61629
 61630
 61631
 61632
 61633
 61634
 61635
 61636
 61637
 61638
 61639
 61640
 61641
 61642
 61643
 61644
 61645
 61646
 61647
 61648
 61649
 61650
 61651
 61652
 61653
 61654
 61655
 61656
 61657
 61658
 61659
 61660
 61661
 61662
 61663
 61664
 61665
 61666
 61667
 61668
 61669
 61670
 61671
 61672
 61673
 61674
 61675
 61676
 61677
 61678
 61679
 61680
 61681
 61682
 61683
 61684
 61685
 61686
 61687
 61688
 61689
 61690
 61691
 61692
 61693
 61694
 61695
 61696
 61697
 61698
 61699
 61700
 61701
 61702
 61703
 61704
 61705
 61706
 61707
 61708
 61709
 61710
 61711
 61712
 61713
 61714
 61715
 61716
 61717
 61718
 61719
 61720
 61721
 61722
 61723
 61724
 61725
 61726
 61727
 61728
 61729
 61730
 61731
 61732
 61733
 61734
 61735
 61736
 61737
 61738
 61739
 61740
 61741
 61742
 61743
 61744
 61745
 61746
 61747
 61748
 61749
 61750
 61751
 61752
 61753
 61754
 61755
 61756
 61757
 61758
 61759
 61760
 61761
 61762
 61763
 61764
 61765
 61766
 61767
 61768
 61769
 61770
 61771
 61772
 61773
 61774
 61775
 61776
 61777
 61778
 61779
 61780
 61781
 61782
 61783
 61784
 61785
 61786
 61787
 61788
 61789
 61790
 61791
 61792
 61793
 61794
 61795
 61796
 61797
 61798
 61799
 61800
 61801
 61802
 61803
 61804
 61805
 61806
 61807
 61808
 61809
 61810
 61811
 61812
 61813
 61814
 61815
 61816
 61817
 61818
 61819
 61820
 61821
 61822
 61823
 61824
 61825
 61826
 61827
 61828
 61829
 61830
 61831
 61832
 61833
 61834
 61835
 61836
 61837
 61838
 61839
 61840
 61841
 61842
 61843
 61844
 61845
 61846
 61847
 61848
 61849
 61850
 61851
 61852
 61853
 61854
 61855
 61856
 61857
 61858
 61859
 61860
 61861
 61862
 61863
 61864
 61865
 61866
 61867
 61868
 61869
 61870
 61871
 61872
 61873
 61874
 61875
 61876
 61877
 61878
 61879
 61880
 61881
 61882
 61883
 61884
 61885
 61886
 61887
 61888
 61889
 61890
 61891
 61892
 61893
 61894
 61895
 61896
 61897
 61898
 61899
 61900
 61901
 61902
 61903
 61904
 61905
 61906
 61907
 61908
 61909
 61910
 61911
 61912
 61913
 61914
 61915
 61916
 61917
 61918
 61919
 61920
 61921
 61922
 61923
 61924
 61925
 61926
 61927
 61928
 61929
 61930
 61931
 61932
 61933
 61934
 61935
 61936
 61937
 61938
 61939
 61940
 61941
 61942
 61943
 61944
 61945
 61946
 61947
 61948
 61949
 61950
 61951
 61952
 61953
 61954
 61955
 61956
 61957
 61958
 61959
 61960
 61961
 61962
 61963
 61964
 61965
 61966
 61967
 61968
 61969
 61970
 61971
 61972
 61973
 61974
 61975
 61976
 61977
 61978
 61979
 61980
 61981
 61982
 61983
 61984
 61985
 61986
 61987
 61988
 61989
 61990
 61991
 61992
 61993
 61994
 61995
 61996
 61997
 61998
 61999
 62000
 62001
 62002
 62003
 62004
 62005
 62006
 62007
 62008
 62009
 62010
 62011
 62012
 62013
 62014
 62015
 62016
 62017
 62018
 62019
 62020
 62021
 62022
 62023
 62024
 62025
 62026
 62027
 62028
 62029
 62030
 62031
 62032
 62033
 62034
 62035
 62036
 62037
 62038
 62039
 62040
 62041
 62042
 62043
 62044
 62045
 62046
 62047
 62048
 62049
 62050
 62051
 62052
 62053
 62054
 62055
 62056
 62057
 62058
 62059
 62060
 62061
 62062
 62063
 62064
 62065
 62066
 62067
 62068
 62069
 62070
 62071
 62072
 62073
 62074
 62075
 62076
 62077
 62078
 62079
 62080
 62081
 62082
 62083
 62084
 62085
 62086
 62087
 62088
 62089
 62090
 62091
 62092
 62093
 62094
 62095
 62096
 62097
 62098
 62099
 62100
 62101
 62102
 62103
 62104
 62105
 62106
 62107
 62108
 62109
 62110
 62111
 62112
 62113
 62114
 62115
 62116
 62117
 62118
 62119
 62120
 62121
 62122
 62123
 62124
 62125
 62126
 62127
 62128
 62129
 62130
 62131
 62132
 62133
 62134
 62135
 62136
 62137
 62138
 62139
 62140
 62141
 62142
 62143
 62144
 62145
 62146
 62147
 62148
 62149
 62150
 62151
 62152
 62153
 62154
 62155
 62156
 62157
 62158
 62159
 62160
 62161
 62162
 62163
 62164
 62165
 62166
 62167
 62168
 62169
 62170
 62171
 62172
 62173
 62174
 62175
 62176
 62177
 62178
 62179
 62180
 62181
 62182
 62183
 62184
 62185
 62186
 62187
 62188
 62189
 62190
 62191
 62192
 62193
 62194
 62195
 62196
 62197
 62198
 62199
 62200
 62201
 62202
 62203
 62204
 62205
 62206
 62207
 62208
 62209
 62210
 62211
 62212
 62213
 62214
 62215
 62216
 62217
 62218
 62219
 62220
 62221
 62222
 62223
 62224
 62225
 62226
 62227
 62228
 62229
 62230
 62231
 62232
 62233
 62234
 62235
 62236
 62237
 62238
 62239
 62240
 62241
 62242
 62243
 62244
 62245
 62246
 62247
 62248
 62249
 62250
 62251
 62252
 62253
 62254
 62255
 62256
 62257
 62258
 62259
 62260
 62261
 62262
 62263
 62264
 62265
 62266
 62267
 62268
 62269
 62270
 62271
 62272
 62273
 62274
 62275
 62276
 62277
 62278
 62279
 62280
 62281
 62282
 62283
 62284
 62285
 62286
 62287
 62288
 62289
 62290
 62291
 62292
 62293
 62294
 62295
 62296
 62297
 62298
 62299
 62300
 62301
 62302
 62303
 62304
 62305
 62306
 62307
 62308
 62309
 62310
 62311
 62312
 62313
 62314
 62315
 62316
 62317
 62318
 62319
 62320
 62321
 62322
 62323
 62324
 62325
 62326
 62327
 62328
 62329
 62330
 62331
 62332
 62333
 62334
 62335
 62336
 62337
 62338
 62339
 62340
 62341
 62342
 62343
 62344
 62345
 62346
 62347
 62348
 62349
 62350
 62351
 62352
 62353
 62354
 62355
 62356
 62357
 62358
 62359
 62360
 62361
 62362
 62363
 62364
 62365
 62366
 62367
 62368
 62369
 62370
 62371
 62372
 62373
 62374
 62375
 62376
 62377
 62378
 62379
 62380
 62381
 62382
 62383
 62384
 62385
 62386
 62387
 62388
 62389
 62390
 62391
 62392
 62393
 62394
 62395
 62396
 62397
 62398
 62399
 62400
 62401
 62402
 62403
 62404
 62405
 62406
 62407
 62408
 62409
 62410
 62411
 62412
 62413
 62414
 62415
 62416
 62417
 62418
 62419
 62420
 62421
 62422
 62423
 62424
 62425
 62426
 62427
 62428
 62429
 62430
 62431
 62432
 62433
 62434
 62435
 62436
 62437
 62438
 62439
 62440
 62441
 62442
 62443
 62444
 62445
 62446
 62447
 62448
 62449
 62450
 62451
 62452
 62453
 62454
 62455
 62456
 62457
 62458
 62459
 62460
 62461
 62462
 62463
 62464
 62465
 62466
 62467
 62468
 62469
 62470
 62471
 62472
 62473
 62474
 62475
 62476
 62477
 62478
 62479
 62480
 62481
 62482
 62483
 62484
 62485
 62486
 62487
 62488
 62489
 62490
 62491
 62492
 62493
 62494
 62495
 62496
 62497
 62498
 62499
 62500
 62501
 62502
 62503
 62504
 62505
 62506
 62507
 62508
 62509
 62510
 62511
 62512
 62513
 62514
 62515
 62516
 62517
 62518
 62519
 62520
 62521
 62522
 62523
 62524
 62525
 62526
 62527
 62528
 62529
 62530
 62531
 62532
 62533
 62534
 62535
 62536
 62537
 62538
 62539
 62540
 62541
 62542
 62543
 62544
 62545
 62546
 62547
 62548
 62549
 62550
 62551
 62552
 62553
 62554
 62555
 62556
 62557
 62558
 62559
 62560
 62561
 62562
 62563
 62564
 62565
 62566
 62567
 62568
 62569
 62570
 62571
 62572
 62573
 62574
 62575
 62576
 62577
 62578
 62579
 62580
 62581
 62582
 62583
 62584
 62585
 62586
 62587
 62588
 62589
 62590
 62591
 62592
 62593
 62594
 62595
 62596
 62597
 62598
 62599
 62600
 62601
 62602
 62603
 62604
 62605
 62606
 62607
 62608
 62609
 62610
 62611
 62612
 62613
 62614
 62615
 62616
 62617
 62618
 62619
 62620
 62621
 62622
 62623
 62624
 62625
 62626
 62627
 62628
 62629
 62630
 62631
 62632
 62633
 62634
 62635
 62636
 62637
 62638
 62639
 62640
 62641
 62642
 62643
 62644
 62645
 62646
 62647
 62648
 62649
 62650
 62651
 62652
 62653
 62654
 62655
 62656
 62657
 62658
 62659
 62660
 62661
 62662
 62663
 62664
 62665
 62666
 62667
 62668
 62669
 62670
 62671
 62672
 62673
 62674
 62675
 62676
 62677
 62678
 62679
 62680
 62681
 62682
 62683
 62684
 62685
 62686
 62687
 62688
 62689
 62690
 62691
 62692
 62693
 62694
 62695
 62696
 62697
 62698
 62699
 62700
 62701
 62702
 62703
 62704
 62705
 62706
 62707
 62708
 62709
 62710
 62711
 62712
 62713
 62714
 62715
 62716
 62717
 62718
 62719
 62720
 62721
 62722
 62723
 62724
 62725
 62726
 62727
 62728
 62729
 62730
 62731
 62732
 62733
 62734
 62735
 62736
 62737
 62738
 62739
 62740
 62741
 62742
 62743
 62744
 62745
 62746
 62747
 62748
 62749
 62750
 62751
 62752
 62753
 62754
 62755
 62756
 62757
 62758
 62759
 62760
 62761
 62762
 62763
 62764
 62765
 62766
 62767
 62768
 62769
 62770
 62771
 62772
 62773
 62774
 62775
 62776
 62777
 62778
 62779
 62780
 62781
 62782
 62783
 62784
 62785
 62786
 62787
 62788
 62789
 62790
 62791
 62792
 62793
 62794
 62795
 62796
 62797
 62798
 62799
 62800
 62801
 62802
 62803
 62804
 62805
 62806
 62807
 62808
 62809
 62810
 62811
 62812
 62813
 62814
 62815
 62816
 62817
 62818
 62819
 62820
 62821
 62822
 62823
 62824
 62825
 62826
 62827
 62828
 62829
 62830
 62831
 62832
 62833
 62834
 62835
 62836
 62837
 62838
 62839
 62840
 62841
 62842
 62843
 62844
 62845
 62846
 62847
 62848
 62849
 62850
 62851
 62852
 62853
 62854
 62855
 62856
 62857
 62858
 62859
 62860
 62861
 62862
 62863
 62864
 62865
 62866
 62867
 62868
 62869
 62870
 62871
 62872
 62873
 62874
 62875
 62876
 62877
 62878
 62879
 62880
 62881
 62882
 62883
 62884
 62885
 62886
 62887
 62888
 62889
 62890
 62891
 62892
 62893
 62894
 62895
 62896
 62897
 62898
 62899
 62900
 62901
 62902
 62903
 62904
 62905
 62906
 62907
 62908
 62909
 62910
 62911
 62912
 62913
 62914
 62915
 62916
 62917
 62918
 62919
 62920
 62921
 62922
 62923
 62924
 62925
 62926
 62927
 62928
 62929
 62930
 62931
 62932
 62933
 62934
 62935
 62936
 62937
 62938
 62939
 62940
 62941
 62942
 62943
 62944
 62945
 62946
 62947
 62948
 62949
 62950
 62951
 62952
 62953
 62954
 62955
 62956
 62957
 62958
 62959
 62960
 62961
 62962
 62963
 62964
 62965
 62966
 62967
 62968
 62969
 62970
 62971
 62972
 62973
 62974
 62975
 62976
 62977
 62978
 62979
 62980
 62981
 62982
 62983
 62984
 62985
 62986
 62987
 62988
 62989
 62990
 62991
 62992
 62993
 62994
 62995
 62996
 62997
 62998
 62999
 63000
 63001
 63002
 63003
 63004
 63005
 63006
 63007
 63008
 63009
 63010
 63011
 63012
 63013
 63014
 63015
 63016
 63017
 63018
 63019
 63020
 63021
 63022
 63023
 63024
 63025
 63026
 63027
 63028
 63029
 63030
 63031
 63032
 63033
 63034
 63035
 63036
 63037
 63038
 63039
 63040
 63041
 63042
 63043
 63044
 63045
 63046
 63047
 63048
 63049
 63050
 63051
 63052
 63053
 63054
 63055
 63056
 63057
 63058
 63059
 63060
 63061
 63062
 63063
 63064
 63065
 63066
 63067
 63068
 63069
 63070
 63071
 63072
 63073
 63074
 63075
 63076
 63077
 63078
 63079
 63080
 63081
 63082
 63083
 63084
 63085
 63086
 63087
 63088
 63089
 63090
 63091
 63092
 63093
 63094
 63095
 63096
 63097
 63098
 63099
 63100
 63101
 63102
 63103
 63104
 63105
 63106
 63107
 63108
 63109
 63110
 63111
 63112
 63113
 63114
 63115
 63116
 63117
 63118
 63119
 63120
 63121
 63122
 63123
 63124
 63125
 63126
 63127
 63128
 63129
 63130
 63131
 63132
 63133
 63134
 63135
 63136
 63137
 63138
 63139
 63140
 63141
 63142
 63143
 63144
 63145
 63146
 63147
 63148
 63149
 63150
 63151
 63152
 63153
 63154
 63155
 63156
 63157
 63158
 63159
 63160
 63161
 63162
 63163
 63164
 63165
 63166
 63167
 63168
 63169
 63170
 63171
 63172
 63173
 63174
 63175
 63176
 63177
 63178
 63179
 63180
 63181
 63182
 63183
 63184
 63185
 63186
 63187
 63188
 63189
 63190
 63191
 63192
 63193
 63194
 63195
 63196
 63197
 63198
 63199
 63200
 63201
 63202
 63203
 63204
 63205
 63206
 63207
 63208
 63209
 63210
 63211
 63212
 63213
 63214
 63215
 63216
 63217
 63218
 63219
 63220
 63221
 63222
 63223
 63224
 63225
 63226
 63227
 63228
 63229
 63230
 63231
 63232
 63233
 63234
 63235
 63236
 63237
 63238
 63239
 63240
 63241
 63242
 63243
 63244
 63245
 63246
 63247
 63248
 63249
 63250
 63251
 63252
 63253
 63254
 63255
 63256
 63257
 63258
 63259
 63260
 63261
 63262
 63263
 63264
 63265
 63266
 63267
 63268
 63269
 63270
 63271
 63272
 63273
 63274
 63275
 63276
 63277
 63278
 63279
 63280
 63281
 63282
 63283
 63284
 63285
 63286
 63287
 63288
 63289
 63290
 63291
 63292
 63293
 63294
 63295
 63296
 63297
 63298
 63299
 63300
 63301
 63302
 63303
 63304
 63305
 63306
 63307
 63308
 63309
 63310
 63311
 63312
 63313
 63314
 63315
 63316
 63317
 63318
 63319
 63320
 63321
 63322
 63323
 63324
 63325
 63326
 63327
 63328
 63329
 63330
 63331
 63332
 63333
 63334
 63335
 63336
 63337
 63338
 63339
 63340
 63341
 63342
 63343
 63344
 63345
 63346
 63347
 63348
 63349
 63350
 63351
 63352
 63353
 63354
 63355
 63356
 63357
 63358
 63359
 63360
 63361
 63362
 63363
 63364
 63365
 63366
 63367
 63368
 63369
 63370
 63371
 63372
 63373
 63374
 63375
 63376
 63377
 63378
 63379
 63380
 63381
 63382
 63383
 63384
 63385
 63386
 63387
 63388
 63389
 63390
 63391
 63392
 63393
 63394
 63395
 63396
 63397
 63398
 63399
 63400
 63401
 63402
 63403
 63404
 63405
 63406
 63407
 63408
 63409
 63410
 63411
 63412
 63413
 63414
 63415
 63416
 63417
 63418
 63419
 63420
 63421
 63422
 63423
 63424
 63425
 63426
 63427
 63428
 63429
 63430
 63431
 63432
 63433
 63434
 63435
 63436
 63437
 63438
 63439
 63440
 63441
 63442
 63443
 63444
 63445
 63446
 63447
 63448
 63449
 63450
 63451
 63452
 63453
 63454
 63455
 63456
 63457
 63458
 63459
 63460
 63461
 63462
 63463
 63464
 63465
 63466
 63467
 63468
 63469
 63470
 63471
 63472
 63473
 63474
 63475
 63476
 63477
 63478
 63479
 63480
 63481
 63482
 63483
 63484
 63485
 63486
 63487
 63488
 63489
 63490
 63491
 63492
 63493
 63494
 63495
 63496
 63497
 63498
 63499
 63500
 63501
 63502
 63503
 63504
 63505
 63506
 63507
 63508
 63509
 63510
 63511
 63512
 63513
 63514
 63515
 63516
 63517
 63518
 63519
 63520
 63521
 63522
 63523
 63524
 63525
 63526
 63527
 63528
 63529
 63530
 63531
 63532
 63533
 63534
 63535
 63536
 63537
 63538
 63539
 63540
 63541
 63542
 63543
 63544
 63545
 63546
 63547
 63548
 63549
 63550
 63551
 63552
 63553
 63554
 63555
 63556
 63557
 63558
 63559
 63560
 63561
 63562
 63563
 63564
 63565
 63566
 63567
 63568
 63569
 63570
 63571
 63572
 63573
 63574
 63575
 63576
 63577
 63578
 63579
 63580
 63581
 63582
 63583
 63584
 63585
 63586
 63587
 63588
 63589
 63590
 63591
 63592
 63593
 63594
 63595
 63596
 63597
 63598
 63599
 63600
 63601
 63602
 63603
 63604
 63605
 63606
 63607
 63608
 63609
 63610
 63611
 63612
 63613
 63614
 63615
 63616
 63617
 63618
 63619
 63620
 63621
 63622
 63623
 63624
 63625
 63626
 63627
 63628
 63629
 63630
 63631
 63632
 63633
 63634
 63635
 63636
 63637
 63638
 63639
 63640
 63641
 63642
 63643
 63644
 63645
 63646
 63647
 63648
 63649
 63650
 63651
 63652
 63653
 63654
 63655
 63656
 63657
 63658
 63659
 63660
 63661
 63662
 63663
 63664
 63665
 63666
 63667
 63668
 63669
 63670
 63671
 63672
 63673
 63674
 63675
 63676
 63677
 63678
 63679
 63680
 63681
 63682
 63683
 63684
 63685
 63686
 63687
 63688
 63689
 63690
 63691
 63692
 63693
 63694
 63695
 63696
 63697
 63698
 63699
 63700
 63701
 63702
 63703
 63704
 63705
 63706
 63707
 63708
 63709
 63710
 63711
 63712
 63713
 63714
 63715
 63716
 63717
 63718
 63719
 63720
 63721
 63722
 63723
 63724
 63725
 63726
 63727
 63728
 63729
 63730
 63731
 63732
 63733
 63734
 63735
 63736
 63737
 63738
 63739
 63740
 63741
 63742
 63743
 63744
 63745
 63746
 63747
 63748
 63749
 63750
 63751
 63752
 63753
 63754
 63755
 63756
 63757
 63758
 63759
 63760
 63761
 63762
 63763
 63764
 63765
 63766
 63767
 63768
 63769
 63770
 63771
 63772
 63773
 63774
 63775
 63776
 63777
 63778
 63779
 63780
 63781
 63782
 63783
 63784
 63785
 63786
 63787
 63788
 63789
 63790
 63791
 63792
 63793
 63794
 63795
 63796
 63797
 63798
 63799
 63800
 63801
 63802
 63803
 63804
 63805
 63806
 63807
 63808
 63809
 63810
 63811
 63812
 63813
 63814
 63815
 63816
 63817
 63818
 63819
 63820
 63821
 63822
 63823
 63824
 63825
 63826
 63827
 63828
 63829
 63830
 63831
 63832
 63833
 63834
 63835
 63836
 63837
 63838
 63839
 63840
 63841
 63842
 63843
 63844
 63845
 63846
 63847
 63848
 63849
 63850
 63851
 63852
 63853
 63854
 63855
 63856
 63857
 63858
 63859
 63860
 63861
 63862
 63863
 63864
 63865
 63866
 63867
 63868
 63869
 63870
 63871
 63872
 63873
 63874
 63875
 63876
 63877
 63878
 63879
 63880
 63881
 63882
 63883
 63884
 63885
 63886
 63887
 63888
 63889
 63890
 63891
 63892
 63893
 63894
 63895
 63896
 63897
 63898
 63899
 63900
 63901
 63902
 63903
 63904
 63905
 63906
 63907
 63908
 63909
 63910
 63911
 63912
 63913
 63914
 63915
 63916
 63917
 63918
 63919
 63920
 63921
 63922
 63923
 63924
 63925
 63926
 63927
 63928
 63929
 63930
 63931
 63932
 63933
 63934
 63935
 63936
 63937
 63938
 63939
 63940
 63941
 63942
 63943
 63944
 63945
 63946
 63947
 63948
 63949
 63950
 63951
 63952
 63953
 63954
 63955
 63956
 63957
 63958
 63959
 63960
 63961
 63962
 63963
 63964
 63965
 63966
 63967
 63968
 63969
 63970
 63971
 63972
 63973
 63974
 63975
 63976
 63977
 63978
 63979
 63980
 63981
 63982
 63983
 63984
 63985
 63986
 63987
 63988
 63989
 63990
 63991
 63992
 63993
 63994
 63995
 63996
 63997
 63998
 63999
 64000
 64001
 64002
 64003
 64004
 64005
 64006
 64007
 64008
 64009
 64010
 64011
 64012
 64013
 64014
 64015
 64016
 64017
 64018
 64019
 64020
 64021
 64022
 64023
 64024
 64025
 64026
 64027
 64028
 64029
 64030
 64031
 64032
 64033
 64034
 64035
 64036
 64037
 64038
 64039
 64040
 64041
 64042
 64043
 64044
 64045
 64046
 64047
 64048
 64049
 64050
 64051
 64052
 64053
 64054
 64055
 64056
 64057
 64058
 64059
 64060
 64061
 64062
 64063
 64064
 64065
 64066
 64067
 64068
 64069
 64070
 64071
 64072
 64073
 64074
 64075
 64076
 64077
 64078
 64079
 64080
 64081
 64082
 64083
 64084
 64085
 64086
 64087
 64088
 64089
 64090
 64091
 64092
 64093
 64094
 64095
 64096
 64097
 64098
 64099
 64100
 64101
 64102
 64103
 64104
 64105
 64106
 64107
 64108
 64109
 64110
 64111
 64112
 64113
 64114
 64115
 64116
 64117
 64118
 64119
 64120
 64121
 64122
 64123
 64124
 64125
 64126
 64127
 64128
 64129
 64130
 64131
 64132
 64133
 64134
 64135
 64136
 64137
 64138
 64139
 64140
 64141
 64142
 64143
 64144
 64145
 64146
 64147
 64148
 64149
 64150
 64151
 64152
 64153
 64154
 64155
 64156
 64157
 64158
 64159
 64160
 64161
 64162
 64163
 64164
 64165
 64166
 64167
 64168
 64169
 64170
 64171
 64172
 64173
 64174
 64175
 64176
 64177
 64178
 64179
 64180
 64181
 64182
 64183
 64184
 64185
 64186
 64187
 64188
 64189
 64190
 64191
 64192
 64193
 64194
 64195
 64196
 64197
 64198
 64199
 64200
 64201
 64202
 64203
 64204
 64205
 64206
 64207
 64208
 64209
 64210
 64211
 64212
 64213
 64214
 64215
 64216
 64217
 64218
 64219
 64220
 64221
 64222
 64223
 64224
 64225
 64226
 64227
 64228
 64229
 64230
 64231
 64232
 64233
 64234
 64235
 64236
 64237
 64238
 64239
 64240
 64241
 64242
 64243
 64244
 64245
 64246
 64247
 64248
 64249
 64250
 64251
 64252
 64253
 64254
 64255
 64256
 64257
 64258
 64259
 64260
 64261
 64262
 64263
 64264
 64265
 64266
 64267
 64268
 64269
 64270
 64271
 64272
 64273
 64274
 64275
 64276
 64277
 64278
 64279
 64280
 64281
 64282
 64283
 64284
 64285
 64286
 64287
 64288
 64289
 64290
 64291
 64292
 64293
 64294
 64295
 64296
 64297
 64298
 64299
 64300
 64301
 64302
 64303
 64304
 64305
 64306
 64307
 64308
 64309
 64310
 64311
 64312
 64313
 64314
 64315
 64316
 64317
 64318
 64319
 64320
 64321
 64322
 64323
 64324
 64325
 64326
 64327
 64328
 64329
 64330
 64331
 64332
 64333
 64334
 64335
 64336
 64337
 64338
 64339
 64340
 64341
 64342
 64343
 64344
 64345
 64346
 64347
 64348
 64349
 64350
 64351
 64352
 64353
 64354
 64355
 64356
 64357
 64358
 64359
 64360
 64361
 64362
 64363
 64364
 64365
 64366
 64367
 64368
 64369
 64370
 64371
 64372
 64373
 64374
 64375
 64376
 64377
 64378
 64379
 64380
 64381
 64382
 64383
 64384
 64385
 64386
 64387
 64388
 64389
 64390
 64391
 64392
 64393
 64394
 64395
 64396
 64397
 64398
 64399
 64400
 64401
 64402
 64403
 64404
 64405
 64406
 64407
 64408
 64409
 64410
 64411
 64412
 64413
 64414
 64415
 64416
 64417
 64418
 64419
 64420
 64421
 64422
 64423
 64424
 64425
 64426
 64427
 64428
 64429
 64430
 64431
 64432
 64433
 64434
 64435
 64436
 64437
 64438
 64439
 64440
 64441
 64442
 64443
 64444
 64445
 64446
 64447
 64448
 64449
 64450
 64451
 64452
 64453
 64454
 64455
 64456
 64457
 64458
 64459
 64460
 64461
 64462
 64463
 64464
 64465
 64466
 64467
 64468
 64469
 64470
 64471
 64472
 64473
 64474
 64475
 64476
 64477
 64478
 64479
 64480
 64481
 64482
 64483
 64484
 64485
 64486
 64487
 64488
 64489
 64490
 64491
 64492
 64493
 64494
 64495
 64496
 64497
 64498
 64499
 64500
 64501
 64502
 64503
 64504
 64505
 64506
 64507
 64508
 64509
 64510
 64511
 64512
 64513
 64514
 64515
 64516
 64517
 64518
 64519
 64520
 64521
 64522
 64523
 64524
 64525
 64526
 64527
 64528
 64529
 64530
 64531
 64532
 64533
 64534
 64535
 64536
 64537
 64538
 64539
 64540
 64541
 64542
 64543
 64544
 64545
 64546
 64547
 64548
 64549
 64550
 64551
 64552
 64553
 64554
 64555
 64556
 64557
 64558
 64559
 64560
 64561
 64562
 64563
 64564
 64565
 64566
 64567
 64568
 64569
 64570
 64571
 64572
 64573
 64574
 64575
 64576
 64577
 64578
 64579
 64580
 64581
 64582
 64583
 64584
 64585
 64586
 64587
 64588
 64589
 64590
 64591
 64592
 64593
 64594
 64595
 64596
 64597
 64598
 64599
 64600
 64601
 64602
 64603
 64604
 64605
 64606
 64607
 64608
 64609
 64610
 64611
 64612
 64613
 64614
 64615
 64616
 64617
 64618
 64619
 64620
 64621
 64622
 64623
 64624
 64625
 64626
 64627
 64628
 64629
 64630
 64631
 64632
 64633
 64634
 64635
 64636
 64637
 64638
 64639
 64640
 64641
 64642
 64643
 64644
 64645
 64646
 64647
 64648
 64649
 64650
 64651
 64652
 64653
 64654
 64655
 64656
 64657
 64658
 64659
 64660
 64661
 64662
 64663
 64664
 64665
 64666
 64667
 64668
 64669
 64670
 64671
 64672
 64673
 64674
 64675
 64676
 64677
 64678
 64679
 64680
 64681
 64682
 64683
 64684
 64685
 64686
 64687
 64688
 64689
 64690
 64691
 64692
 64693
 64694
 64695
 64696
 64697
 64698
 64699
 64700
 64701
 64702
 64703
 64704
 64705
 64706
 64707
 64708
 64709
 64710
 64711
 64712
 64713
 64714
 64715
 64716
 64717
 64718
 64719
 64720
 64721
 64722
 64723
 64724
 64725
 64726
 64727
 64728
 64729
 64730
 64731
 64732
 64733
 64734
 64735
 64736
 64737
 64738
 64739
 64740
 64741
 64742
 64743
 64744
 64745
 64746
 64747
 64748
 64749
 64750
 64751
 64752
 64753
 64754
 64755
 64756
 64757
 64758
 64759
 64760
 64761
 64762
 64763
 64764
 64765
 64766
 64767
 64768
 64769
 64770
 64771
 64772
 64773
 64774
 64775
 64776
 64777
 64778
 64779
 64780
 64781
 64782
 64783
 64784
 64785
 64786
 64787
 64788
 64789
 64790
 64791
 64792
 64793
 64794
 64795
 64796
 64797
 64798
 64799
 64800
 64801
 64802
 64803
 64804
 64805
 64806
 64807
 64808
 64809
 64810
 64811
 64812
 64813
 64814
 64815
 64816
 64817
 64818
 64819
 64820
 64821
 64822
 64823
 64824
 64825
 64826
 64827
 64828
 64829
 64830
 64831
 64832
 64833
 64834
 64835
 64836
 64837
 64838
 64839
 64840
 64841
 64842
 64843
 64844
 64845
 64846
 64847
 64848
 64849
 64850
 64851
 64852
 64853
 64854
 64855
 64856
 64857
 64858
 64859
 64860
 64861
 64862
 64863
 64864
 64865
 64866
 64867
 64868
 64869
 64870
 64871
 64872
 64873
 64874
 64875
 64876
 64877
 64878
 64879
 64880
 64881
 64882
 64883
 64884
 64885
 64886
 64887
 64888
 64889
 64890
 64891
 64892
 64893
 64894
 64895
 64896
 64897
 64898
 64899
 64900
 64901
 64902
 64903
 64904
 64905
 64906
 64907
 64908
 64909
 64910
 64911
 64912
 64913
 64914
 64915
 64916
 64917
 64918
 64919
 64920
 64921
 64922
 64923
 64924
 64925
 64926
 64927
 64928
 64929
 64930
 64931
 64932
 64933
 64934
 64935
 64936
 64937
 64938
 64939
 64940
 64941
 64942
 64943
 64944
 64945
 64946
 64947
 64948
 64949
 64950
 64951
 64952
 64953
 64954
 64955
 64956
 64957
 64958
 64959
 64960
 64961
 64962
 64963
 64964
 64965
 64966
 64967
 64968
 64969
 64970
 64971
 64972
 64973
 64974
 64975
 64976
 64977
 64978
 64979
 64980
 64981
 64982
 64983
 64984
 64985
 64986
 64987
 64988
 64989
 64990
 64991
 64992
 64993
 64994
 64995
 64996
 64997
 64998
 64999
 65000
 65001
 65002
 65003
 65004
 65005
 65006
 65007
 65008
 65009
 65010
 65011
 65012
 65013
 65014
 65015
 65016
 65017
 65018
 65019
 65020
 65021
 65022
 65023
 65024
 65025
 65026
 65027
 65028
 65029
 65030
 65031
 65032
 65033
 65034
 65035
 65036
 65037
 65038
 65039
 65040
 65041
 65042
 65043
 65044
 65045
 65046
 65047
 65048
 65049
 65050
 65051
 65052
 65053
 65054
 65055
 65056
 65057
 65058
 65059
 65060
 65061
 65062
 65063
 65064
 65065
 65066
 65067
 65068
 65069
 65070
 65071
 65072
 65073
 65074
 65075
 65076
 65077
 65078
 65079
 65080
 65081
 65082
 65083
 65084
 65085
 65086
 65087
 65088
 65089
 65090
 65091
 65092
 65093
 65094
 65095
 65096
 65097
 65098
 65099
 65100
 65101
 65102
 65103
 65104
 65105
 65106
 65107
 65108
 65109
 65110
 65111
 65112
 65113
 65114
 65115
 65116
 65117
 65118
 65119
 65120
 65121
 65122
 65123
 65124
 65125
 65126
 65127
 65128
 65129
 65130
 65131
 65132
 65133
 65134
 65135
 65136
 65137
 65138
 65139
 65140
 65141
 65142
 65143
 65144
 65145
 65146
 65147
 65148
 65149
 65150
 65151
 65152
 65153
 65154
 65155
 65156
 65157
 65158
 65159
 65160
 65161
 65162
 65163
 65164
 65165
 65166
 65167
 65168
 65169
 65170
 65171
 65172
 65173
 65174
 65175
 65176
 65177
 65178
 65179
 65180
 65181
 65182
 65183
 65184
 65185
 65186
 65187
 65188
 65189
 65190
 65191
 65192
 65193
 65194
 65195
 65196
 65197
 65198
 65199
 65200
 65201
 65202
 65203
 65204
 65205
 65206
 65207
 65208
 65209
 65210
 65211
 65212
 65213
 65214
 65215
 65216
 65217
 65218
 65219
 65220
 65221
 65222
 65223
 65224
 65225
 65226
 65227
 65228
 65229
 65230
 65231
 65232
 65233
 65234
 65235
 65236
 65237
 65238
 65239
 65240
 65241
 65242
 65243
 65244
 65245
 65246
 65247
 65248
 65249
 65250
 65251
 65252
 65253
 65254
 65255
 65256
 65257
 65258
 65259
 65260
 65261
 65262
 65263
 65264
 65265
 65266
 65267
 65268
 65269
 65270
 65271
 65272
 65273
 65274
 65275
 65276
 65277
 65278
 65279
 65280
 65281
 65282
 65283
 65284
 65285
 65286
 65287
 65288
 65289
 65290
 65291
 65292
 65293
 65294
 65295
 65296
 65297
 65298
 65299
 65300
 65301
 65302
 65303
 65304
 65305
 65306
 65307
 65308
 65309
 65310
 65311
 65312
 65313
 65314
 65315
 65316
 65317
 65318
 65319
 65320
 65321
 65322
 65323
 65324
 65325
 65326
 65327
 65328
 65329
 65330
 65331
 65332
 65333
 65334
 65335
 65336
 65337
 65338
 65339
 65340
 65341
 65342
 65343
 65344
 65345
 65346
 65347
 65348
 65349
 65350
 65351
 65352
 65353
 65354
 65355
 65356
 65357
 65358
 65359
 65360
 65361
 65362
 65363
 65364
 65365
 65366
 65367
 65368
 65369
 65370
 65371
 65372
 65373
 65374
 65375
 65376
 65377
 65378
 65379
 65380
 65381
 65382
 65383
 65384
 65385
 65386
 65387
 65388
 65389
 65390
 65391
 65392
 65393
 65394
 65395
 65396
 65397
 65398
 65399
 65400
 65401
 65402
 65403
 65404
 65405
 65406
 65407
 65408
 65409
 65410
 65411
 65412
 65413
 65414
 65415
 65416
 65417
 65418
 65419
 65420
 65421
 65422
 65423
 65424
 65425
 65426
 65427
 65428
 65429
 65430
 65431
 65432
 65433
 65434
 65435
 65436
 65437
 65438
 65439
 65440
 65441
 65442
 65443
 65444
 65445
 65446
 65447
 65448
 65449
 65450
 65451
 65452
 65453
 65454
 65455
 65456
 65457
 65458
 65459
 65460
 65461
 65462
 65463
 65464
 65465
 65466
 65467
 65468
 65469
 65470
 65471
 65472
 65473
 65474
 65475
 65476
 65477
 65478
 65479
 65480
 65481
 65482
 65483
 65484
 65485
 65486
 65487
 65488
 65489
 65490
 65491
 65492
 65493
 65494
 65495
 65496
 65497
 65498
 65499
 65500
 65501
 65502
 65503
 65504
 65505
 65506
 65507
 65508
 65509
 65510
 65511
 65512
 65513
 65514
 65515
 65516
 65517
 65518
 65519
 65520
 65521
 65522
 65523
 65524
 65525
 65526
 65527
 65528
 65529
 65530
 65531
 65532
 65533
 65534
 65535
 65536
 65537
 65538
 65539
 65540
 65541
 65542
 65543
 65544
 65545
 65546
 65547
 65548
 65549
 65550
 65551
 65552
 65553
 65554
 65555
 65556
 65557
 65558
 65559
 65560
 65561
 65562
 65563
 65564
 65565
 65566
 65567
 65568
 65569
 65570
 65571
 65572
 65573
 65574
 65575
 65576
 65577
 65578
 65579
 65580
 65581
 65582
 65583
 65584
 65585
 65586
 65587
 65588
 65589
 65590
 65591
 65592
 65593
 65594
 65595
 65596
 65597
 65598
 65599
 65600
 65601
 65602
 65603
 65604
 65605
 65606
 65607
 65608
 65609
 65610
 65611
 65612
 65613
 65614
 65615
 65616
 65617
 65618
 65619
 65620
 65621
 65622
 65623
 65624
 65625
 65626
 65627
 65628
 65629
 65630
 65631
 65632
 65633
 65634
 65635
 65636
 65637
 65638
 65639
 65640
 65641
 65642
 65643
 65644
 65645
 65646
 65647
 65648
 65649
 65650
 65651
 65652
 65653
 65654
 65655
 65656
 65657
 65658
 65659
 65660
 65661
 65662
 65663
 65664
 65665
 65666
 65667
 65668
 65669
 65670
 65671
 65672
 65673
 65674
 65675
 65676
 65677
 65678
 65679
 65680
 65681
 65682
 65683
 65684
 65685
 65686
 65687
 65688
 65689
 65690
 65691
 65692
 65693
 65694
 65695
 65696
 65697
 65698
 65699
 65700
 65701
 65702
 65703
 65704
 65705
 65706
 65707
 65708
 65709
 65710
 65711
 65712
 65713
 65714
 65715
 65716
 65717
 65718
 65719
 65720
 65721
 65722
 65723
 65724
 65725
 65726
 65727
 65728
 65729
 65730
 65731
 65732
 65733
 65734
 65735
 65736
 65737
 65738
 65739
 65740
 65741
 65742
 65743
 65744
 65745
 65746
 65747
 65748
 65749
 65750
 65751
 65752
 65753
 65754
 65755
 65756
 65757
 65758
 65759
 65760
 65761
 65762
 65763
 65764
 65765
 65766
 65767
 65768
 65769
 65770
 65771
 65772
 65773
 65774
 65775
 65776
 65777
 65778
 65779
 65780
 65781
 65782
 65783
 65784
 65785
 65786
 65787
 65788
 65789
 65790
 65791
 65792
 65793
 65794
 65795
 65796
 65797
 65798
 65799
 65800
 65801
 65802
 65803
 65804
 65805
 65806
 65807
 65808
 65809
 65810
 65811
 65812
 65813
 65814
 65815
 65816
 65817
 65818
 65819
 65820
 65821
 65822
 65823
 65824
 65825
 65826
 65827
 65828
 65829
 65830
 65831
 65832
 65833
 65834
 65835
 65836
 65837
 65838
 65839
 65840
 65841
 65842
 65843
 65844
 65845
 65846
 65847
 65848
 65849
 65850
 65851
 65852
 65853
 65854
 65855
 65856
 65857
 65858
 65859
 65860
 65861
 65862
 65863
 65864
 65865
 65866
 65867
 65868
 65869
 65870
 65871
 65872
 65873
 65874
 65875
 65876
 65877
 65878
 65879
 65880
 65881
 65882
 65883
 65884
 65885
 65886
 65887
 65888
 65889
 65890
 65891
 65892
 65893
 65894
 65895
 65896
 65897
 65898
 65899
 65900
 65901
 65902
 65903
 65904
 65905
 65906
 65907
 65908
 65909
 65910
 65911
 65912
 65913
 65914
 65915
 65916
 65917
 65918
 65919
 65920
 65921
 65922
 65923
 65924
 65925
 65926
 65927
 65928
 65929
 65930
 65931
 65932
 65933
 65934
 65935
 65936
 65937
 65938
 65939
 65940
 65941
 65942
 65943
 65944
 65945
 65946
 65947
 65948
 65949
 65950
 65951
 65952
 65953
 65954
 65955
 65956
 65957
 65958
 65959
 65960
 65961
 65962
 65963
 65964
 65965
 65966
 65967
 65968
 65969
 65970
 65971
 65972
 65973
 65974
 65975
 65976
 65977
 65978
 65979
 65980
 65981
 65982
 65983
 65984
 65985
 65986
 65987
 65988
 65989
 65990
 65991
 65992
 65993
 65994
 65995
 65996
 65997
 65998
 65999
 66000
 66001
 66002
 66003
 66004
 66005
 66006
 66007
 66008
 66009
 66010
 66011
 66012
 66013
 66014
 66015
 66016
 66017
 66018
 66019
 66020
 66021
 66022
 66023
 66024
 66025
 66026
 66027
 66028
 66029
 66030
 66031
 66032
 66033
 66034
 66035
 66036
 66037
 66038
 66039
 66040
 66041
 66042
 66043
 66044
 66045
 66046
 66047
 66048
 66049
 66050
 66051
 66052
 66053
 66054
 66055
 66056
 66057
 66058
 66059
 66060
 66061
 66062
 66063
 66064
 66065
 66066
 66067
 66068
 66069
 66070
 66071
 66072
 66073
 66074
 66075
 66076
 66077
 66078
 66079
 66080
 66081
 66082
 66083
 66084
 66085
 66086
 66087
 66088
 66089
 66090
 66091
 66092
 66093
 66094
 66095
 66096
 66097
 66098
 66099
 66100
 66101
 66102
 66103
 66104
 66105
 66106
 66107
 66108
 66109
 66110
 66111
 66112
 66113
 66114
 66115
 66116
 66117
 66118
 66119
 66120
 66121
 66122
 66123
 66124
 66125
 66126
 66127
 66128
 66129
 66130
 66131
 66132
 66133
 66134
 66135
 66136
 66137
 66138
 66139
 66140
 66141
 66142
 66143
 66144
 66145
 66146
 66147
 66148
 66149
 66150
 66151
 66152
 66153
 66154
 66155
 66156
 66157
 66158
 66159
 66160
 66161
 66162
 66163
 66164
 66165
 66166
 66167
 66168
 66169
 66170
 66171
 66172
 66173
 66174
 66175
 66176
 66177
 66178
 66179
 66180
 66181
 66182
 66183
 66184
 66185
 66186
 66187
 66188
 66189
 66190
 66191
 66192
 66193
 66194
 66195
 66196
 66197
 66198
 66199
 66200
 66201
 66202
 66203
 66204
 66205
 66206
 66207
 66208
 66209
 66210
 66211
 66212
 66213
 66214
 66215
 66216
 66217
 66218
 66219
 66220
 66221
 66222
 66223
 66224
 66225
 66226
 66227
 66228
 66229
 66230
 66231
 66232
 66233
 66234
 66235
 66236
 66237
 66238
 66239
 66240
 66241
 66242
 66243
 66244
 66245
 66246
 66247
 66248
 66249
 66250
 66251
 66252
 66253
 66254
 66255
 66256
 66257
 66258
 66259
 66260
 66261
 66262
 66263
 66264
 66265
 66266
 66267
 66268
 66269
 66270
 66271
 66272
 66273
 66274
 66275
 66276
 66277
 66278
 66279
 66280
 66281
 66282
 66283
 66284
 66285
 66286
 66287
 66288
 66289
 66290
 66291
 66292
 66293
 66294
 66295
 66296
 66297
 66298
 66299
 66300
 66301
 66302
 66303
 66304
 66305
 66306
 66307
 66308
 66309
 66310
 66311
 66312
 66313
 66314
 66315
 66316
 66317
 66318
 66319
 66320
 66321
 66322
 66323
 66324
 66325
 66326
 66327
 66328
 66329
 66330
 66331
 66332
 66333
 66334
 66335
 66336
 66337
 66338
 66339
 66340
 66341
 66342
 66343
 66344
 66345
 66346
 66347
 66348
 66349
 66350
 66351
 66352
 66353
 66354
 66355
 66356
 66357
 66358
 66359
 66360
 66361
 66362
 66363
 66364
 66365
 66366
 66367
 66368
 66369
 66370
 66371
 66372
 66373
 66374
 66375
 66376
 66377
 66378
 66379
 66380
 66381
 66382
 66383
 66384
 66385
 66386
 66387
 66388
 66389
 66390
 66391
 66392
 66393
 66394
 66395
 66396
 66397
 66398
 66399
 66400
 66401
 66402
 66403
 66404
 66405
 66406
 66407
 66408
 66409
 66410
 66411
 66412
 66413
 66414
 66415
 66416
 66417
 66418
 66419
 66420
 66421
 66422
 66423
 66424
 66425
 66426
 66427
 66428
 66429
 66430
 66431
 66432
 66433
 66434
 66435
 66436
 66437
 66438
 66439
 66440
 66441
 66442
 66443
 66444
 66445
 66446
 66447
 66448
 66449
 66450
 66451
 66452
 66453
 66454
 66455
 66456
 66457
 66458
 66459
 66460
 66461
 66462
 66463
 66464
 66465
 66466
 66467
 66468
 66469
 66470
 66471
 66472
 66473
 66474
 66475
 66476
 66477
 66478
 66479
 66480
 66481
 66482
 66483
 66484
 66485
 66486
 66487
 66488
 66489
 66490
 66491
 66492
 66493
 66494
 66495
 66496
 66497
 66498
 66499
 66500
 66501
 66502
 66503
 66504
 66505
 66506
 66507
 66508
 66509
 66510
 66511
 66512
 66513
 66514
 66515
 66516
 66517
 66518
 66519
 66520
 66521
 66522
 66523
 66524
 66525
 66526
 66527
 66528
 66529
 66530
 66531
 66532
 66533
 66534
 66535
 66536
 66537
 66538
 66539
 66540
 66541
 66542
 66543
 66544
 66545
 66546
 66547
 66548
 66549
 66550
 66551
 66552
 66553
 66554
 66555
 66556
 66557
 66558
 66559
 66560
 66561
 66562
 66563
 66564
 66565
 66566
 66567
 66568
 66569
 66570
 66571
 66572
 66573
 66574
 66575
 66576
 66577
 66578
 66579
 66580
 66581
 66582
 66583
 66584
 66585
 66586
 66587
 66588
 66589
 66590
 66591
 66592
 66593
 66594
 66595
 66596
 66597
 66598
 66599
 66600
 66601
 66602
 66603
 66604
 66605
 66606
 66607
 66608
 66609
 66610
 66611
 66612
 66613
 66614
 66615
 66616
 66617
 66618
 66619
 66620
 66621
 66622
 66623
 66624
 66625
 66626
 66627
 66628
 66629
 66630
 66631
 66632
 66633
 66634
 66635
 66636
 66637
 66638
 66639
 66640
 66641
 66642
 66643
 66644
 66645
 66646
 66647
 66648
 66649
 66650
 66651
 66652
 66653
 66654
 66655
 66656
 66657
 66658
 66659
 66660
 66661
 66662
 66663
 66664
 66665
 66666
 66667
 66668
 66669
 66670
 66671
 66672
 66673
 66674
 66675
 66676
 66677
 66678
 66679
 66680
 66681
 66682
 66683
 66684
 66685
 66686
 66687
 66688
 66689
 66690
 66691
 66692
 66693
 66694
 66695
 66696
 66697
 66698
 66699
 66700
 66701
 66702
 66703
 66704
 66705
 66706
 66707
 66708
 66709
 66710
 66711
 66712
 66713
 66714
 66715
 66716
 66717
 66718
 66719
 66720
 66721
 66722
 66723
 66724
 66725
 66726
 66727
 66728
 66729
 66730
 66731
 66732
 66733
 66734
 66735
 66736
 66737
 66738
 66739
 66740
 66741
 66742
 66743
 66744
 66745
 66746
 66747
 66748
 66749
 66750
 66751
 66752
 66753
 66754
 66755
 66756
 66757
 66758
 66759
 66760
 66761
 66762
 66763
 66764
 66765
 66766
 66767
 66768
 66769
 66770
 66771
 66772
 66773
 66774
 66775
 66776
 66777
 66778
 66779
 66780
 66781
 66782
 66783
 66784
 66785
 66786
 66787
 66788
 66789
 66790
 66791
 66792
 66793
 66794
 66795
 66796
 66797
 66798
 66799
 66800
 66801
 66802
 66803
 66804
 66805
 66806
 66807
 66808
 66809
 66810
 66811
 66812
 66813
 66814
 66815
 66816
 66817
 66818
 66819
 66820
 66821
 66822
 66823
 66824
 66825
 66826
 66827
 66828
 66829
 66830
 66831
 66832
 66833
 66834
 66835
 66836
 66837
 66838
 66839
 66840
 66841
 66842
 66843
 66844
 66845
 66846
 66847
 66848
 66849
 66850
 66851
 66852
 66853
 66854
 66855
 66856
 66857
 66858
 66859
 66860
 66861
 66862
 66863
 66864
 66865
 66866
 66867
 66868
 66869
 66870
 66871
 66872
 66873
 66874
 66875
 66876
 66877
 66878
 66879
 66880
 66881
 66882
 66883
 66884
 66885
 66886
 66887
 66888
 66889
 66890
 66891
 66892
 66893
 66894
 66895
 66896
 66897
 66898
 66899
 66900
 66901
 66902
 66903
 66904
 66905
 66906
 66907
 66908
 66909
 66910
 66911
 66912
 66913
 66914
 66915
 66916
 66917
 66918
 66919
 66920
 66921
 66922
 66923
 66924
 66925
 66926
 66927
 66928
 66929
 66930
 66931
 66932
 66933
 66934
 66935
 66936
 66937
 66938
 66939
 66940
 66941
 66942
 66943
 66944
 66945
 66946
 66947
 66948
 66949
 66950
 66951
 66952
 66953
 66954
 66955
 66956
 66957
 66958
 66959
 66960
 66961
 66962
 66963
 66964
 66965
 66966
 66967
 66968
 66969
 66970
 66971
 66972
 66973
 66974
 66975
 66976
 66977
 66978
 66979
 66980
 66981
 66982
 66983
 66984
 66985
 66986
 66987
 66988
 66989
 66990
 66991
 66992
 66993
 66994
 66995
 66996
 66997
 66998
 66999
 67000
 67001
 67002
 67003
 67004
 67005
 67006
 67007
 67008
 67009
 67010
 67011
 67012
 67013
 67014
 67015
 67016
 67017
 67018
 67019
 67020
 67021
 67022
 67023
 67024
 67025
 67026
 67027
 67028
 67029
 67030
 67031
 67032
 67033
 67034
 67035
 67036
 67037
 67038
 67039
 67040
 67041
 67042
 67043
 67044
 67045
 67046
 67047
 67048
 67049
 67050
 67051
 67052
 67053
 67054
 67055
 67056
 67057
 67058
 67059
 67060
 67061
 67062
 67063
 67064
 67065
 67066
 67067
 67068
 67069
 67070
 67071
 67072
 67073
 67074
 67075
 67076
 67077
 67078
 67079
 67080
 67081
 67082
 67083
 67084
 67085
 67086
 67087
 67088
 67089
 67090
 67091
 67092
 67093
 67094
 67095
 67096
 67097
 67098
 67099
 67100
 67101
 67102
 67103
 67104
 67105
 67106
 67107
 67108
 67109
 67110
 67111
 67112
 67113
 67114
 67115
 67116
 67117
 67118
 67119
 67120
 67121
 67122
 67123
 67124
 67125
 67126
 67127
 67128
 67129
 67130
 67131
 67132
 67133
 67134
 67135
 67136
 67137
 67138
 67139
 67140
 67141
 67142
 67143
 67144
 67145
 67146
 67147
 67148
 67149
 67150
 67151
 67152
 67153
 67154
 67155
 67156
 67157
 67158
 67159
 67160
 67161
 67162
 67163
 67164
 67165
 67166
 67167
 67168
 67169
 67170
 67171
 67172
 67173
 67174
 67175
 67176
 67177
 67178
 67179
 67180
 67181
 67182
 67183
 67184
 67185
 67186
 67187
 67188
 67189
 67190
 67191
 67192
 67193
 67194
 67195
 67196
 67197
 67198
 67199
 67200
 67201
 67202
 67203
 67204
 67205
 67206
 67207
 67208
 67209
 67210
 67211
 67212
 67213
 67214
 67215
 67216
 67217
 67218
 67219
 67220
 67221
 67222
 67223
 67224
 67225
 67226
 67227
 67228
 67229
 67230
 67231
 67232
 67233
 67234
 67235
 67236
 67237
 67238
 67239
 67240
 67241
 67242
 67243
 67244
 67245
 67246
 67247
 67248
 67249
 67250
 67251
 67252
 67253
 67254
 67255
 67256
 67257
 67258
 67259
 67260
 67261
 67262
 67263
 67264
 67265
 67266
 67267
 67268
 67269
 67270
 67271
 67272
 67273
 67274
 67275
 67276
 67277
 67278
 67279
 67280
 67281
 67282
 67283
 67284
 67285
 67286
 67287
 67288
 67289
 67290
 67291
 67292
 67293
 67294
 67295
 67296
 67297
 67298
 67299
 67300
 67301
 67302
 67303
 67304
 67305
 67306
 67307
 67308
 67309
 67310
 67311
 67312
 67313
 67314
 67315
 67316
 67317
 67318
 67319
 67320
 67321
 67322
 67323
 67324
 67325
 67326
 67327
 67328
 67329
 67330
 67331
 67332
 67333
 67334
 67335
 67336
 67337
 67338
 67339
 67340
 67341
 67342
 67343
 67344
 67345
 67346
 67347
 67348
 67349
 67350
 67351
 67352
 67353
 67354
 67355
 67356
 67357
 67358
 67359
 67360
 67361
 67362
 67363
 67364
 67365
 67366
 67367
 67368
 67369
 67370
 67371
 67372
 67373
 67374
 67375
 67376
 67377
 67378
 67379
 67380
 67381
 67382
 67383
 67384
 67385
 67386
 67387
 67388
 67389
 67390
 67391
 67392
 67393
 67394
 67395
 67396
 67397
 67398
 67399
 67400
 67401
 67402
 67403
 67404
 67405
 67406
 67407
 67408
 67409
 67410
 67411
 67412
 67413
 67414
 67415
 67416
 67417
 67418
 67419
 67420
 67421
 67422
 67423
 67424
 67425
 67426
 67427
 67428
 67429
 67430
 67431
 67432
 67433
 67434
 67435
 67436
 67437
 67438
 67439
 67440
 67441
 67442
 67443
 67444
 67445
 67446
 67447
 67448
 67449
 67450
 67451
 67452
 67453
 67454
 67455
 67456
 67457
 67458
 67459
 67460
 67461
 67462
 67463
 67464
 67465
 67466
 67467
 67468
 67469
 67470
 67471
 67472
 67473
 67474
 67475
 67476
 67477
 67478
 67479
 67480
 67481
 67482
 67483
 67484
 67485
 67486
 67487
 67488
 67489
 67490
 67491
 67492
 67493
 67494
 67495
 67496
 67497
 67498
 67499
 67500
 67501
 67502
 67503
 67504
 67505
 67506
 67507
 67508
 67509
 67510
 67511
 67512
 67513
 67514
 67515
 67516
 67517
 67518
 67519
 67520
 67521
 67522
 67523
 67524
 67525
 67526
 67527
 67528
 67529
 67530
 67531
 67532
 67533
 67534
 67535
 67536
 67537
 67538
 67539
 67540
 67541
 67542
 67543
 67544
 67545
 67546
 67547
 67548
 67549
 67550
 67551
 67552
 67553
 67554
 67555
 67556
 67557
 67558
 67559
 67560
 67561
 67562
 67563
 67564
 67565
 67566
 67567
 67568
 67569
 67570
 67571
 67572
 67573
 67574
 67575
 67576
 67577
 67578
 67579
 67580
 67581
 67582
 67583
 67584
 67585
 67586
 67587
 67588
 67589
 67590
 67591
 67592
 67593
 67594
 67595
 67596
 67597
 67598
 67599
 67600
 67601
 67602
 67603
 67604
 67605
 67606
 67607
 67608
 67609
 67610
 67611
 67612
 67613
 67614
 67615
 67616
 67617
 67618
 67619
 67620
 67621
 67622
 67623
 67624
 67625
 67626
 67627
 67628
 67629
 67630
 67631
 67632
 67633
 67634
 67635
 67636
 67637
 67638
 67639
 67640
 67641
 67642
 67643
 67644
 67645
 67646
 67647
 67648
 67649
 67650
 67651
 67652
 67653
 67654
 67655
 67656
 67657
 67658
 67659
 67660
 67661
 67662
 67663
 67664
 67665
 67666
 67667
 67668
 67669
 67670
 67671
 67672
 67673
 67674
 67675
 67676
 67677
 67678
 67679
 67680
 67681
 67682
 67683
 67684
 67685
 67686
 67687
 67688
 67689
 67690
 67691
 67692
 67693
 67694
 67695
 67696
 67697
 67698
 67699
 67700
 67701
 67702
 67703
 67704
 67705
 67706
 67707
 67708
 67709
 67710
 67711
 67712
 67713
 67714
 67715
 67716
 67717
 67718
 67719
 67720
 67721
 67722
 67723
 67724
 67725
 67726
 67727
 67728
 67729
 67730
 67731
 67732
 67733
 67734
 67735
 67736
 67737
 67738
 67739
 67740
 67741
 67742
 67743
 67744
 67745
 67746
 67747
 67748
 67749
 67750
 67751
 67752
 67753
 67754
 67755
 67756
 67757
 67758
 67759
 67760
 67761
 67762
 67763
 67764
 67765
 67766
 67767
 67768
 67769
 67770
 67771
 67772
 67773
 67774
 67775
 67776
 67777
 67778
 67779
 67780
 67781
 67782
 67783
 67784
 67785
 67786
 67787
 67788
 67789
 67790
 67791
 67792
 67793
 67794
 67795
 67796
 67797
 67798
 67799
 67800
 67801
 67802
 67803
 67804
 67805
 67806
 67807
 67808
 67809
 67810
 67811
 67812
 67813
 67814
 67815
 67816
 67817
 67818
 67819
 67820
 67821
 67822
 67823
 67824
 67825
 67826
 67827
 67828
 67829
 67830
 67831
 67832
 67833
 67834
 67835
 67836
 67837
 67838
 67839
 67840
 67841
 67842
 67843
 67844
 67845
 67846
 67847
 67848
 67849
 67850
 67851
 67852
 67853
 67854
 67855
 67856
 67857
 67858
 67859
 67860
 67861
 67862
 67863
 67864
 67865
 67866
 67867
 67868
 67869
 67870
 67871
 67872
 67873
 67874
 67875
 67876
 67877
 67878
 67879
 67880
 67881
 67882
 67883
 67884
 67885
 67886
 67887
 67888
 67889
 67890
 67891
 67892
 67893
 67894
 67895
 67896
 67897
 67898
 67899
 67900
 67901
 67902
 67903
 67904
 67905
 67906
 67907
 67908
 67909
 67910
 67911
 67912
 67913
 67914
 67915
 67916
 67917
 67918
 67919
 67920
 67921
 67922
 67923
 67924
 67925
 67926
 67927
 67928
 67929
 67930
 67931
 67932
 67933
 67934
 67935
 67936
 67937
 67938
 67939
 67940
 67941
 67942
 67943
 67944
 67945
 67946
 67947
 67948
 67949
 67950
 67951
 67952
 67953
 67954
 67955
 67956
 67957
 67958
 67959
 67960
 67961
 67962
 67963
 67964
 67965
 67966
 67967
 67968
 67969
 67970
 67971
 67972
 67973
 67974
 67975
 67976
 67977
 67978
 67979
 67980
 67981
 67982
 67983
 67984
 67985
 67986
 67987
 67988
 67989
 67990
 67991
 67992
 67993
 67994
 67995
 67996
 67997
 67998
 67999
 68000
 68001
 68002
 68003
 68004
 68005
 68006
 68007
 68008
 68009
 68010
 68011
 68012
 68013
 68014
 68015
 68016
 68017
 68018
 68019
 68020
 68021
 68022
 68023
 68024
 68025
 68026
 68027
 68028
 68029
 68030
 68031
 68032
 68033
 68034
 68035
 68036
 68037
 68038
 68039
 68040
 68041
 68042
 68043
 68044
 68045
 68046
 68047
 68048
 68049
 68050
 68051
 68052
 68053
 68054
 68055
 68056
 68057
 68058
 68059
 68060
 68061
 68062
 68063
 68064
 68065
 68066
 68067
 68068
 68069
 68070
 68071
 68072
 68073
 68074
 68075
 68076
 68077
 68078
 68079
 68080
 68081
 68082
 68083
 68084
 68085
 68086
 68087
 68088
 68089
 68090
 68091
 68092
 68093
 68094
 68095
 68096
 68097
 68098
 68099
 68100
 68101
 68102
 68103
 68104
 68105
 68106
 68107
 68108
 68109
 68110
 68111
 68112
 68113
 68114
 68115
 68116
 68117
 68118
 68119
 68120
 68121
 68122
 68123
 68124
 68125
 68126
 68127
 68128
 68129
 68130
 68131
 68132
 68133
 68134
 68135
 68136
 68137
 68138
 68139
 68140
 68141
 68142
 68143
 68144
 68145
 68146
 68147
 68148
 68149
 68150
 68151
 68152
 68153
 68154
 68155
 68156
 68157
 68158
 68159
 68160
 68161
 68162
 68163
 68164
 68165
 68166
 68167
 68168
 68169
 68170
 68171
 68172
 68173
 68174
 68175
 68176
 68177
 68178
 68179
 68180
 68181
 68182
 68183
 68184
 68185
 68186
 68187
 68188
 68189
 68190
 68191
 68192
 68193
 68194
 68195
 68196
 68197
 68198
 68199
 68200
 68201
 68202
 68203
 68204
 68205
 68206
 68207
 68208
 68209
 68210
 68211
 68212
 68213
 68214
 68215
 68216
 68217
 68218
 68219
 68220
 68221
 68222
 68223
 68224
 68225
 68226
 68227
 68228
 68229
 68230
 68231
 68232
 68233
 68234
 68235
 68236
 68237
 68238
 68239
 68240
 68241
 68242
 68243
 68244
 68245
 68246
 68247
 68248
 68249
 68250
 68251
 68252
 68253
 68254
 68255
 68256
 68257
 68258
 68259
 68260
 68261
 68262
 68263
 68264
 68265
 68266
 68267
 68268
 68269
 68270
 68271
 68272
 68273
 68274
 68275
 68276
 68277
 68278
 68279
 68280
 68281
 68282
 68283
 68284
 68285
 68286
 68287
 68288
 68289
 68290
 68291
 68292
 68293
 68294
 68295
 68296
 68297
 68298
 68299
 68300
 68301
 68302
 68303
 68304
 68305
 68306
 68307
 68308
 68309
 68310
 68311
 68312
 68313
 68314
 68315
 68316
 68317
 68318
 68319
 68320
 68321
 68322
 68323
 68324
 68325
 68326
 68327
 68328
 68329
 68330
 68331
 68332
 68333
 68334
 68335
 68336
 68337
 68338
 68339
 68340
 68341
 68342
 68343
 68344
 68345
 68346
 68347
 68348
 68349
 68350
 68351
 68352
 68353
 68354
 68355
 68356
 68357
 68358
 68359
 68360
 68361
 68362
 68363
 68364
 68365
 68366
 68367
 68368
 68369
 68370
 68371
 68372
 68373
 68374
 68375
 68376
 68377
 68378
 68379
 68380
 68381
 68382
 68383
 68384
 68385
 68386
 68387
 68388
 68389
 68390
 68391
 68392
 68393
 68394
 68395
 68396
 68397
 68398
 68399
 68400
 68401
 68402
 68403
 68404
 68405
 68406
 68407
 68408
 68409
 68410
 68411
 68412
 68413
 68414
 68415
 68416
 68417
 68418
 68419
 68420
 68421
 68422
 68423
 68424
 68425
 68426
 68427
 68428
 68429
 68430
 68431
 68432
 68433
 68434
 68435
 68436
 68437
 68438
 68439
 68440
 68441
 68442
 68443
 68444
 68445
 68446
 68447
 68448
 68449
 68450
 68451
 68452
 68453
 68454
 68455
 68456
 68457
 68458
 68459
 68460
 68461
 68462
 68463
 68464
 68465
 68466
 68467
 68468
 68469
 68470
 68471
 68472
 68473
 68474
 68475
 68476
 68477
 68478
 68479
 68480
 68481
 68482
 68483
 68484
 68485
 68486
 68487
 68488
 68489
 68490
 68491
 68492
 68493
 68494
 68495
 68496
 68497
 68498
 68499
 68500
 68501
 68502
 68503
 68504
 68505
 68506
 68507
 68508
 68509
 68510
 68511
 68512
 68513
 68514
 68515
 68516
 68517
 68518
 68519
 68520
 68521
 68522
 68523
 68524
 68525
 68526
 68527
 68528
 68529
 68530
 68531
 68532
 68533
 68534
 68535
 68536
 68537
 68538
 68539
 68540
 68541
 68542
 68543
 68544
 68545
 68546
 68547
 68548
 68549
 68550
 68551
 68552
 68553
 68554
 68555
 68556
 68557
 68558
 68559
 68560
 68561
 68562
 68563
 68564
 68565
 68566
 68567
 68568
 68569
 68570
 68571
 68572
 68573
 68574
 68575
 68576
 68577
 68578
 68579
 68580
 68581
 68582
 68583
 68584
 68585
 68586
 68587
 68588
 68589
 68590
 68591
 68592
 68593
 68594
 68595
 68596
 68597
 68598
 68599
 68600
 68601
 68602
 68603
 68604
 68605
 68606
 68607
 68608
 68609
 68610
 68611
 68612
 68613
 68614
 68615
 68616
 68617
 68618
 68619
 68620
 68621
 68622
 68623
 68624
 68625
 68626
 68627
 68628
 68629
 68630
 68631
 68632
 68633
 68634
 68635
 68636
 68637
 68638
 68639
 68640
 68641
 68642
 68643
 68644
 68645
 68646
 68647
 68648
 68649
 68650
 68651
 68652
 68653
 68654
 68655
 68656
 68657
 68658
 68659
 68660
 68661
 68662
 68663
 68664
 68665
 68666
 68667
 68668
 68669
 68670
 68671
 68672
 68673
 68674
 68675
 68676
 68677
 68678
 68679
 68680
 68681
 68682
 68683
 68684
 68685
 68686
 68687
 68688
 68689
 68690
 68691
 68692
 68693
 68694
 68695
 68696
 68697
 68698
 68699
 68700
 68701
 68702
 68703
 68704
 68705
 68706
 68707
 68708
 68709
 68710
 68711
 68712
 68713
 68714
 68715
 68716
 68717
 68718
 68719
 68720
 68721
 68722
 68723
 68724
 68725
 68726
 68727
 68728
 68729
 68730
 68731
 68732
 68733
 68734
 68735
 68736
 68737
 68738
 68739
 68740
 68741
 68742
 68743
 68744
 68745
 68746
 68747
 68748
 68749
 68750
 68751
 68752
 68753
 68754
 68755
 68756
 68757
 68758
 68759
 68760
 68761
 68762
 68763
 68764
 68765
 68766
 68767
 68768
 68769
 68770
 68771
 68772
 68773
 68774
 68775
 68776
 68777
 68778
 68779
 68780
 68781
 68782
 68783
 68784
 68785
 68786
 68787
 68788
 68789
 68790
 68791
 68792
 68793
 68794
 68795
 68796
 68797
 68798
 68799
 68800
 68801
 68802
 68803
 68804
 68805
 68806
 68807
 68808
 68809
 68810
 68811
 68812
 68813
 68814
 68815
 68816
 68817
 68818
 68819
 68820
 68821
 68822
 68823
 68824
 68825
 68826
 68827
 68828
 68829
 68830
 68831
 68832
 68833
 68834
 68835
 68836
 68837
 68838
 68839
 68840
 68841
 68842
 68843
 68844
 68845
 68846
 68847
 68848
 68849
 68850
 68851
 68852
 68853
 68854
 68855
 68856
 68857
 68858
 68859
 68860
 68861
 68862
 68863
 68864
 68865
 68866
 68867
 68868
 68869
 68870
 68871
 68872
 68873
 68874
 68875
 68876
 68877
 68878
 68879
 68880
 68881
 68882
 68883
 68884
 68885
 68886
 68887
 68888
 68889
 68890
 68891
 68892
 68893
 68894
 68895
 68896
 68897
 68898
 68899
 68900
 68901
 68902
 68903
 68904
 68905
 68906
 68907
 68908
 68909
 68910
 68911
 68912
 68913
 68914
 68915
 68916
 68917
 68918
 68919
 68920
 68921
 68922
 68923
 68924
 68925
 68926
 68927
 68928
 68929
 68930
 68931
 68932
 68933
 68934
 68935
 68936
 68937
 68938
 68939
 68940
 68941
 68942
 68943
 68944
 68945
 68946
 68947
 68948
 68949
 68950
 68951
 68952
 68953
 68954
 68955
 68956
 68957
 68958
 68959
 68960
 68961
 68962
 68963
 68964
 68965
 68966
 68967
 68968
 68969
 68970
 68971
 68972
 68973
 68974
 68975
 68976
 68977
 68978
 68979
 68980
 68981
 68982
 68983
 68984
 68985
 68986
 68987
 68988
 68989
 68990
 68991
 68992
 68993
 68994
 68995
 68996
 68997
 68998
 68999
 69000
 69001
 69002
 69003
 69004
 69005
 69006
 69007
 69008
 69009
 69010
 69011
 69012
 69013
 69014
 69015
 69016
 69017
 69018
 69019
 69020
 69021
 69022
 69023
 69024
 69025
 69026
 69027
 69028
 69029
 69030
 69031
 69032
 69033
 69034
 69035
 69036
 69037
 69038
 69039
 69040
 69041
 69042
 69043
 69044
 69045
 69046
 69047
 69048
 69049
 69050
 69051
 69052
 69053
 69054
 69055
 69056
 69057
 69058
 69059
 69060
 69061
 69062
 69063
 69064
 69065
 69066
 69067
 69068
 69069
 69070
 69071
 69072
 69073
 69074
 69075
 69076
 69077
 69078
 69079
 69080
 69081
 69082
 69083
 69084
 69085
 69086
 69087
 69088
 69089
 69090
 69091
 69092
 69093
 69094
 69095
 69096
 69097
 69098
 69099
 69100
 69101
 69102
 69103
 69104
 69105
 69106
 69107
 69108
 69109
 69110
 69111
 69112
 69113
 69114
 69115
 69116
 69117
 69118
 69119
 69120
 69121
 69122
 69123
 69124
 69125
 69126
 69127
 69128
 69129
 69130
 69131
 69132
 69133
 69134
 69135
 69136
 69137
 69138
 69139
 69140
 69141
 69142
 69143
 69144
 69145
 69146
 69147
 69148
 69149
 69150
 69151
 69152
 69153
 69154
 69155
 69156
 69157
 69158
 69159
 69160
 69161
 69162
 69163
 69164
 69165
 69166
 69167
 69168
 69169
 69170
 69171
 69172
 69173
 69174
 69175
 69176
 69177
 69178
 69179
 69180
 69181
 69182
 69183
 69184
 69185
 69186
 69187
 69188
 69189
 69190
 69191
 69192
 69193
 69194
 69195
 69196
 69197
 69198
 69199
 69200
 69201
 69202
 69203
 69204
 69205
 69206
 69207
 69208
 69209
 69210
 69211
 69212
 69213
 69214
 69215
 69216
 69217
 69218
 69219
 69220
 69221
 69222
 69223
 69224
 69225
 69226
 69227
 69228
 69229
 69230
 69231
 69232
 69233
 69234
 69235
 69236
 69237
 69238
 69239
 69240
 69241
 69242
 69243
 69244
 69245
 69246
 69247
 69248
 69249
 69250
 69251
 69252
 69253
 69254
 69255
 69256
 69257
 69258
 69259
 69260
 69261
 69262
 69263
 69264
 69265
 69266
 69267
 69268
 69269
 69270
 69271
 69272
 69273
 69274
 69275
 69276
 69277
 69278
 69279
 69280
 69281
 69282
 69283
 69284
 69285
 69286
 69287
 69288
 69289
 69290
 69291
 69292
 69293
 69294
 69295
 69296
 69297
 69298
 69299
 69300
 69301
 69302
 69303
 69304
 69305
 69306
 69307
 69308
 69309
 69310
 69311
 69312
 69313
 69314
 69315
 69316
 69317
 69318
 69319
 69320
 69321
 69322
 69323
 69324
 69325
 69326
 69327
 69328
 69329
 69330
 69331
 69332
 69333
 69334
 69335
 69336
 69337
 69338
 69339
 69340
 69341
 69342
 69343
 69344
 69345
 69346
 69347
 69348
 69349
 69350
 69351
 69352
 69353
 69354
 69355
 69356
 69357
 69358
 69359
 69360
 69361
 69362
 69363
 69364
 69365
 69366
 69367
 69368
 69369
 69370
 69371
 69372
 69373
 69374
 69375
 69376
 69377
 69378
 69379
 69380
 69381
 69382
 69383
 69384
 69385
 69386
 69387
 69388
 69389
 69390
 69391
 69392
 69393
 69394
 69395
 69396
 69397
 69398
 69399
 69400
 69401
 69402
 69403
 69404
 69405
 69406
 69407
 69408
 69409
 69410
 69411
 69412
 69413
 69414
 69415
 69416
 69417
 69418
 69419
 69420
 69421
 69422
 69423
 69424
 69425
 69426
 69427
 69428
 69429
 69430
 69431
 69432
 69433
 69434
 69435
 69436
 69437
 69438
 69439
 69440
 69441
 69442
 69443
 69444
 69445
 69446
 69447
 69448
 69449
 69450
 69451
 69452
 69453
 69454
 69455
 69456
 69457
 69458
 69459
 69460
 69461
 69462
 69463
 69464
 69465
 69466
 69467
 69468
 69469
 69470
 69471
 69472
 69473
 69474
 69475
 69476
 69477
 69478
 69479
 69480
 69481
 69482
 69483
 69484
 69485
 69486
 69487
 69488
 69489
 69490
 69491
 69492
 69493
 69494
 69495
 69496
 69497
 69498
 69499
 69500
 69501
 69502
 69503
 69504
 69505
 69506
 69507
 69508
 69509
 69510
 69511
 69512
 69513
 69514
 69515
 69516
 69517
 69518
 69519
 69520
 69521
 69522
 69523
 69524
 69525
 69526
 69527
 69528
 69529
 69530
 69531
 69532
 69533
 69534
 69535
 69536
 69537
 69538
 69539
 69540
 69541
 69542
 69543
 69544
 69545
 69546
 69547
 69548
 69549
 69550
 69551
 69552
 69553
 69554
 69555
 69556
 69557
 69558
 69559
 69560
 69561
 69562
 69563
 69564
 69565
 69566
 69567
 69568
 69569
 69570
 69571
 69572
 69573
 69574
 69575
 69576
 69577
 69578
 69579
 69580
 69581
 69582
 69583
 69584
 69585
 69586
 69587
 69588
 69589
 69590
 69591
 69592
 69593
 69594
 69595
 69596
 69597
 69598
 69599
 69600
 69601
 69602
 69603
 69604
 69605
 69606
 69607
 69608
 69609
 69610
 69611
 69612
 69613
 69614
 69615
 69616
 69617
 69618
 69619
 69620
 69621
 69622
 69623
 69624
 69625
 69626
 69627
 69628
 69629
 69630
 69631
 69632
 69633
 69634
 69635
 69636
 69637
 69638
 69639
 69640
 69641
 69642
 69643
 69644
 69645
 69646
 69647
 69648
 69649
 69650
 69651
 69652
 69653
 69654
 69655
 69656
 69657
 69658
 69659
 69660
 69661
 69662
 69663
 69664
 69665
 69666
 69667
 69668
 69669
 69670
 69671
 69672
 69673
 69674
 69675
 69676
 69677
 69678
 69679
 69680
 69681
 69682
 69683
 69684
 69685
 69686
 69687
 69688
 69689
 69690
 69691
 69692
 69693
 69694
 69695
 69696
 69697
 69698
 69699
 69700
 69701
 69702
 69703
 69704
 69705
 69706
 69707
 69708
 69709
 69710
 69711
 69712
 69713
 69714
 69715
 69716
 69717
 69718
 69719
 69720
 69721
 69722
 69723
 69724
 69725
 69726
 69727
 69728
 69729
 69730
 69731
 69732
 69733
 69734
 69735
 69736
 69737
 69738
 69739
 69740
 69741
 69742
 69743
 69744
 69745
 69746
 69747
 69748
 69749
 69750
 69751
 69752
 69753
 69754
 69755
 69756
 69757
 69758
 69759
 69760
 69761
 69762
 69763
 69764
 69765
 69766
 69767
 69768
 69769
 69770
 69771
 69772
 69773
 69774
 69775
 69776
 69777
 69778
 69779
 69780
 69781
 69782
 69783
 69784
 69785
 69786
 69787
 69788
 69789
 69790
 69791
 69792
 69793
 69794
 69795
 69796
 69797
 69798
 69799
 69800
 69801
 69802
 69803
 69804
 69805
 69806
 69807
 69808
 69809
 69810
 69811
 69812
 69813
 69814
 69815
 69816
 69817
 69818
 69819
 69820
 69821
 69822
 69823
 69824
 69825
 69826
 69827
 69828
 69829
 69830
 69831
 69832
 69833
 69834
 69835
 69836
 69837
 69838
 69839
 69840
 69841
 69842
 69843
 69844
 69845
 69846
 69847
 69848
 69849
 69850
 69851
 69852
 69853
 69854
 69855
 69856
 69857
 69858
 69859
 69860
 69861
 69862
 69863
 69864
 69865
 69866
 69867
 69868
 69869
 69870
 69871
 69872
 69873
 69874
 69875
 69876
 69877
 69878
 69879
 69880
 69881
 69882
 69883
 69884
 69885
 69886
 69887
 69888
 69889
 69890
 69891
 69892
 69893
 69894
 69895
 69896
 69897
 69898
 69899
 69900
 69901
 69902
 69903
 69904
 69905
 69906
 69907
 69908
 69909
 69910
 69911
 69912
 69913
 69914
 69915
 69916
 69917
 69918
 69919
 69920
 69921
 69922
 69923
 69924
 69925
 69926
 69927
 69928
 69929
 69930
 69931
 69932
 69933
 69934
 69935
 69936
 69937
 69938
 69939
 69940
 69941
 69942
 69943
 69944
 69945
 69946
 69947
 69948
 69949
 69950
 69951
 69952
 69953
 69954
 69955
 69956
 69957
 69958
 69959
 69960
 69961
 69962
 69963
 69964
 69965
 69966
 69967
 69968
 69969
 69970
 69971
 69972
 69973
 69974
 69975
 69976
 69977
 69978
 69979
 69980
 69981
 69982
 69983
 69984
 69985
 69986
 69987
 69988
 69989
 69990
 69991
 69992
 69993
 69994
 69995
 69996
 69997
 69998
 69999
 70000
 70001
 70002
 70003
 70004
 70005
 70006
 70007
 70008
 70009
 70010
 70011
 70012
 70013
 70014
 70015
 70016
 70017
 70018
 70019
 70020
 70021
 70022
 70023
 70024
 70025
 70026
 70027
 70028
 70029
 70030
 70031
 70032
 70033
 70034
 70035
 70036
 70037
 70038
 70039
 70040
 70041
 70042
 70043
 70044
 70045
 70046
 70047
 70048
 70049
 70050
 70051
 70052
 70053
 70054
 70055
 70056
 70057
 70058
 70059
 70060
 70061
 70062
 70063
 70064
 70065
 70066
 70067
 70068
 70069
 70070
 70071
 70072
 70073
 70074
 70075
 70076
 70077
 70078
 70079
 70080
 70081
 70082
 70083
 70084
 70085
 70086
 70087
 70088
 70089
 70090
 70091
 70092
 70093
 70094
 70095
 70096
 70097
 70098
 70099
 70100
 70101
 70102
 70103
 70104
 70105
 70106
 70107
 70108
 70109
 70110
 70111
 70112
 70113
 70114
 70115
 70116
 70117
 70118
 70119
 70120
 70121
 70122
 70123
 70124
 70125
 70126
 70127
 70128
 70129
 70130
 70131
 70132
 70133
 70134
 70135
 70136
 70137
 70138
 70139
 70140
 70141
 70142
 70143
 70144
 70145
 70146
 70147
 70148
 70149
 70150
 70151
 70152
 70153
 70154
 70155
 70156
 70157
 70158
 70159
 70160
 70161
 70162
 70163
 70164
 70165
 70166
 70167
 70168
 70169
 70170
 70171
 70172
 70173
 70174
 70175
 70176
 70177
 70178
 70179
 70180
 70181
 70182
 70183
 70184
 70185
 70186
 70187
 70188
 70189
 70190
 70191
 70192
 70193
 70194
 70195
 70196
 70197
 70198
 70199
 70200
 70201
 70202
 70203
 70204
 70205
 70206
 70207
 70208
 70209
 70210
 70211
 70212
 70213
 70214
 70215
 70216
 70217
 70218
 70219
 70220
 70221
 70222
 70223
 70224
 70225
 70226
 70227
 70228
 70229
 70230
 70231
 70232
 70233
 70234
 70235
 70236
 70237
 70238
 70239
 70240
 70241
 70242
 70243
 70244
 70245
 70246
 70247
 70248
 70249
 70250
 70251
 70252
 70253
 70254
 70255
 70256
 70257
 70258
 70259
 70260
 70261
 70262
 70263
 70264
 70265
 70266
 70267
 70268
 70269
 70270
 70271
 70272
 70273
 70274
 70275
 70276
 70277
 70278
 70279
 70280
 70281
 70282
 70283
 70284
 70285
 70286
 70287
 70288
 70289
 70290
 70291
 70292
 70293
 70294
 70295
 70296
 70297
 70298
 70299
 70300
 70301
 70302
 70303
 70304
 70305
 70306
 70307
 70308
 70309
 70310
 70311
 70312
 70313
 70314
 70315
 70316
 70317
 70318
 70319
 70320
 70321
 70322
 70323
 70324
 70325
 70326
 70327
 70328
 70329
 70330
 70331
 70332
 70333
 70334
 70335
 70336
 70337
 70338
 70339
 70340
 70341
 70342
 70343
 70344
 70345
 70346
 70347
 70348
 70349
 70350
 70351
 70352
 70353
 70354
 70355
 70356
 70357
 70358
 70359
 70360
 70361
 70362
 70363
 70364
 70365
 70366
 70367
 70368
 70369
 70370
 70371
 70372
 70373
 70374
 70375
 70376
 70377
 70378
 70379
 70380
 70381
 70382
 70383
 70384
 70385
 70386
 70387
 70388
 70389
 70390
 70391
 70392
 70393
 70394
 70395
 70396
 70397
 70398
 70399
 70400
 70401
 70402
 70403
 70404
 70405
 70406
 70407
 70408
 70409
 70410
 70411
 70412
 70413
 70414
 70415
 70416
 70417
 70418
 70419
 70420
 70421
 70422
 70423
 70424
 70425
 70426
 70427
 70428
 70429
 70430
 70431
 70432
 70433
 70434
 70435
 70436
 70437
 70438
 70439
 70440
 70441
 70442
 70443
 70444
 70445
 70446
 70447
 70448
 70449
 70450
 70451
 70452
 70453
 70454
 70455
 70456
 70457
 70458
 70459
 70460
 70461
 70462
 70463
 70464
 70465
 70466
 70467
 70468
 70469
 70470
 70471
 70472
 70473
 70474
 70475
 70476
 70477
 70478
 70479
 70480
 70481
 70482
 70483
 70484
 70485
 70486
 70487
 70488
 70489
 70490
 70491
 70492
 70493
 70494
 70495
 70496
 70497
 70498
 70499
 70500
 70501
 70502
 70503
 70504
 70505
 70506
 70507
 70508
 70509
 70510
 70511
 70512
 70513
 70514
 70515
 70516
 70517
 70518
 70519
 70520
 70521
 70522
 70523
 70524
 70525
 70526
 70527
 70528
 70529
 70530
 70531
 70532
 70533
 70534
 70535
 70536
 70537
 70538
 70539
 70540
 70541
 70542
 70543
 70544
 70545
 70546
 70547
 70548
 70549
 70550
 70551
 70552
 70553
 70554
 70555
 70556
 70557
 70558
 70559
 70560
 70561
 70562
 70563
 70564
 70565
 70566
 70567
 70568
 70569
 70570
 70571
 70572
 70573
 70574
 70575
 70576
 70577
 70578
 70579
 70580
 70581
 70582
 70583
 70584
 70585
 70586
 70587
 70588
 70589
 70590
 70591
 70592
 70593
 70594
 70595
 70596
 70597
 70598
 70599
 70600
 70601
 70602
 70603
 70604
 70605
 70606
 70607
 70608
 70609
 70610
 70611
 70612
 70613
 70614
 70615
 70616
 70617
 70618
 70619
 70620
 70621
 70622
 70623
 70624
 70625
 70626
 70627
 70628
 70629
 70630
 70631
 70632
 70633
 70634
 70635
 70636
 70637
 70638
 70639
 70640
 70641
 70642
 70643
 70644
 70645
 70646
 70647
 70648
 70649
 70650
 70651
 70652
 70653
 70654
 70655
 70656
 70657
 70658
 70659
 70660
 70661
 70662
 70663
 70664
 70665
 70666
 70667
 70668
 70669
 70670
 70671
 70672
 70673
 70674
 70675
 70676
 70677
 70678
 70679
 70680
 70681
 70682
 70683
 70684
 70685
 70686
 70687
 70688
 70689
 70690
 70691
 70692
 70693
 70694
 70695
 70696
 70697
 70698
 70699
 70700
 70701
 70702
 70703
 70704
 70705
 70706
 70707
 70708
 70709
 70710
 70711
 70712
 70713
 70714
 70715
 70716
 70717
 70718
 70719
 70720
 70721
 70722
 70723
 70724
 70725
 70726
 70727
 70728
 70729
 70730
 70731
 70732
 70733
 70734
 70735
 70736
 70737
 70738
 70739
 70740
 70741
 70742
 70743
 70744
 70745
 70746
 70747
 70748
 70749
 70750
 70751
 70752
 70753
 70754
 70755
 70756
 70757
 70758
 70759
 70760
 70761
 70762
 70763
 70764
 70765
 70766
 70767
 70768
 70769
 70770
 70771
 70772
 70773
 70774
 70775
 70776
 70777
 70778
 70779
 70780
 70781
 70782
 70783
 70784
 70785
 70786
 70787
 70788
 70789
 70790
 70791
 70792
 70793
 70794
 70795
 70796
 70797
 70798
 70799
 70800
 70801
 70802
 70803
 70804
 70805
 70806
 70807
 70808
 70809
 70810
 70811
 70812
 70813
 70814
 70815
 70816
 70817
 70818
 70819
 70820
 70821
 70822
 70823
 70824
 70825
 70826
 70827
 70828
 70829
 70830
 70831
 70832
 70833
 70834
 70835
 70836
 70837
 70838
 70839
 70840
 70841
 70842
 70843
 70844
 70845
 70846
 70847
 70848
 70849
 70850
 70851
 70852
 70853
 70854
 70855
 70856
 70857
 70858
 70859
 70860
 70861
 70862
 70863
 70864
 70865
 70866
 70867
 70868
 70869
 70870
 70871
 70872
 70873
 70874
 70875
 70876
 70877
 70878
 70879
 70880
 70881
 70882
 70883
 70884
 70885
 70886
 70887
 70888
 70889
 70890
 70891
 70892
 70893
 70894
 70895
 70896
 70897
 70898
 70899
 70900
 70901
 70902
 70903
 70904
 70905
 70906
 70907
 70908
 70909
 70910
 70911
 70912
 70913
 70914
 70915
 70916
 70917
 70918
 70919
 70920
 70921
 70922
 70923
 70924
 70925
 70926
 70927
 70928
 70929
 70930
 70931
 70932
 70933
 70934
 70935
 70936
 70937
 70938
 70939
 70940
 70941
 70942
 70943
 70944
 70945
 70946
 70947
 70948
 70949
 70950
 70951
 70952
 70953
 70954
 70955
 70956
 70957
 70958
 70959
 70960
 70961
 70962
 70963
 70964
 70965
 70966
 70967
 70968
 70969
 70970
 70971
 70972
 70973
 70974
 70975
 70976
 70977
 70978
 70979
 70980
 70981
 70982
 70983
 70984
 70985
 70986
 70987
 70988
 70989
 70990
 70991
 70992
 70993
 70994
 70995
 70996
 70997
 70998
 70999
 71000
 71001
 71002
 71003
 71004
 71005
 71006
 71007
 71008
 71009
 71010
 71011
 71012
 71013
 71014
 71015
 71016
 71017
 71018
 71019
 71020
 71021
 71022
 71023
 71024
 71025
 71026
 71027
 71028
 71029
 71030
 71031
 71032
 71033
 71034
 71035
 71036
 71037
 71038
 71039
 71040
 71041
 71042
 71043
 71044
 71045
 71046
 71047
 71048
 71049
 71050
 71051
 71052
 71053
 71054
 71055
 71056
 71057
 71058
 71059
 71060
 71061
 71062
 71063
 71064
 71065
 71066
 71067
 71068
 71069
 71070
 71071
 71072
 71073
 71074
 71075
 71076
 71077
 71078
 71079
 71080
 71081
 71082
 71083
 71084
 71085
 71086
 71087
 71088
 71089
 71090
 71091
 71092
 71093
 71094
 71095
 71096
 71097
 71098
 71099
 71100
 71101
 71102
 71103
 71104
 71105
 71106
 71107
 71108
 71109
 71110
 71111
 71112
 71113
 71114
 71115
 71116
 71117
 71118
 71119
 71120
 71121
 71122
 71123
 71124
 71125
 71126
 71127
 71128
 71129
 71130
 71131
 71132
 71133
 71134
 71135
 71136
 71137
 71138
 71139
 71140
 71141
 71142
 71143
 71144
 71145
 71146
 71147
 71148
 71149
 71150
 71151
 71152
 71153
 71154
 71155
 71156
 71157
 71158
 71159
 71160
 71161
 71162
 71163
 71164
 71165
 71166
 71167
 71168
 71169
 71170
 71171
 71172
 71173
 71174
 71175
 71176
 71177
 71178
 71179
 71180
 71181
 71182
 71183
 71184
 71185
 71186
 71187
 71188
 71189
 71190
 71191
 71192
 71193
 71194
 71195
 71196
 71197
 71198
 71199
 71200
 71201
 71202
 71203
 71204
 71205
 71206
 71207
 71208
 71209
 71210
 71211
 71212
 71213
 71214
 71215
 71216
 71217
 71218
 71219
 71220
 71221
 71222
 71223
 71224
 71225
 71226
 71227
 71228
 71229
 71230
 71231
 71232
 71233
 71234
 71235
 71236
 71237
 71238
 71239
 71240
 71241
 71242
 71243
 71244
 71245
 71246
 71247
 71248
 71249
 71250
 71251
 71252
 71253
 71254
 71255
 71256
 71257
 71258
 71259
 71260
 71261
 71262
 71263
 71264
 71265
 71266
 71267
 71268
 71269
 71270
 71271
 71272
 71273
 71274
 71275
 71276
 71277
 71278
 71279
 71280
 71281
 71282
 71283
 71284
 71285
 71286
 71287
 71288
 71289
 71290
 71291
 71292
 71293
 71294
 71295
 71296
 71297
 71298
 71299
 71300
 71301
 71302
 71303
 71304
 71305
 71306
 71307
 71308
 71309
 71310
 71311
 71312
 71313
 71314
 71315
 71316
 71317
 71318
 71319
 71320
 71321
 71322
 71323
 71324
 71325
 71326
 71327
 71328
 71329
 71330
 71331
 71332
 71333
 71334
 71335
 71336
 71337
 71338
 71339
 71340
 71341
 71342
 71343
 71344
 71345
 71346
 71347
 71348
 71349
 71350
 71351
 71352
 71353
 71354
 71355
 71356
 71357
 71358
 71359
 71360
 71361
 71362
 71363
 71364
 71365
 71366
 71367
 71368
 71369
 71370
 71371
 71372
 71373
 71374
 71375
 71376
 71377
 71378
 71379
 71380
 71381
 71382
 71383
 71384
 71385
 71386
 71387
 71388
 71389
 71390
 71391
 71392
 71393
 71394
 71395
 71396
 71397
 71398
 71399
 71400
 71401
 71402
 71403
 71404
 71405
 71406
 71407
 71408
 71409
 71410
 71411
 71412
 71413
 71414
 71415
 71416
 71417
 71418
 71419
 71420
 71421
 71422
 71423
 71424
 71425
 71426
 71427
 71428
 71429
 71430
 71431
 71432
 71433
 71434
 71435
 71436
 71437
 71438
 71439
 71440
 71441
 71442
 71443
 71444
 71445
 71446
 71447
 71448
 71449
 71450
 71451
 71452
 71453
 71454
 71455
 71456
 71457
 71458
 71459
 71460
 71461
 71462
 71463
 71464
 71465
 71466
 71467
 71468
 71469
 71470
 71471
 71472
 71473
 71474
 71475
 71476
 71477
 71478
 71479
 71480
 71481
 71482
 71483
 71484
 71485
 71486
 71487
 71488
 71489
 71490
 71491
 71492
 71493
 71494
 71495
 71496
 71497
 71498
 71499
 71500
 71501
 71502
 71503
 71504
 71505
 71506
 71507
 71508
 71509
 71510
 71511
 71512
 71513
 71514
 71515
 71516
 71517
 71518
 71519
 71520
 71521
 71522
 71523
 71524
 71525
 71526
 71527
 71528
 71529
 71530
 71531
 71532
 71533
 71534
 71535
 71536
 71537
 71538
 71539
 71540
 71541
 71542
 71543
 71544
 71545
 71546
 71547
 71548
 71549
 71550
 71551
 71552
 71553
 71554
 71555
 71556
 71557
 71558
 71559
 71560
 71561
 71562
 71563
 71564
 71565
 71566
 71567
 71568
 71569
 71570
 71571
 71572
 71573
 71574
 71575
 71576
 71577
 71578
 71579
 71580
 71581
 71582
 71583
 71584
 71585
 71586
 71587
 71588
 71589
 71590
 71591
 71592
 71593
 71594
 71595
 71596
 71597
 71598
 71599
 71600
 71601
 71602
 71603
 71604
 71605
 71606
 71607
 71608
 71609
 71610
 71611
 71612
 71613
 71614
 71615
 71616
 71617
 71618
 71619
 71620
 71621
 71622
 71623
 71624
 71625
 71626
 71627
 71628
 71629
 71630
 71631
 71632
 71633
 71634
 71635
 71636
 71637
 71638
 71639
 71640
 71641
 71642
 71643
 71644
 71645
 71646
 71647
 71648
 71649
 71650
 71651
 71652
 71653
 71654
 71655
 71656
 71657
 71658
 71659
 71660
 71661
 71662
 71663
 71664
 71665
 71666
 71667
 71668
 71669
 71670
 71671
 71672
 71673
 71674
 71675
 71676
 71677
 71678
 71679
 71680
 71681
 71682
 71683
 71684
 71685
 71686
 71687
 71688
 71689
 71690
 71691
 71692
 71693
 71694
 71695
 71696
 71697
 71698
 71699
 71700
 71701
 71702
 71703
 71704
 71705
 71706
 71707
 71708
 71709
 71710
 71711
 71712
 71713
 71714
 71715
 71716
 71717
 71718
 71719
 71720
 71721
 71722
 71723
 71724
 71725
 71726
 71727
 71728
 71729
 71730
 71731
 71732
 71733
 71734
 71735
 71736
 71737
 71738
 71739
 71740
 71741
 71742
 71743
 71744
 71745
 71746
 71747
 71748
 71749
 71750
 71751
 71752
 71753
 71754
 71755
 71756
 71757
 71758
 71759
 71760
 71761
 71762
 71763
 71764
 71765
 71766
 71767
 71768
 71769
 71770
 71771
 71772
 71773
 71774
 71775
 71776
 71777
 71778
 71779
 71780
 71781
 71782
 71783
 71784
 71785
 71786
 71787
 71788
 71789
 71790
 71791
 71792
 71793
 71794
 71795
 71796
 71797
 71798
 71799
 71800
 71801
 71802
 71803
 71804
 71805
 71806
 71807
 71808
 71809
 71810
 71811
 71812
 71813
 71814
 71815
 71816
 71817
 71818
 71819
 71820
 71821
 71822
 71823
 71824
 71825
 71826
 71827
 71828
 71829
 71830
 71831
 71832
 71833
 71834
 71835
 71836
 71837
 71838
 71839
 71840
 71841
 71842
 71843
 71844
 71845
 71846
 71847
 71848
 71849
 71850
 71851
 71852
 71853
 71854
 71855
 71856
 71857
 71858
 71859
 71860
 71861
 71862
 71863
 71864
 71865
 71866
 71867
 71868
 71869
 71870
 71871
 71872
 71873
 71874
 71875
 71876
 71877
 71878
 71879
 71880
 71881
 71882
 71883
 71884
 71885
 71886
 71887
 71888
 71889
 71890
 71891
 71892
 71893
 71894
 71895
 71896
 71897
 71898
 71899
 71900
 71901
 71902
 71903
 71904
 71905
 71906
 71907
 71908
 71909
 71910
 71911
 71912
 71913
 71914
 71915
 71916
 71917
 71918
 71919
 71920
 71921
 71922
 71923
 71924
 71925
 71926
 71927
 71928
 71929
 71930
 71931
 71932
 71933
 71934
 71935
 71936
 71937
 71938
 71939
 71940
 71941
 71942
 71943
 71944
 71945
 71946
 71947
 71948
 71949
 71950
 71951
 71952
 71953
 71954
 71955
 71956
 71957
 71958
 71959
 71960
 71961
 71962
 71963
 71964
 71965
 71966
 71967
 71968
 71969
 71970
 71971
 71972
 71973
 71974
 71975
 71976
 71977
 71978
 71979
 71980
 71981
 71982
 71983
 71984
 71985
 71986
 71987
 71988
 71989
 71990
 71991
 71992
 71993
 71994
 71995
 71996
 71997
 71998
 71999
 72000
 72001
 72002
 72003
 72004
 72005
 72006
 72007
 72008
 72009
 72010
 72011
 72012
 72013
 72014
 72015
 72016
 72017
 72018
 72019
 72020
 72021
 72022
 72023
 72024
 72025
 72026
 72027
 72028
 72029
 72030
 72031
 72032
 72033
 72034
 72035
 72036
 72037
 72038
 72039
 72040
 72041
 72042
 72043
 72044
 72045
 72046
 72047
 72048
 72049
 72050
 72051
 72052
 72053
 72054
 72055
 72056
 72057
 72058
 72059
 72060
 72061
 72062
 72063
 72064
 72065
 72066
 72067
 72068
 72069
 72070
 72071
 72072
 72073
 72074
 72075
 72076
 72077
 72078
 72079
 72080
 72081
 72082
 72083
 72084
 72085
 72086
 72087
 72088
 72089
 72090
 72091
 72092
 72093
 72094
 72095
 72096
 72097
 72098
 72099
 72100
 72101
 72102
 72103
 72104
 72105
 72106
 72107
 72108
 72109
 72110
 72111
 72112
 72113
 72114
 72115
 72116
 72117
 72118
 72119
 72120
 72121
 72122
 72123
 72124
 72125
 72126
 72127
 72128
 72129
 72130
 72131
 72132
 72133
 72134
 72135
 72136
 72137
 72138
 72139
 72140
 72141
 72142
 72143
 72144
 72145
 72146
 72147
 72148
 72149
 72150
 72151
 72152
 72153
 72154
 72155
 72156
 72157
 72158
 72159
 72160
 72161
 72162
 72163
 72164
 72165
 72166
 72167
 72168
 72169
 72170
 72171
 72172
 72173
 72174
 72175
 72176
 72177
 72178
 72179
 72180
 72181
 72182
 72183
 72184
 72185
 72186
 72187
 72188
 72189
 72190
 72191
 72192
 72193
 72194
 72195
 72196
 72197
 72198
 72199
 72200
 72201
 72202
 72203
 72204
 72205
 72206
 72207
 72208
 72209
 72210
 72211
 72212
 72213
 72214
 72215
 72216
 72217
 72218
 72219
 72220
 72221
 72222
 72223
 72224
 72225
 72226
 72227
 72228
 72229
 72230
 72231
 72232
 72233
 72234
 72235
 72236
 72237
 72238
 72239
 72240
 72241
 72242
 72243
 72244
 72245
 72246
 72247
 72248
 72249
 72250
 72251
 72252
 72253
 72254
 72255
 72256
 72257
 72258
 72259
 72260
 72261
 72262
 72263
 72264
 72265
 72266
 72267
 72268
 72269
 72270
 72271
 72272
 72273
 72274
 72275
 72276
 72277
 72278
 72279
 72280
 72281
 72282
 72283
 72284
 72285
 72286
 72287
 72288
 72289
 72290
 72291
 72292
 72293
 72294
 72295
 72296
 72297
 72298
 72299
 72300
 72301
 72302
 72303
 72304
 72305
 72306
 72307
 72308
 72309
 72310
 72311
 72312
 72313
 72314
 72315
 72316
 72317
 72318
 72319
 72320
 72321
 72322
 72323
 72324
 72325
 72326
 72327
 72328
 72329
 72330
 72331
 72332
 72333
 72334
 72335
 72336
 72337
 72338
 72339
 72340
 72341
 72342
 72343
 72344
 72345
 72346
 72347
 72348
 72349
 72350
 72351
 72352
 72353
 72354
 72355
 72356
 72357
 72358
 72359
 72360
 72361
 72362
 72363
 72364
 72365
 72366
 72367
 72368
 72369
 72370
 72371
 72372
 72373
 72374
 72375
 72376
 72377
 72378
 72379
 72380
 72381
 72382
 72383
 72384
 72385
 72386
 72387
 72388
 72389
 72390
 72391
 72392
 72393
 72394
 72395
 72396
 72397
 72398
 72399
 72400
 72401
 72402
 72403
 72404
 72405
 72406
 72407
 72408
 72409
 72410
 72411
 72412
 72413
 72414
 72415
 72416
 72417
 72418
 72419
 72420
 72421
 72422
 72423
 72424
 72425
 72426
 72427
 72428
 72429
 72430
 72431
 72432
 72433
 72434
 72435
 72436
 72437
 72438
 72439
 72440
 72441
 72442
 72443
 72444
 72445
 72446
 72447
 72448
 72449
 72450
 72451
 72452
 72453
 72454
 72455
 72456
 72457
 72458
 72459
 72460
 72461
 72462
 72463
 72464
 72465
 72466
 72467
 72468
 72469
 72470
 72471
 72472
 72473
 72474
 72475
 72476
 72477
 72478
 72479
 72480
 72481
 72482
 72483
 72484
 72485
 72486
 72487
 72488
 72489
 72490
 72491
 72492
 72493
 72494
 72495
 72496
 72497
 72498
 72499
 72500
 72501
 72502
 72503
 72504
 72505
 72506
 72507
 72508
 72509
 72510
 72511
 72512
 72513
 72514
 72515
 72516
 72517
 72518
 72519
 72520
 72521
 72522
 72523
 72524
 72525
 72526
 72527
 72528
 72529
 72530
 72531
 72532
 72533
 72534
 72535
 72536
 72537
 72538
 72539
 72540
 72541
 72542
 72543
 72544
 72545
 72546
 72547
 72548
 72549
 72550
 72551
 72552
 72553
 72554
 72555
 72556
 72557
 72558
 72559
 72560
 72561
 72562
 72563
 72564
 72565
 72566
 72567
 72568
 72569
 72570
 72571
 72572
 72573
 72574
 72575
 72576
 72577
 72578
 72579
 72580
 72581
 72582
 72583
 72584
 72585
 72586
 72587
 72588
 72589
 72590
 72591
 72592
 72593
 72594
 72595
 72596
 72597
 72598
 72599
 72600
 72601
 72602
 72603
 72604
 72605
 72606
 72607
 72608
 72609
 72610
 72611
 72612
 72613
 72614
 72615
 72616
 72617
 72618
 72619
 72620
 72621
 72622
 72623
 72624
 72625
 72626
 72627
 72628
 72629
 72630
 72631
 72632
 72633
 72634
 72635
 72636
 72637
 72638
 72639
 72640
 72641
 72642
 72643
 72644
 72645
 72646
 72647
 72648
 72649
 72650
 72651
 72652
 72653
 72654
 72655
 72656
 72657
 72658
 72659
 72660
 72661
 72662
 72663
 72664
 72665
 72666
 72667
 72668
 72669
 72670
 72671
 72672
 72673
 72674
 72675
 72676
 72677
 72678
 72679
 72680
 72681
 72682
 72683
 72684
 72685
 72686
 72687
 72688
 72689
 72690
 72691
 72692
 72693
 72694
 72695
 72696
 72697
 72698
 72699
 72700
 72701
 72702
 72703
 72704
 72705
 72706
 72707
 72708
 72709
 72710
 72711
 72712
 72713
 72714
 72715
 72716
 72717
 72718
 72719
 72720
 72721
 72722
 72723
 72724
 72725
 72726
 72727
 72728
 72729
 72730
 72731
 72732
 72733
 72734
 72735
 72736
 72737
 72738
 72739
 72740
 72741
 72742
 72743
 72744
 72745
 72746
 72747
 72748
 72749
 72750
 72751
 72752
 72753
 72754
 72755
 72756
 72757
 72758
 72759
 72760
 72761
 72762
 72763
 72764
 72765
 72766
 72767
 72768
 72769
 72770
 72771
 72772
 72773
 72774
 72775
 72776
 72777
 72778
 72779
 72780
 72781
 72782
 72783
 72784
 72785
 72786
 72787
 72788
 72789
 72790
 72791
 72792
 72793
 72794
 72795
 72796
 72797
 72798
 72799
 72800
 72801
 72802
 72803
 72804
 72805
 72806
 72807
 72808
 72809
 72810
 72811
 72812
 72813
 72814
 72815
 72816
 72817
 72818
 72819
 72820
 72821
 72822
 72823
 72824
 72825
 72826
 72827
 72828
 72829
 72830
 72831
 72832
 72833
 72834
 72835
 72836
 72837
 72838
 72839
 72840
 72841
 72842
 72843
 72844
 72845
 72846
 72847
 72848
 72849
 72850
 72851
 72852
 72853
 72854
 72855
 72856
 72857
 72858
 72859
 72860
 72861
 72862
 72863
 72864
 72865
 72866
 72867
 72868
 72869
 72870
 72871
 72872
 72873
 72874
 72875
 72876
 72877
 72878
 72879
 72880
 72881
 72882
 72883
 72884
 72885
 72886
 72887
 72888
 72889
 72890
 72891
 72892
 72893
 72894
 72895
 72896
 72897
 72898
 72899
 72900
 72901
 72902
 72903
 72904
 72905
 72906
 72907
 72908
 72909
 72910
 72911
 72912
 72913
 72914
 72915
 72916
 72917
 72918
 72919
 72920
 72921
 72922
 72923
 72924
 72925
 72926
 72927
 72928
 72929
 72930
 72931
 72932
 72933
 72934
 72935
 72936
 72937
 72938
 72939
 72940
 72941
 72942
 72943
 72944
 72945
 72946
 72947
 72948
 72949
 72950
 72951
 72952
 72953
 72954
 72955
 72956
 72957
 72958
 72959
 72960
 72961
 72962
 72963
 72964
 72965
 72966
 72967
 72968
 72969
 72970
 72971
 72972
 72973
 72974
 72975
 72976
 72977
 72978
 72979
 72980
 72981
 72982
 72983
 72984
 72985
 72986
 72987
 72988
 72989
 72990
 72991
 72992
 72993
 72994
 72995
 72996
 72997
 72998
 72999
 73000
 73001
 73002
 73003
 73004
 73005
 73006
 73007
 73008
 73009
 73010
 73011
 73012
 73013
 73014
 73015
 73016
 73017
 73018
 73019
 73020
 73021
 73022
 73023
 73024
 73025
 73026
 73027
 73028
 73029
 73030
 73031
 73032
 73033
 73034
 73035
 73036
 73037
 73038
 73039
 73040
 73041
 73042
 73043
 73044
 73045
 73046
 73047
 73048
 73049
 73050
 73051
 73052
 73053
 73054
 73055
 73056
 73057
 73058
 73059
 73060
 73061
 73062
 73063
 73064
 73065
 73066
 73067
 73068
 73069
 73070
 73071
 73072
 73073
 73074
 73075
 73076
 73077
 73078
 73079
 73080
 73081
 73082
 73083
 73084
 73085
 73086
 73087
 73088
 73089
 73090
 73091
 73092
 73093
 73094
 73095
 73096
 73097
 73098
 73099
 73100
 73101
 73102
 73103
 73104
 73105
 73106
 73107
 73108
 73109
 73110
 73111
 73112
 73113
 73114
 73115
 73116
 73117
 73118
 73119
 73120
 73121
 73122
 73123
 73124
 73125
 73126
 73127
 73128
 73129
 73130
 73131
 73132
 73133
 73134
 73135
 73136
 73137
 73138
 73139
 73140
 73141
 73142
 73143
 73144
 73145
 73146
 73147
 73148
 73149
 73150
 73151
 73152
 73153
 73154
 73155
 73156
 73157
 73158
 73159
 73160
 73161
 73162
 73163
 73164
 73165
 73166
 73167
 73168
 73169
 73170
 73171
 73172
 73173
 73174
 73175
 73176
 73177
 73178
 73179
 73180
 73181
 73182
 73183
 73184
 73185
 73186
 73187
 73188
 73189
 73190
 73191
 73192
 73193
 73194
 73195
 73196
 73197
 73198
 73199
 73200
 73201
 73202
 73203
 73204
 73205
 73206
 73207
 73208
 73209
 73210
 73211
 73212
 73213
 73214
 73215
 73216
 73217
 73218
 73219
 73220
 73221
 73222
 73223
 73224
 73225
 73226
 73227
 73228
 73229
 73230
 73231
 73232
 73233
 73234
 73235
 73236
 73237
 73238
 73239
 73240
 73241
 73242
 73243
 73244
 73245
 73246
 73247
 73248
 73249
 73250
 73251
 73252
 73253
 73254
 73255
 73256
 73257
 73258
 73259
 73260
 73261
 73262
 73263
 73264
 73265
 73266
 73267
 73268
 73269
 73270
 73271
 73272
 73273
 73274
 73275
 73276
 73277
 73278
 73279
 73280
 73281
 73282
 73283
 73284
 73285
 73286
 73287
 73288
 73289
 73290
 73291
 73292
 73293
 73294
 73295
 73296
 73297
 73298
 73299
 73300
 73301
 73302
 73303
 73304
 73305
 73306
 73307
 73308
 73309
 73310
 73311
 73312
 73313
 73314
 73315
 73316
 73317
 73318
 73319
 73320
 73321
 73322
 73323
 73324
 73325
 73326
 73327
 73328
 73329
 73330
 73331
 73332
 73333
 73334
 73335
 73336
 73337
 73338
 73339
 73340
 73341
 73342
 73343
 73344
 73345
 73346
 73347
 73348
 73349
 73350
 73351
 73352
 73353
 73354
 73355
 73356
 73357
 73358
 73359
 73360
 73361
 73362
 73363
 73364
 73365
 73366
 73367
 73368
 73369
 73370
 73371
 73372
 73373
 73374
 73375
 73376
 73377
 73378
 73379
 73380
 73381
 73382
 73383
 73384
 73385
 73386
 73387
 73388
 73389
 73390
 73391
 73392
 73393
 73394
 73395
 73396
 73397
 73398
 73399
 73400
 73401
 73402
 73403
 73404
 73405
 73406
 73407
 73408
 73409
 73410
 73411
 73412
 73413
 73414
 73415
 73416
 73417
 73418
 73419
 73420
 73421
 73422
 73423
 73424
 73425
 73426
 73427
 73428
 73429
 73430
 73431
 73432
 73433
 73434
 73435
 73436
 73437
 73438
 73439
 73440
 73441
 73442
 73443
 73444
 73445
 73446
 73447
 73448
 73449
 73450
 73451
 73452
 73453
 73454
 73455
 73456
 73457
 73458
 73459
 73460
 73461
 73462
 73463
 73464
 73465
 73466
 73467
 73468
 73469
 73470
 73471
 73472
 73473
 73474
 73475
 73476
 73477
 73478
 73479
 73480
 73481
 73482
 73483
 73484
 73485
 73486
 73487
 73488
 73489
 73490
 73491
 73492
 73493
 73494
 73495
 73496
 73497
 73498
 73499
 73500
 73501
 73502
 73503
 73504
 73505
 73506
 73507
 73508
 73509
 73510
 73511
 73512
 73513
 73514
 73515
 73516
 73517
 73518
 73519
 73520
 73521
 73522
 73523
 73524
 73525
 73526
 73527
 73528
 73529
 73530
 73531
 73532
 73533
 73534
 73535
 73536
 73537
 73538
 73539
 73540
 73541
 73542
 73543
 73544
 73545
 73546
 73547
 73548
 73549
 73550
 73551
 73552
 73553
 73554
 73555
 73556
 73557
 73558
 73559
 73560
 73561
 73562
 73563
 73564
 73565
 73566
 73567
 73568
 73569
 73570
 73571
 73572
 73573
 73574
 73575
 73576
 73577
 73578
 73579
 73580
 73581
 73582
 73583
 73584
 73585
 73586
 73587
 73588
 73589
 73590
 73591
 73592
 73593
 73594
 73595
 73596
 73597
 73598
 73599
 73600
 73601
 73602
 73603
 73604
 73605
 73606
 73607
 73608
 73609
 73610
 73611
 73612
 73613
 73614
 73615
 73616
 73617
 73618
 73619
 73620
 73621
 73622
 73623
 73624
 73625
 73626
 73627
 73628
 73629
 73630
 73631
 73632
 73633
 73634
 73635
 73636
 73637
 73638
 73639
 73640
 73641
 73642
 73643
 73644
 73645
 73646
 73647
 73648
 73649
 73650
 73651
 73652
 73653
 73654
 73655
 73656
 73657
 73658
 73659
 73660
 73661
 73662
 73663
 73664
 73665
 73666
 73667
 73668
 73669
 73670
 73671
 73672
 73673
 73674
 73675
 73676
 73677
 73678
 73679
 73680
 73681
 73682
 73683
 73684
 73685
 73686
 73687
 73688
 73689
 73690
 73691
 73692
 73693
 73694
 73695
 73696
 73697
 73698
 73699
 73700
 73701
 73702
 73703
 73704
 73705
 73706
 73707
 73708
 73709
 73710
 73711
 73712
 73713
 73714
 73715
 73716
 73717
 73718
 73719
 73720
 73721
 73722
 73723
 73724
 73725
 73726
 73727
 73728
 73729
 73730
 73731
 73732
 73733
 73734
 73735
 73736
 73737
 73738
 73739
 73740
 73741
 73742
 73743
 73744
 73745
 73746
 73747
 73748
 73749
 73750
 73751
 73752
 73753
 73754
 73755
 73756
 73757
 73758
 73759
 73760
 73761
 73762
 73763
 73764
 73765
 73766
 73767
 73768
 73769
 73770
 73771
 73772
 73773
 73774
 73775
 73776
 73777
 73778
 73779
 73780
 73781
 73782
 73783
 73784
 73785
 73786
 73787
 73788
 73789
 73790
 73791
 73792
 73793
 73794
 73795
 73796
 73797
 73798
 73799
 73800
 73801
 73802
 73803
 73804
 73805
 73806
 73807
 73808
 73809
 73810
 73811
 73812
 73813
 73814
 73815
 73816
 73817
 73818
 73819
 73820
 73821
 73822
 73823
 73824
 73825
 73826
 73827
 73828
 73829
 73830
 73831
 73832
 73833
 73834
 73835
 73836
 73837
 73838
 73839
 73840
 73841
 73842
 73843
 73844
 73845
 73846
 73847
 73848
 73849
 73850
 73851
 73852
 73853
 73854
 73855
 73856
 73857
 73858
 73859
 73860
 73861
 73862
 73863
 73864
 73865
 73866
 73867
 73868
 73869
 73870
 73871
 73872
 73873
 73874
 73875
 73876
 73877
 73878
 73879
 73880
 73881
 73882
 73883
 73884
 73885
 73886
 73887
 73888
 73889
 73890
 73891
 73892
 73893
 73894
 73895
 73896
 73897
 73898
 73899
 73900
 73901
 73902
 73903
 73904
 73905
 73906
 73907
 73908
 73909
 73910
 73911
 73912
 73913
 73914
 73915
 73916
 73917
 73918
 73919
 73920
 73921
 73922
 73923
 73924
 73925
 73926
 73927
 73928
 73929
 73930
 73931
 73932
 73933
 73934
 73935
 73936
 73937
 73938
 73939
 73940
 73941
 73942
 73943
 73944
 73945
 73946
 73947
 73948
 73949
 73950
 73951
 73952
 73953
 73954
 73955
 73956
 73957
 73958
 73959
 73960
 73961
 73962
 73963
 73964
 73965
 73966
 73967
 73968
 73969
 73970
 73971
 73972
 73973
 73974
 73975
 73976
 73977
 73978
 73979
 73980
 73981
 73982
 73983
 73984
 73985
 73986
 73987
 73988
 73989
 73990
 73991
 73992
 73993
 73994
 73995
 73996
 73997
 73998
 73999
 74000
 74001
 74002
 74003
 74004
 74005
 74006
 74007
 74008
 74009
 74010
 74011
 74012
 74013
 74014
 74015
 74016
 74017
 74018
 74019
 74020
 74021
 74022
 74023
 74024
 74025
 74026
 74027
 74028
 74029
 74030
 74031
 74032
 74033
 74034
 74035
 74036
 74037
 74038
 74039
 74040
 74041
 74042
 74043
 74044
 74045
 74046
 74047
 74048
 74049
 74050
 74051
 74052
 74053
 74054
 74055
 74056
 74057
 74058
 74059
 74060
 74061
 74062
 74063
 74064
 74065
 74066
 74067
 74068
 74069
 74070
 74071
 74072
 74073
 74074
 74075
 74076
 74077
 74078
 74079
 74080
 74081
 74082
 74083
 74084
 74085
 74086
 74087
 74088
 74089
 74090
 74091
 74092
 74093
 74094
 74095
 74096
 74097
 74098
 74099
 74100
 74101
 74102
 74103
 74104
 74105
 74106
 74107
 74108
 74109
 74110
 74111
 74112
 74113
 74114
 74115
 74116
 74117
 74118
 74119
 74120
 74121
 74122
 74123
 74124
 74125
 74126
 74127
 74128
 74129
 74130
 74131
 74132
 74133
 74134
 74135
 74136
 74137
 74138
 74139
 74140
 74141
 74142
 74143
 74144
 74145
 74146
 74147
 74148
 74149
 74150
 74151
 74152
 74153
 74154
 74155
 74156
 74157
 74158
 74159
 74160
 74161
 74162
 74163
 74164
 74165
 74166
 74167
 74168
 74169
 74170
 74171
 74172
 74173
 74174
 74175
 74176
 74177
 74178
 74179
 74180
 74181
 74182
 74183
 74184
 74185
 74186
 74187
 74188
 74189
 74190
 74191
 74192
 74193
 74194
 74195
 74196
 74197
 74198
 74199
 74200
 74201
 74202
 74203
 74204
 74205
 74206
 74207
 74208
 74209
 74210
 74211
 74212
 74213
 74214
 74215
 74216
 74217
 74218
 74219
 74220
 74221
 74222
 74223
 74224
 74225
 74226
 74227
 74228
 74229
 74230
 74231
 74232
 74233
 74234
 74235
 74236
 74237
 74238
 74239
 74240
 74241
 74242
 74243
 74244
 74245
 74246
 74247
 74248
 74249
 74250
 74251
 74252
 74253
 74254
 74255
 74256
 74257
 74258
 74259
 74260
 74261
 74262
 74263
 74264
 74265
 74266
 74267
 74268
 74269
 74270
 74271
 74272
 74273
 74274
 74275
 74276
 74277
 74278
 74279
 74280
 74281
 74282
 74283
 74284
 74285
 74286
 74287
 74288
 74289
 74290
 74291
 74292
 74293
 74294
 74295
 74296
 74297
 74298
 74299
 74300
 74301
 74302
 74303
 74304
 74305
 74306
 74307
 74308
 74309
 74310
 74311
 74312
 74313
 74314
 74315
 74316
 74317
 74318
 74319
 74320
 74321
 74322
 74323
 74324
 74325
 74326
 74327
 74328
 74329
 74330
 74331
 74332
 74333
 74334
 74335
 74336
 74337
 74338
 74339
 74340
 74341
 74342
 74343
 74344
 74345
 74346
 74347
 74348
 74349
 74350
 74351
 74352
 74353
 74354
 74355
 74356
 74357
 74358
 74359
 74360
 74361
 74362
 74363
 74364
 74365
 74366
 74367
 74368
 74369
 74370
 74371
 74372
 74373
 74374
 74375
 74376
 74377
 74378
 74379
 74380
 74381
 74382
 74383
 74384
 74385
 74386
 74387
 74388
 74389
 74390
 74391
 74392
 74393
 74394
 74395
 74396
 74397
 74398
 74399
 74400
 74401
 74402
 74403
 74404
 74405
 74406
 74407
 74408
 74409
 74410
 74411
 74412
 74413
 74414
 74415
 74416
 74417
 74418
 74419
 74420
 74421
 74422
 74423
 74424
 74425
 74426
 74427
 74428
 74429
 74430
 74431
 74432
 74433
 74434
 74435
 74436
 74437
 74438
 74439
 74440
 74441
 74442
 74443
 74444
 74445
 74446
 74447
 74448
 74449
 74450
 74451
 74452
 74453
 74454
 74455
 74456
 74457
 74458
 74459
 74460
 74461
 74462
 74463
 74464
 74465
 74466
 74467
 74468
 74469
 74470
 74471
 74472
 74473
 74474
 74475
 74476
 74477
 74478
 74479
 74480
 74481
 74482
 74483
 74484
 74485
 74486
 74487
 74488
 74489
 74490
 74491
 74492
 74493
 74494
 74495
 74496
 74497
 74498
 74499
 74500
 74501
 74502
 74503
 74504
 74505
 74506
 74507
 74508
 74509
 74510
 74511
 74512
 74513
 74514
 74515
 74516
 74517
 74518
 74519
 74520
 74521
 74522
 74523
 74524
 74525
 74526
 74527
 74528
 74529
 74530
 74531
 74532
 74533
 74534
 74535
 74536
 74537
 74538
 74539
 74540
 74541
 74542
 74543
 74544
 74545
 74546
 74547
 74548
 74549
 74550
 74551
 74552
 74553
 74554
 74555
 74556
 74557
 74558
 74559
 74560
 74561
 74562
 74563
 74564
 74565
 74566
 74567
 74568
 74569
 74570
 74571
 74572
 74573
 74574
 74575
 74576
 74577
 74578
 74579
 74580
 74581
 74582
 74583
 74584
 74585
 74586
 74587
 74588
 74589
 74590
 74591
 74592
 74593
 74594
 74595
 74596
 74597
 74598
 74599
 74600
 74601
 74602
 74603
 74604
 74605
 74606
 74607
 74608
 74609
 74610
 74611
 74612
 74613
 74614
 74615
 74616
 74617
 74618
 74619
 74620
 74621
 74622
 74623
 74624
 74625
 74626
 74627
 74628
 74629
 74630
 74631
 74632
 74633
 74634
 74635
 74636
 74637
 74638
 74639
 74640
 74641
 74642
 74643
 74644
 74645
 74646
 74647
 74648
 74649
 74650
 74651
 74652
 74653
 74654
 74655
 74656
 74657
 74658
 74659
 74660
 74661
 74662
 74663
 74664
 74665
 74666
 74667
 74668
 74669
 74670
 74671
 74672
 74673
 74674
 74675
 74676
 74677
 74678
 74679
 74680
 74681
 74682
 74683
 74684
 74685
 74686
 74687
 74688
 74689
 74690
 74691
 74692
 74693
 74694
 74695
 74696
 74697
 74698
 74699
 74700
 74701
 74702
 74703
 74704
 74705
 74706
 74707
 74708
 74709
 74710
 74711
 74712
 74713
 74714
 74715
 74716
 74717
 74718
 74719
 74720
 74721
 74722
 74723
 74724
 74725
 74726
 74727
 74728
 74729
 74730
 74731
 74732
 74733
 74734
 74735
 74736
 74737
 74738
 74739
 74740
 74741
 74742
 74743
 74744
 74745
 74746
 74747
 74748
 74749
 74750
 74751
 74752
 74753
 74754
 74755
 74756
 74757
 74758
 74759
 74760
 74761
 74762
 74763
 74764
 74765
 74766
 74767
 74768
 74769
 74770
 74771
 74772
 74773
 74774
 74775
 74776
 74777
 74778
 74779
 74780
 74781
 74782
 74783
 74784
 74785
 74786
 74787
 74788
 74789
 74790
 74791
 74792
 74793
 74794
 74795
 74796
 74797
 74798
 74799
 74800
 74801
 74802
 74803
 74804
 74805
 74806
 74807
 74808
 74809
 74810
 74811
 74812
 74813
 74814
 74815
 74816
 74817
 74818
 74819
 74820
 74821
 74822
 74823
 74824
 74825
 74826
 74827
 74828
 74829
 74830
 74831
 74832
 74833
 74834
 74835
 74836
 74837
 74838
 74839
 74840
 74841
 74842
 74843
 74844
 74845
 74846
 74847
 74848
 74849
 74850
 74851
 74852
 74853
 74854
 74855
 74856
 74857
 74858
 74859
 74860
 74861
 74862
 74863
 74864
 74865
 74866
 74867
 74868
 74869
 74870
 74871
 74872
 74873
 74874
 74875
 74876
 74877
 74878
 74879
 74880
 74881
 74882
 74883
 74884
 74885
 74886
 74887
 74888
 74889
 74890
 74891
 74892
 74893
 74894
 74895
 74896
 74897
 74898
 74899
 74900
 74901
 74902
 74903
 74904
 74905
 74906
 74907
 74908
 74909
 74910
 74911
 74912
 74913
 74914
 74915
 74916
 74917
 74918
 74919
 74920
 74921
 74922
 74923
 74924
 74925
 74926
 74927
 74928
 74929
 74930
 74931
 74932
 74933
 74934
 74935
 74936
 74937
 74938
 74939
 74940
 74941
 74942
 74943
 74944
 74945
 74946
 74947
 74948
 74949
 74950
 74951
 74952
 74953
 74954
 74955
 74956
 74957
 74958
 74959
 74960
 74961
 74962
 74963
 74964
 74965
 74966
 74967
 74968
 74969
 74970
 74971
 74972
 74973
 74974
 74975
 74976
 74977
 74978
 74979
 74980
 74981
 74982
 74983
 74984
 74985
 74986
 74987
 74988
 74989
 74990
 74991
 74992
 74993
 74994
 74995
 74996
 74997
 74998
 74999
 75000
 75001
 75002
 75003
 75004
 75005
 75006
 75007
 75008
 75009
 75010
 75011
 75012
 75013
 75014
 75015
 75016
 75017
 75018
 75019
 75020
 75021
 75022
 75023
 75024
 75025
 75026
 75027
 75028
 75029
 75030
 75031
 75032
 75033
 75034
 75035
 75036
 75037
 75038
 75039
 75040
 75041
 75042
 75043
 75044
 75045
 75046
 75047
 75048
 75049
 75050
 75051
 75052
 75053
 75054
 75055
 75056
 75057
 75058
 75059
 75060
 75061
 75062
 75063
 75064
 75065
 75066
 75067
 75068
 75069
 75070
 75071
 75072
 75073
 75074
 75075
 75076
 75077
 75078
 75079
 75080
 75081
 75082
 75083
 75084
 75085
 75086
 75087
 75088
 75089
 75090
 75091
 75092
 75093
 75094
 75095
 75096
 75097
 75098
 75099
 75100
 75101
 75102
 75103
 75104
 75105
 75106
 75107
 75108
 75109
 75110
 75111
 75112
 75113
 75114
 75115
 75116
 75117
 75118
 75119
 75120
 75121
 75122
 75123
 75124
 75125
 75126
 75127
 75128
 75129
 75130
 75131
 75132
 75133
 75134
 75135
 75136
 75137
 75138
 75139
 75140
 75141
 75142
 75143
 75144
 75145
 75146
 75147
 75148
 75149
 75150
 75151
 75152
 75153
 75154
 75155
 75156
 75157
 75158
 75159
 75160
 75161
 75162
 75163
 75164
 75165
 75166
 75167
 75168
 75169
 75170
 75171
 75172
 75173
 75174
 75175
 75176
 75177
 75178
 75179
 75180
 75181
 75182
 75183
 75184
 75185
 75186
 75187
 75188
 75189
 75190
 75191
 75192
 75193
 75194
 75195
 75196
 75197
 75198
 75199
 75200
 75201
 75202
 75203
 75204
 75205
 75206
 75207
 75208
 75209
 75210
 75211
 75212
 75213
 75214
 75215
 75216
 75217
 75218
 75219
 75220
 75221
 75222
 75223
 75224
 75225
 75226
 75227
 75228
 75229
 75230
 75231
 75232
 75233
 75234
 75235
 75236
 75237
 75238
 75239
 75240
 75241
 75242
 75243
 75244
 75245
 75246
 75247
 75248
 75249
 75250
 75251
 75252
 75253
 75254
 75255
 75256
 75257
 75258
 75259
 75260
 75261
 75262
 75263
 75264
 75265
 75266
 75267
 75268
 75269
 75270
 75271
 75272
 75273
 75274
 75275
 75276
 75277
 75278
 75279
 75280
 75281
 75282
 75283
 75284
 75285
 75286
 75287
 75288
 75289
 75290
 75291
 75292
 75293
 75294
 75295
 75296
 75297
 75298
 75299
 75300
 75301
 75302
 75303
 75304
 75305
 75306
 75307
 75308
 75309
 75310
 75311
 75312
 75313
 75314
 75315
 75316
 75317
 75318
 75319
 75320
 75321
 75322
 75323
 75324
 75325
 75326
 75327
 75328
 75329
 75330
 75331
 75332
 75333
 75334
 75335
 75336
 75337
 75338
 75339
 75340
 75341
 75342
 75343
 75344
 75345
 75346
 75347
 75348
 75349
 75350
 75351
 75352
 75353
 75354
 75355
 75356
 75357
 75358
 75359
 75360
 75361
 75362
 75363
 75364
 75365
 75366
 75367
 75368
 75369
 75370
 75371
 75372
 75373
 75374
 75375
 75376
 75377
 75378
 75379
 75380
 75381
 75382
 75383
 75384
 75385
 75386
 75387
 75388
 75389
 75390
 75391
 75392
 75393
 75394
 75395
 75396
 75397
 75398
 75399
 75400
 75401
 75402
 75403
 75404
 75405
 75406
 75407
 75408
 75409
 75410
 75411
 75412
 75413
 75414
 75415
 75416
 75417
 75418
 75419
 75420
 75421
 75422
 75423
 75424
 75425
 75426
 75427
 75428
 75429
 75430
 75431
 75432
 75433
 75434
 75435
 75436
 75437
 75438
 75439
 75440
 75441
 75442
 75443
 75444
 75445
 75446
 75447
 75448
 75449
 75450
 75451
 75452
 75453
 75454
 75455
 75456
 75457
 75458
 75459
 75460
 75461
 75462
 75463
 75464
 75465
 75466
 75467
 75468
 75469
 75470
 75471
 75472
 75473
 75474
 75475
 75476
 75477
 75478
 75479
 75480
 75481
 75482
 75483
 75484
 75485
 75486
 75487
 75488
 75489
 75490
 75491
 75492
 75493
 75494
 75495
 75496
 75497
 75498
 75499
 75500
 75501
 75502
 75503
 75504
 75505
 75506
 75507
 75508
 75509
 75510
 75511
 75512
 75513
 75514
 75515
 75516
 75517
 75518
 75519
 75520
 75521
 75522
 75523
 75524
 75525
 75526
 75527
 75528
 75529
 75530
 75531
 75532
 75533
 75534
 75535
 75536
 75537
 75538
 75539
 75540
 75541
 75542
 75543
 75544
 75545
 75546
 75547
 75548
 75549
 75550
 75551
 75552
 75553
 75554
 75555
 75556
 75557
 75558
 75559
 75560
 75561
 75562
 75563
 75564
 75565
 75566
 75567
 75568
 75569
 75570
 75571
 75572
 75573
 75574
 75575
 75576
 75577
 75578
 75579
 75580
 75581
 75582
 75583
 75584
 75585
 75586
 75587
 75588
 75589
 75590
 75591
 75592
 75593
 75594
 75595
 75596
 75597
 75598
 75599
 75600
 75601
 75602
 75603
 75604
 75605
 75606
 75607
 75608
 75609
 75610
 75611
 75612
 75613
 75614
 75615
 75616
 75617
 75618
 75619
 75620
 75621
 75622
 75623
 75624
 75625
 75626
 75627
 75628
 75629
 75630
 75631
 75632
 75633
 75634
 75635
 75636
 75637
 75638
 75639
 75640
 75641
 75642
 75643
 75644
 75645
 75646
 75647
 75648
 75649
 75650
 75651
 75652
 75653
 75654
 75655
 75656
 75657
 75658
 75659
 75660
 75661
 75662
 75663
 75664
 75665
 75666
 75667
 75668
 75669
 75670
 75671
 75672
 75673
 75674
 75675
 75676
 75677
 75678
 75679
 75680
 75681
 75682
 75683
 75684
 75685
 75686
 75687
 75688
 75689
 75690
 75691
 75692
 75693
 75694
 75695
 75696
 75697
 75698
 75699
 75700
 75701
 75702
 75703
 75704
 75705
 75706
 75707
 75708
 75709
 75710
 75711
 75712
 75713
 75714
 75715
 75716
 75717
 75718
 75719
 75720
 75721
 75722
 75723
 75724
 75725
 75726
 75727
 75728
 75729
 75730
 75731
 75732
 75733
 75734
 75735
 75736
 75737
 75738
 75739
 75740
 75741
 75742
 75743
 75744
 75745
 75746
 75747
 75748
 75749
 75750
 75751
 75752
 75753
 75754
 75755
 75756
 75757
 75758
 75759
 75760
 75761
 75762
 75763
 75764
 75765
 75766
 75767
 75768
 75769
 75770
 75771
 75772
 75773
 75774
 75775
 75776
 75777
 75778
 75779
 75780
 75781
 75782
 75783
 75784
 75785
 75786
 75787
 75788
 75789
 75790
 75791
 75792
 75793
 75794
 75795
 75796
 75797
 75798
 75799
 75800
 75801
 75802
 75803
 75804
 75805
 75806
 75807
 75808
 75809
 75810
 75811
 75812
 75813
 75814
 75815
 75816
 75817
 75818
 75819
 75820
 75821
 75822
 75823
 75824
 75825
 75826
 75827
 75828
 75829
 75830
 75831
 75832
 75833
 75834
 75835
 75836
 75837
 75838
 75839
 75840
 75841
 75842
 75843
 75844
 75845
 75846
 75847
 75848
 75849
 75850
 75851
 75852
 75853
 75854
 75855
 75856
 75857
 75858
 75859
 75860
 75861
 75862
 75863
 75864
 75865
 75866
 75867
 75868
 75869
 75870
 75871
 75872
 75873
 75874
 75875
 75876
 75877
 75878
 75879
 75880
 75881
 75882
 75883
 75884
 75885
 75886
 75887
 75888
 75889
 75890
 75891
 75892
 75893
 75894
 75895
 75896
 75897
 75898
 75899
 75900
 75901
 75902
 75903
 75904
 75905
 75906
 75907
 75908
 75909
 75910
 75911
 75912
 75913
 75914
 75915
 75916
 75917
 75918
 75919
 75920
 75921
 75922
 75923
 75924
 75925
 75926
 75927
 75928
 75929
 75930
 75931
 75932
 75933
 75934
 75935
 75936
 75937
 75938
 75939
 75940
 75941
 75942
 75943
 75944
 75945
 75946
 75947
 75948
 75949
 75950
 75951
 75952
 75953
 75954
 75955
 75956
 75957
 75958
 75959
 75960
 75961
 75962
 75963
 75964
 75965
 75966
 75967
 75968
 75969
 75970
 75971
 75972
 75973
 75974
 75975
 75976
 75977
 75978
 75979
 75980
 75981
 75982
 75983
 75984
 75985
 75986
 75987
 75988
 75989
 75990
 75991
 75992
 75993
 75994
 75995
 75996
 75997
 75998
 75999
 76000
 76001
 76002
 76003
 76004
 76005
 76006
 76007
 76008
 76009
 76010
 76011
 76012
 76013
 76014
 76015
 76016
 76017
 76018
 76019
 76020
 76021
 76022
 76023
 76024
 76025
 76026
 76027
 76028
 76029
 76030
 76031
 76032
 76033
 76034
 76035
 76036
 76037
 76038
 76039
 76040
 76041
 76042
 76043
 76044
 76045
 76046
 76047
 76048
 76049
 76050
 76051
 76052
 76053
 76054
 76055
 76056
 76057
 76058
 76059
 76060
 76061
 76062
 76063
 76064
 76065
 76066
 76067
 76068
 76069
 76070
 76071
 76072
 76073
 76074
 76075
 76076
 76077
 76078
 76079
 76080
 76081
 76082
 76083
 76084
 76085
 76086
 76087
 76088
 76089
 76090
 76091
 76092
 76093
 76094
 76095
 76096
 76097
 76098
 76099
 76100
 76101
 76102
 76103
 76104
 76105
 76106
 76107
 76108
 76109
 76110
 76111
 76112
 76113
 76114
 76115
 76116
 76117
 76118
 76119
 76120
 76121
 76122
 76123
 76124
 76125
 76126
 76127
 76128
 76129
 76130
 76131
 76132
 76133
 76134
 76135
 76136
 76137
 76138
 76139
 76140
 76141
 76142
 76143
 76144
 76145
 76146
 76147
 76148
 76149
 76150
 76151
 76152
 76153
 76154
 76155
 76156
 76157
 76158
 76159
 76160
 76161
 76162
 76163
 76164
 76165
 76166
 76167
 76168
 76169
 76170
 76171
 76172
 76173
 76174
 76175
 76176
 76177
 76178
 76179
 76180
 76181
 76182
 76183
 76184
 76185
 76186
 76187
 76188
 76189
 76190
 76191
 76192
 76193
 76194
 76195
 76196
 76197
 76198
 76199
 76200
 76201
 76202
 76203
 76204
 76205
 76206
 76207
 76208
 76209
 76210
 76211
 76212
 76213
 76214
 76215
 76216
 76217
 76218
 76219
 76220
 76221
 76222
 76223
 76224
 76225
 76226
 76227
 76228
 76229
 76230
 76231
 76232
 76233
 76234
 76235
 76236
 76237
 76238
 76239
 76240
 76241
 76242
 76243
 76244
 76245
 76246
 76247
 76248
 76249
 76250
 76251
 76252
 76253
 76254
 76255
 76256
 76257
 76258
 76259
 76260
 76261
 76262
 76263
 76264
 76265
 76266
 76267
 76268
 76269
 76270
 76271
 76272
 76273
 76274
 76275
 76276
 76277
 76278
 76279
 76280
 76281
 76282
 76283
 76284
 76285
 76286
 76287
 76288
 76289
 76290
 76291
 76292
 76293
 76294
 76295
 76296
 76297
 76298
 76299
 76300
 76301
 76302
 76303
 76304
 76305
 76306
 76307
 76308
 76309
 76310
 76311
 76312
 76313
 76314
 76315
 76316
 76317
 76318
 76319
 76320
 76321
 76322
 76323
 76324
 76325
 76326
 76327
 76328
 76329
 76330
 76331
 76332
 76333
 76334
 76335
 76336
 76337
 76338
 76339
 76340
 76341
 76342
 76343
 76344
 76345
 76346
 76347
 76348
 76349
 76350
 76351
 76352
 76353
 76354
 76355
 76356
 76357
 76358
 76359
 76360
 76361
 76362
 76363
 76364
 76365
 76366
 76367
 76368
 76369
 76370
 76371
 76372
 76373
 76374
 76375
 76376
 76377
 76378
 76379
 76380
 76381
 76382
 76383
 76384
 76385
 76386
 76387
 76388
 76389
 76390
 76391
 76392
 76393
 76394
 76395
 76396
 76397
 76398
 76399
 76400
 76401
 76402
 76403
 76404
 76405
 76406
 76407
 76408
 76409
 76410
 76411
 76412
 76413
 76414
 76415
 76416
 76417
 76418
 76419
 76420
 76421
 76422
 76423
 76424
 76425
 76426
 76427
 76428
 76429
 76430
 76431
 76432
 76433
 76434
 76435
 76436
 76437
 76438
 76439
 76440
 76441
 76442
 76443
 76444
 76445
 76446
 76447
 76448
 76449
 76450
 76451
 76452
 76453
 76454
 76455
 76456
 76457
 76458
 76459
 76460
 76461
 76462
 76463
 76464
 76465
 76466
 76467
 76468
 76469
 76470
 76471
 76472
 76473
 76474
 76475
 76476
 76477
 76478
 76479
 76480
 76481
 76482
 76483
 76484
 76485
 76486
 76487
 76488
 76489
 76490
 76491
 76492
 76493
 76494
 76495
 76496
 76497
 76498
 76499
 76500
 76501
 76502
 76503
 76504
 76505
 76506
 76507
 76508
 76509
 76510
 76511
 76512
 76513
 76514
 76515
 76516
 76517
 76518
 76519
 76520
 76521
 76522
 76523
 76524
 76525
 76526
 76527
 76528
 76529
 76530
 76531
 76532
 76533
 76534
 76535
 76536
 76537
 76538
 76539
 76540
 76541
 76542
 76543
 76544
 76545
 76546
 76547
 76548
 76549
 76550
 76551
 76552
 76553
 76554
 76555
 76556
 76557
 76558
 76559
 76560
 76561
 76562
 76563
 76564
 76565
 76566
 76567
 76568
 76569
 76570
 76571
 76572
 76573
 76574
 76575
 76576
 76577
 76578
 76579
 76580
 76581
 76582
 76583
 76584
 76585
 76586
 76587
 76588
 76589
 76590
 76591
 76592
 76593
 76594
 76595
 76596
 76597
 76598
 76599
 76600
 76601
 76602
 76603
 76604
 76605
 76606
 76607
 76608
 76609
 76610
 76611
 76612
 76613
 76614
 76615
 76616
 76617
 76618
 76619
 76620
 76621
 76622
 76623
 76624
 76625
 76626
 76627
 76628
 76629
 76630
 76631
 76632
 76633
 76634
 76635
 76636
 76637
 76638
 76639
 76640
 76641
 76642
 76643
 76644
 76645
 76646
 76647
 76648
 76649
 76650
 76651
 76652
 76653
 76654
 76655
 76656
 76657
 76658
 76659
 76660
 76661
 76662
 76663
 76664
 76665
 76666
 76667
 76668
 76669
 76670
 76671
 76672
 76673
 76674
 76675
 76676
 76677
 76678
 76679
 76680
 76681
 76682
 76683
 76684
 76685
 76686
 76687
 76688
 76689
 76690
 76691
 76692
 76693
 76694
 76695
 76696
 76697
 76698
 76699
 76700
 76701
 76702
 76703
 76704
 76705
 76706
 76707
 76708
 76709
 76710
 76711
 76712
 76713
 76714
 76715
 76716
 76717
 76718
 76719
 76720
 76721
 76722
 76723
 76724
 76725
 76726
 76727
 76728
 76729
 76730
 76731
 76732
 76733
 76734
 76735
 76736
 76737
 76738
 76739
 76740
 76741
 76742
 76743
 76744
 76745
 76746
 76747
 76748
 76749
 76750
 76751
 76752
 76753
 76754
 76755
 76756
 76757
 76758
 76759
 76760
 76761
 76762
 76763
 76764
 76765
 76766
 76767
 76768
 76769
 76770
 76771
 76772
 76773
 76774
 76775
 76776
 76777
 76778
 76779
 76780
 76781
 76782
 76783
 76784
 76785
 76786
 76787
 76788
 76789
 76790
 76791
 76792
 76793
 76794
 76795
 76796
 76797
 76798
 76799
 76800
 76801
 76802
 76803
 76804
 76805
 76806
 76807
 76808
 76809
 76810
 76811
 76812
 76813
 76814
 76815
 76816
 76817
 76818
 76819
 76820
 76821
 76822
 76823
 76824
 76825
 76826
 76827
 76828
 76829
 76830
 76831
 76832
 76833
 76834
 76835
 76836
 76837
 76838
 76839
 76840
 76841
 76842
 76843
 76844
 76845
 76846
 76847
 76848
 76849
 76850
 76851
 76852
 76853
 76854
 76855
 76856
 76857
 76858
 76859
 76860
 76861
 76862
 76863
 76864
 76865
 76866
 76867
 76868
 76869
 76870
 76871
 76872
 76873
 76874
 76875
 76876
 76877
 76878
 76879
 76880
 76881
 76882
 76883
 76884
 76885
 76886
 76887
 76888
 76889
 76890
 76891
 76892
 76893
 76894
 76895
 76896
 76897
 76898
 76899
 76900
 76901
 76902
 76903
 76904
 76905
 76906
 76907
 76908
 76909
 76910
 76911
 76912
 76913
 76914
 76915
 76916
 76917
 76918
 76919
 76920
 76921
 76922
 76923
 76924
 76925
 76926
 76927
 76928
 76929
 76930
 76931
 76932
 76933
 76934
 76935
 76936
 76937
 76938
 76939
 76940
 76941
 76942
 76943
 76944
 76945
 76946
 76947
 76948
 76949
 76950
 76951
 76952
 76953
 76954
 76955
 76956
 76957
 76958
 76959
 76960
 76961
 76962
 76963
 76964
 76965
 76966
 76967
 76968
 76969
 76970
 76971
 76972
 76973
 76974
 76975
 76976
 76977
 76978
 76979
 76980
 76981
 76982
 76983
 76984
 76985
 76986
 76987
 76988
 76989
 76990
 76991
 76992
 76993
 76994
 76995
 76996
 76997
 76998
 76999
 77000
 77001
 77002
 77003
 77004
 77005
 77006
 77007
 77008
 77009
 77010
 77011
 77012
 77013
 77014
 77015
 77016
 77017
 77018
 77019
 77020
 77021
 77022
 77023
 77024
 77025
 77026
 77027
 77028
 77029
 77030
 77031
 77032
 77033
 77034
 77035
 77036
 77037
 77038
 77039
 77040
 77041
 77042
 77043
 77044
 77045
 77046
 77047
 77048
 77049
 77050
 77051
 77052
 77053
 77054
 77055
 77056
 77057
 77058
 77059
 77060
 77061
 77062
 77063
 77064
 77065
 77066
 77067
 77068
 77069
 77070
 77071
 77072
 77073
 77074
 77075
 77076
 77077
 77078
 77079
 77080
 77081
 77082
 77083
 77084
 77085
 77086
 77087
 77088
 77089
 77090
 77091
 77092
 77093
 77094
 77095
 77096
 77097
 77098
 77099
 77100
 77101
 77102
 77103
 77104
 77105
 77106
 77107
 77108
 77109
 77110
 77111
 77112
 77113
 77114
 77115
 77116
 77117
 77118
 77119
 77120
 77121
 77122
 77123
 77124
 77125
 77126
 77127
 77128
 77129
 77130
 77131
 77132
 77133
 77134
 77135
 77136
 77137
 77138
 77139
 77140
 77141
 77142
 77143
 77144
 77145
 77146
 77147
 77148
 77149
 77150
 77151
 77152
 77153
 77154
 77155
 77156
 77157
 77158
 77159
 77160
 77161
 77162
 77163
 77164
 77165
 77166
 77167
 77168
 77169
 77170
 77171
 77172
 77173
 77174
 77175
 77176
 77177
 77178
 77179
 77180
 77181
 77182
 77183
 77184
 77185
 77186
 77187
 77188
 77189
 77190
 77191
 77192
 77193
 77194
 77195
 77196
 77197
 77198
 77199
 77200
 77201
 77202
 77203
 77204
 77205
 77206
 77207
 77208
 77209
 77210
 77211
 77212
 77213
 77214
 77215
 77216
 77217
 77218
 77219
 77220
 77221
 77222
 77223
 77224
 77225
 77226
 77227
 77228
 77229
 77230
 77231
 77232
 77233
 77234
 77235
 77236
 77237
 77238
 77239
 77240
 77241
 77242
 77243
 77244
 77245
 77246
 77247
 77248
 77249
 77250
 77251
 77252
 77253
 77254
 77255
 77256
 77257
 77258
 77259
 77260
 77261
 77262
 77263
 77264
 77265
 77266
 77267
 77268
 77269
 77270
 77271
 77272
 77273
 77274
 77275
 77276
 77277
 77278
 77279
 77280
 77281
 77282
 77283
 77284
 77285
 77286
 77287
 77288
 77289
 77290
 77291
 77292
 77293
 77294
 77295
 77296
 77297
 77298
 77299
 77300
 77301
 77302
 77303
 77304
 77305
 77306
 77307
 77308
 77309
 77310
 77311
 77312
 77313
 77314
 77315
 77316
 77317
 77318
 77319
 77320
 77321
 77322
 77323
 77324
 77325
 77326
 77327
 77328
 77329
 77330
 77331
 77332
 77333
 77334
 77335
 77336
 77337
 77338
 77339
 77340
 77341
 77342
 77343
 77344
 77345
 77346
 77347
 77348
 77349
 77350
 77351
 77352
 77353
 77354
 77355
 77356
 77357
 77358
 77359
 77360
 77361
 77362
 77363
 77364
 77365
 77366
 77367
 77368
 77369
 77370
 77371
 77372
 77373
 77374
 77375
 77376
 77377
 77378
 77379
 77380
 77381
 77382
 77383
 77384
 77385
 77386
 77387
 77388
 77389
 77390
 77391
 77392
 77393
 77394
 77395
 77396
 77397
 77398
 77399
 77400
 77401
 77402
 77403
 77404
 77405
 77406
 77407
 77408
 77409
 77410
 77411
 77412
 77413
 77414
 77415
 77416
 77417
 77418
 77419
 77420
 77421
 77422
 77423
 77424
 77425
 77426
 77427
 77428
 77429
 77430
 77431
 77432
 77433
 77434
 77435
 77436
 77437
 77438
 77439
 77440
 77441
 77442
 77443
 77444
 77445
 77446
 77447
 77448
 77449
 77450
 77451
 77452
 77453
 77454
 77455
 77456
 77457
 77458
 77459
 77460
 77461
 77462
 77463
 77464
 77465
 77466
 77467
 77468
 77469
 77470
 77471
 77472
 77473
 77474
 77475
 77476
 77477
 77478
 77479
 77480
 77481
 77482
 77483
 77484
 77485
 77486
 77487
 77488
 77489
 77490
 77491
 77492
 77493
 77494
 77495
 77496
 77497
 77498
 77499
 77500
 77501
 77502
 77503
 77504
 77505
 77506
 77507
 77508
 77509
 77510
 77511
 77512
 77513
 77514
 77515
 77516
 77517
 77518
 77519
 77520
 77521
 77522
 77523
 77524
 77525
 77526
 77527
 77528
 77529
 77530
 77531
 77532
 77533
 77534
 77535
 77536
 77537
 77538
 77539
 77540
 77541
 77542
 77543
 77544
 77545
 77546
 77547
 77548
 77549
 77550
 77551
 77552
 77553
 77554
 77555
 77556
 77557
 77558
 77559
 77560
 77561
 77562
 77563
 77564
 77565
 77566
 77567
 77568
 77569
 77570
 77571
 77572
 77573
 77574
 77575
 77576
 77577
 77578
 77579
 77580
 77581
 77582
 77583
 77584
 77585
 77586
 77587
 77588
 77589
 77590
 77591
 77592
 77593
 77594
 77595
 77596
 77597
 77598
 77599
 77600
 77601
 77602
 77603
 77604
 77605
 77606
 77607
 77608
 77609
 77610
 77611
 77612
 77613
 77614
 77615
 77616
 77617
 77618
 77619
 77620
 77621
 77622
 77623
 77624
 77625
 77626
 77627
 77628
 77629
 77630
 77631
 77632
 77633
 77634
 77635
 77636
 77637
 77638
 77639
 77640
 77641
 77642
 77643
 77644
 77645
 77646
 77647
 77648
 77649
 77650
 77651
 77652
 77653
 77654
 77655
 77656
 77657
 77658
 77659
 77660
 77661
 77662
 77663
 77664
 77665
 77666
 77667
 77668
 77669
 77670
 77671
 77672
 77673
 77674
 77675
 77676
 77677
 77678
 77679
 77680
 77681
 77682
 77683
 77684
 77685
 77686
 77687
 77688
 77689
 77690
 77691
 77692
 77693
 77694
 77695
 77696
 77697
 77698
 77699
 77700
 77701
 77702
 77703
 77704
 77705
 77706
 77707
 77708
 77709
 77710
 77711
 77712
 77713
 77714
 77715
 77716
 77717
 77718
 77719
 77720
 77721
 77722
 77723
 77724
 77725
 77726
 77727
 77728
 77729
 77730
 77731
 77732
 77733
 77734
 77735
 77736
 77737
 77738
 77739
 77740
 77741
 77742
 77743
 77744
 77745
 77746
 77747
 77748
 77749
 77750
 77751
 77752
 77753
 77754
 77755
 77756
 77757
 77758
 77759
 77760
 77761
 77762
 77763
 77764
 77765
 77766
 77767
 77768
 77769
 77770
 77771
 77772
 77773
 77774
 77775
 77776
 77777
 77778
 77779
 77780
 77781
 77782
 77783
 77784
 77785
 77786
 77787
 77788
 77789
 77790
 77791
 77792
 77793
 77794
 77795
 77796
 77797
 77798
 77799
 77800
 77801
 77802
 77803
 77804
 77805
 77806
 77807
 77808
 77809
 77810
 77811
 77812
 77813
 77814
 77815
 77816
 77817
 77818
 77819
 77820
 77821
 77822
 77823
 77824
 77825
 77826
 77827
 77828
 77829
 77830
 77831
 77832
 77833
 77834
 77835
 77836
 77837
 77838
 77839
 77840
 77841
 77842
 77843
 77844
 77845
 77846
 77847
 77848
 77849
 77850
 77851
 77852
 77853
 77854
 77855
 77856
 77857
 77858
 77859
 77860
 77861
 77862
 77863
 77864
 77865
 77866
 77867
 77868
 77869
 77870
 77871
 77872
 77873
 77874
 77875
 77876
 77877
 77878
 77879
 77880
 77881
 77882
 77883
 77884
 77885
 77886
 77887
 77888
 77889
 77890
 77891
 77892
 77893
 77894
 77895
 77896
 77897
 77898
 77899
 77900
 77901
 77902
 77903
 77904
 77905
 77906
 77907
 77908
 77909
 77910
 77911
 77912
 77913
 77914
 77915
 77916
 77917
 77918
 77919
 77920
 77921
 77922
 77923
 77924
 77925
 77926
 77927
 77928
 77929
 77930
 77931
 77932
 77933
 77934
 77935
 77936
 77937
 77938
 77939
 77940
 77941
 77942
 77943
 77944
 77945
 77946
 77947
 77948
 77949
 77950
 77951
 77952
 77953
 77954
 77955
 77956
 77957
 77958
 77959
 77960
 77961
 77962
 77963
 77964
 77965
 77966
 77967
 77968
 77969
 77970
 77971
 77972
 77973
 77974
 77975
 77976
 77977
 77978
 77979
 77980
 77981
 77982
 77983
 77984
 77985
 77986
 77987
 77988
 77989
 77990
 77991
 77992
 77993
 77994
 77995
 77996
 77997
 77998
 77999
 78000
 78001
 78002
 78003
 78004
 78005
 78006
 78007
 78008
 78009
 78010
 78011
 78012
 78013
 78014
 78015
 78016
 78017
 78018
 78019
 78020
 78021
 78022
 78023
 78024
 78025
 78026
 78027
 78028
 78029
 78030
 78031
 78032
 78033
 78034
 78035
 78036
 78037
 78038
 78039
 78040
 78041
 78042
 78043
 78044
 78045
 78046
 78047
 78048
 78049
 78050
 78051
 78052
 78053
 78054
 78055
 78056
 78057
 78058
 78059
 78060
 78061
 78062
 78063
 78064
 78065
 78066
 78067
 78068
 78069
 78070
 78071
 78072
 78073
 78074
 78075
 78076
 78077
 78078
 78079
 78080
 78081
 78082
 78083
 78084
 78085
 78086
 78087
 78088
 78089
 78090
 78091
 78092
 78093
 78094
 78095
 78096
 78097
 78098
 78099
 78100
 78101
 78102
 78103
 78104
 78105
 78106
 78107
 78108
 78109
 78110
 78111
 78112
 78113
 78114
 78115
 78116
 78117
 78118
 78119
 78120
 78121
 78122
 78123
 78124
 78125
 78126
 78127
 78128
 78129
 78130
 78131
 78132
 78133
 78134
 78135
 78136
 78137
 78138
 78139
 78140
 78141
 78142
 78143
 78144
 78145
 78146
 78147
 78148
 78149
 78150
 78151
 78152
 78153
 78154
 78155
 78156
 78157
 78158
 78159
 78160
 78161
 78162
 78163
 78164
 78165
 78166
 78167
 78168
 78169
 78170
 78171
 78172
 78173
 78174
 78175
 78176
 78177
 78178
 78179
 78180
 78181
 78182
 78183
 78184
 78185
 78186
 78187
 78188
 78189
 78190
 78191
 78192
 78193
 78194
 78195
 78196
 78197
 78198
 78199
 78200
 78201
 78202
 78203
 78204
 78205
 78206
 78207
 78208
 78209
 78210
 78211
 78212
 78213
 78214
 78215
 78216
 78217
 78218
 78219
 78220
 78221
 78222
 78223
 78224
 78225
 78226
 78227
 78228
 78229
 78230
 78231
 78232
 78233
 78234
 78235
 78236
 78237
 78238
 78239
 78240
 78241
 78242
 78243
 78244
 78245
 78246
 78247
 78248
 78249
 78250
 78251
 78252
 78253
 78254
 78255
 78256
 78257
 78258
 78259
 78260
 78261
 78262
 78263
 78264
 78265
 78266
 78267
 78268
 78269
 78270
 78271
 78272
 78273
 78274
 78275
 78276
 78277
 78278
 78279
 78280
 78281
 78282
 78283
 78284
 78285
 78286
 78287
 78288
 78289
 78290
 78291
 78292
 78293
 78294
 78295
 78296
 78297
 78298
 78299
 78300
 78301
 78302
 78303
 78304
 78305
 78306
 78307
 78308
 78309
 78310
 78311
 78312
 78313
 78314
 78315
 78316
 78317
 78318
 78319
 78320
 78321
 78322
 78323
 78324
 78325
 78326
 78327
 78328
 78329
 78330
 78331
 78332
 78333
 78334
 78335
 78336
 78337
 78338
 78339
 78340
 78341
 78342
 78343
 78344
 78345
 78346
 78347
 78348
 78349
 78350
 78351
 78352
 78353
 78354
 78355
 78356
 78357
 78358
 78359
 78360
 78361
 78362
 78363
 78364
 78365
 78366
 78367
 78368
 78369
 78370
 78371
 78372
 78373
 78374
 78375
 78376
 78377
 78378
 78379
 78380
 78381
 78382
 78383
 78384
 78385
 78386
 78387
 78388
 78389
 78390
 78391
 78392
 78393
 78394
 78395
 78396
 78397
 78398
 78399
 78400
 78401
 78402
 78403
 78404
 78405
 78406
 78407
 78408
 78409
 78410
 78411
 78412
 78413
 78414
 78415
 78416
 78417
 78418
 78419
 78420
 78421
 78422
 78423
 78424
 78425
 78426
 78427
 78428
 78429
 78430
 78431
 78432
 78433
 78434
 78435
 78436
 78437
 78438
 78439
 78440
 78441
 78442
 78443
 78444
 78445
 78446
 78447
 78448
 78449
 78450
 78451
 78452
 78453
 78454
 78455
 78456
 78457
 78458
 78459
 78460
 78461
 78462
 78463
 78464
 78465
 78466
 78467
 78468
 78469
 78470
 78471
 78472
 78473
 78474
 78475
 78476
 78477
 78478
 78479
 78480
 78481
 78482
 78483
 78484
 78485
 78486
 78487
 78488
 78489
 78490
 78491
 78492
 78493
 78494
 78495
 78496
 78497
 78498
 78499
 78500
 78501
 78502
 78503
 78504
 78505
 78506
 78507
 78508
 78509
 78510
 78511
 78512
 78513
 78514
 78515
 78516
 78517
 78518
 78519
 78520
 78521
 78522
 78523
 78524
 78525
 78526
 78527
 78528
 78529
 78530
 78531
 78532
 78533
 78534
 78535
 78536
 78537
 78538
 78539
 78540
 78541
 78542
 78543
 78544
 78545
 78546
 78547
 78548
 78549
 78550
 78551
 78552
 78553
 78554
 78555
 78556
 78557
 78558
 78559
 78560
 78561
 78562
 78563
 78564
 78565
 78566
 78567
 78568
 78569
 78570
 78571
 78572
 78573
 78574
 78575
 78576
 78577
 78578
 78579
 78580
 78581
 78582
 78583
 78584
 78585
 78586
 78587
 78588
 78589
 78590
 78591
 78592
 78593
 78594
 78595
 78596
 78597
 78598
 78599
 78600
 78601
 78602
 78603
 78604
 78605
 78606
 78607
 78608
 78609
 78610
 78611
 78612
 78613
 78614
 78615
 78616
 78617
 78618
 78619
 78620
 78621
 78622
 78623
 78624
 78625
 78626
 78627
 78628
 78629
 78630
 78631
 78632
 78633
 78634
 78635
 78636
 78637
 78638
 78639
 78640
 78641
 78642
 78643
 78644
 78645
 78646
 78647
 78648
 78649
 78650
 78651
 78652
 78653
 78654
 78655
 78656
 78657
 78658
 78659
 78660
 78661
 78662
 78663
 78664
 78665
 78666
 78667
 78668
 78669
 78670
 78671
 78672
 78673
 78674
 78675
 78676
 78677
 78678
 78679
 78680
 78681
 78682
 78683
 78684
 78685
 78686
 78687
 78688
 78689
 78690
 78691
 78692
 78693
 78694
 78695
 78696
 78697
 78698
 78699
 78700
 78701
 78702
 78703
 78704
 78705
 78706
 78707
 78708
 78709
 78710
 78711
 78712
 78713
 78714
 78715
 78716
 78717
 78718
 78719
 78720
 78721
 78722
 78723
 78724
 78725
 78726
 78727
 78728
 78729
 78730
 78731
 78732
 78733
 78734
 78735
 78736
 78737
 78738
 78739
 78740
 78741
 78742
 78743
 78744
 78745
 78746
 78747
 78748
 78749
 78750
 78751
 78752
 78753
 78754
 78755
 78756
 78757
 78758
 78759
 78760
 78761
 78762
 78763
 78764
 78765
 78766
 78767
 78768
 78769
 78770
 78771
 78772
 78773
 78774
 78775
 78776
 78777
 78778
 78779
 78780
 78781
 78782
 78783
 78784
 78785
 78786
 78787
 78788
 78789
 78790
 78791
 78792
 78793
 78794
 78795
 78796
 78797
 78798
 78799
 78800
 78801
 78802
 78803
 78804
 78805
 78806
 78807
 78808
 78809
 78810
 78811
 78812
 78813
 78814
 78815
 78816
 78817
 78818
 78819
 78820
 78821
 78822
 78823
 78824
 78825
 78826
 78827
 78828
 78829
 78830
 78831
 78832
 78833
 78834
 78835
 78836
 78837
 78838
 78839
 78840
 78841
 78842
 78843
 78844
 78845
 78846
 78847
 78848
 78849
 78850
 78851
 78852
 78853
 78854
 78855
 78856
 78857
 78858
 78859
 78860
 78861
 78862
 78863
 78864
 78865
 78866
 78867
 78868
 78869
 78870
 78871
 78872
 78873
 78874
 78875
 78876
 78877
 78878
 78879
 78880
 78881
 78882
 78883
 78884
 78885
 78886
 78887
 78888
 78889
 78890
 78891
 78892
 78893
 78894
 78895
 78896
 78897
 78898
 78899
 78900
 78901
 78902
 78903
 78904
 78905
 78906
 78907
 78908
 78909
 78910
 78911
 78912
 78913
 78914
 78915
 78916
 78917
 78918
 78919
 78920
 78921
 78922
 78923
 78924
 78925
 78926
 78927
 78928
 78929
 78930
 78931
 78932
 78933
 78934
 78935
 78936
 78937
 78938
 78939
 78940
 78941
 78942
 78943
 78944
 78945
 78946
 78947
 78948
 78949
 78950
 78951
 78952
 78953
 78954
 78955
 78956
 78957
 78958
 78959
 78960
 78961
 78962
 78963
 78964
 78965
 78966
 78967
 78968
 78969
 78970
 78971
 78972
 78973
 78974
 78975
 78976
 78977
 78978
 78979
 78980
 78981
 78982
 78983
 78984
 78985
 78986
 78987
 78988
 78989
 78990
 78991
 78992
 78993
 78994
 78995
 78996
 78997
 78998
 78999
 79000
 79001
 79002
 79003
 79004
 79005
 79006
 79007
 79008
 79009
 79010
 79011
 79012
 79013
 79014
 79015
 79016
 79017
 79018
 79019
 79020
 79021
 79022
 79023
 79024
 79025
 79026
 79027
 79028
 79029
 79030
 79031
 79032
 79033
 79034
 79035
 79036
 79037
 79038
 79039
 79040
 79041
 79042
 79043
 79044
 79045
 79046
 79047
 79048
 79049
 79050
 79051
 79052
 79053
 79054
 79055
 79056
 79057
 79058
 79059
 79060
 79061
 79062
 79063
 79064
 79065
 79066
 79067
 79068
 79069
 79070
 79071
 79072
 79073
 79074
 79075
 79076
 79077
 79078
 79079
 79080
 79081
 79082
 79083
 79084
 79085
 79086
 79087
 79088
 79089
 79090
 79091
 79092
 79093
 79094
 79095
 79096
 79097
 79098
 79099
 79100
 79101
 79102
 79103
 79104
 79105
 79106
 79107
 79108
 79109
 79110
 79111
 79112
 79113
 79114
 79115
 79116
 79117
 79118
 79119
 79120
 79121
 79122
 79123
 79124
 79125
 79126
 79127
 79128
 79129
 79130
 79131
 79132
 79133
 79134
 79135
 79136
 79137
 79138
 79139
 79140
 79141
 79142
 79143
 79144
 79145
 79146
 79147
 79148
 79149
 79150
 79151
 79152
 79153
 79154
 79155
 79156
 79157
 79158
 79159
 79160
 79161
 79162
 79163
 79164
 79165
 79166
 79167
 79168
 79169
 79170
 79171
 79172
 79173
 79174
 79175
 79176
 79177
 79178
 79179
 79180
 79181
 79182
 79183
 79184
 79185
 79186
 79187
 79188
 79189
 79190
 79191
 79192
 79193
 79194
 79195
 79196
 79197
 79198
 79199
 79200
 79201
 79202
 79203
 79204
 79205
 79206
 79207
 79208
 79209
 79210
 79211
 79212
 79213
 79214
 79215
 79216
 79217
 79218
 79219
 79220
 79221
 79222
 79223
 79224
 79225
 79226
 79227
 79228
 79229
 79230
 79231
 79232
 79233
 79234
 79235
 79236
 79237
 79238
 79239
 79240
 79241
 79242
 79243
 79244
 79245
 79246
 79247
 79248
 79249
 79250
 79251
 79252
 79253
 79254
 79255
 79256
 79257
 79258
 79259
 79260
 79261
 79262
 79263
 79264
 79265
 79266
 79267
 79268
 79269
 79270
 79271
 79272
 79273
 79274
 79275
 79276
 79277
 79278
 79279
 79280
 79281
 79282
 79283
 79284
 79285
 79286
 79287
 79288
 79289
 79290
 79291
 79292
 79293
 79294
 79295
 79296
 79297
 79298
 79299
 79300
 79301
 79302
 79303
 79304
 79305
 79306
 79307
 79308
 79309
 79310
 79311
 79312
 79313
 79314
 79315
 79316
 79317
 79318
 79319
 79320
 79321
 79322
 79323
 79324
 79325
 79326
 79327
 79328
 79329
 79330
 79331
 79332
 79333
 79334
 79335
 79336
 79337
 79338
 79339
 79340
 79341
 79342
 79343
 79344
 79345
 79346
 79347
 79348
 79349
 79350
 79351
 79352
 79353
 79354
 79355
 79356
 79357
 79358
 79359
 79360
 79361
 79362
 79363
 79364
 79365
 79366
 79367
 79368
 79369
 79370
 79371
 79372
 79373
 79374
 79375
 79376
 79377
 79378
 79379
 79380
 79381
 79382
 79383
 79384
 79385
 79386
 79387
 79388
 79389
 79390
 79391
 79392
 79393
 79394
 79395
 79396
 79397
 79398
 79399
 79400
 79401
 79402
 79403
 79404
 79405
 79406
 79407
 79408
 79409
 79410
 79411
 79412
 79413
 79414
 79415
 79416
 79417
 79418
 79419
 79420
 79421
 79422
 79423
 79424
 79425
 79426
 79427
 79428
 79429
 79430
 79431
 79432
 79433
 79434
 79435
 79436
 79437
 79438
 79439
 79440
 79441
 79442
 79443
 79444
 79445
 79446
 79447
 79448
 79449
 79450
 79451
 79452
 79453
 79454
 79455
 79456
 79457
 79458
 79459
 79460
 79461
 79462
 79463
 79464
 79465
 79466
 79467
 79468
 79469
 79470
 79471
 79472
 79473
 79474
 79475
 79476
 79477
 79478
 79479
 79480
 79481
 79482
 79483
 79484
 79485
 79486
 79487
 79488
 79489
 79490
 79491
 79492
 79493
 79494
 79495
 79496
 79497
 79498
 79499
 79500
 79501
 79502
 79503
 79504
 79505
 79506
 79507
 79508
 79509
 79510
 79511
 79512
 79513
 79514
 79515
 79516
 79517
 79518
 79519
 79520
 79521
 79522
 79523
 79524
 79525
 79526
 79527
 79528
 79529
 79530
 79531
 79532
 79533
 79534
 79535
 79536
 79537
 79538
 79539
 79540
 79541
 79542
 79543
 79544
 79545
 79546
 79547
 79548
 79549
 79550
 79551
 79552
 79553
 79554
 79555
 79556
 79557
 79558
 79559
 79560
 79561
 79562
 79563
 79564
 79565
 79566
 79567
 79568
 79569
 79570
 79571
 79572
 79573
 79574
 79575
 79576
 79577
 79578
 79579
 79580
 79581
 79582
 79583
 79584
 79585
 79586
 79587
 79588
 79589
 79590
 79591
 79592
 79593
 79594
 79595
 79596
 79597
 79598
 79599
 79600
 79601
 79602
 79603
 79604
 79605
 79606
 79607
 79608
 79609
 79610
 79611
 79612
 79613
 79614
 79615
 79616
 79617
 79618
 79619
 79620
 79621
 79622
 79623
 79624
 79625
 79626
 79627
 79628
 79629
 79630
 79631
 79632
 79633
 79634
 79635
 79636
 79637
 79638
 79639
 79640
 79641
 79642
 79643
 79644
 79645
 79646
 79647
 79648
 79649
 79650
 79651
 79652
 79653
 79654
 79655
 79656
 79657
 79658
 79659
 79660
 79661
 79662
 79663
 79664
 79665
 79666
 79667
 79668
 79669
 79670
 79671
 79672
 79673
 79674
 79675
 79676
 79677
 79678
 79679
 79680
 79681
 79682
 79683
 79684
 79685
 79686
 79687
 79688
 79689
 79690
 79691
 79692
 79693
 79694
 79695
 79696
 79697
 79698
 79699
 79700
 79701
 79702
 79703
 79704
 79705
 79706
 79707
 79708
 79709
 79710
 79711
 79712
 79713
 79714
 79715
 79716
 79717
 79718
 79719
 79720
 79721
 79722
 79723
 79724
 79725
 79726
 79727
 79728
 79729
 79730
 79731
 79732
 79733
 79734
 79735
 79736
 79737
 79738
 79739
 79740
 79741
 79742
 79743
 79744
 79745
 79746
 79747
 79748
 79749
 79750
 79751
 79752
 79753
 79754
 79755
 79756
 79757
 79758
 79759
 79760
 79761
 79762
 79763
 79764
 79765
 79766
 79767
 79768
 79769
 79770
 79771
 79772
 79773
 79774
 79775
 79776
 79777
 79778
 79779
 79780
 79781
 79782
 79783
 79784
 79785
 79786
 79787
 79788
 79789
 79790
 79791
 79792
 79793
 79794
 79795
 79796
 79797
 79798
 79799
 79800
 79801
 79802
 79803
 79804
 79805
 79806
 79807
 79808
 79809
 79810
 79811
 79812
 79813
 79814
 79815
 79816
 79817
 79818
 79819
 79820
 79821
 79822
 79823
 79824
 79825
 79826
 79827
 79828
 79829
 79830
 79831
 79832
 79833
 79834
 79835
 79836
 79837
 79838
 79839
 79840
 79841
 79842
 79843
 79844
 79845
 79846
 79847
 79848
 79849
 79850
 79851
 79852
 79853
 79854
 79855
 79856
 79857
 79858
 79859
 79860
 79861
 79862
 79863
 79864
 79865
 79866
 79867
 79868
 79869
 79870
 79871
 79872
 79873
 79874
 79875
 79876
 79877
 79878
 79879
 79880
 79881
 79882
 79883
 79884
 79885
 79886
 79887
 79888
 79889
 79890
 79891
 79892
 79893
 79894
 79895
 79896
 79897
 79898
 79899
 79900
 79901
 79902
 79903
 79904
 79905
 79906
 79907
 79908
 79909
 79910
 79911
 79912
 79913
 79914
 79915
 79916
 79917
 79918
 79919
 79920
 79921
 79922
 79923
 79924
 79925
 79926
 79927
 79928
 79929
 79930
 79931
 79932
 79933
 79934
 79935
 79936
 79937
 79938
 79939
 79940
 79941
 79942
 79943
 79944
 79945
 79946
 79947
 79948
 79949
 79950
 79951
 79952
 79953
 79954
 79955
 79956
 79957
 79958
 79959
 79960
 79961
 79962
 79963
 79964
 79965
 79966
 79967
 79968
 79969
 79970
 79971
 79972
 79973
 79974
 79975
 79976
 79977
 79978
 79979
 79980
 79981
 79982
 79983
 79984
 79985
 79986
 79987
 79988
 79989
 79990
 79991
 79992
 79993
 79994
 79995
 79996
 79997
 79998
 79999
 80000
 80001
 80002
 80003
 80004
 80005
 80006
 80007
 80008
 80009
 80010
 80011
 80012
 80013
 80014
 80015
 80016
 80017
 80018
 80019
 80020
 80021
 80022
 80023
 80024
 80025
 80026
 80027
 80028
 80029
 80030
 80031
 80032
 80033
 80034
 80035
 80036
 80037
 80038
 80039
 80040
 80041
 80042
 80043
 80044
 80045
 80046
 80047
 80048
 80049
 80050
 80051
 80052
 80053
 80054
 80055
 80056
 80057
 80058
 80059
 80060
 80061
 80062
 80063
 80064
 80065
 80066
 80067
 80068
 80069
 80070
 80071
 80072
 80073
 80074
 80075
 80076
 80077
 80078
 80079
 80080
 80081
 80082
 80083
 80084
 80085
 80086
 80087
 80088
 80089
 80090
 80091
 80092
 80093
 80094
 80095
 80096
 80097
 80098
 80099
 80100
 80101
 80102
 80103
 80104
 80105
 80106
 80107
 80108
 80109
 80110
 80111
 80112
 80113
 80114
 80115
 80116
 80117
 80118
 80119
 80120
 80121
 80122
 80123
 80124
 80125
 80126
 80127
 80128
 80129
 80130
 80131
 80132
 80133
 80134
 80135
 80136
 80137
 80138
 80139
 80140
 80141
 80142
 80143
 80144
 80145
 80146
 80147
 80148
 80149
 80150
 80151
 80152
 80153
 80154
 80155
 80156
 80157
 80158
 80159
 80160
 80161
 80162
 80163
 80164
 80165
 80166
 80167
 80168
 80169
 80170
 80171
 80172
 80173
 80174
 80175
 80176
 80177
 80178
 80179
 80180
 80181
 80182
 80183
 80184
 80185
 80186
 80187
 80188
 80189
 80190
 80191
 80192
 80193
 80194
 80195
 80196
 80197
 80198
 80199
 80200
 80201
 80202
 80203
 80204
 80205
 80206
 80207
 80208
 80209
 80210
 80211
 80212
 80213
 80214
 80215
 80216
 80217
 80218
 80219
 80220
 80221
 80222
 80223
 80224
 80225
 80226
 80227
 80228
 80229
 80230
 80231
 80232
 80233
 80234
 80235
 80236
 80237
 80238
 80239
 80240
 80241
 80242
 80243
 80244
 80245
 80246
 80247
 80248
 80249
 80250
 80251
 80252
 80253
 80254
 80255
 80256
 80257
 80258
 80259
 80260
 80261
 80262
 80263
 80264
 80265
 80266
 80267
 80268
 80269
 80270
 80271
 80272
 80273
 80274
 80275
 80276
 80277
 80278
 80279
 80280
 80281
 80282
 80283
 80284
 80285
 80286
 80287
 80288
 80289
 80290
 80291
 80292
 80293
 80294
 80295
 80296
 80297
 80298
 80299
 80300
 80301
 80302
 80303
 80304
 80305
 80306
 80307
 80308
 80309
 80310
 80311
 80312
 80313
 80314
 80315
 80316
 80317
 80318
 80319
 80320
 80321
 80322
 80323
 80324
 80325
 80326
 80327
 80328
 80329
 80330
 80331
 80332
 80333
 80334
 80335
 80336
 80337
 80338
 80339
 80340
 80341
 80342
 80343
 80344
 80345
 80346
 80347
 80348
 80349
 80350
 80351
 80352
 80353
 80354
 80355
 80356
 80357
 80358
 80359
 80360
 80361
 80362
 80363
 80364
 80365
 80366
 80367
 80368
 80369
 80370
 80371
 80372
 80373
 80374
 80375
 80376
 80377
 80378
 80379
 80380
 80381
 80382
 80383
 80384
 80385
 80386
 80387
 80388
 80389
 80390
 80391
 80392
 80393
 80394
 80395
 80396
 80397
 80398
 80399
 80400
 80401
 80402
 80403
 80404
 80405
 80406
 80407
 80408
 80409
 80410
 80411
 80412
 80413
 80414
 80415
 80416
 80417
 80418
 80419
 80420
 80421
 80422
 80423
 80424
 80425
 80426
 80427
 80428
 80429
 80430
 80431
 80432
 80433
 80434
 80435
 80436
 80437
 80438
 80439
 80440
 80441
 80442
 80443
 80444
 80445
 80446
 80447
 80448
 80449
 80450
 80451
 80452
 80453
 80454
 80455
 80456
 80457
 80458
 80459
 80460
 80461
 80462
 80463
 80464
 80465
 80466
 80467
 80468
 80469
 80470
 80471
 80472
 80473
 80474
 80475
 80476
 80477
 80478
 80479
 80480
 80481
 80482
 80483
 80484
 80485
 80486
 80487
 80488
 80489
 80490
 80491
 80492
 80493
 80494
 80495
 80496
 80497
 80498
 80499
 80500
 80501
 80502
 80503
 80504
 80505
 80506
 80507
 80508
 80509
 80510
 80511
 80512
 80513
 80514
 80515
 80516
 80517
 80518
 80519
 80520
 80521
 80522
 80523
 80524
 80525
 80526
 80527
 80528
 80529
 80530
 80531
 80532
 80533
 80534
 80535
 80536
 80537
 80538
 80539
 80540
 80541
 80542
 80543
 80544
 80545
 80546
 80547
 80548
 80549
 80550
 80551
 80552
 80553
 80554
 80555
 80556
 80557
 80558
 80559
 80560
 80561
 80562
 80563
 80564
 80565
 80566
 80567
 80568
 80569
 80570
 80571
 80572
 80573
 80574
 80575
 80576
 80577
 80578
 80579
 80580
 80581
 80582
 80583
 80584
 80585
 80586
 80587
 80588
 80589
 80590
 80591
 80592
 80593
 80594
 80595
 80596
 80597
 80598
 80599
 80600
 80601
 80602
 80603
 80604
 80605
 80606
 80607
 80608
 80609
 80610
 80611
 80612
 80613
 80614
 80615
 80616
 80617
 80618
 80619
 80620
 80621
 80622
 80623
 80624
 80625
 80626
 80627
 80628
 80629
 80630
 80631
 80632
 80633
 80634
 80635
 80636
 80637
 80638
 80639
 80640
 80641
 80642
 80643
 80644
 80645
 80646
 80647
 80648
 80649
 80650
 80651
 80652
 80653
 80654
 80655
 80656
 80657
 80658
 80659
 80660
 80661
 80662
 80663
 80664
 80665
 80666
 80667
 80668
 80669
 80670
 80671
 80672
 80673
 80674
 80675
 80676
 80677
 80678
 80679
 80680
 80681
 80682
 80683
 80684
 80685
 80686
 80687
 80688
 80689
 80690
 80691
 80692
 80693
 80694
 80695
 80696
 80697
 80698
 80699
 80700
 80701
 80702
 80703
 80704
 80705
 80706
 80707
 80708
 80709
 80710
 80711
 80712
 80713
 80714
 80715
 80716
 80717
 80718
 80719
 80720
 80721
 80722
 80723
 80724
 80725
 80726
 80727
 80728
 80729
 80730
 80731
 80732
 80733
 80734
 80735
 80736
 80737
 80738
 80739
 80740
 80741
 80742
 80743
 80744
 80745
 80746
 80747
 80748
 80749
 80750
 80751
 80752
 80753
 80754
 80755
 80756
 80757
 80758
 80759
 80760
 80761
 80762
 80763
 80764
 80765
 80766
 80767
 80768
 80769
 80770
 80771
 80772
 80773
 80774
 80775
 80776
 80777
 80778
 80779
 80780
 80781
 80782
 80783
 80784
 80785
 80786
 80787
 80788
 80789
 80790
 80791
 80792
 80793
 80794
 80795
 80796
 80797
 80798
 80799
 80800
 80801
 80802
 80803
 80804
 80805
 80806
 80807
 80808
 80809
 80810
 80811
 80812
 80813
 80814
 80815
 80816
 80817
 80818
 80819
 80820
 80821
 80822
 80823
 80824
 80825
 80826
 80827
 80828
 80829
 80830
 80831
 80832
 80833
 80834
 80835
 80836
 80837
 80838
 80839
 80840
 80841
 80842
 80843
 80844
 80845
 80846
 80847
 80848
 80849
 80850
 80851
 80852
 80853
 80854
 80855
 80856
 80857
 80858
 80859
 80860
 80861
 80862
 80863
 80864
 80865
 80866
 80867
 80868
 80869
 80870
 80871
 80872
 80873
 80874
 80875
 80876
 80877
 80878
 80879
 80880
 80881
 80882
 80883
 80884
 80885
 80886
 80887
 80888
 80889
 80890
 80891
 80892
 80893
 80894
 80895
 80896
 80897
 80898
 80899
 80900
 80901
 80902
 80903
 80904
 80905
 80906
 80907
 80908
 80909
 80910
 80911
 80912
 80913
 80914
 80915
 80916
 80917
 80918
 80919
 80920
 80921
 80922
 80923
 80924
 80925
 80926
 80927
 80928
 80929
 80930
 80931
 80932
 80933
 80934
 80935
 80936
 80937
 80938
 80939
 80940
 80941
 80942
 80943
 80944
 80945
 80946
 80947
 80948
 80949
 80950
 80951
 80952
 80953
 80954
 80955
 80956
 80957
 80958
 80959
 80960
 80961
 80962
 80963
 80964
 80965
 80966
 80967
 80968
 80969
 80970
 80971
 80972
 80973
 80974
 80975
 80976
 80977
 80978
 80979
 80980
 80981
 80982
 80983
 80984
 80985
 80986
 80987
 80988
 80989
 80990
 80991
 80992
 80993
 80994
 80995
 80996
 80997
 80998
 80999
 81000
 81001
 81002
 81003
 81004
 81005
 81006
 81007
 81008
 81009
 81010
 81011
 81012
 81013
 81014
 81015
 81016
 81017
 81018
 81019
 81020
 81021
 81022
 81023
 81024
 81025
 81026
 81027
 81028
 81029
 81030
 81031
 81032
 81033
 81034
 81035
 81036
 81037
 81038
 81039
 81040
 81041
 81042
 81043
 81044
 81045
 81046
 81047
 81048
 81049
 81050
 81051
 81052
 81053
 81054
 81055
 81056
 81057
 81058
 81059
 81060
 81061
 81062
 81063
 81064
 81065
 81066
 81067
 81068
 81069
 81070
 81071
 81072
 81073
 81074
 81075
 81076
 81077
 81078
 81079
 81080
 81081
 81082
 81083
 81084
 81085
 81086
 81087
 81088
 81089
 81090
 81091
 81092
 81093
 81094
 81095
 81096
 81097
 81098
 81099
 81100
 81101
 81102
 81103
 81104
 81105
 81106
 81107
 81108
 81109
 81110
 81111
 81112
 81113
 81114
 81115
 81116
 81117
 81118
 81119
 81120
 81121
 81122
 81123
 81124
 81125
 81126
 81127
 81128
 81129
 81130
 81131
 81132
 81133
 81134
 81135
 81136
 81137
 81138
 81139
 81140
 81141
 81142
 81143
 81144
 81145
 81146
 81147
 81148
 81149
 81150
 81151
 81152
 81153
 81154
 81155
 81156
 81157
 81158
 81159
 81160
 81161
 81162
 81163
 81164
 81165
 81166
 81167
 81168
 81169
 81170
 81171
 81172
 81173
 81174
 81175
 81176
 81177
 81178
 81179
 81180
 81181
 81182
 81183
 81184
 81185
 81186
 81187
 81188
 81189
 81190
 81191
 81192
 81193
 81194
 81195
 81196
 81197
 81198
 81199
 81200
 81201
 81202
 81203
 81204
 81205
 81206
 81207
 81208
 81209
 81210
 81211
 81212
 81213
 81214
 81215
 81216
 81217
 81218
 81219
 81220
 81221
 81222
 81223
 81224
 81225
 81226
 81227
 81228
 81229
 81230
 81231
 81232
 81233
 81234
 81235
 81236
 81237
 81238
 81239
 81240
 81241
 81242
 81243
 81244
 81245
 81246
 81247
 81248
 81249
 81250
 81251
 81252
 81253
 81254
 81255
 81256
 81257
 81258
 81259
 81260
 81261
 81262
 81263
 81264
 81265
 81266
 81267
 81268
 81269
 81270
 81271
 81272
 81273
 81274
 81275
 81276
 81277
 81278
 81279
 81280
 81281
 81282
 81283
 81284
 81285
 81286
 81287
 81288
 81289
 81290
 81291
 81292
 81293
 81294
 81295
 81296
 81297
 81298
 81299
 81300
 81301
 81302
 81303
 81304
 81305
 81306
 81307
 81308
 81309
 81310
 81311
 81312
 81313
 81314
 81315
 81316
 81317
 81318
 81319
 81320
 81321
 81322
 81323
 81324
 81325
 81326
 81327
 81328
 81329
 81330
 81331
 81332
 81333
 81334
 81335
 81336
 81337
 81338
 81339
 81340
 81341
 81342
 81343
 81344
 81345
 81346
 81347
 81348
 81349
 81350
 81351
 81352
 81353
 81354
 81355
 81356
 81357
 81358
 81359
 81360
 81361
 81362
 81363
 81364
 81365
 81366
 81367
 81368
 81369
 81370
 81371
 81372
 81373
 81374
 81375
 81376
 81377
 81378
 81379
 81380
 81381
 81382
 81383
 81384
 81385
 81386
 81387
 81388
 81389
 81390
 81391
 81392
 81393
 81394
 81395
 81396
 81397
 81398
 81399
 81400
 81401
 81402
 81403
 81404
 81405
 81406
 81407
 81408
 81409
 81410
 81411
 81412
 81413
 81414
 81415
 81416
 81417
 81418
 81419
 81420
 81421
 81422
 81423
 81424
 81425
 81426
 81427
 81428
 81429
 81430
 81431
 81432
 81433
 81434
 81435
 81436
 81437
 81438
 81439
 81440
 81441
 81442
 81443
 81444
 81445
 81446
 81447
 81448
 81449
 81450
 81451
 81452
 81453
 81454
 81455
 81456
 81457
 81458
 81459
 81460
 81461
 81462
 81463
 81464
 81465
 81466
 81467
 81468
 81469
 81470
 81471
 81472
 81473
 81474
 81475
 81476
 81477
 81478
 81479
 81480
 81481
 81482
 81483
 81484
 81485
 81486
 81487
 81488
 81489
 81490
 81491
 81492
 81493
 81494
 81495
 81496
 81497
 81498
 81499
 81500
 81501
 81502
 81503
 81504
 81505
 81506
 81507
 81508
 81509
 81510
 81511
 81512
 81513
 81514
 81515
 81516
 81517
 81518
 81519
 81520
 81521
 81522
 81523
 81524
 81525
 81526
 81527
 81528
 81529
 81530
 81531
 81532
 81533
 81534
 81535
 81536
 81537
 81538
 81539
 81540
 81541
 81542
 81543
 81544
 81545
 81546
 81547
 81548
 81549
 81550
 81551
 81552
 81553
 81554
 81555
 81556
 81557
 81558
 81559
 81560
 81561
 81562
 81563
 81564
 81565
 81566
 81567
 81568
 81569
 81570
 81571
 81572
 81573
 81574
 81575
 81576
 81577
 81578
 81579
 81580
 81581
 81582
 81583
 81584
 81585
 81586
 81587
 81588
 81589
 81590
 81591
 81592
 81593
 81594
 81595
 81596
 81597
 81598
 81599
 81600
 81601
 81602
 81603
 81604
 81605
 81606
 81607
 81608
 81609
 81610
 81611
 81612
 81613
 81614
 81615
 81616
 81617
 81618
 81619
 81620
 81621
 81622
 81623
 81624
 81625
 81626
 81627
 81628
 81629
 81630
 81631
 81632
 81633
 81634
 81635
 81636
 81637
 81638
 81639
 81640
 81641
 81642
 81643
 81644
 81645
 81646
 81647
 81648
 81649
 81650
 81651
 81652
 81653
 81654
 81655
 81656
 81657
 81658
 81659
 81660
 81661
 81662
 81663
 81664
 81665
 81666
 81667
 81668
 81669
 81670
 81671
 81672
 81673
 81674
 81675
 81676
 81677
 81678
 81679
 81680
 81681
 81682
 81683
 81684
 81685
 81686
 81687
 81688
 81689
 81690
 81691
 81692
 81693
 81694
 81695
 81696
 81697
 81698
 81699
 81700
 81701
 81702
 81703
 81704
 81705
 81706
 81707
 81708
 81709
 81710
 81711
 81712
 81713
 81714
 81715
 81716
 81717
 81718
 81719
 81720
 81721
 81722
 81723
 81724
 81725
 81726
 81727
 81728
 81729
 81730
 81731
 81732
 81733
 81734
 81735
 81736
 81737
 81738
 81739
 81740
 81741
 81742
 81743
 81744
 81745
 81746
 81747
 81748
 81749
 81750
 81751
 81752
 81753
 81754
 81755
 81756
 81757
 81758
 81759
 81760
 81761
 81762
 81763
 81764
 81765
 81766
 81767
 81768
 81769
 81770
 81771
 81772
 81773
 81774
 81775
 81776
 81777
 81778
 81779
 81780
 81781
 81782
 81783
 81784
 81785
 81786
 81787
 81788
 81789
 81790
 81791
 81792
 81793
 81794
 81795
 81796
 81797
 81798
 81799
 81800
 81801
 81802
 81803
 81804
 81805
 81806
 81807
 81808
 81809
 81810
 81811
 81812
 81813
 81814
 81815
 81816
 81817
 81818
 81819
 81820
 81821
 81822
 81823
 81824
 81825
 81826
 81827
 81828
 81829
 81830
 81831
 81832
 81833
 81834
 81835
 81836
 81837
 81838
 81839
 81840
 81841
 81842
 81843
 81844
 81845
 81846
 81847
 81848
 81849
 81850
 81851
 81852
 81853
 81854
 81855
 81856
 81857
 81858
 81859
 81860
 81861
 81862
 81863
 81864
 81865
 81866
 81867
 81868
 81869
 81870
 81871
 81872
 81873
 81874
 81875
 81876
 81877
 81878
 81879
 81880
 81881
 81882
 81883
 81884
 81885
 81886
 81887
 81888
 81889
 81890
 81891
 81892
 81893
 81894
 81895
 81896
 81897
 81898
 81899
 81900
 81901
 81902
 81903
 81904
 81905
 81906
 81907
 81908
 81909
 81910
 81911
 81912
 81913
 81914
 81915
 81916
 81917
 81918
 81919
 81920
 81921
 81922
 81923
 81924
 81925
 81926
 81927
 81928
 81929
 81930
 81931
 81932
 81933
 81934
 81935
 81936
 81937
 81938
 81939
 81940
 81941
 81942
 81943
 81944
 81945
 81946
 81947
 81948
 81949
 81950
 81951
 81952
 81953
 81954
 81955
 81956
 81957
 81958
 81959
 81960
 81961
 81962
 81963
 81964
 81965
 81966
 81967
 81968
 81969
 81970
 81971
 81972
 81973
 81974
 81975
 81976
 81977
 81978
 81979
 81980
 81981
 81982
 81983
 81984
 81985
 81986
 81987
 81988
 81989
 81990
 81991
 81992
 81993
 81994
 81995
 81996
 81997
 81998
 81999
 82000
 82001
 82002
 82003
 82004
 82005
 82006
 82007
 82008
 82009
 82010
 82011
 82012
 82013
 82014
 82015
 82016
 82017
 82018
 82019
 82020
 82021
 82022
 82023
 82024
 82025
 82026
 82027
 82028
 82029
 82030
 82031
 82032
 82033
 82034
 82035
 82036
 82037
 82038
 82039
 82040
 82041
 82042
 82043
 82044
 82045
 82046
 82047
 82048
 82049
 82050
 82051
 82052
 82053
 82054
 82055
 82056
 82057
 82058
 82059
 82060
 82061
 82062
 82063
 82064
 82065
 82066
 82067
 82068
 82069
 82070
 82071
 82072
 82073
 82074
 82075
 82076
 82077
 82078
 82079
 82080
 82081
 82082
 82083
 82084
 82085
 82086
 82087
 82088
 82089
 82090
 82091
 82092
 82093
 82094
 82095
 82096
 82097
 82098
 82099
 82100
 82101
 82102
 82103
 82104
 82105
 82106
 82107
 82108
 82109
 82110
 82111
 82112
 82113
 82114
 82115
 82116
 82117
 82118
 82119
 82120
 82121
 82122
 82123
 82124
 82125
 82126
 82127
 82128
 82129
 82130
 82131
 82132
 82133
 82134
 82135
 82136
 82137
 82138
 82139
 82140
 82141
 82142
 82143
 82144
 82145
 82146
 82147
 82148
 82149
 82150
 82151
 82152
 82153
 82154
 82155
 82156
 82157
 82158
 82159
 82160
 82161
 82162
 82163
 82164
 82165
 82166
 82167
 82168
 82169
 82170
 82171
 82172
 82173
 82174
 82175
 82176
 82177
 82178
 82179
 82180
 82181
 82182
 82183
 82184
 82185
 82186
 82187
 82188
 82189
 82190
 82191
 82192
 82193
 82194
 82195
 82196
 82197
 82198
 82199
 82200
 82201
 82202
 82203
 82204
 82205
 82206
 82207
 82208
 82209
 82210
 82211
 82212
 82213
 82214
 82215
 82216
 82217
 82218
 82219
 82220
 82221
 82222
 82223
 82224
 82225
 82226
 82227
 82228
 82229
 82230
 82231
 82232
 82233
 82234
 82235
 82236
 82237
 82238
 82239
 82240
 82241
 82242
 82243
 82244
 82245
 82246
 82247
 82248
 82249
 82250
 82251
 82252
 82253
 82254
 82255
 82256
 82257
 82258
 82259
 82260
 82261
 82262
 82263
 82264
 82265
 82266
 82267
 82268
 82269
 82270
 82271
 82272
 82273
 82274
 82275
 82276
 82277
 82278
 82279
 82280
 82281
 82282
 82283
 82284
 82285
 82286
 82287
 82288
 82289
 82290
 82291
 82292
 82293
 82294
 82295
 82296
 82297
 82298
 82299
 82300
 82301
 82302
 82303
 82304
 82305
 82306
 82307
 82308
 82309
 82310
 82311
 82312
 82313
 82314
 82315
 82316
 82317
 82318
 82319
 82320
 82321
 82322
 82323
 82324
 82325
 82326
 82327
 82328
 82329
 82330
 82331
 82332
 82333
 82334
 82335
 82336
 82337
 82338
 82339
 82340
 82341
 82342
 82343
 82344
 82345
 82346
 82347
 82348
 82349
 82350
 82351
 82352
 82353
 82354
 82355
 82356
 82357
 82358
 82359
 82360
 82361
 82362
 82363
 82364
 82365
 82366
 82367
 82368
 82369
 82370
 82371
 82372
 82373
 82374
 82375
 82376
 82377
 82378
 82379
 82380
 82381
 82382
 82383
 82384
 82385
 82386
 82387
 82388
 82389
 82390
 82391
 82392
 82393
 82394
 82395
 82396
 82397
 82398
 82399
 82400
 82401
 82402
 82403
 82404
 82405
 82406
 82407
 82408
 82409
 82410
 82411
 82412
 82413
 82414
 82415
 82416
 82417
 82418
 82419
 82420
 82421
 82422
 82423
 82424
 82425
 82426
 82427
 82428
 82429
 82430
 82431
 82432
 82433
 82434
 82435
 82436
 82437
 82438
 82439
 82440
 82441
 82442
 82443
 82444
 82445
 82446
 82447
 82448
 82449
 82450
 82451
 82452
 82453
 82454
 82455
 82456
 82457
 82458
 82459
 82460
 82461
 82462
 82463
 82464
 82465
 82466
 82467
 82468
 82469
 82470
 82471
 82472
 82473
 82474
 82475
 82476
 82477
 82478
 82479
 82480
 82481
 82482
 82483
 82484
 82485
 82486
 82487
 82488
 82489
 82490
 82491
 82492
 82493
 82494
 82495
 82496
 82497
 82498
 82499
 82500
 82501
 82502
 82503
 82504
 82505
 82506
 82507
 82508
 82509
 82510
 82511
 82512
 82513
 82514
 82515
 82516
 82517
 82518
 82519
 82520
 82521
 82522
 82523
 82524
 82525
 82526
 82527
 82528
 82529
 82530
 82531
 82532
 82533
 82534
 82535
 82536
 82537
 82538
 82539
 82540
 82541
 82542
 82543
 82544
 82545
 82546
 82547
 82548
 82549
 82550
 82551
 82552
 82553
 82554
 82555
 82556
 82557
 82558
 82559
 82560
 82561
 82562
 82563
 82564
 82565
 82566
 82567
 82568
 82569
 82570
 82571
 82572
 82573
 82574
 82575
 82576
 82577
 82578
 82579
 82580
 82581
 82582
 82583
 82584
 82585
 82586
 82587
 82588
 82589
 82590
 82591
 82592
 82593
 82594
 82595
 82596
 82597
 82598
 82599
 82600
 82601
 82602
 82603
 82604
 82605
 82606
 82607
 82608
 82609
 82610
 82611
 82612
 82613
 82614
 82615
 82616
 82617
 82618
 82619
 82620
 82621
 82622
 82623
 82624
 82625
 82626
 82627
 82628
 82629
 82630
 82631
 82632
 82633
 82634
 82635
 82636
 82637
 82638
 82639
 82640
 82641
 82642
 82643
 82644
 82645
 82646
 82647
 82648
 82649
 82650
 82651
 82652
 82653
 82654
 82655
 82656
 82657
 82658
 82659
 82660
 82661
 82662
 82663
 82664
 82665
 82666
 82667
 82668
 82669
 82670
 82671
 82672
 82673
 82674
 82675
 82676
 82677
 82678
 82679
 82680
 82681
 82682
 82683
 82684
 82685
 82686
 82687
 82688
 82689
 82690
 82691
 82692
 82693
 82694
 82695
 82696
 82697
 82698
 82699
 82700
 82701
 82702
 82703
 82704
 82705
 82706
 82707
 82708
 82709
 82710
 82711
 82712
 82713
 82714
 82715
 82716
 82717
 82718
 82719
 82720
 82721
 82722
 82723
 82724
 82725
 82726
 82727
 82728
 82729
 82730
 82731
 82732
 82733
 82734
 82735
 82736
 82737
 82738
 82739
 82740
 82741
 82742
 82743
 82744
 82745
 82746
 82747
 82748
 82749
 82750
 82751
 82752
 82753
 82754
 82755
 82756
 82757
 82758
 82759
 82760
 82761
 82762
 82763
 82764
 82765
 82766
 82767
 82768
 82769
 82770
 82771
 82772
 82773
 82774
 82775
 82776
 82777
 82778
 82779
 82780
 82781
 82782
 82783
 82784
 82785
 82786
 82787
 82788
 82789
 82790
 82791
 82792
 82793
 82794
 82795
 82796
 82797
 82798
 82799
 82800
 82801
 82802
 82803
 82804
 82805
 82806
 82807
 82808
 82809
 82810
 82811
 82812
 82813
 82814
 82815
 82816
 82817
 82818
 82819
 82820
 82821
 82822
 82823
 82824
 82825
 82826
 82827
 82828
 82829
 82830
 82831
 82832
 82833
 82834
 82835
 82836
 82837
 82838
 82839
 82840
 82841
 82842
 82843
 82844
 82845
 82846
 82847
 82848
 82849
 82850
 82851
 82852
 82853
 82854
 82855
 82856
 82857
 82858
 82859
 82860
 82861
 82862
 82863
 82864
 82865
 82866
 82867
 82868
 82869
 82870
 82871
 82872
 82873
 82874
 82875
 82876
 82877
 82878
 82879
 82880
 82881
 82882
 82883
 82884
 82885
 82886
 82887
 82888
 82889
 82890
 82891
 82892
 82893
 82894
 82895
 82896
 82897
 82898
 82899
 82900
 82901
 82902
 82903
 82904
 82905
 82906
 82907
 82908
 82909
 82910
 82911
 82912
 82913
 82914
 82915
 82916
 82917
 82918
 82919
 82920
 82921
 82922
 82923
 82924
 82925
 82926
 82927
 82928
 82929
 82930
 82931
 82932
 82933
 82934
 82935
 82936
 82937
 82938
 82939
 82940
 82941
 82942
 82943
 82944
 82945
 82946
 82947
 82948
 82949
 82950
 82951
 82952
 82953
 82954
 82955
 82956
 82957
 82958
 82959
 82960
 82961
 82962
 82963
 82964
 82965
 82966
 82967
 82968
 82969
 82970
 82971
 82972
 82973
 82974
 82975
 82976
 82977
 82978
 82979
 82980
 82981
 82982
 82983
 82984
 82985
 82986
 82987
 82988
 82989
 82990
 82991
 82992
 82993
 82994
 82995
 82996
 82997
 82998
 82999
 83000
 83001
 83002
 83003
 83004
 83005
 83006
 83007
 83008
 83009
 83010
 83011
 83012
 83013
 83014
 83015
 83016
 83017
 83018
 83019
 83020
 83021
 83022
 83023
 83024
 83025
 83026
 83027
 83028
 83029
 83030
 83031
 83032
 83033
 83034
 83035
 83036
 83037
 83038
 83039
 83040
 83041
 83042
 83043
 83044
 83045
 83046
 83047
 83048
 83049
 83050
 83051
 83052
 83053
 83054
 83055
 83056
 83057
 83058
 83059
 83060
 83061
 83062
 83063
 83064
 83065
 83066
 83067
 83068
 83069
 83070
 83071
 83072
 83073
 83074
 83075
 83076
 83077
 83078
 83079
 83080
 83081
 83082
 83083
 83084
 83085
 83086
 83087
 83088
 83089
 83090
 83091
 83092
 83093
 83094
 83095
 83096
 83097
 83098
 83099
 83100
 83101
 83102
 83103
 83104
 83105
 83106
 83107
 83108
 83109
 83110
 83111
 83112
 83113
 83114
 83115
 83116
 83117
 83118
 83119
 83120
 83121
 83122
 83123
 83124
 83125
 83126
 83127
 83128
 83129
 83130
 83131
 83132
 83133
 83134
 83135
 83136
 83137
 83138
 83139
 83140
 83141
 83142
 83143
 83144
 83145
 83146
 83147
 83148
 83149
 83150
 83151
 83152
 83153
 83154
 83155
 83156
 83157
 83158
 83159
 83160
 83161
 83162
 83163
 83164
 83165
 83166
 83167
 83168
 83169
 83170
 83171
 83172
 83173
 83174
 83175
 83176
 83177
 83178
 83179
 83180
 83181
 83182
 83183
 83184
 83185
 83186
 83187
 83188
 83189
 83190
 83191
 83192
 83193
 83194
 83195
 83196
 83197
 83198
 83199
 83200
 83201
 83202
 83203
 83204
 83205
 83206
 83207
 83208
 83209
 83210
 83211
 83212
 83213
 83214
 83215
 83216
 83217
 83218
 83219
 83220
 83221
 83222
 83223
 83224
 83225
 83226
 83227
 83228
 83229
 83230
 83231
 83232
 83233
 83234
 83235
 83236
 83237
 83238
 83239
 83240
 83241
 83242
 83243
 83244
 83245
 83246
 83247
 83248
 83249
 83250
 83251
 83252
 83253
 83254
 83255
 83256
 83257
 83258
 83259
 83260
 83261
 83262
 83263
 83264
 83265
 83266
 83267
 83268
 83269
 83270
 83271
 83272
 83273
 83274
 83275
 83276
 83277
 83278
 83279
 83280
 83281
 83282
 83283
 83284
 83285
 83286
 83287
 83288
 83289
 83290
 83291
 83292
 83293
 83294
 83295
 83296
 83297
 83298
 83299
 83300
 83301
 83302
 83303
 83304
 83305
 83306
 83307
 83308
 83309
 83310
 83311
 83312
 83313
 83314
 83315
 83316
 83317
 83318
 83319
 83320
 83321
 83322
 83323
 83324
 83325
 83326
 83327
 83328
 83329
 83330
 83331
 83332
 83333
 83334
 83335
 83336
 83337
 83338
 83339
 83340
 83341
 83342
 83343
 83344
 83345
 83346
 83347
 83348
 83349
 83350
 83351
 83352
 83353
 83354
 83355
 83356
 83357
 83358
 83359
 83360
 83361
 83362
 83363
 83364
 83365
 83366
 83367
 83368
 83369
 83370
 83371
 83372
 83373
 83374
 83375
 83376
 83377
 83378
 83379
 83380
 83381
 83382
 83383
 83384
 83385
 83386
 83387
 83388
 83389
 83390
 83391
 83392
 83393
 83394
 83395
 83396
 83397
 83398
 83399
 83400
 83401
 83402
 83403
 83404
 83405
 83406
 83407
 83408
 83409
 83410
 83411
 83412
 83413
 83414
 83415
 83416
 83417
 83418
 83419
 83420
 83421
 83422
 83423
 83424
 83425
 83426
 83427
 83428
 83429
 83430
 83431
 83432
 83433
 83434
 83435
 83436
 83437
 83438
 83439
 83440
 83441
 83442
 83443
 83444
 83445
 83446
 83447
 83448
 83449
 83450
 83451
 83452
 83453
 83454
 83455
 83456
 83457
 83458
 83459
 83460
 83461
 83462
 83463
 83464
 83465
 83466
 83467
 83468
 83469
 83470
 83471
 83472
 83473
 83474
 83475
 83476
 83477
 83478
 83479
 83480
 83481
 83482
 83483
 83484
 83485
 83486
 83487
 83488
 83489
 83490
 83491
 83492
 83493
 83494
 83495
 83496
 83497
 83498
 83499
 83500
 83501
 83502
 83503
 83504
 83505
 83506
 83507
 83508
 83509
 83510
 83511
 83512
 83513
 83514
 83515
 83516
 83517
 83518
 83519
 83520
 83521
 83522
 83523
 83524
 83525
 83526
 83527
 83528
 83529
 83530
 83531
 83532
 83533
 83534
 83535
 83536
 83537
 83538
 83539
 83540
 83541
 83542
 83543
 83544
 83545
 83546
 83547
 83548
 83549
 83550
 83551
 83552
 83553
 83554
 83555
 83556
 83557
 83558
 83559
 83560
 83561
 83562
 83563
 83564
 83565
 83566
 83567
 83568
 83569
 83570
 83571
 83572
 83573
 83574
 83575
 83576
 83577
 83578
 83579
 83580
 83581
 83582
 83583
 83584
 83585
 83586
 83587
 83588
 83589
 83590
 83591
 83592
 83593
 83594
 83595
 83596
 83597
 83598
 83599
 83600
 83601
 83602
 83603
 83604
 83605
 83606
 83607
 83608
 83609
 83610
 83611
 83612
 83613
 83614
 83615
 83616
 83617
 83618
 83619
 83620
 83621
 83622
 83623
 83624
 83625
 83626
 83627
 83628
 83629
 83630
 83631
 83632
 83633
 83634
 83635
 83636
 83637
 83638
 83639
 83640
 83641
 83642
 83643
 83644
 83645
 83646
 83647
 83648
 83649
 83650
 83651
 83652
 83653
 83654
 83655
 83656
 83657
 83658
 83659
 83660
 83661
 83662
 83663
 83664
 83665
 83666
 83667
 83668
 83669
 83670
 83671
 83672
 83673
 83674
 83675
 83676
 83677
 83678
 83679
 83680
 83681
 83682
 83683
 83684
 83685
 83686
 83687
 83688
 83689
 83690
 83691
 83692
 83693
 83694
 83695
 83696
 83697
 83698
 83699
 83700
 83701
 83702
 83703
 83704
 83705
 83706
 83707
 83708
 83709
 83710
 83711
 83712
 83713
 83714
 83715
 83716
 83717
 83718
 83719
 83720
 83721
 83722
 83723
 83724
 83725
 83726
 83727
 83728
 83729
 83730
 83731
 83732
 83733
 83734
 83735
 83736
 83737
 83738
 83739
 83740
 83741
 83742
 83743
 83744
 83745
 83746
 83747
 83748
 83749
 83750
 83751
 83752
 83753
 83754
 83755
 83756
 83757
 83758
 83759
 83760
 83761
 83762
 83763
 83764
 83765
 83766
 83767
 83768
 83769
 83770
 83771
 83772
 83773
 83774
 83775
 83776
 83777
 83778
 83779
 83780
 83781
 83782
 83783
 83784
 83785
 83786
 83787
 83788
 83789
 83790
 83791
 83792
 83793
 83794
 83795
 83796
 83797
 83798
 83799
 83800
 83801
 83802
 83803
 83804
 83805
 83806
 83807
 83808
 83809
 83810
 83811
 83812
 83813
 83814
 83815
 83816
 83817
 83818
 83819
 83820
 83821
 83822
 83823
 83824
 83825
 83826
 83827
 83828
 83829
 83830
 83831
 83832
 83833
 83834
 83835
 83836
 83837
 83838
 83839
 83840
 83841
 83842
 83843
 83844
 83845
 83846
 83847
 83848
 83849
 83850
 83851
 83852
 83853
 83854
 83855
 83856
 83857
 83858
 83859
 83860
 83861
 83862
 83863
 83864
 83865
 83866
 83867
 83868
 83869
 83870
 83871
 83872
 83873
 83874
 83875
 83876
 83877
 83878
 83879
 83880
 83881
 83882
 83883
 83884
 83885
 83886
 83887
 83888
 83889
 83890
 83891
 83892
 83893
 83894
 83895
 83896
 83897
 83898
 83899
 83900
 83901
 83902
 83903
 83904
 83905
 83906
 83907
 83908
 83909
 83910
 83911
 83912
 83913
 83914
 83915
 83916
 83917
 83918
 83919
 83920
 83921
 83922
 83923
 83924
 83925
 83926
 83927
 83928
 83929
 83930
 83931
 83932
 83933
 83934
 83935
 83936
 83937
 83938
 83939
 83940
 83941
 83942
 83943
 83944
 83945
 83946
 83947
 83948
 83949
 83950
 83951
 83952
 83953
 83954
 83955
 83956
 83957
 83958
 83959
 83960
 83961
 83962
 83963
 83964
 83965
 83966
 83967
 83968
 83969
 83970
 83971
 83972
 83973
 83974
 83975
 83976
 83977
 83978
 83979
 83980
 83981
 83982
 83983
 83984
 83985
 83986
 83987
 83988
 83989
 83990
 83991
 83992
 83993
 83994
 83995
 83996
 83997
 83998
 83999
 84000
 84001
 84002
 84003
 84004
 84005
 84006
 84007
 84008
 84009
 84010
 84011
 84012
 84013
 84014
 84015
 84016
 84017
 84018
 84019
 84020
 84021
 84022
 84023
 84024
 84025
 84026
 84027
 84028
 84029
 84030
 84031
 84032
 84033
 84034
 84035
 84036
 84037
 84038
 84039
 84040
 84041
 84042
 84043
 84044
 84045
 84046
 84047
 84048
 84049
 84050
 84051
 84052
 84053
 84054
 84055
 84056
 84057
 84058
 84059
 84060
 84061
 84062
 84063
 84064
 84065
 84066
 84067
 84068
 84069
 84070
 84071
 84072
 84073
 84074
 84075
 84076
 84077
 84078
 84079
 84080
 84081
 84082
 84083
 84084
 84085
 84086
 84087
 84088
 84089
 84090
 84091
 84092
 84093
 84094
 84095
 84096
 84097
 84098
 84099
 84100
 84101
 84102
 84103
 84104
 84105
 84106
 84107
 84108
 84109
 84110
 84111
 84112
 84113
 84114
 84115
 84116
 84117
 84118
 84119
 84120
 84121
 84122
 84123
 84124
 84125
 84126
 84127
 84128
 84129
 84130
 84131
 84132
 84133
 84134
 84135
 84136
 84137
 84138
 84139
 84140
 84141
 84142
 84143
 84144
 84145
 84146
 84147
 84148
 84149
 84150
 84151
 84152
 84153
 84154
 84155
 84156
 84157
 84158
 84159
 84160
 84161
 84162
 84163
 84164
 84165
 84166
 84167
 84168
 84169
 84170
 84171
 84172
 84173
 84174
 84175
 84176
 84177
 84178
 84179
 84180
 84181
 84182
 84183
 84184
 84185
 84186
 84187
 84188
 84189
 84190
 84191
 84192
 84193
 84194
 84195
 84196
 84197
 84198
 84199
 84200
 84201
 84202
 84203
 84204
 84205
 84206
 84207
 84208
 84209
 84210
 84211
 84212
 84213
 84214
 84215
 84216
 84217
 84218
 84219
 84220
 84221
 84222
 84223
 84224
 84225
 84226
 84227
 84228
 84229
 84230
 84231
 84232
 84233
 84234
 84235
 84236
 84237
 84238
 84239
 84240
 84241
 84242
 84243
 84244
 84245
 84246
 84247
 84248
 84249
 84250
 84251
 84252
 84253
 84254
 84255
 84256
 84257
 84258
 84259
 84260
 84261
 84262
 84263
 84264
 84265
 84266
 84267
 84268
 84269
 84270
 84271
 84272
 84273
 84274
 84275
 84276
 84277
 84278
 84279
 84280
 84281
 84282
 84283
 84284
 84285
 84286
 84287
 84288
 84289
 84290
 84291
 84292
 84293
 84294
 84295
 84296
 84297
 84298
 84299
 84300
 84301
 84302
 84303
 84304
 84305
 84306
 84307
 84308
 84309
 84310
 84311
 84312
 84313
 84314
 84315
 84316
 84317
 84318
 84319
 84320
 84321
 84322
 84323
 84324
 84325
 84326
 84327
 84328
 84329
 84330
 84331
 84332
 84333
 84334
 84335
 84336
 84337
 84338
 84339
 84340
 84341
 84342
 84343
 84344
 84345
 84346
 84347
 84348
 84349
 84350
 84351
 84352
 84353
 84354
 84355
 84356
 84357
 84358
 84359
 84360
 84361
 84362
 84363
 84364
 84365
 84366
 84367
 84368
 84369
 84370
 84371
 84372
 84373
 84374
 84375
 84376
 84377
 84378
 84379
 84380
 84381
 84382
 84383
 84384
 84385
 84386
 84387
 84388
 84389
 84390
 84391
 84392
 84393
 84394
 84395
 84396
 84397
 84398
 84399
 84400
 84401
 84402
 84403
 84404
 84405
 84406
 84407
 84408
 84409
 84410
 84411
 84412
 84413
 84414
 84415
 84416
 84417
 84418
 84419
 84420
 84421
 84422
 84423
 84424
 84425
 84426
 84427
 84428
 84429
 84430
 84431
 84432
 84433
 84434
 84435
 84436
 84437
 84438
 84439
 84440
 84441
 84442
 84443
 84444
 84445
 84446
 84447
 84448
 84449
 84450
 84451
 84452
 84453
 84454
 84455
 84456
 84457
 84458
 84459
 84460
 84461
 84462
 84463
 84464
 84465
 84466
 84467
 84468
 84469
 84470
 84471
 84472
 84473
 84474
 84475
 84476
 84477
 84478
 84479
 84480
 84481
 84482
 84483
 84484
 84485
 84486
 84487
 84488
 84489
 84490
 84491
 84492
 84493
 84494
 84495
 84496
 84497
 84498
 84499
 84500
 84501
 84502
 84503
 84504
 84505
 84506
 84507
 84508
 84509
 84510
 84511
 84512
 84513
 84514
 84515
 84516
 84517
 84518
 84519
 84520
 84521
 84522
 84523
 84524
 84525
 84526
 84527
 84528
 84529
 84530
 84531
 84532
 84533
 84534
 84535
 84536
 84537
 84538
 84539
 84540
 84541
 84542
 84543
 84544
 84545
 84546
 84547
 84548
 84549
 84550
 84551
 84552
 84553
 84554
 84555
 84556
 84557
 84558
 84559
 84560
 84561
 84562
 84563
 84564
 84565
 84566
 84567
 84568
 84569
 84570
 84571
 84572
 84573
 84574
 84575
 84576
 84577
 84578
 84579
 84580
 84581
 84582
 84583
 84584
 84585
 84586
 84587
 84588
 84589
 84590
 84591
 84592
 84593
 84594
 84595
 84596
 84597
 84598
 84599
 84600
 84601
 84602
 84603
 84604
 84605
 84606
 84607
 84608
 84609
 84610
 84611
 84612
 84613
 84614
 84615
 84616
 84617
 84618
 84619
 84620
 84621
 84622
 84623
 84624
 84625
 84626
 84627
 84628
 84629
 84630
 84631
 84632
 84633
 84634
 84635
 84636
 84637
 84638
 84639
 84640
 84641
 84642
 84643
 84644
 84645
 84646
 84647
 84648
 84649
 84650
 84651
 84652
 84653
 84654
 84655
 84656
 84657
 84658
 84659
 84660
 84661
 84662
 84663
 84664
 84665
 84666
 84667
 84668
 84669
 84670
 84671
 84672
 84673
 84674
 84675
 84676
 84677
 84678
 84679
 84680
 84681
 84682
 84683
 84684
 84685
 84686
 84687
 84688
 84689
 84690
 84691
 84692
 84693
 84694
 84695
 84696
 84697
 84698
 84699
 84700
 84701
 84702
 84703
 84704
 84705
 84706
 84707
 84708
 84709
 84710
 84711
 84712
 84713
 84714
 84715
 84716
 84717
 84718
 84719
 84720
 84721
 84722
 84723
 84724
 84725
 84726
 84727
 84728
 84729
 84730
 84731
 84732
 84733
 84734
 84735
 84736
 84737
 84738
 84739
 84740
 84741
 84742
 84743
 84744
 84745
 84746
 84747
 84748
 84749
 84750
 84751
 84752
 84753
 84754
 84755
 84756
 84757
 84758
 84759
 84760
 84761
 84762
 84763
 84764
 84765
 84766
 84767
 84768
 84769
 84770
 84771
 84772
 84773
 84774
 84775
 84776
 84777
 84778
 84779
 84780
 84781
 84782
 84783
 84784
 84785
 84786
 84787
 84788
 84789
 84790
 84791
 84792
 84793
 84794
 84795
 84796
 84797
 84798
 84799
 84800
 84801
 84802
 84803
 84804
 84805
 84806
 84807
 84808
 84809
 84810
 84811
 84812
 84813
 84814
 84815
 84816
 84817
 84818
 84819
 84820
 84821
 84822
 84823
 84824
 84825
 84826
 84827
 84828
 84829
 84830
 84831
 84832
 84833
 84834
 84835
 84836
 84837
 84838
 84839
 84840
 84841
 84842
 84843
 84844
 84845
 84846
 84847
 84848
 84849
 84850
 84851
 84852
 84853
 84854
 84855
 84856
 84857
 84858
 84859
 84860
 84861
 84862
 84863
 84864
 84865
 84866
 84867
 84868
 84869
 84870
 84871
 84872
 84873
 84874
 84875
 84876
 84877
 84878
 84879
 84880
 84881
 84882
 84883
 84884
 84885
 84886
 84887
 84888
 84889
 84890
 84891
 84892
 84893
 84894
 84895
 84896
 84897
 84898
 84899
 84900
 84901
 84902
 84903
 84904
 84905
 84906
 84907
 84908
 84909
 84910
 84911
 84912
 84913
 84914
 84915
 84916
 84917
 84918
 84919
 84920
 84921
 84922
 84923
 84924
 84925
 84926
 84927
 84928
 84929
 84930
 84931
 84932
 84933
 84934
 84935
 84936
 84937
 84938
 84939
 84940
 84941
 84942
 84943
 84944
 84945
 84946
 84947
 84948
 84949
 84950
 84951
 84952
 84953
 84954
 84955
 84956
 84957
 84958
 84959
 84960
 84961
 84962
 84963
 84964
 84965
 84966
 84967
 84968
 84969
 84970
 84971
 84972
 84973
 84974
 84975
 84976
 84977
 84978
 84979
 84980
 84981
 84982
 84983
 84984
 84985
 84986
 84987
 84988
 84989
 84990
 84991
 84992
 84993
 84994
 84995
 84996
 84997
 84998
 84999
 85000
 85001
 85002
 85003
 85004
 85005
 85006
 85007
 85008
 85009
 85010
 85011
 85012
 85013
 85014
 85015
 85016
 85017
 85018
 85019
 85020
 85021
 85022
 85023
 85024
 85025
 85026
 85027
 85028
 85029
 85030
 85031
 85032
 85033
 85034
 85035
 85036
 85037
 85038
 85039
 85040
 85041
 85042
 85043
 85044
 85045
 85046
 85047
 85048
 85049
 85050
 85051
 85052
 85053
 85054
 85055
 85056
 85057
 85058
 85059
 85060
 85061
 85062
 85063
 85064
 85065
 85066
 85067
 85068
 85069
 85070
 85071
 85072
 85073
 85074
 85075
 85076
 85077
 85078
 85079
 85080
 85081
 85082
 85083
 85084
 85085
 85086
 85087
 85088
 85089
 85090
 85091
 85092
 85093
 85094
 85095
 85096
 85097
 85098
 85099
 85100
 85101
 85102
 85103
 85104
 85105
 85106
 85107
 85108
 85109
 85110
 85111
 85112
 85113
 85114
 85115
 85116
 85117
 85118
 85119
 85120
 85121
 85122
 85123
 85124
 85125
 85126
 85127
 85128
 85129
 85130
 85131
 85132
 85133
 85134
 85135
 85136
 85137
 85138
 85139
 85140
 85141
 85142
 85143
 85144
 85145
 85146
 85147
 85148
 85149
 85150
 85151
 85152
 85153
 85154
 85155
 85156
 85157
 85158
 85159
 85160
 85161
 85162
 85163
 85164
 85165
 85166
 85167
 85168
 85169
 85170
 85171
 85172
 85173
 85174
 85175
 85176
 85177
 85178
 85179
 85180
 85181
 85182
 85183
 85184
 85185
 85186
 85187
 85188
 85189
 85190
 85191
 85192
 85193
 85194
 85195
 85196
 85197
 85198
 85199
 85200
 85201
 85202
 85203
 85204
 85205
 85206
 85207
 85208
 85209
 85210
 85211
 85212
 85213
 85214
 85215
 85216
 85217
 85218
 85219
 85220
 85221
 85222
 85223
 85224
 85225
 85226
 85227
 85228
 85229
 85230
 85231
 85232
 85233
 85234
 85235
 85236
 85237
 85238
 85239
 85240
 85241
 85242
 85243
 85244
 85245
 85246
 85247
 85248
 85249
 85250
 85251
 85252
 85253
 85254
 85255
 85256
 85257
 85258
 85259
 85260
 85261
 85262
 85263
 85264
 85265
 85266
 85267
 85268
 85269
 85270
 85271
 85272
 85273
 85274
 85275
 85276
 85277
 85278
 85279
 85280
 85281
 85282
 85283
 85284
 85285
 85286
 85287
 85288
 85289
 85290
 85291
 85292
 85293
 85294
 85295
 85296
 85297
 85298
 85299
 85300
 85301
 85302
 85303
 85304
 85305
 85306
 85307
 85308
 85309
 85310
 85311
 85312
 85313
 85314
 85315
 85316
 85317
 85318
 85319
 85320
 85321
 85322
 85323
 85324
 85325
 85326
 85327
 85328
 85329
 85330
 85331
 85332
 85333
 85334
 85335
 85336
 85337
 85338
 85339
 85340
 85341
 85342
 85343
 85344
 85345
 85346
 85347
 85348
 85349
 85350
 85351
 85352
 85353
 85354
 85355
 85356
 85357
 85358
 85359
 85360
 85361
 85362
 85363
 85364
 85365
 85366
 85367
 85368
 85369
 85370
 85371
 85372
 85373
 85374
 85375
 85376
 85377
 85378
 85379
 85380
 85381
 85382
 85383
 85384
 85385
 85386
 85387
 85388
 85389
 85390
 85391
 85392
 85393
 85394
 85395
 85396
 85397
 85398
 85399
 85400
 85401
 85402
 85403
 85404
 85405
 85406
 85407
 85408
 85409
 85410
 85411
 85412
 85413
 85414
 85415
 85416
 85417
 85418
 85419
 85420
 85421
 85422
 85423
 85424
 85425
 85426
 85427
 85428
 85429
 85430
 85431
 85432
 85433
 85434
 85435
 85436
 85437
 85438
 85439
 85440
 85441
 85442
 85443
 85444
 85445
 85446
 85447
 85448
 85449
 85450
 85451
 85452
 85453
 85454
 85455
 85456
 85457
 85458
 85459
 85460
 85461
 85462
 85463
 85464
 85465
 85466
 85467
 85468
 85469
 85470
 85471
 85472
 85473
 85474
 85475
 85476
 85477
 85478
 85479
 85480
 85481
 85482
 85483
 85484
 85485
 85486
 85487
 85488
 85489
 85490
 85491
 85492
 85493
 85494
 85495
 85496
 85497
 85498
 85499
 85500
 85501
 85502
 85503
 85504
 85505
 85506
 85507
 85508
 85509
 85510
 85511
 85512
 85513
 85514
 85515
 85516
 85517
 85518
 85519
 85520
 85521
 85522
 85523
 85524
 85525
 85526
 85527
 85528
 85529
 85530
 85531
 85532
 85533
 85534
 85535
 85536
 85537
 85538
 85539
 85540
 85541
 85542
 85543
 85544
 85545
 85546
 85547
 85548
 85549
 85550
 85551
 85552
 85553
 85554
 85555
 85556
 85557
 85558
 85559
 85560
 85561
 85562
 85563
 85564
 85565
 85566
 85567
 85568
 85569
 85570
 85571
 85572
 85573
 85574
 85575
 85576
 85577
 85578
 85579
 85580
 85581
 85582
 85583
 85584
 85585
 85586
 85587
 85588
 85589
 85590
 85591
 85592
 85593
 85594
 85595
 85596
 85597
 85598
 85599
 85600
 85601
 85602
 85603
 85604
 85605
 85606
 85607
 85608
 85609
 85610
 85611
 85612
 85613
 85614
 85615
 85616
 85617
 85618
 85619
 85620
 85621
 85622
 85623
 85624
 85625
 85626
 85627
 85628
 85629
 85630
 85631
 85632
 85633
 85634
 85635
 85636
 85637
 85638
 85639
 85640
 85641
 85642
 85643
 85644
 85645
 85646
 85647
 85648
 85649
 85650
 85651
 85652
 85653
 85654
 85655
 85656
 85657
 85658
 85659
 85660
 85661
 85662
 85663
 85664
 85665
 85666
 85667
 85668
 85669
 85670
 85671
 85672
 85673
 85674
 85675
 85676
 85677
 85678
 85679
 85680
 85681
 85682
 85683
 85684
 85685
 85686
 85687
 85688
 85689
 85690
 85691
 85692
 85693
 85694
 85695
 85696
 85697
 85698
 85699
 85700
 85701
 85702
 85703
 85704
 85705
 85706
 85707
 85708
 85709
 85710
 85711
 85712
 85713
 85714
 85715
 85716
 85717
 85718
 85719
 85720
 85721
 85722
 85723
 85724
 85725
 85726
 85727
 85728
 85729
 85730
 85731
 85732
 85733
 85734
 85735
 85736
 85737
 85738
 85739
 85740
 85741
 85742
 85743
 85744
 85745
 85746
 85747
 85748
 85749
 85750
 85751
 85752
 85753
 85754
 85755
 85756
 85757
 85758
 85759
 85760
 85761
 85762
 85763
 85764
 85765
 85766
 85767
 85768
 85769
 85770
 85771
 85772
 85773
 85774
 85775
 85776
 85777
 85778
 85779
 85780
 85781
 85782
 85783
 85784
 85785
 85786
 85787
 85788
 85789
 85790
 85791
 85792
 85793
 85794
 85795
 85796
 85797
 85798
 85799
 85800
 85801
 85802
 85803
 85804
 85805
 85806
 85807
 85808
 85809
 85810
 85811
 85812
 85813
 85814
 85815
 85816
 85817
 85818
 85819
 85820
 85821
 85822
 85823
 85824
 85825
 85826
 85827
 85828
 85829
 85830
 85831
 85832
 85833
 85834
 85835
 85836
 85837
 85838
 85839
 85840
 85841
 85842
 85843
 85844
 85845
 85846
 85847
 85848
 85849
 85850
 85851
 85852
 85853
 85854
 85855
 85856
 85857
 85858
 85859
 85860
 85861
 85862
 85863
 85864
 85865
 85866
 85867
 85868
 85869
 85870
 85871
 85872
 85873
 85874
 85875
 85876
 85877
 85878
 85879
 85880
 85881
 85882
 85883
 85884
 85885
 85886
 85887
 85888
 85889
 85890
 85891
 85892
 85893
 85894
 85895
 85896
 85897
 85898
 85899
 85900
 85901
 85902
 85903
 85904
 85905
 85906
 85907
 85908
 85909
 85910
 85911
 85912
 85913
 85914
 85915
 85916
 85917
 85918
 85919
 85920
 85921
 85922
 85923
 85924
 85925
 85926
 85927
 85928
 85929
 85930
 85931
 85932
 85933
 85934
 85935
 85936
 85937
 85938
 85939
 85940
 85941
 85942
 85943
 85944
 85945
 85946
 85947
 85948
 85949
 85950
 85951
 85952
 85953
 85954
 85955
 85956
 85957
 85958
 85959
 85960
 85961
 85962
 85963
 85964
 85965
 85966
 85967
 85968
 85969
 85970
 85971
 85972
 85973
 85974
 85975
 85976
 85977
 85978
 85979
 85980
 85981
 85982
 85983
 85984
 85985
 85986
 85987
 85988
 85989
 85990
 85991
 85992
 85993
 85994
 85995
 85996
 85997
 85998
 85999
 86000
 86001
 86002
 86003
 86004
 86005
 86006
 86007
 86008
 86009
 86010
 86011
 86012
 86013
 86014
 86015
 86016
 86017
 86018
 86019
 86020
 86021
 86022
 86023
 86024
 86025
 86026
 86027
 86028
 86029
 86030
 86031
 86032
 86033
 86034
 86035
 86036
 86037
 86038
 86039
 86040
 86041
 86042
 86043
 86044
 86045
 86046
 86047
 86048
 86049
 86050
 86051
 86052
 86053
 86054
 86055
 86056
 86057
 86058
 86059
 86060
 86061
 86062
 86063
 86064
 86065
 86066
 86067
 86068
 86069
 86070
 86071
 86072
 86073
 86074
 86075
 86076
 86077
 86078
 86079
 86080
 86081
 86082
 86083
 86084
 86085
 86086
 86087
 86088
 86089
 86090
 86091
 86092
 86093
 86094
 86095
 86096
 86097
 86098
 86099
 86100
 86101
 86102
 86103
 86104
 86105
 86106
 86107
 86108
 86109
 86110
 86111
 86112
 86113
 86114
 86115
 86116
 86117
 86118
 86119
 86120
 86121
 86122
 86123
 86124
 86125
 86126
 86127
 86128
 86129
 86130
 86131
 86132
 86133
 86134
 86135
 86136
 86137
 86138
 86139
 86140
 86141
 86142
 86143
 86144
 86145
 86146
 86147
 86148
 86149
 86150
 86151
 86152
 86153
 86154
 86155
 86156
 86157
 86158
 86159
 86160
 86161
 86162
 86163
 86164
 86165
 86166
 86167
 86168
 86169
 86170
 86171
 86172
 86173
 86174
 86175
 86176
 86177
 86178
 86179
 86180
 86181
 86182
 86183
 86184
 86185
 86186
 86187
 86188
 86189
 86190
 86191
 86192
 86193
 86194
 86195
 86196
 86197
 86198
 86199
 86200
 86201
 86202
 86203
 86204
 86205
 86206
 86207
 86208
 86209
 86210
 86211
 86212
 86213
 86214
 86215
 86216
 86217
 86218
 86219
 86220
 86221
 86222
 86223
 86224
 86225
 86226
 86227
 86228
 86229
 86230
 86231
 86232
 86233
 86234
 86235
 86236
 86237
 86238
 86239
 86240
 86241
 86242
 86243
 86244
 86245
 86246
 86247
 86248
 86249
 86250
 86251
 86252
 86253
 86254
 86255
 86256
 86257
 86258
 86259
 86260
 86261
 86262
 86263
 86264
 86265
 86266
 86267
 86268
 86269
 86270
 86271
 86272
 86273
 86274
 86275
 86276
 86277
 86278
 86279
 86280
 86281
 86282
 86283
 86284
 86285
 86286
 86287
 86288
 86289
 86290
 86291
 86292
 86293
 86294
 86295
 86296
 86297
 86298
 86299
 86300
 86301
 86302
 86303
 86304
 86305
 86306
 86307
 86308
 86309
 86310
 86311
 86312
 86313
 86314
 86315
 86316
 86317
 86318
 86319
 86320
 86321
 86322
 86323
 86324
 86325
 86326
 86327
 86328
 86329
 86330
 86331
 86332
 86333
 86334
 86335
 86336
 86337
 86338
 86339
 86340
 86341
 86342
 86343
 86344
 86345
 86346
 86347
 86348
 86349
 86350
 86351
 86352
 86353
 86354
 86355
 86356
 86357
 86358
 86359
 86360
 86361
 86362
 86363
 86364
 86365
 86366
 86367
 86368
 86369
 86370
 86371
 86372
 86373
 86374
 86375
 86376
 86377
 86378
 86379
 86380
 86381
 86382
 86383
 86384
 86385
 86386
 86387
 86388
 86389
 86390
 86391
 86392
 86393
 86394
 86395
 86396
 86397
 86398
 86399
 86400
 86401
 86402
 86403
 86404
 86405
 86406
 86407
 86408
 86409
 86410
 86411
 86412
 86413
 86414
 86415
 86416
 86417
 86418
 86419
 86420
 86421
 86422
 86423
 86424
 86425
 86426
 86427
 86428
 86429
 86430
 86431
 86432
 86433
 86434
 86435
 86436
 86437
 86438
 86439
 86440
 86441
 86442
 86443
 86444
 86445
 86446
 86447
 86448
 86449
 86450
 86451
 86452
 86453
 86454
 86455
 86456
 86457
 86458
 86459
 86460
 86461
 86462
 86463
 86464
 86465
 86466
 86467
 86468
 86469
 86470
 86471
 86472
 86473
 86474
 86475
 86476
 86477
 86478
 86479
 86480
 86481
 86482
 86483
 86484
 86485
 86486
 86487
 86488
 86489
 86490
 86491
 86492
 86493
 86494
 86495
 86496
 86497
 86498
 86499
 86500
 86501
 86502
 86503
 86504
 86505
 86506
 86507
 86508
 86509
 86510
 86511
 86512
 86513
 86514
 86515
 86516
 86517
 86518
 86519
 86520
 86521
 86522
 86523
 86524
 86525
 86526
 86527
 86528
 86529
 86530
 86531
 86532
 86533
 86534
 86535
 86536
 86537
 86538
 86539
 86540
 86541
 86542
 86543
 86544
 86545
 86546
 86547
 86548
 86549
 86550
 86551
 86552
 86553
 86554
 86555
 86556
 86557
 86558
 86559
 86560
 86561
 86562
 86563
 86564
 86565
 86566
 86567
 86568
 86569
 86570
 86571
 86572
 86573
 86574
 86575
 86576
 86577
 86578
 86579
 86580
 86581
 86582
 86583
 86584
 86585
 86586
 86587
 86588
 86589
 86590
 86591
 86592
 86593
 86594
 86595
 86596
 86597
 86598
 86599
 86600
 86601
 86602
 86603
 86604
 86605
 86606
 86607
 86608
 86609
 86610
 86611
 86612
 86613
 86614
 86615
 86616
 86617
 86618
 86619
 86620
 86621
 86622
 86623
 86624
 86625
 86626
 86627
 86628
 86629
 86630
 86631
 86632
 86633
 86634
 86635
 86636
 86637
 86638
 86639
 86640
 86641
 86642
 86643
 86644
 86645
 86646
 86647
 86648
 86649
 86650
 86651
 86652
 86653
 86654
 86655
 86656
 86657
 86658
 86659
 86660
 86661
 86662
 86663
 86664
 86665
 86666
 86667
 86668
 86669
 86670
 86671
 86672
 86673
 86674
 86675
 86676
 86677
 86678
 86679
 86680
 86681
 86682
 86683
 86684
 86685
 86686
 86687
 86688
 86689
 86690
 86691
 86692
 86693
 86694
 86695
 86696
 86697
 86698
 86699
 86700
 86701
 86702
 86703
 86704
 86705
 86706
 86707
 86708
 86709
 86710
 86711
 86712
 86713
 86714
 86715
 86716
 86717
 86718
 86719
 86720
 86721
 86722
 86723
 86724
 86725
 86726
 86727
 86728
 86729
 86730
 86731
 86732
 86733
 86734
 86735
 86736
 86737
 86738
 86739
 86740
 86741
 86742
 86743
 86744
 86745
 86746
 86747
 86748
 86749
 86750
 86751
 86752
 86753
 86754
 86755
 86756
 86757
 86758
 86759
 86760
 86761
 86762
 86763
 86764
 86765
 86766
 86767
 86768
 86769
 86770
 86771
 86772
 86773
 86774
 86775
 86776
 86777
 86778
 86779
 86780
 86781
 86782
 86783
 86784
 86785
 86786
 86787
 86788
 86789
 86790
 86791
 86792
 86793
 86794
 86795
 86796
 86797
 86798
 86799
 86800
 86801
 86802
 86803
 86804
 86805
 86806
 86807
 86808
 86809
 86810
 86811
 86812
 86813
 86814
 86815
 86816
 86817
 86818
 86819
 86820
 86821
 86822
 86823
 86824
 86825
 86826
 86827
 86828
 86829
 86830
 86831
 86832
 86833
 86834
 86835
 86836
 86837
 86838
 86839
 86840
 86841
 86842
 86843
 86844
 86845
 86846
 86847
 86848
 86849
 86850
 86851
 86852
 86853
 86854
 86855
 86856
 86857
 86858
 86859
 86860
 86861
 86862
 86863
 86864
 86865
 86866
 86867
 86868
 86869
 86870
 86871
 86872
 86873
 86874
 86875
 86876
 86877
 86878
 86879
 86880
 86881
 86882
 86883
 86884
 86885
 86886
 86887
 86888
 86889
 86890
 86891
 86892
 86893
 86894
 86895
 86896
 86897
 86898
 86899
 86900
 86901
 86902
 86903
 86904
 86905
 86906
 86907
 86908
 86909
 86910
 86911
 86912
 86913
 86914
 86915
 86916
 86917
 86918
 86919
 86920
 86921
 86922
 86923
 86924
 86925
 86926
 86927
 86928
 86929
 86930
 86931
 86932
 86933
 86934
 86935
 86936
 86937
 86938
 86939
 86940
 86941
 86942
 86943
 86944
 86945
 86946
 86947
 86948
 86949
 86950
 86951
 86952
 86953
 86954
 86955
 86956
 86957
 86958
 86959
 86960
 86961
 86962
 86963
 86964
 86965
 86966
 86967
 86968
 86969
 86970
 86971
 86972
 86973
 86974
 86975
 86976
 86977
 86978
 86979
 86980
 86981
 86982
 86983
 86984
 86985
 86986
 86987
 86988
 86989
 86990
 86991
 86992
 86993
 86994
 86995
 86996
 86997
 86998
 86999
 87000
 87001
 87002
 87003
 87004
 87005
 87006
 87007
 87008
 87009
 87010
 87011
 87012
 87013
 87014
 87015
 87016
 87017
 87018
 87019
 87020
 87021
 87022
 87023
 87024
 87025
 87026
 87027
 87028
 87029
 87030
 87031
 87032
 87033
 87034
 87035
 87036
 87037
 87038
 87039
 87040
 87041
 87042
 87043
 87044
 87045
 87046
 87047
 87048
 87049
 87050
 87051
 87052
 87053
 87054
 87055
 87056
 87057
 87058
 87059
 87060
 87061
 87062
 87063
 87064
 87065
 87066
 87067
 87068
 87069
 87070
 87071
 87072
 87073
 87074
 87075
 87076
 87077
 87078
 87079
 87080
 87081
 87082
 87083
 87084
 87085
 87086
 87087
 87088
 87089
 87090
 87091
 87092
 87093
 87094
 87095
 87096
 87097
 87098
 87099
 87100
 87101
 87102
 87103
 87104
 87105
 87106
 87107
 87108
 87109
 87110
 87111
 87112
 87113
 87114
 87115
 87116
 87117
 87118
 87119
 87120
 87121
 87122
 87123
 87124
 87125
 87126
 87127
 87128
 87129
 87130
 87131
 87132
 87133
 87134
 87135
 87136
 87137
 87138
 87139
 87140
 87141
 87142
 87143
 87144
 87145
 87146
 87147
 87148
 87149
 87150
 87151
 87152
 87153
 87154
 87155
 87156
 87157
 87158
 87159
 87160
 87161
 87162
 87163
 87164
 87165
 87166
 87167
 87168
 87169
 87170
 87171
 87172
 87173
 87174
 87175
 87176
 87177
 87178
 87179
 87180
 87181
 87182
 87183
 87184
 87185
 87186
 87187
 87188
 87189
 87190
 87191
 87192
 87193
 87194
 87195
 87196
 87197
 87198
 87199
 87200
 87201
 87202
 87203
 87204
 87205
 87206
 87207
 87208
 87209
 87210
 87211
 87212
 87213
 87214
 87215
 87216
 87217
 87218
 87219
 87220
 87221
 87222
 87223
 87224
 87225
 87226
 87227
 87228
 87229
 87230
 87231
 87232
 87233
 87234
 87235
 87236
 87237
 87238
 87239
 87240
 87241
 87242
 87243
 87244
 87245
 87246
 87247
 87248
 87249
 87250
 87251
 87252
 87253
 87254
 87255
 87256
 87257
 87258
 87259
 87260
 87261
 87262
 87263
 87264
 87265
 87266
 87267
 87268
 87269
 87270
 87271
 87272
 87273
 87274
 87275
 87276
 87277
 87278
 87279
 87280
 87281
 87282
 87283
 87284
 87285
 87286
 87287
 87288
 87289
 87290
 87291
 87292
 87293
 87294
 87295
 87296
 87297
 87298
 87299
 87300
 87301
 87302
 87303
 87304
 87305
 87306
 87307
 87308
 87309
 87310
 87311
 87312
 87313
 87314
 87315
 87316
 87317
 87318
 87319
 87320
 87321
 87322
 87323
 87324
 87325
 87326
 87327
 87328
 87329
 87330
 87331
 87332
 87333
 87334
 87335
 87336
 87337
 87338
 87339
 87340
 87341
 87342
 87343
 87344
 87345
 87346
 87347
 87348
 87349
 87350
 87351
 87352
 87353
 87354
 87355
 87356
 87357
 87358
 87359
 87360
 87361
 87362
 87363
 87364
 87365
 87366
 87367
 87368
 87369
 87370
 87371
 87372
 87373
 87374
 87375
 87376
 87377
 87378
 87379
 87380
 87381
 87382
 87383
 87384
 87385
 87386
 87387
 87388
 87389
 87390
 87391
 87392
 87393
 87394
 87395
 87396
 87397
 87398
 87399
 87400
 87401
 87402
 87403
 87404
 87405
 87406
 87407
 87408
 87409
 87410
 87411
 87412
 87413
 87414
 87415
 87416
 87417
 87418
 87419
 87420
 87421
 87422
 87423
 87424
 87425
 87426
 87427
 87428
 87429
 87430
 87431
 87432
 87433
 87434
 87435
 87436
 87437
 87438
 87439
 87440
 87441
 87442
 87443
 87444
 87445
 87446
 87447
 87448
 87449
 87450
 87451
 87452
 87453
 87454
 87455
 87456
 87457
 87458
 87459
 87460
 87461
 87462
 87463
 87464
 87465
 87466
 87467
 87468
 87469
 87470
 87471
 87472
 87473
 87474
 87475
 87476
 87477
 87478
 87479
 87480
 87481
 87482
 87483
 87484
 87485
 87486
 87487
 87488
 87489
 87490
 87491
 87492
 87493
 87494
 87495
 87496
 87497
 87498
 87499
 87500
 87501
 87502
 87503
 87504
 87505
 87506
 87507
 87508
 87509
 87510
 87511
 87512
 87513
 87514
 87515
 87516
 87517
 87518
 87519
 87520
 87521
 87522
 87523
 87524
 87525
 87526
 87527
 87528
 87529
 87530
 87531
 87532
 87533
 87534
 87535
 87536
 87537
 87538
 87539
 87540
 87541
 87542
 87543
 87544
 87545
 87546
 87547
 87548
 87549
 87550
 87551
 87552
 87553
 87554
 87555
 87556
 87557
 87558
 87559
 87560
 87561
 87562
 87563
 87564
 87565
 87566
 87567
 87568
 87569
 87570
 87571
 87572
 87573
 87574
 87575
 87576
 87577
 87578
 87579
 87580
 87581
 87582
 87583
 87584
 87585
 87586
 87587
 87588
 87589
 87590
 87591
 87592
 87593
 87594
 87595
 87596
 87597
 87598
 87599
 87600
 87601
 87602
 87603
 87604
 87605
 87606
 87607
 87608
 87609
 87610
 87611
 87612
 87613
 87614
 87615
 87616
 87617
 87618
 87619
 87620
 87621
 87622
 87623
 87624
 87625
 87626
 87627
 87628
 87629
 87630
 87631
 87632
 87633
 87634
 87635
 87636
 87637
 87638
 87639
 87640
 87641
 87642
 87643
 87644
 87645
 87646
 87647
 87648
 87649
 87650
 87651
 87652
 87653
 87654
 87655
 87656
 87657
 87658
 87659
 87660
 87661
 87662
 87663
 87664
 87665
 87666
 87667
 87668
 87669
 87670
 87671
 87672
 87673
 87674
 87675
 87676
 87677
 87678
 87679
 87680
 87681
 87682
 87683
 87684
 87685
 87686
 87687
 87688
 87689
 87690
 87691
 87692
 87693
 87694
 87695
 87696
 87697
 87698
 87699
 87700
 87701
 87702
 87703
 87704
 87705
 87706
 87707
 87708
 87709
 87710
 87711
 87712
 87713
 87714
 87715
 87716
 87717
 87718
 87719
 87720
 87721
 87722
 87723
 87724
 87725
 87726
 87727
 87728
 87729
 87730
 87731
 87732
 87733
 87734
 87735
 87736
 87737
 87738
 87739
 87740
 87741
 87742
 87743
 87744
 87745
 87746
 87747
 87748
 87749
 87750
 87751
 87752
 87753
 87754
 87755
 87756
 87757
 87758
 87759
 87760
 87761
 87762
 87763
 87764
 87765
 87766
 87767
 87768
 87769
 87770
 87771
 87772
 87773
 87774
 87775
 87776
 87777
 87778
 87779
 87780
 87781
 87782
 87783
 87784
 87785
 87786
 87787
 87788
 87789
 87790
 87791
 87792
 87793
 87794
 87795
 87796
 87797
 87798
 87799
 87800
 87801
 87802
 87803
 87804
 87805
 87806
 87807
 87808
 87809
 87810
 87811
 87812
 87813
 87814
 87815
 87816
 87817
 87818
 87819
 87820
 87821
 87822
 87823
 87824
 87825
 87826
 87827
 87828
 87829
 87830
 87831
 87832
 87833
 87834
 87835
 87836
 87837
 87838
 87839
 87840
 87841
 87842
 87843
 87844
 87845
 87846
 87847
 87848
 87849
 87850
 87851
 87852
 87853
 87854
 87855
 87856
 87857
 87858
 87859
 87860
 87861
 87862
 87863
 87864
 87865
 87866
 87867
 87868
 87869
 87870
 87871
 87872
 87873
 87874
 87875
 87876
 87877
 87878
 87879
 87880
 87881
 87882
 87883
 87884
 87885
 87886
 87887
 87888
 87889
 87890
 87891
 87892
 87893
 87894
 87895
 87896
 87897
 87898
 87899
 87900
 87901
 87902
 87903
 87904
 87905
 87906
 87907
 87908
 87909
 87910
 87911
 87912
 87913
 87914
 87915
 87916
 87917
 87918
 87919
 87920
 87921
 87922
 87923
 87924
 87925
 87926
 87927
 87928
 87929
 87930
 87931
 87932
 87933
 87934
 87935
 87936
 87937
 87938
 87939
 87940
 87941
 87942
 87943
 87944
 87945
 87946
 87947
 87948
 87949
 87950
 87951
 87952
 87953
 87954
 87955
 87956
 87957
 87958
 87959
 87960
 87961
 87962
 87963
 87964
 87965
 87966
 87967
 87968
 87969
 87970
 87971
 87972
 87973
 87974
 87975
 87976
 87977
 87978
 87979
 87980
 87981
 87982
 87983
 87984
 87985
 87986
 87987
 87988
 87989
 87990
 87991
 87992
 87993
 87994
 87995
 87996
 87997
 87998
 87999
 88000
 88001
 88002
 88003
 88004
 88005
 88006
 88007
 88008
 88009
 88010
 88011
 88012
 88013
 88014
 88015
 88016
 88017
 88018
 88019
 88020
 88021
 88022
 88023
 88024
 88025
 88026
 88027
 88028
 88029
 88030
 88031
 88032
 88033
 88034
 88035
 88036
 88037
 88038
 88039
 88040
 88041
 88042
 88043
 88044
 88045
 88046
 88047
 88048
 88049
 88050
 88051
 88052
 88053
 88054
 88055
 88056
 88057
 88058
 88059
 88060
 88061
 88062
 88063
 88064
 88065
 88066
 88067
 88068
 88069
 88070
 88071
 88072
 88073
 88074
 88075
 88076
 88077
 88078
 88079
 88080
 88081
 88082
 88083
 88084
 88085
 88086
 88087
 88088
 88089
 88090
 88091
 88092
 88093
 88094
 88095
 88096
 88097
 88098
 88099
 88100
 88101
 88102
 88103
 88104
 88105
 88106
 88107
 88108
 88109
 88110
 88111
 88112
 88113
 88114
 88115
 88116
 88117
 88118
 88119
 88120
 88121
 88122
 88123
 88124
 88125
 88126
 88127
 88128
 88129
 88130
 88131
 88132
 88133
 88134
 88135
 88136
 88137
 88138
 88139
 88140
 88141
 88142
 88143
 88144
 88145
 88146
 88147
 88148
 88149
 88150
 88151
 88152
 88153
 88154
 88155
 88156
 88157
 88158
 88159
 88160
 88161
 88162
 88163
 88164
 88165
 88166
 88167
 88168
 88169
 88170
 88171
 88172
 88173
 88174
 88175
 88176
 88177
 88178
 88179
 88180
 88181
 88182
 88183
 88184
 88185
 88186
 88187
 88188
 88189
 88190
 88191
 88192
 88193
 88194
 88195
 88196
 88197
 88198
 88199
 88200
 88201
 88202
 88203
 88204
 88205
 88206
 88207
 88208
 88209
 88210
 88211
 88212
 88213
 88214
 88215
 88216
 88217
 88218
 88219
 88220
 88221
 88222
 88223
 88224
 88225
 88226
 88227
 88228
 88229
 88230
 88231
 88232
 88233
 88234
 88235
 88236
 88237
 88238
 88239
 88240
 88241
 88242
 88243
 88244
 88245
 88246
 88247
 88248
 88249
 88250
 88251
 88252
 88253
 88254
 88255
 88256
 88257
 88258
 88259
 88260
 88261
 88262
 88263
 88264
 88265
 88266
 88267
 88268
 88269
 88270
 88271
 88272
 88273
 88274
 88275
 88276
 88277
 88278
 88279
 88280
 88281
 88282
 88283
 88284
 88285
 88286
 88287
 88288
 88289
 88290
 88291
 88292
 88293
 88294
 88295
 88296
 88297
 88298
 88299
 88300
 88301
 88302
 88303
 88304
 88305
 88306
 88307
 88308
 88309
 88310
 88311
 88312
 88313
 88314
 88315
 88316
 88317
 88318
 88319
 88320
 88321
 88322
 88323
 88324
 88325
 88326
 88327
 88328
 88329
 88330
 88331
 88332
 88333
 88334
 88335
 88336
 88337
 88338
 88339
 88340
 88341
 88342
 88343
 88344
 88345
 88346
 88347
 88348
 88349
 88350
 88351
 88352
 88353
 88354
 88355
 88356
 88357
 88358
 88359
 88360
 88361
 88362
 88363
 88364
 88365
 88366
 88367
 88368
 88369
 88370
 88371
 88372
 88373
 88374
 88375
 88376
 88377
 88378
 88379
 88380
 88381
 88382
 88383
 88384
 88385
 88386
 88387
 88388
 88389
 88390
 88391
 88392
 88393
 88394
 88395
 88396
 88397
 88398
 88399
 88400
 88401
 88402
 88403
 88404
 88405
 88406
 88407
 88408
 88409
 88410
 88411
 88412
 88413
 88414
 88415
 88416
 88417
 88418
 88419
 88420
 88421
 88422
 88423
 88424
 88425
 88426
 88427
 88428
 88429
 88430
 88431
 88432
 88433
 88434
 88435
 88436
 88437
 88438
 88439
 88440
 88441
 88442
 88443
 88444
 88445
 88446
 88447
 88448
 88449
 88450
 88451
 88452
 88453
 88454
 88455
 88456
 88457
 88458
 88459
 88460
 88461
 88462
 88463
 88464
 88465
 88466
 88467
 88468
 88469
 88470
 88471
 88472
 88473
 88474
 88475
 88476
 88477
 88478
 88479
 88480
 88481
 88482
 88483
 88484
 88485
 88486
 88487
 88488
 88489
 88490
 88491
 88492
 88493
 88494
 88495
 88496
 88497
 88498
 88499
 88500
 88501
 88502
 88503
 88504
 88505
 88506
 88507
 88508
 88509
 88510
 88511
 88512
 88513
 88514
 88515
 88516
 88517
 88518
 88519
 88520
 88521
 88522
 88523
 88524
 88525
 88526
 88527
 88528
 88529
 88530
 88531
 88532
 88533
 88534
 88535
 88536
 88537
 88538
 88539
 88540
 88541
 88542
 88543
 88544
 88545
 88546
 88547
 88548
 88549
 88550
 88551
 88552
 88553
 88554
 88555
 88556
 88557
 88558
 88559
 88560
 88561
 88562
 88563
 88564
 88565
 88566
 88567
 88568
 88569
 88570
 88571
 88572
 88573
 88574
 88575
 88576
 88577
 88578
 88579
 88580
 88581
 88582
 88583
 88584
 88585
 88586
 88587
 88588
 88589
 88590
 88591
 88592
 88593
 88594
 88595
 88596
 88597
 88598
 88599
 88600
 88601
 88602
 88603
 88604
 88605
 88606
 88607
 88608
 88609
 88610
 88611
 88612
 88613
 88614
 88615
 88616
 88617
 88618
 88619
 88620
 88621
 88622
 88623
 88624
 88625
 88626
 88627
 88628
 88629
 88630
 88631
 88632
 88633
 88634
 88635
 88636
 88637
 88638
 88639
 88640
 88641
 88642
 88643
 88644
 88645
 88646
 88647
 88648
 88649
 88650
 88651
 88652
 88653
 88654
 88655
 88656
 88657
 88658
 88659
 88660
 88661
 88662
 88663
 88664
 88665
 88666
 88667
 88668
 88669
 88670
 88671
 88672
 88673
 88674
 88675
 88676
 88677
 88678
 88679
 88680
 88681
 88682
 88683
 88684
 88685
 88686
 88687
 88688
 88689
 88690
 88691
 88692
 88693
 88694
 88695
 88696
 88697
 88698
 88699
 88700
 88701
 88702
 88703
 88704
 88705
 88706
 88707
 88708
 88709
 88710
 88711
 88712
 88713
 88714
 88715
 88716
 88717
 88718
 88719
 88720
 88721
 88722
 88723
 88724
 88725
 88726
 88727
 88728
 88729
 88730
 88731
 88732
 88733
 88734
 88735
 88736
 88737
 88738
 88739
 88740
 88741
 88742
 88743
 88744
 88745
 88746
 88747
 88748
 88749
 88750
 88751
 88752
 88753
 88754
 88755
 88756
 88757
 88758
 88759
 88760
 88761
 88762
 88763
 88764
 88765
 88766
 88767
 88768
 88769
 88770
 88771
 88772
 88773
 88774
 88775
 88776
 88777
 88778
 88779
 88780
 88781
 88782
 88783
 88784
 88785
 88786
 88787
 88788
 88789
 88790
 88791
 88792
 88793
 88794
 88795
 88796
 88797
 88798
 88799
 88800
 88801
 88802
 88803
 88804
 88805
 88806
 88807
 88808
 88809
 88810
 88811
 88812
 88813
 88814
 88815
 88816
 88817
 88818
 88819
 88820
 88821
 88822
 88823
 88824
 88825
 88826
 88827
 88828
 88829
 88830
 88831
 88832
 88833
 88834
 88835
 88836
 88837
 88838
 88839
 88840
 88841
 88842
 88843
 88844
 88845
 88846
 88847
 88848
 88849
 88850
 88851
 88852
 88853
 88854
 88855
 88856
 88857
 88858
 88859
 88860
 88861
 88862
 88863
 88864
 88865
 88866
 88867
 88868
 88869
 88870
 88871
 88872
 88873
 88874
 88875
 88876
 88877
 88878
 88879
 88880
 88881
 88882
 88883
 88884
 88885
 88886
 88887
 88888
 88889
 88890
 88891
 88892
 88893
 88894
 88895
 88896
 88897
 88898
 88899
 88900
 88901
 88902
 88903
 88904
 88905
 88906
 88907
 88908
 88909
 88910
 88911
 88912
 88913
 88914
 88915
 88916
 88917
 88918
 88919
 88920
 88921
 88922
 88923
 88924
 88925
 88926
 88927
 88928
 88929
 88930
 88931
 88932
 88933
 88934
 88935
 88936
 88937
 88938
 88939
 88940
 88941
 88942
 88943
 88944
 88945
 88946
 88947
 88948
 88949
 88950
 88951
 88952
 88953
 88954
 88955
 88956
 88957
 88958
 88959
 88960
 88961
 88962
 88963
 88964
 88965
 88966
 88967
 88968
 88969
 88970
 88971
 88972
 88973
 88974
 88975
 88976
 88977
 88978
 88979
 88980
 88981
 88982
 88983
 88984
 88985
 88986
 88987
 88988
 88989
 88990
 88991
 88992
 88993
 88994
 88995
 88996
 88997
 88998
 88999
 89000
 89001
 89002
 89003
 89004
 89005
 89006
 89007
 89008
 89009
 89010
 89011
 89012
 89013
 89014
 89015
 89016
 89017
 89018
 89019
 89020
 89021
 89022
 89023
 89024
 89025
 89026
 89027
 89028
 89029
 89030
 89031
 89032
 89033
 89034
 89035
 89036
 89037
 89038
 89039
 89040
 89041
 89042
 89043
 89044
 89045
 89046
 89047
 89048
 89049
 89050
 89051
 89052
 89053
 89054
 89055
 89056
 89057
 89058
 89059
 89060
 89061
 89062
 89063
 89064
 89065
 89066
 89067
 89068
 89069
 89070
 89071
 89072
 89073
 89074
 89075
 89076
 89077
 89078
 89079
 89080
 89081
 89082
 89083
 89084
 89085
 89086
 89087
 89088
 89089
 89090
 89091
 89092
 89093
 89094
 89095
 89096
 89097
 89098
 89099
 89100
 89101
 89102
 89103
 89104
 89105
 89106
 89107
 89108
 89109
 89110
 89111
 89112
 89113
 89114
 89115
 89116
 89117
 89118
 89119
 89120
 89121
 89122
 89123
 89124
 89125
 89126
 89127
 89128
 89129
 89130
 89131
 89132
 89133
 89134
 89135
 89136
 89137
 89138
 89139
 89140
 89141
 89142
 89143
 89144
 89145
 89146
 89147
 89148
 89149
 89150
 89151
 89152
 89153
 89154
 89155
 89156
 89157
 89158
 89159
 89160
 89161
 89162
 89163
 89164
 89165
 89166
 89167
 89168
 89169
 89170
 89171
 89172
 89173
 89174
 89175
 89176
 89177
 89178
 89179
 89180
 89181
 89182
 89183
 89184
 89185
 89186
 89187
 89188
 89189
 89190
 89191
 89192
 89193
 89194
 89195
 89196
 89197
 89198
 89199
 89200
 89201
 89202
 89203
 89204
 89205
 89206
 89207
 89208
 89209
 89210
 89211
 89212
 89213
 89214
 89215
 89216
 89217
 89218
 89219
 89220
 89221
 89222
 89223
 89224
 89225
 89226
 89227
 89228
 89229
 89230
 89231
 89232
 89233
 89234
 89235
 89236
 89237
 89238
 89239
 89240
 89241
 89242
 89243
 89244
 89245
 89246
 89247
 89248
 89249
 89250
 89251
 89252
 89253
 89254
 89255
 89256
 89257
 89258
 89259
 89260
 89261
 89262
 89263
 89264
 89265
 89266
 89267
 89268
 89269
 89270
 89271
 89272
 89273
 89274
 89275
 89276
 89277
 89278
 89279
 89280
 89281
 89282
 89283
 89284
 89285
 89286
 89287
 89288
 89289
 89290
 89291
 89292
 89293
 89294
 89295
 89296
 89297
 89298
 89299
 89300
 89301
 89302
 89303
 89304
 89305
 89306
 89307
 89308
 89309
 89310
 89311
 89312
 89313
 89314
 89315
 89316
 89317
 89318
 89319
 89320
 89321
 89322
 89323
 89324
 89325
 89326
 89327
 89328
 89329
 89330
 89331
 89332
 89333
 89334
 89335
 89336
 89337
 89338
 89339
 89340
 89341
 89342
 89343
 89344
 89345
 89346
 89347
 89348
 89349
 89350
 89351
 89352
 89353
 89354
 89355
 89356
 89357
 89358
 89359
 89360
 89361
 89362
 89363
 89364
 89365
 89366
 89367
 89368
 89369
 89370
 89371
 89372
 89373
 89374
 89375
 89376
 89377
 89378
 89379
 89380
 89381
 89382
 89383
 89384
 89385
 89386
 89387
 89388
 89389
 89390
 89391
 89392
 89393
 89394
 89395
 89396
 89397
 89398
 89399
 89400
 89401
 89402
 89403
 89404
 89405
 89406
 89407
 89408
 89409
 89410
 89411
 89412
 89413
 89414
 89415
 89416
 89417
 89418
 89419
 89420
 89421
 89422
 89423
 89424
 89425
 89426
 89427
 89428
 89429
 89430
 89431
 89432
 89433
 89434
 89435
 89436
 89437
 89438
 89439
 89440
 89441
 89442
 89443
 89444
 89445
 89446
 89447
 89448
 89449
 89450
 89451
 89452
 89453
 89454
 89455
 89456
 89457
 89458
 89459
 89460
 89461
 89462
 89463
 89464
 89465
 89466
 89467
 89468
 89469
 89470
 89471
 89472
 89473
 89474
 89475
 89476
 89477
 89478
 89479
 89480
 89481
 89482
 89483
 89484
 89485
 89486
 89487
 89488
 89489
 89490
 89491
 89492
 89493
 89494
 89495
 89496
 89497
 89498
 89499
 89500
 89501
 89502
 89503
 89504
 89505
 89506
 89507
 89508
 89509
 89510
 89511
 89512
 89513
 89514
 89515
 89516
 89517
 89518
 89519
 89520
 89521
 89522
 89523
 89524
 89525
 89526
 89527
 89528
 89529
 89530
 89531
 89532
 89533
 89534
 89535
 89536
 89537
 89538
 89539
 89540
 89541
 89542
 89543
 89544
 89545
 89546
 89547
 89548
 89549
 89550
 89551
 89552
 89553
 89554
 89555
 89556
 89557
 89558
 89559
 89560
 89561
 89562
 89563
 89564
 89565
 89566
 89567
 89568
 89569
 89570
 89571
 89572
 89573
 89574
 89575
 89576
 89577
 89578
 89579
 89580
 89581
 89582
 89583
 89584
 89585
 89586
 89587
 89588
 89589
 89590
 89591
 89592
 89593
 89594
 89595
 89596
 89597
 89598
 89599
 89600
 89601
 89602
 89603
 89604
 89605
 89606
 89607
 89608
 89609
 89610
 89611
 89612
 89613
 89614
 89615
 89616
 89617
 89618
 89619
 89620
 89621
 89622
 89623
 89624
 89625
 89626
 89627
 89628
 89629
 89630
 89631
 89632
 89633
 89634
 89635
 89636
 89637
 89638
 89639
 89640
 89641
 89642
 89643
 89644
 89645
 89646
 89647
 89648
 89649
 89650
 89651
 89652
 89653
 89654
 89655
 89656
 89657
 89658
 89659
 89660
 89661
 89662
 89663
 89664
 89665
 89666
 89667
 89668
 89669
 89670
 89671
 89672
 89673
 89674
 89675
 89676
 89677
 89678
 89679
 89680
 89681
 89682
 89683
 89684
 89685
 89686
 89687
 89688
 89689
 89690
 89691
 89692
 89693
 89694
 89695
 89696
 89697
 89698
 89699
 89700
 89701
 89702
 89703
 89704
 89705
 89706
 89707
 89708
 89709
 89710
 89711
 89712
 89713
 89714
 89715
 89716
 89717
 89718
 89719
 89720
 89721
 89722
 89723
 89724
 89725
 89726
 89727
 89728
 89729
 89730
 89731
 89732
 89733
 89734
 89735
 89736
 89737
 89738
 89739
 89740
 89741
 89742
 89743
 89744
 89745
 89746
 89747
 89748
 89749
 89750
 89751
 89752
 89753
 89754
 89755
 89756
 89757
 89758
 89759
 89760
 89761
 89762
 89763
 89764
 89765
 89766
 89767
 89768
 89769
 89770
 89771
 89772
 89773
 89774
 89775
 89776
 89777
 89778
 89779
 89780
 89781
 89782
 89783
 89784
 89785
 89786
 89787
 89788
 89789
 89790
 89791
 89792
 89793
 89794
 89795
 89796
 89797
 89798
 89799
 89800
 89801
 89802
 89803
 89804
 89805
 89806
 89807
 89808
 89809
 89810
 89811
 89812
 89813
 89814
 89815
 89816
 89817
 89818
 89819
 89820
 89821
 89822
 89823
 89824
 89825
 89826
 89827
 89828
 89829
 89830
 89831
 89832
 89833
 89834
 89835
 89836
 89837
 89838
 89839
 89840
 89841
 89842
 89843
 89844
 89845
 89846
 89847
 89848
 89849
 89850
 89851
 89852
 89853
 89854
 89855
 89856
 89857
 89858
 89859
 89860
 89861
 89862
 89863
 89864
 89865
 89866
 89867
 89868
 89869
 89870
 89871
 89872
 89873
 89874
 89875
 89876
 89877
 89878
 89879
 89880
 89881
 89882
 89883
 89884
 89885
 89886
 89887
 89888
 89889
 89890
 89891
 89892
 89893
 89894
 89895
 89896
 89897
 89898
 89899
 89900
 89901
 89902
 89903
 89904
 89905
 89906
 89907
 89908
 89909
 89910
 89911
 89912
 89913
 89914
 89915
 89916
 89917
 89918
 89919
 89920
 89921
 89922
 89923
 89924
 89925
 89926
 89927
 89928
 89929
 89930
 89931
 89932
 89933
 89934
 89935
 89936
 89937
 89938
 89939
 89940
 89941
 89942
 89943
 89944
 89945
 89946
 89947
 89948
 89949
 89950
 89951
 89952
 89953
 89954
 89955
 89956
 89957
 89958
 89959
 89960
 89961
 89962
 89963
 89964
 89965
 89966
 89967
 89968
 89969
 89970
 89971
 89972
 89973
 89974
 89975
 89976
 89977
 89978
 89979
 89980
 89981
 89982
 89983
 89984
 89985
 89986
 89987
 89988
 89989
 89990
 89991
 89992
 89993
 89994
 89995
 89996
 89997
 89998
 89999
 90000
 90001
 90002
 90003
 90004
 90005
 90006
 90007
 90008
 90009
 90010
 90011
 90012
 90013
 90014
 90015
 90016
 90017
 90018
 90019
 90020
 90021
 90022
 90023
 90024
 90025
 90026
 90027
 90028
 90029
 90030
 90031
 90032
 90033
 90034
 90035
 90036
 90037
 90038
 90039
 90040
 90041
 90042
 90043
 90044
 90045
 90046
 90047
 90048
 90049
 90050
 90051
 90052
 90053
 90054
 90055
 90056
 90057
 90058
 90059
 90060
 90061
 90062
 90063
 90064
 90065
 90066
 90067
 90068
 90069
 90070
 90071
 90072
 90073
 90074
 90075
 90076
 90077
 90078
 90079
 90080
 90081
 90082
 90083
 90084
 90085
 90086
 90087
 90088
 90089
 90090
 90091
 90092
 90093
 90094
 90095
 90096
 90097
 90098
 90099
 90100
 90101
 90102
 90103
 90104
 90105
 90106
 90107
 90108
 90109
 90110
 90111
 90112
 90113
 90114
 90115
 90116
 90117
 90118
 90119
 90120
 90121
 90122
 90123
 90124
 90125
 90126
 90127
 90128
 90129
 90130
 90131
 90132
 90133
 90134
 90135
 90136
 90137
 90138
 90139
 90140
 90141
 90142
 90143
 90144
 90145
 90146
 90147
 90148
 90149
 90150
 90151
 90152
 90153
 90154
 90155
 90156
 90157
 90158
 90159
 90160
 90161
 90162
 90163
 90164
 90165
 90166
 90167
 90168
 90169
 90170
 90171
 90172
 90173
 90174
 90175
 90176
 90177
 90178
 90179
 90180
 90181
 90182
 90183
 90184
 90185
 90186
 90187
 90188
 90189
 90190
 90191
 90192
 90193
 90194
 90195
 90196
 90197
 90198
 90199
 90200
 90201
 90202
 90203
 90204
 90205
 90206
 90207
 90208
 90209
 90210
 90211
 90212
 90213
 90214
 90215
 90216
 90217
 90218
 90219
 90220
 90221
 90222
 90223
 90224
 90225
 90226
 90227
 90228
 90229
 90230
 90231
 90232
 90233
 90234
 90235
 90236
 90237
 90238
 90239
 90240
 90241
 90242
 90243
 90244
 90245
 90246
 90247
 90248
 90249
 90250
 90251
 90252
 90253
 90254
 90255
 90256
 90257
 90258
 90259
 90260
 90261
 90262
 90263
 90264
 90265
 90266
 90267
 90268
 90269
 90270
 90271
 90272
 90273
 90274
 90275
 90276
 90277
 90278
 90279
 90280
 90281
 90282
 90283
 90284
 90285
 90286
 90287
 90288
 90289
 90290
 90291
 90292
 90293
 90294
 90295
 90296
 90297
 90298
 90299
 90300
 90301
 90302
 90303
 90304
 90305
 90306
 90307
 90308
 90309
 90310
 90311
 90312
 90313
 90314
 90315
 90316
 90317
 90318
 90319
 90320
 90321
 90322
 90323
 90324
 90325
 90326
 90327
 90328
 90329
 90330
 90331
 90332
 90333
 90334
 90335
 90336
 90337
 90338
 90339
 90340
 90341
 90342
 90343
 90344
 90345
 90346
 90347
 90348
 90349
 90350
 90351
 90352
 90353
 90354
 90355
 90356
 90357
 90358
 90359
 90360
 90361
 90362
 90363
 90364
 90365
 90366
 90367
 90368
 90369
 90370
 90371
 90372
 90373
 90374
 90375
 90376
 90377
 90378
 90379
 90380
 90381
 90382
 90383
 90384
 90385
 90386
 90387
 90388
 90389
 90390
 90391
 90392
 90393
 90394
 90395
 90396
 90397
 90398
 90399
 90400
 90401
 90402
 90403
 90404
 90405
 90406
 90407
 90408
 90409
 90410
 90411
 90412
 90413
 90414
 90415
 90416
 90417
 90418
 90419
 90420
 90421
 90422
 90423
 90424
 90425
 90426
 90427
 90428
 90429
 90430
 90431
 90432
 90433
 90434
 90435
 90436
 90437
 90438
 90439
 90440
 90441
 90442
 90443
 90444
 90445
 90446
 90447
 90448
 90449
 90450
 90451
 90452
 90453
 90454
 90455
 90456
 90457
 90458
 90459
 90460
 90461
 90462
 90463
 90464
 90465
 90466
 90467
 90468
 90469
 90470
 90471
 90472
 90473
 90474
 90475
 90476
 90477
 90478
 90479
 90480
 90481
 90482
 90483
 90484
 90485
 90486
 90487
 90488
 90489
 90490
 90491
 90492
 90493
 90494
 90495
 90496
 90497
 90498
 90499
 90500
 90501
 90502
 90503
 90504
 90505
 90506
 90507
 90508
 90509
 90510
 90511
 90512
 90513
 90514
 90515
 90516
 90517
 90518
 90519
 90520
 90521
 90522
 90523
 90524
 90525
 90526
 90527
 90528
 90529
 90530
 90531
 90532
 90533
 90534
 90535
 90536
 90537
 90538
 90539
 90540
 90541
 90542
 90543
 90544
 90545
 90546
 90547
 90548
 90549
 90550
 90551
 90552
 90553
 90554
 90555
 90556
 90557
 90558
 90559
 90560
 90561
 90562
 90563
 90564
 90565
 90566
 90567
 90568
 90569
 90570
 90571
 90572
 90573
 90574
 90575
 90576
 90577
 90578
 90579
 90580
 90581
 90582
 90583
 90584
 90585
 90586
 90587
 90588
 90589
 90590
 90591
 90592
 90593
 90594
 90595
 90596
 90597
 90598
 90599
 90600
 90601
 90602
 90603
 90604
 90605
 90606
 90607
 90608
 90609
 90610
 90611
 90612
 90613
 90614
 90615
 90616
 90617
 90618
 90619
 90620
 90621
 90622
 90623
 90624
 90625
 90626
 90627
 90628
 90629
 90630
 90631
 90632
 90633
 90634
 90635
 90636
 90637
 90638
 90639
 90640
 90641
 90642
 90643
 90644
 90645
 90646
 90647
 90648
 90649
 90650
 90651
 90652
 90653
 90654
 90655
 90656
 90657
 90658
 90659
 90660
 90661
 90662
 90663
 90664
 90665
 90666
 90667
 90668
 90669
 90670
 90671
 90672
 90673
 90674
 90675
 90676
 90677
 90678
 90679
 90680
 90681
 90682
 90683
 90684
 90685
 90686
 90687
 90688
 90689
 90690
 90691
 90692
 90693
 90694
 90695
 90696
 90697
 90698
 90699
 90700
 90701
 90702
 90703
 90704
 90705
 90706
 90707
 90708
 90709
 90710
 90711
 90712
 90713
 90714
 90715
 90716
 90717
 90718
 90719
 90720
 90721
 90722
 90723
 90724
 90725
 90726
 90727
 90728
 90729
 90730
 90731
 90732
 90733
 90734
 90735
 90736
 90737
 90738
 90739
 90740
 90741
 90742
 90743
 90744
 90745
 90746
 90747
 90748
 90749
 90750
 90751
 90752
 90753
 90754
 90755
 90756
 90757
 90758
 90759
 90760
 90761
 90762
 90763
 90764
 90765
 90766
 90767
 90768
 90769
 90770
 90771
 90772
 90773
 90774
 90775
 90776
 90777
 90778
 90779
 90780
 90781
 90782
 90783
 90784
 90785
 90786
 90787
 90788
 90789
 90790
 90791
 90792
 90793
 90794
 90795
 90796
 90797
 90798
 90799
 90800
 90801
 90802
 90803
 90804
 90805
 90806
 90807
 90808
 90809
 90810
 90811
 90812
 90813
 90814
 90815
 90816
 90817
 90818
 90819
 90820
 90821
 90822
 90823
 90824
 90825
 90826
 90827
 90828
 90829
 90830
 90831
 90832
 90833
 90834
 90835
 90836
 90837
 90838
 90839
 90840
 90841
 90842
 90843
 90844
 90845
 90846
 90847
 90848
 90849
 90850
 90851
 90852
 90853
 90854
 90855
 90856
 90857
 90858
 90859
 90860
 90861
 90862
 90863
 90864
 90865
 90866
 90867
 90868
 90869
 90870
 90871
 90872
 90873
 90874
 90875
 90876
 90877
 90878
 90879
 90880
 90881
 90882
 90883
 90884
 90885
 90886
 90887
 90888
 90889
 90890
 90891
 90892
 90893
 90894
 90895
 90896
 90897
 90898
 90899
 90900
 90901
 90902
 90903
 90904
 90905
 90906
 90907
 90908
 90909
 90910
 90911
 90912
 90913
 90914
 90915
 90916
 90917
 90918
 90919
 90920
 90921
 90922
 90923
 90924
 90925
 90926
 90927
 90928
 90929
 90930
 90931
 90932
 90933
 90934
 90935
 90936
 90937
 90938
 90939
 90940
 90941
 90942
 90943
 90944
 90945
 90946
 90947
 90948
 90949
 90950
 90951
 90952
 90953
 90954
 90955
 90956
 90957
 90958
 90959
 90960
 90961
 90962
 90963
 90964
 90965
 90966
 90967
 90968
 90969
 90970
 90971
 90972
 90973
 90974
 90975
 90976
 90977
 90978
 90979
 90980
 90981
 90982
 90983
 90984
 90985
 90986
 90987
 90988
 90989
 90990
 90991
 90992
 90993
 90994
 90995
 90996
 90997
 90998
 90999
 91000
 91001
 91002
 91003
 91004
 91005
 91006
 91007
 91008
 91009
 91010
 91011
 91012
 91013
 91014
 91015
 91016
 91017
 91018
 91019
 91020
 91021
 91022
 91023
 91024
 91025
 91026
 91027
 91028
 91029
 91030
 91031
 91032
 91033
 91034
 91035
 91036
 91037
 91038
 91039
 91040
 91041
 91042
 91043
 91044
 91045
 91046
 91047
 91048
 91049
 91050
 91051
 91052
 91053
 91054
 91055
 91056
 91057
 91058
 91059
 91060
 91061
 91062
 91063
 91064
 91065
 91066
 91067
 91068
 91069
 91070
 91071
 91072
 91073
 91074
 91075
 91076
 91077
 91078
 91079
 91080
 91081
 91082
 91083
 91084
 91085
 91086
 91087
 91088
 91089
 91090
 91091
 91092
 91093
 91094
 91095
 91096
 91097
 91098
 91099
 91100
 91101
 91102
 91103
 91104
 91105
 91106
 91107
 91108
 91109
 91110
 91111
 91112
 91113
 91114
 91115
 91116
 91117
 91118
 91119
 91120
 91121
 91122
 91123
 91124
 91125
 91126
 91127
 91128
 91129
 91130
 91131
 91132
 91133
 91134
 91135
 91136
 91137
 91138
 91139
 91140
 91141
 91142
 91143
 91144
 91145
 91146
 91147
 91148
 91149
 91150
 91151
 91152
 91153
 91154
 91155
 91156
 91157
 91158
 91159
 91160
 91161
 91162
 91163
 91164
 91165
 91166
 91167
 91168
 91169
 91170
 91171
 91172
 91173
 91174
 91175
 91176
 91177
 91178
 91179
 91180
 91181
 91182
 91183
 91184
 91185
 91186
 91187
 91188
 91189
 91190
 91191
 91192
 91193
 91194
 91195
 91196
 91197
 91198
 91199
 91200
 91201
 91202
 91203
 91204
 91205
 91206
 91207
 91208
 91209
 91210
 91211
 91212
 91213
 91214
 91215
 91216
 91217
 91218
 91219
 91220
 91221
 91222
 91223
 91224
 91225
 91226
 91227
 91228
 91229
 91230
 91231
 91232
 91233
 91234
 91235
 91236
 91237
 91238
 91239
 91240
 91241
 91242
 91243
 91244
 91245
 91246
 91247
 91248
 91249
 91250
 91251
 91252
 91253
 91254
 91255
 91256
 91257
 91258
 91259
 91260
 91261
 91262
 91263
 91264
 91265
 91266
 91267
 91268
 91269
 91270
 91271
 91272
 91273
 91274
 91275
 91276
 91277
 91278
 91279
 91280
 91281
 91282
 91283
 91284
 91285
 91286
 91287
 91288
 91289
 91290
 91291
 91292
 91293
 91294
 91295
 91296
 91297
 91298
 91299
 91300
 91301
 91302
 91303
 91304
 91305
 91306
 91307
 91308
 91309
 91310
 91311
 91312
 91313
 91314
 91315
 91316
 91317
 91318
 91319
 91320
 91321
 91322
 91323
 91324
 91325
 91326
 91327
 91328
 91329
 91330
 91331
 91332
 91333
 91334
 91335
 91336
 91337
 91338
 91339
 91340
 91341
 91342
 91343
 91344
 91345
 91346
 91347
 91348
 91349
 91350
 91351
 91352
 91353
 91354
 91355
 91356
 91357
 91358
 91359
 91360
 91361
 91362
 91363
 91364
 91365
 91366
 91367
 91368
 91369
 91370
 91371
 91372
 91373
 91374
 91375
 91376
 91377
 91378
 91379
 91380
 91381
 91382
 91383
 91384
 91385
 91386
 91387
 91388
 91389
 91390
 91391
 91392
 91393
 91394
 91395
 91396
 91397
 91398
 91399
 91400
 91401
 91402
 91403
 91404
 91405
 91406
 91407
 91408
 91409
 91410
 91411
 91412
 91413
 91414
 91415
 91416
 91417
 91418
 91419
 91420
 91421
 91422
 91423
 91424
 91425
 91426
 91427
 91428
 91429
 91430
 91431
 91432
 91433
 91434
 91435
 91436
 91437
 91438
 91439
 91440
 91441
 91442
 91443
 91444
 91445
 91446
 91447
 91448
 91449
 91450
 91451
 91452
 91453
 91454
 91455
 91456
 91457
 91458
 91459
 91460
 91461
 91462
 91463
 91464
 91465
 91466
 91467
 91468
 91469
 91470
 91471
 91472
 91473
 91474
 91475
 91476
 91477
 91478
 91479
 91480
 91481
 91482
 91483
 91484
 91485
 91486
 91487
 91488
 91489
 91490
 91491
 91492
 91493
 91494
 91495
 91496
 91497
 91498
 91499
 91500
 91501
 91502
 91503
 91504
 91505
 91506
 91507
 91508
 91509
 91510
 91511
 91512
 91513
 91514
 91515
 91516
 91517
 91518
 91519
 91520
 91521
 91522
 91523
 91524
 91525
 91526
 91527
 91528
 91529
 91530
 91531
 91532
 91533
 91534
 91535
 91536
 91537
 91538
 91539
 91540
 91541
 91542
 91543
 91544
 91545
 91546
 91547
 91548
 91549
 91550
 91551
 91552
 91553
 91554
 91555
 91556
 91557
 91558
 91559
 91560
 91561
 91562
 91563
 91564
 91565
 91566
 91567
 91568
 91569
 91570
 91571
 91572
 91573
 91574
 91575
 91576
 91577
 91578
 91579
 91580
 91581
 91582
 91583
 91584
 91585
 91586
 91587
 91588
 91589
 91590
 91591
 91592
 91593
 91594
 91595
 91596
 91597
 91598
 91599
 91600
 91601
 91602
 91603
 91604
 91605
 91606
 91607
 91608
 91609
 91610
 91611
 91612
 91613
 91614
 91615
 91616
 91617
 91618
 91619
 91620
 91621
 91622
 91623
 91624
 91625
 91626
 91627
 91628
 91629
 91630
 91631
 91632
 91633
 91634
 91635
 91636
 91637
 91638
 91639
 91640
 91641
 91642
 91643
 91644
 91645
 91646
 91647
 91648
 91649
 91650
 91651
 91652
 91653
 91654
 91655
 91656
 91657
 91658
 91659
 91660
 91661
 91662
 91663
 91664
 91665
 91666
 91667
 91668
 91669
 91670
 91671
 91672
 91673
 91674
 91675
 91676
 91677
 91678
 91679
 91680
 91681
 91682
 91683
 91684
 91685
 91686
 91687
 91688
 91689
 91690
 91691
 91692
 91693
 91694
 91695
 91696
 91697
 91698
 91699
 91700
 91701
 91702
 91703
 91704
 91705
 91706
 91707
 91708
 91709
 91710
 91711
 91712
 91713
 91714
 91715
 91716
 91717
 91718
 91719
 91720
 91721
 91722
 91723
 91724
 91725
 91726
 91727
 91728
 91729
 91730
 91731
 91732
 91733
 91734
 91735
 91736
 91737
 91738
 91739
 91740
 91741
 91742
 91743
 91744
 91745
 91746
 91747
 91748
 91749
 91750
 91751
 91752
 91753
 91754
 91755
 91756
 91757
 91758
 91759
 91760
 91761
 91762
 91763
 91764
 91765
 91766
 91767
 91768
 91769
 91770
 91771
 91772
 91773
 91774
 91775
 91776
 91777
 91778
 91779
 91780
 91781
 91782
 91783
 91784
 91785
 91786
 91787
 91788
 91789
 91790
 91791
 91792
 91793
 91794
 91795
 91796
 91797
 91798
 91799
 91800
 91801
 91802
 91803
 91804
 91805
 91806
 91807
 91808
 91809
 91810
 91811
 91812
 91813
 91814
 91815
 91816
 91817
 91818
 91819
 91820
 91821
 91822
 91823
 91824
 91825
 91826
 91827
 91828
 91829
 91830
 91831
 91832
 91833
 91834
 91835
 91836
 91837
 91838
 91839
 91840
 91841
 91842
 91843
 91844
 91845
 91846
 91847
 91848
 91849
 91850
 91851
 91852
 91853
 91854
 91855
 91856
 91857
 91858
 91859
 91860
 91861
 91862
 91863
 91864
 91865
 91866
 91867
 91868
 91869
 91870
 91871
 91872
 91873
 91874
 91875
 91876
 91877
 91878
 91879
 91880
 91881
 91882
 91883
 91884
 91885
 91886
 91887
 91888
 91889
 91890
 91891
 91892
 91893
 91894
 91895
 91896
 91897
 91898
 91899
 91900
 91901
 91902
 91903
 91904
 91905
 91906
 91907
 91908
 91909
 91910
 91911
 91912
 91913
 91914
 91915
 91916
 91917
 91918
 91919
 91920
 91921
 91922
 91923
 91924
 91925
 91926
 91927
 91928
 91929
 91930
 91931
 91932
 91933
 91934
 91935
 91936
 91937
 91938
 91939
 91940
 91941
 91942
 91943
 91944
 91945
 91946
 91947
 91948
 91949
 91950
 91951
 91952
 91953
 91954
 91955
 91956
 91957
 91958
 91959
 91960
 91961
 91962
 91963
 91964
 91965
 91966
 91967
 91968
 91969
 91970
 91971
 91972
 91973
 91974
 91975
 91976
 91977
 91978
 91979
 91980
 91981
 91982
 91983
 91984
 91985
 91986
 91987
 91988
 91989
 91990
 91991
 91992
 91993
 91994
 91995
 91996
 91997
 91998
 91999
 92000
 92001
 92002
 92003
 92004
 92005
 92006
 92007
 92008
 92009
 92010
 92011
 92012
 92013
 92014
 92015
 92016
 92017
 92018
 92019
 92020
 92021
 92022
 92023
 92024
 92025
 92026
 92027
 92028
 92029
 92030
 92031
 92032
 92033
 92034
 92035
 92036
 92037
 92038
 92039
 92040
 92041
 92042
 92043
 92044
 92045
 92046
 92047
 92048
 92049
 92050
 92051
 92052
 92053
 92054
 92055
 92056
 92057
 92058
 92059
 92060
 92061
 92062
 92063
 92064
 92065
 92066
 92067
 92068
 92069
 92070
 92071
 92072
 92073
 92074
 92075
 92076
 92077
 92078
 92079
 92080
 92081
 92082
 92083
 92084
 92085
 92086
 92087
 92088
 92089
 92090
 92091
 92092
 92093
 92094
 92095
 92096
 92097
 92098
 92099
 92100
 92101
 92102
 92103
 92104
 92105
 92106
 92107
 92108
 92109
 92110
 92111
 92112
 92113
 92114
 92115
 92116
 92117
 92118
 92119
 92120
 92121
 92122
 92123
 92124
 92125
 92126
 92127
 92128
 92129
 92130
 92131
 92132
 92133
 92134
 92135
 92136
 92137
 92138
 92139
 92140
 92141
 92142
 92143
 92144
 92145
 92146
 92147
 92148
 92149
 92150
 92151
 92152
 92153
 92154
 92155
 92156
 92157
 92158
 92159
 92160
 92161
 92162
 92163
 92164
 92165
 92166
 92167
 92168
 92169
 92170
 92171
 92172
 92173
 92174
 92175
 92176
 92177
 92178
 92179
 92180
 92181
 92182
 92183
 92184
 92185
 92186
 92187
 92188
 92189
 92190
 92191
 92192
 92193
 92194
 92195
 92196
 92197
 92198
 92199
 92200
 92201
 92202
 92203
 92204
 92205
 92206
 92207
 92208
 92209
 92210
 92211
 92212
 92213
 92214
 92215
 92216
 92217
 92218
 92219
 92220
 92221
 92222
 92223
 92224
 92225
 92226
 92227
 92228
 92229
 92230
 92231
 92232
 92233
 92234
 92235
 92236
 92237
 92238
 92239
 92240
 92241
 92242
 92243
 92244
 92245
 92246
 92247
 92248
 92249
 92250
 92251
 92252
 92253
 92254
 92255
 92256
 92257
 92258
 92259
 92260
 92261
 92262
 92263
 92264
 92265
 92266
 92267
 92268
 92269
 92270
 92271
 92272
 92273
 92274
 92275
 92276
 92277
 92278
 92279
 92280
 92281
 92282
 92283
 92284
 92285
 92286
 92287
 92288
 92289
 92290
 92291
 92292
 92293
 92294
 92295
 92296
 92297
 92298
 92299
 92300
 92301
 92302
 92303
 92304
 92305
 92306
 92307
 92308
 92309
 92310
 92311
 92312
 92313
 92314
 92315
 92316
 92317
 92318
 92319
 92320
 92321
 92322
 92323
 92324
 92325
 92326
 92327
 92328
 92329
 92330
 92331
 92332
 92333
 92334
 92335
 92336
 92337
 92338
 92339
 92340
 92341
 92342
 92343
 92344
 92345
 92346
 92347
 92348
 92349
 92350
 92351
 92352
 92353
 92354
 92355
 92356
 92357
 92358
 92359
 92360
 92361
 92362
 92363
 92364
 92365
 92366
 92367
 92368
 92369
 92370
 92371
 92372
 92373
 92374
 92375
 92376
 92377
 92378
 92379
 92380
 92381
 92382
 92383
 92384
 92385
 92386
 92387
 92388
 92389
 92390
 92391
 92392
 92393
 92394
 92395
 92396
 92397
 92398
 92399
 92400
 92401
 92402
 92403
 92404
 92405
 92406
 92407
 92408
 92409
 92410
 92411
 92412
 92413
 92414
 92415
 92416
 92417
 92418
 92419
 92420
 92421
 92422
 92423
 92424
 92425
 92426
 92427
 92428
 92429
 92430
 92431
 92432
 92433
 92434
 92435
 92436
 92437
 92438
 92439
 92440
 92441
 92442
 92443
 92444
 92445
 92446
 92447
 92448
 92449
 92450
 92451
 92452
 92453
 92454
 92455
 92456
 92457
 92458
 92459
 92460
 92461
 92462
 92463
 92464
 92465
 92466
 92467
 92468
 92469
 92470
 92471
 92472
 92473
 92474
 92475
 92476
 92477
 92478
 92479
 92480
 92481
 92482
 92483
 92484
 92485
 92486
 92487
 92488
 92489
 92490
 92491
 92492
 92493
 92494
 92495
 92496
 92497
 92498
 92499
 92500
 92501
 92502
 92503
 92504
 92505
 92506
 92507
 92508
 92509
 92510
 92511
 92512
 92513
 92514
 92515
 92516
 92517
 92518
 92519
 92520
 92521
 92522
 92523
 92524
 92525
 92526
 92527
 92528
 92529
 92530
 92531
 92532
 92533
 92534
 92535
 92536
 92537
 92538
 92539
 92540
 92541
 92542
 92543
 92544
 92545
 92546
 92547
 92548
 92549
 92550
 92551
 92552
 92553
 92554
 92555
 92556
 92557
 92558
 92559
 92560
 92561
 92562
 92563
 92564
 92565
 92566
 92567
 92568
 92569
 92570
 92571
 92572
 92573
 92574
 92575
 92576
 92577
 92578
 92579
 92580
 92581
 92582
 92583
 92584
 92585
 92586
 92587
 92588
 92589
 92590
 92591
 92592
 92593
 92594
 92595
 92596
 92597
 92598
 92599
 92600
 92601
 92602
 92603
 92604
 92605
 92606
 92607
 92608
 92609
 92610
 92611
 92612
 92613
 92614
 92615
 92616
 92617
 92618
 92619
 92620
 92621
 92622
 92623
 92624
 92625
 92626
 92627
 92628
 92629
 92630
 92631
 92632
 92633
 92634
 92635
 92636
 92637
 92638
 92639
 92640
 92641
 92642
 92643
 92644
 92645
 92646
 92647
 92648
 92649
 92650
 92651
 92652
 92653
 92654
 92655
 92656
 92657
 92658
 92659
 92660
 92661
 92662
 92663
 92664
 92665
 92666
 92667
 92668
 92669
 92670
 92671
 92672
 92673
 92674
 92675
 92676
 92677
 92678
 92679
 92680
 92681
 92682
 92683
 92684
 92685
 92686
 92687
 92688
 92689
 92690
 92691
 92692
 92693
 92694
 92695
 92696
 92697
 92698
 92699
 92700
 92701
 92702
 92703
 92704
 92705
 92706
 92707
 92708
 92709
 92710
 92711
 92712
 92713
 92714
 92715
 92716
 92717
 92718
 92719
 92720
 92721
 92722
 92723
 92724
 92725
 92726
 92727
 92728
 92729
 92730
 92731
 92732
 92733
 92734
 92735
 92736
 92737
 92738
 92739
 92740
 92741
 92742
 92743
 92744
 92745
 92746
 92747
 92748
 92749
 92750
 92751
 92752
 92753
 92754
 92755
 92756
 92757
 92758
 92759
 92760
 92761
 92762
 92763
 92764
 92765
 92766
 92767
 92768
 92769
 92770
 92771
 92772
 92773
 92774
 92775
 92776
 92777
 92778
 92779
 92780
 92781
 92782
 92783
 92784
 92785
 92786
 92787
 92788
 92789
 92790
 92791
 92792
 92793
 92794
 92795
 92796
 92797
 92798
 92799
 92800
 92801
 92802
 92803
 92804
 92805
 92806
 92807
 92808
 92809
 92810
 92811
 92812
 92813
 92814
 92815
 92816
 92817
 92818
 92819
 92820
 92821
 92822
 92823
 92824
 92825
 92826
 92827
 92828
 92829
 92830
 92831
 92832
 92833
 92834
 92835
 92836
 92837
 92838
 92839
 92840
 92841
 92842
 92843
 92844
 92845
 92846
 92847
 92848
 92849
 92850
 92851
 92852
 92853
 92854
 92855
 92856
 92857
 92858
 92859
 92860
 92861
 92862
 92863
 92864
 92865
 92866
 92867
 92868
 92869
 92870
 92871
 92872
 92873
 92874
 92875
 92876
 92877
 92878
 92879
 92880
 92881
 92882
 92883
 92884
 92885
 92886
 92887
 92888
 92889
 92890
 92891
 92892
 92893
 92894
 92895
 92896
 92897
 92898
 92899
 92900
 92901
 92902
 92903
 92904
 92905
 92906
 92907
 92908
 92909
 92910
 92911
 92912
 92913
 92914
 92915
 92916
 92917
 92918
 92919
 92920
 92921
 92922
 92923
 92924
 92925
 92926
 92927
 92928
 92929
 92930
 92931
 92932
 92933
 92934
 92935
 92936
 92937
 92938
 92939
 92940
 92941
 92942
 92943
 92944
 92945
 92946
 92947
 92948
 92949
 92950
 92951
 92952
 92953
 92954
 92955
 92956
 92957
 92958
 92959
 92960
 92961
 92962
 92963
 92964
 92965
 92966
 92967
 92968
 92969
 92970
 92971
 92972
 92973
 92974
 92975
 92976
 92977
 92978
 92979
 92980
 92981
 92982
 92983
 92984
 92985
 92986
 92987
 92988
 92989
 92990
 92991
 92992
 92993
 92994
 92995
 92996
 92997
 92998
 92999
 93000
 93001
 93002
 93003
 93004
 93005
 93006
 93007
 93008
 93009
 93010
 93011
 93012
 93013
 93014
 93015
 93016
 93017
 93018
 93019
 93020
 93021
 93022
 93023
 93024
 93025
 93026
 93027
 93028
 93029
 93030
 93031
 93032
 93033
 93034
 93035
 93036
 93037
 93038
 93039
 93040
 93041
 93042
 93043
 93044
 93045
 93046
 93047
 93048
 93049
 93050
 93051
 93052
 93053
 93054
 93055
 93056
 93057
 93058
 93059
 93060
 93061
 93062
 93063
 93064
 93065
 93066
 93067
 93068
 93069
 93070
 93071
 93072
 93073
 93074
 93075
 93076
 93077
 93078
 93079
 93080
 93081
 93082
 93083
 93084
 93085
 93086
 93087
 93088
 93089
 93090
 93091
 93092
 93093
 93094
 93095
 93096
 93097
 93098
 93099
 93100
 93101
 93102
 93103
 93104
 93105
 93106
 93107
 93108
 93109
 93110
 93111
 93112
 93113
 93114
 93115
 93116
 93117
 93118
 93119
 93120
 93121
 93122
 93123
 93124
 93125
 93126
 93127
 93128
 93129
 93130
 93131
 93132
 93133
 93134
 93135
 93136
 93137
 93138
 93139
 93140
 93141
 93142
 93143
 93144
 93145
 93146
 93147
 93148
 93149
 93150
 93151
 93152
 93153
 93154
 93155
 93156
 93157
 93158
 93159
 93160
 93161
 93162
 93163
 93164
 93165
 93166
 93167
 93168
 93169
 93170
 93171
 93172
 93173
 93174
 93175
 93176
 93177
 93178
 93179
 93180
 93181
 93182
 93183
 93184
 93185
 93186
 93187
 93188
 93189
 93190
 93191
 93192
 93193
 93194
 93195
 93196
 93197
 93198
 93199
 93200
 93201
 93202
 93203
 93204
 93205
 93206
 93207
 93208
 93209
 93210
 93211
 93212
 93213
 93214
 93215
 93216
 93217
 93218
 93219
 93220
 93221
 93222
 93223
 93224
 93225
 93226
 93227
 93228
 93229
 93230
 93231
 93232
 93233
 93234
 93235
 93236
 93237
 93238
 93239
 93240
 93241
 93242
 93243
 93244
 93245
 93246
 93247
 93248
 93249
 93250
 93251
 93252
 93253
 93254
 93255
 93256
 93257
 93258
 93259
 93260
 93261
 93262
 93263
 93264
 93265
 93266
 93267
 93268
 93269
 93270
 93271
 93272
 93273
 93274
 93275
 93276
 93277
 93278
 93279
 93280
 93281
 93282
 93283
 93284
 93285
 93286
 93287
 93288
 93289
 93290
 93291
 93292
 93293
 93294
 93295
 93296
 93297
 93298
 93299
 93300
 93301
 93302
 93303
 93304
 93305
 93306
 93307
 93308
 93309
 93310
 93311
 93312
 93313
 93314
 93315
 93316
 93317
 93318
 93319
 93320
 93321
 93322
 93323
 93324
 93325
 93326
 93327
 93328
 93329
 93330
 93331
 93332
 93333
 93334
 93335
 93336
 93337
 93338
 93339
 93340
 93341
 93342
 93343
 93344
 93345
 93346
 93347
 93348
 93349
 93350
 93351
 93352
 93353
 93354
 93355
 93356
 93357
 93358
 93359
 93360
 93361
 93362
 93363
 93364
 93365
 93366
 93367
 93368
 93369
 93370
 93371
 93372
 93373
 93374
 93375
 93376
 93377
 93378
 93379
 93380
 93381
 93382
 93383
 93384
 93385
 93386
 93387
 93388
 93389
 93390
 93391
 93392
 93393
 93394
 93395
 93396
 93397
 93398
 93399
 93400
 93401
 93402
 93403
 93404
 93405
 93406
 93407
 93408
 93409
 93410
 93411
 93412
 93413
 93414
 93415
 93416
 93417
 93418
 93419
 93420
 93421
 93422
 93423
 93424
 93425
 93426
 93427
 93428
 93429
 93430
 93431
 93432
 93433
 93434
 93435
 93436
 93437
 93438
 93439
 93440
 93441
 93442
 93443
 93444
 93445
 93446
 93447
 93448
 93449
 93450
 93451
 93452
 93453
 93454
 93455
 93456
 93457
 93458
 93459
 93460
 93461
 93462
 93463
 93464
 93465
 93466
 93467
 93468
 93469
 93470
 93471
 93472
 93473
 93474
 93475
 93476
 93477
 93478
 93479
 93480
 93481
 93482
 93483
 93484
 93485
 93486
 93487
 93488
 93489
 93490
 93491
 93492
 93493
 93494
 93495
 93496
 93497
 93498
 93499
 93500
 93501
 93502
 93503
 93504
 93505
 93506
 93507
 93508
 93509
 93510
 93511
 93512
 93513
 93514
 93515
 93516
 93517
 93518
 93519
 93520
 93521
 93522
 93523
 93524
 93525
 93526
 93527
 93528
 93529
 93530
 93531
 93532
 93533
 93534
 93535
 93536
 93537
 93538
 93539
 93540
 93541
 93542
 93543
 93544
 93545
 93546
 93547
 93548
 93549
 93550
 93551
 93552
 93553
 93554
 93555
 93556
 93557
 93558
 93559
 93560
 93561
 93562
 93563
 93564
 93565
 93566
 93567
 93568
 93569
 93570
 93571
 93572
 93573
 93574
 93575
 93576
 93577
 93578
 93579
 93580
 93581
 93582
 93583
 93584
 93585
 93586
 93587
 93588
 93589
 93590
 93591
 93592
 93593
 93594
 93595
 93596
 93597
 93598
 93599
 93600
 93601
 93602
 93603
 93604
 93605
 93606
 93607
 93608
 93609
 93610
 93611
 93612
 93613
 93614
 93615
 93616
 93617
 93618
 93619
 93620
 93621
 93622
 93623
 93624
 93625
 93626
 93627
 93628
 93629
 93630
 93631
 93632
 93633
 93634
 93635
 93636
 93637
 93638
 93639
 93640
 93641
 93642
 93643
 93644
 93645
 93646
 93647
 93648
 93649
 93650
 93651
 93652
 93653
 93654
 93655
 93656
 93657
 93658
 93659
 93660
 93661
 93662
 93663
 93664
 93665
 93666
 93667
 93668
 93669
 93670
 93671
 93672
 93673
 93674
 93675
 93676
 93677
 93678
 93679
 93680
 93681
 93682
 93683
 93684
 93685
 93686
 93687
 93688
 93689
 93690
 93691
 93692
 93693
 93694
 93695
 93696
 93697
 93698
 93699
 93700
 93701
 93702
 93703
 93704
 93705
 93706
 93707
 93708
 93709
 93710
 93711
 93712
 93713
 93714
 93715
 93716
 93717
 93718
 93719
 93720
 93721
 93722
 93723
 93724
 93725
 93726
 93727
 93728
 93729
 93730
 93731
 93732
 93733
 93734
 93735
 93736
 93737
 93738
 93739
 93740
 93741
 93742
 93743
 93744
 93745
 93746
 93747
 93748
 93749
 93750
 93751
 93752
 93753
 93754
 93755
 93756
 93757
 93758
 93759
 93760
 93761
 93762
 93763
 93764
 93765
 93766
 93767
 93768
 93769
 93770
 93771
 93772
 93773
 93774
 93775
 93776
 93777
 93778
 93779
 93780
 93781
 93782
 93783
 93784
 93785
 93786
 93787
 93788
 93789
 93790
 93791
 93792
 93793
 93794
 93795
 93796
 93797
 93798
 93799
 93800
 93801
 93802
 93803
 93804
 93805
 93806
 93807
 93808
 93809
 93810
 93811
 93812
 93813
 93814
 93815
 93816
 93817
 93818
 93819
 93820
 93821
 93822
 93823
 93824
 93825
 93826
 93827
 93828
 93829
 93830
 93831
 93832
 93833
 93834
 93835
 93836
 93837
 93838
 93839
 93840
 93841
 93842
 93843
 93844
 93845
 93846
 93847
 93848
 93849
 93850
 93851
 93852
 93853
 93854
 93855
 93856
 93857
 93858
 93859
 93860
 93861
 93862
 93863
 93864
 93865
 93866
 93867
 93868
 93869
 93870
 93871
 93872
 93873
 93874
 93875
 93876
 93877
 93878
 93879
 93880
 93881
 93882
 93883
 93884
 93885
 93886
 93887
 93888
 93889
 93890
 93891
 93892
 93893
 93894
 93895
 93896
 93897
 93898
 93899
 93900
 93901
 93902
 93903
 93904
 93905
 93906
 93907
 93908
 93909
 93910
 93911
 93912
 93913
 93914
 93915
 93916
 93917
 93918
 93919
 93920
 93921
 93922
 93923
 93924
 93925
 93926
 93927
 93928
 93929
 93930
 93931
 93932
 93933
 93934
 93935
 93936
 93937
 93938
 93939
 93940
 93941
 93942
 93943
 93944
 93945
 93946
 93947
 93948
 93949
 93950
 93951
 93952
 93953
 93954
 93955
 93956
 93957
 93958
 93959
 93960
 93961
 93962
 93963
 93964
 93965
 93966
 93967
 93968
 93969
 93970
 93971
 93972
 93973
 93974
 93975
 93976
 93977
 93978
 93979
 93980
 93981
 93982
 93983
 93984
 93985
 93986
 93987
 93988
 93989
 93990
 93991
 93992
 93993
 93994
 93995
 93996
 93997
 93998
 93999
 94000
 94001
 94002
 94003
 94004
 94005
 94006
 94007
 94008
 94009
 94010
 94011
 94012
 94013
 94014
 94015
 94016
 94017
 94018
 94019
 94020
 94021
 94022
 94023
 94024
 94025
 94026
 94027
 94028
 94029
 94030
 94031
 94032
 94033
 94034
 94035
 94036
 94037
 94038
 94039
 94040
 94041
 94042
 94043
 94044
 94045
 94046
 94047
 94048
 94049
 94050
 94051
 94052
 94053
 94054
 94055
 94056
 94057
 94058
 94059
 94060
 94061
 94062
 94063
 94064
 94065
 94066
 94067
 94068
 94069
 94070
 94071
 94072
 94073
 94074
 94075
 94076
 94077
 94078
 94079
 94080
 94081
 94082
 94083
 94084
 94085
 94086
 94087
 94088
 94089
 94090
 94091
 94092
 94093
 94094
 94095
 94096
 94097
 94098
 94099
 94100
 94101
 94102
 94103
 94104
 94105
 94106
 94107
 94108
 94109
 94110
 94111
 94112
 94113
 94114
 94115
 94116
 94117
 94118
 94119
 94120
 94121
 94122
 94123
 94124
 94125
 94126
 94127
 94128
 94129
 94130
 94131
 94132
 94133
 94134
 94135
 94136
 94137
 94138
 94139
 94140
 94141
 94142
 94143
 94144
 94145
 94146
 94147
 94148
 94149
 94150
 94151
 94152
 94153
 94154
 94155
 94156
 94157
 94158
 94159
 94160
 94161
 94162
 94163
 94164
 94165
 94166
 94167
 94168
 94169
 94170
 94171
 94172
 94173
 94174
 94175
 94176
 94177
 94178
 94179
 94180
 94181
 94182
 94183
 94184
 94185
 94186
 94187
 94188
 94189
 94190
 94191
 94192
 94193
 94194
 94195
 94196
 94197
 94198
 94199
 94200
 94201
 94202
 94203
 94204
 94205
 94206
 94207
 94208
 94209
 94210
 94211
 94212
 94213
 94214
 94215
 94216
 94217
 94218
 94219
 94220
 94221
 94222
 94223
 94224
 94225
 94226
 94227
 94228
 94229
 94230
 94231
 94232
 94233
 94234
 94235
 94236
 94237
 94238
 94239
 94240
 94241
 94242
 94243
 94244
 94245
 94246
 94247
 94248
 94249
 94250
 94251
 94252
 94253
 94254
 94255
 94256
 94257
 94258
 94259
 94260
 94261
 94262
 94263
 94264
 94265
 94266
 94267
 94268
 94269
 94270
 94271
 94272
 94273
 94274
 94275
 94276
 94277
 94278
 94279
 94280
 94281
 94282
 94283
 94284
 94285
 94286
 94287
 94288
 94289
 94290
 94291
 94292
 94293
 94294
 94295
 94296
 94297
 94298
 94299
 94300
 94301
 94302
 94303
 94304
 94305
 94306
 94307
 94308
 94309
 94310
 94311
 94312
 94313
 94314
 94315
 94316
 94317
 94318
 94319
 94320
 94321
 94322
 94323
 94324
 94325
 94326
 94327
 94328
 94329
 94330
 94331
 94332
 94333
 94334
 94335
 94336
 94337
 94338
 94339
 94340
 94341
 94342
 94343
 94344
 94345
 94346
 94347
 94348
 94349
 94350
 94351
 94352
 94353
 94354
 94355
 94356
 94357
 94358
 94359
 94360
 94361
 94362
 94363
 94364
 94365
 94366
 94367
 94368
 94369
 94370
 94371
 94372
 94373
 94374
 94375
 94376
 94377
 94378
 94379
 94380
 94381
 94382
 94383
 94384
 94385
 94386
 94387
 94388
 94389
 94390
 94391
 94392
 94393
 94394
 94395
 94396
 94397
 94398
 94399
 94400
 94401
 94402
 94403
 94404
 94405
 94406
 94407
 94408
 94409
 94410
 94411
 94412
 94413
 94414
 94415
 94416
 94417
 94418
 94419
 94420
 94421
 94422
 94423
 94424
 94425
 94426
 94427
 94428
 94429
 94430
 94431
 94432
 94433
 94434
 94435
 94436
 94437
 94438
 94439
 94440
 94441
 94442
 94443
 94444
 94445
 94446
 94447
 94448
 94449
 94450
 94451
 94452
 94453
 94454
 94455
 94456
 94457
 94458
 94459
 94460
 94461
 94462
 94463
 94464
 94465
 94466
 94467
 94468
 94469
 94470
 94471
 94472
 94473
 94474
 94475
 94476
 94477
 94478
 94479
 94480
 94481
 94482
 94483
 94484
 94485
 94486
 94487
 94488
 94489
 94490
 94491
 94492
 94493
 94494
 94495
 94496
 94497
 94498
 94499
 94500
 94501
 94502
 94503
 94504
 94505
 94506
 94507
 94508
 94509
 94510
 94511
 94512
 94513
 94514
 94515
 94516
 94517
 94518
 94519
 94520
 94521
 94522
 94523
 94524
 94525
 94526
 94527
 94528
 94529
 94530
 94531
 94532
 94533
 94534
 94535
 94536
 94537
 94538
 94539
 94540
 94541
 94542
 94543
 94544
 94545
 94546
 94547
 94548
 94549
 94550
 94551
 94552
 94553
 94554
 94555
 94556
 94557
 94558
 94559
 94560
 94561
 94562
 94563
 94564
 94565
 94566
 94567
 94568
 94569
 94570
 94571
 94572
 94573
 94574
 94575
 94576
 94577
 94578
 94579
 94580
 94581
 94582
 94583
 94584
 94585
 94586
 94587
 94588
 94589
 94590
 94591
 94592
 94593
 94594
 94595
 94596
 94597
 94598
 94599
 94600
 94601
 94602
 94603
 94604
 94605
 94606
 94607
 94608
 94609
 94610
 94611
 94612
 94613
 94614
 94615
 94616
 94617
 94618
 94619
 94620
 94621
 94622
 94623
 94624
 94625
 94626
 94627
 94628
 94629
 94630
 94631
 94632
 94633
 94634
 94635
 94636
 94637
 94638
 94639
 94640
 94641
 94642
 94643
 94644
 94645
 94646
 94647
 94648
 94649
 94650
 94651
 94652
 94653
 94654
 94655
 94656
 94657
 94658
 94659
 94660
 94661
 94662
 94663
 94664
 94665
 94666
 94667
 94668
 94669
 94670
 94671
 94672
 94673
 94674
 94675
 94676
 94677
 94678
 94679
 94680
 94681
 94682
 94683
 94684
 94685
 94686
 94687
 94688
 94689
 94690
 94691
 94692
 94693
 94694
 94695
 94696
 94697
 94698
 94699
 94700
 94701
 94702
 94703
 94704
 94705
 94706
 94707
 94708
 94709
 94710
 94711
 94712
 94713
 94714
 94715
 94716
 94717
 94718
 94719
 94720
 94721
 94722
 94723
 94724
 94725
 94726
 94727
 94728
 94729
 94730
 94731
 94732
 94733
 94734
 94735
 94736
 94737
 94738
 94739
 94740
 94741
 94742
 94743
 94744
 94745
 94746
 94747
 94748
 94749
 94750
 94751
 94752
 94753
 94754
 94755
 94756
 94757
 94758
 94759
 94760
 94761
 94762
 94763
 94764
 94765
 94766
 94767
 94768
 94769
 94770
 94771
 94772
 94773
 94774
 94775
 94776
 94777
 94778
 94779
 94780
 94781
 94782
 94783
 94784
 94785
 94786
 94787
 94788
 94789
 94790
 94791
 94792
 94793
 94794
 94795
 94796
 94797
 94798
 94799
 94800
 94801
 94802
 94803
 94804
 94805
 94806
 94807
 94808
 94809
 94810
 94811
 94812
 94813
 94814
 94815
 94816
 94817
 94818
 94819
 94820
 94821
 94822
 94823
 94824
 94825
 94826
 94827
 94828
 94829
 94830
 94831
 94832
 94833
 94834
 94835
 94836
 94837
 94838
 94839
 94840
 94841
 94842
 94843
 94844
 94845
 94846
 94847
 94848
 94849
 94850
 94851
 94852
 94853
 94854
 94855
 94856
 94857
 94858
 94859
 94860
 94861
 94862
 94863
 94864
 94865
 94866
 94867
 94868
 94869
 94870
 94871
 94872
 94873
 94874
 94875
 94876
 94877
 94878
 94879
 94880
 94881
 94882
 94883
 94884
 94885
 94886
 94887
 94888
 94889
 94890
 94891
 94892
 94893
 94894
 94895
 94896
 94897
 94898
 94899
 94900
 94901
 94902
 94903
 94904
 94905
 94906
 94907
 94908
 94909
 94910
 94911
 94912
 94913
 94914
 94915
 94916
 94917
 94918
 94919
 94920
 94921
 94922
 94923
 94924
 94925
 94926
 94927
 94928
 94929
 94930
 94931
 94932
 94933
 94934
 94935
 94936
 94937
 94938
 94939
 94940
 94941
 94942
 94943
 94944
 94945
 94946
 94947
 94948
 94949
 94950
 94951
 94952
 94953
 94954
 94955
 94956
 94957
 94958
 94959
 94960
 94961
 94962
 94963
 94964
 94965
 94966
 94967
 94968
 94969
 94970
 94971
 94972
 94973
 94974
 94975
 94976
 94977
 94978
 94979
 94980
 94981
 94982
 94983
 94984
 94985
 94986
 94987
 94988
 94989
 94990
 94991
 94992
 94993
 94994
 94995
 94996
 94997
 94998
 94999
 95000
 95001
 95002
 95003
 95004
 95005
 95006
 95007
 95008
 95009
 95010
 95011
 95012
 95013
 95014
 95015
 95016
 95017
 95018
 95019
 95020
 95021
 95022
 95023
 95024
 95025
 95026
 95027
 95028
 95029
 95030
 95031
 95032
 95033
 95034
 95035
 95036
 95037
 95038
 95039
 95040
 95041
 95042
 95043
 95044
 95045
 95046
 95047
 95048
 95049
 95050
 95051
 95052
 95053
 95054
 95055
 95056
 95057
 95058
 95059
 95060
 95061
 95062
 95063
 95064
 95065
 95066
 95067
 95068
 95069
 95070
 95071
 95072
 95073
 95074
 95075
 95076
 95077
 95078
 95079
 95080
 95081
 95082
 95083
 95084
 95085
 95086
 95087
 95088
 95089
 95090
 95091
 95092
 95093
 95094
 95095
 95096
 95097
 95098
 95099
 95100
 95101
 95102
 95103
 95104
 95105
 95106
 95107
 95108
 95109
 95110
 95111
 95112
 95113
 95114
 95115
 95116
 95117
 95118
 95119
 95120
 95121
 95122
 95123
 95124
 95125
 95126
 95127
 95128
 95129
 95130
 95131
 95132
 95133
 95134
 95135
 95136
 95137
 95138
 95139
 95140
 95141
 95142
 95143
 95144
 95145
 95146
 95147
 95148
 95149
 95150
 95151
 95152
 95153
 95154
 95155
 95156
 95157
 95158
 95159
 95160
 95161
 95162
 95163
 95164
 95165
 95166
 95167
 95168
 95169
 95170
 95171
 95172
 95173
 95174
 95175
 95176
 95177
 95178
 95179
 95180
 95181
 95182
 95183
 95184
 95185
 95186
 95187
 95188
 95189
 95190
 95191
 95192
 95193
 95194
 95195
 95196
 95197
 95198
 95199
 95200
 95201
 95202
 95203
 95204
 95205
 95206
 95207
 95208
 95209
 95210
 95211
 95212
 95213
 95214
 95215
 95216
 95217
 95218
 95219
 95220
 95221
 95222
 95223
 95224
 95225
 95226
 95227
 95228
 95229
 95230
 95231
 95232
 95233
 95234
 95235
 95236
 95237
 95238
 95239
 95240
 95241
 95242
 95243
 95244
 95245
 95246
 95247
 95248
 95249
 95250
 95251
 95252
 95253
 95254
 95255
 95256
 95257
 95258
 95259
 95260
 95261
 95262
 95263
 95264
 95265
 95266
 95267
 95268
 95269
 95270
 95271
 95272
 95273
 95274
 95275
 95276
 95277
 95278
 95279
 95280
 95281
 95282
 95283
 95284
 95285
 95286
 95287
 95288
 95289
 95290
 95291
 95292
 95293
 95294
 95295
 95296
 95297
 95298
 95299
 95300
 95301
 95302
 95303
 95304
 95305
 95306
 95307
 95308
 95309
 95310
 95311
 95312
 95313
 95314
 95315
 95316
 95317
 95318
 95319
 95320
 95321
 95322
 95323
 95324
 95325
 95326
 95327
 95328
 95329
 95330
 95331
 95332
 95333
 95334
 95335
 95336
 95337
 95338
 95339
 95340
 95341
 95342
 95343
 95344
 95345
 95346
 95347
 95348
 95349
 95350
 95351
 95352
 95353
 95354
 95355
 95356
 95357
 95358
 95359
 95360
 95361
 95362
 95363
 95364
 95365
 95366
 95367
 95368
 95369
 95370
 95371
 95372
 95373
 95374
 95375
 95376
 95377
 95378
 95379
 95380
 95381
 95382
 95383
 95384
 95385
 95386
 95387
 95388
 95389
 95390
 95391
 95392
 95393
 95394
 95395
 95396
 95397
 95398
 95399
 95400
 95401
 95402
 95403
 95404
 95405
 95406
 95407
 95408
 95409
 95410
 95411
 95412
 95413
 95414
 95415
 95416
 95417
 95418
 95419
 95420
 95421
 95422
 95423
 95424
 95425
 95426
 95427
 95428
 95429
 95430
 95431
 95432
 95433
 95434
 95435
 95436
 95437
 95438
 95439
 95440
 95441
 95442
 95443
 95444
 95445
 95446
 95447
 95448
 95449
 95450
 95451
 95452
 95453
 95454
 95455
 95456
 95457
 95458
 95459
 95460
 95461
 95462
 95463
 95464
 95465
 95466
 95467
 95468
 95469
 95470
 95471
 95472
 95473
 95474
 95475
 95476
 95477
 95478
 95479
 95480
 95481
 95482
 95483
 95484
 95485
 95486
 95487
 95488
 95489
 95490
 95491
 95492
 95493
 95494
 95495
 95496
 95497
 95498
 95499
 95500
 95501
 95502
 95503
 95504
 95505
 95506
 95507
 95508
 95509
 95510
 95511
 95512
 95513
 95514
 95515
 95516
 95517
 95518
 95519
 95520
 95521
 95522
 95523
 95524
 95525
 95526
 95527
 95528
 95529
 95530
 95531
 95532
 95533
 95534
 95535
 95536
 95537
 95538
 95539
 95540
 95541
 95542
 95543
 95544
 95545
 95546
 95547
 95548
 95549
 95550
 95551
 95552
 95553
 95554
 95555
 95556
 95557
 95558
 95559
 95560
 95561
 95562
 95563
 95564
 95565
 95566
 95567
 95568
 95569
 95570
 95571
 95572
 95573
 95574
 95575
 95576
 95577
 95578
 95579
 95580
 95581
 95582
 95583
 95584
 95585
 95586
 95587
 95588
 95589
 95590
 95591
 95592
 95593
 95594
 95595
 95596
 95597
 95598
 95599
 95600
 95601
 95602
 95603
 95604
 95605
 95606
 95607
 95608
 95609
 95610
 95611
 95612
 95613
 95614
 95615
 95616
 95617
 95618
 95619
 95620
 95621
 95622
 95623
 95624
 95625
 95626
 95627
 95628
 95629
 95630
 95631
 95632
 95633
 95634
 95635
 95636
 95637
 95638
 95639
 95640
 95641
 95642
 95643
 95644
 95645
 95646
 95647
 95648
 95649
 95650
 95651
 95652
 95653
 95654
 95655
 95656
 95657
 95658
 95659
 95660
 95661
 95662
 95663
 95664
 95665
 95666
 95667
 95668
 95669
 95670
 95671
 95672
 95673
 95674
 95675
 95676
 95677
 95678
 95679
 95680
 95681
 95682
 95683
 95684
 95685
 95686
 95687
 95688
 95689
 95690
 95691
 95692
 95693
 95694
 95695
 95696
 95697
 95698
 95699
 95700
 95701
 95702
 95703
 95704
 95705
 95706
 95707
 95708
 95709
 95710
 95711
 95712
 95713
 95714
 95715
 95716
 95717
 95718
 95719
 95720
 95721
 95722
 95723
 95724
 95725
 95726
 95727
 95728
 95729
 95730
 95731
 95732
 95733
 95734
 95735
 95736
 95737
 95738
 95739
 95740
 95741
 95742
 95743
 95744
 95745
 95746
 95747
 95748
 95749
 95750
 95751
 95752
 95753
 95754
 95755
 95756
 95757
 95758
 95759
 95760
 95761
 95762
 95763
 95764
 95765
 95766
 95767
 95768
 95769
 95770
 95771
 95772
 95773
 95774
 95775
 95776
 95777
 95778
 95779
 95780
 95781
 95782
 95783
 95784
 95785
 95786
 95787
 95788
 95789
 95790
 95791
 95792
 95793
 95794
 95795
 95796
 95797
 95798
 95799
 95800
 95801
 95802
 95803
 95804
 95805
 95806
 95807
 95808
 95809
 95810
 95811
 95812
 95813
 95814
 95815
 95816
 95817
 95818
 95819
 95820
 95821
 95822
 95823
 95824
 95825
 95826
 95827
 95828
 95829
 95830
 95831
 95832
 95833
 95834
 95835
 95836
 95837
 95838
 95839
 95840
 95841
 95842
 95843
 95844
 95845
 95846
 95847
 95848
 95849
 95850
 95851
 95852
 95853
 95854
 95855
 95856
 95857
 95858
 95859
 95860
 95861
 95862
 95863
 95864
 95865
 95866
 95867
 95868
 95869
 95870
 95871
 95872
 95873
 95874
 95875
 95876
 95877
 95878
 95879
 95880
 95881
 95882
 95883
 95884
 95885
 95886
 95887
 95888
 95889
 95890
 95891
 95892
 95893
 95894
 95895
 95896
 95897
 95898
 95899
 95900
 95901
 95902
 95903
 95904
 95905
 95906
 95907
 95908
 95909
 95910
 95911
 95912
 95913
 95914
 95915
 95916
 95917
 95918
 95919
 95920
 95921
 95922
 95923
 95924
 95925
 95926
 95927
 95928
 95929
 95930
 95931
 95932
 95933
 95934
 95935
 95936
 95937
 95938
 95939
 95940
 95941
 95942
 95943
 95944
 95945
 95946
 95947
 95948
 95949
 95950
 95951
 95952
 95953
 95954
 95955
 95956
 95957
 95958
 95959
 95960
 95961
 95962
 95963
 95964
 95965
 95966
 95967
 95968
 95969
 95970
 95971
 95972
 95973
 95974
 95975
 95976
 95977
 95978
 95979
 95980
 95981
 95982
 95983
 95984
 95985
 95986
 95987
 95988
 95989
 95990
 95991
 95992
 95993
 95994
 95995
 95996
 95997
 95998
 95999
 96000
 96001
 96002
 96003
 96004
 96005
 96006
 96007
 96008
 96009
 96010
 96011
 96012
 96013
 96014
 96015
 96016
 96017
 96018
 96019
 96020
 96021
 96022
 96023
 96024
 96025
 96026
 96027
 96028
 96029
 96030
 96031
 96032
 96033
 96034
 96035
 96036
 96037
 96038
 96039
 96040
 96041
 96042
 96043
 96044
 96045
 96046
 96047
 96048
 96049
 96050
 96051
 96052
 96053
 96054
 96055
 96056
 96057
 96058
 96059
 96060
 96061
 96062
 96063
 96064
 96065
 96066
 96067
 96068
 96069
 96070
 96071
 96072
 96073
 96074
 96075
 96076
 96077
 96078
 96079
 96080
 96081
 96082
 96083
 96084
 96085
 96086
 96087
 96088
 96089
 96090
 96091
 96092
 96093
 96094
 96095
 96096
 96097
 96098
 96099
 96100
 96101
 96102
 96103
 96104
 96105
 96106
 96107
 96108
 96109
 96110
 96111
 96112
 96113
 96114
 96115
 96116
 96117
 96118
 96119
 96120
 96121
 96122
 96123
 96124
 96125
 96126
 96127
 96128
 96129
 96130
 96131
 96132
 96133
 96134
 96135
 96136
 96137
 96138
 96139
 96140
 96141
 96142
 96143
 96144
 96145
 96146
 96147
 96148
 96149
 96150
 96151
 96152
 96153
 96154
 96155
 96156
 96157
 96158
 96159
 96160
 96161
 96162
 96163
 96164
 96165
 96166
 96167
 96168
 96169
 96170
 96171
 96172
 96173
 96174
 96175
 96176
 96177
 96178
 96179
 96180
 96181
 96182
 96183
 96184
 96185
 96186
 96187
 96188
 96189
 96190
 96191
 96192
 96193
 96194
 96195
 96196
 96197
 96198
 96199
 96200
 96201
 96202
 96203
 96204
 96205
 96206
 96207
 96208
 96209
 96210
 96211
 96212
 96213
 96214
 96215
 96216
 96217
 96218
 96219
 96220
 96221
 96222
 96223
 96224
 96225
 96226
 96227
 96228
 96229
 96230
 96231
 96232
 96233
 96234
 96235
 96236
 96237
 96238
 96239
 96240
 96241
 96242
 96243
 96244
 96245
 96246
 96247
 96248
 96249
 96250
 96251
 96252
 96253
 96254
 96255
 96256
 96257
 96258
 96259
 96260
 96261
 96262
 96263
 96264
 96265
 96266
 96267
 96268
 96269
 96270
 96271
 96272
 96273
 96274
 96275
 96276
 96277
 96278
 96279
 96280
 96281
 96282
 96283
 96284
 96285
 96286
 96287
 96288
 96289
 96290
 96291
 96292
 96293
 96294
 96295
 96296
 96297
 96298
 96299
 96300
 96301
 96302
 96303
 96304
 96305
 96306
 96307
 96308
 96309
 96310
 96311
 96312
 96313
 96314
 96315
 96316
 96317
 96318
 96319
 96320
 96321
 96322
 96323
 96324
 96325
 96326
 96327
 96328
 96329
 96330
 96331
 96332
 96333
 96334
 96335
 96336
 96337
 96338
 96339
 96340
 96341
 96342
 96343
 96344
 96345
 96346
 96347
 96348
 96349
 96350
 96351
 96352
 96353
 96354
 96355
 96356
 96357
 96358
 96359
 96360
 96361
 96362
 96363
 96364
 96365
 96366
 96367
 96368
 96369
 96370
 96371
 96372
 96373
 96374
 96375
 96376
 96377
 96378
 96379
 96380
 96381
 96382
 96383
 96384
 96385
 96386
 96387
 96388
 96389
 96390
 96391
 96392
 96393
 96394
 96395
 96396
 96397
 96398
 96399
 96400
 96401
 96402
 96403
 96404
 96405
 96406
 96407
 96408
 96409
 96410
 96411
 96412
 96413
 96414
 96415
 96416
 96417
 96418
 96419
 96420
 96421
 96422
 96423
 96424
 96425
 96426
 96427
 96428
 96429
 96430
 96431
 96432
 96433
 96434
 96435
 96436
 96437
 96438
 96439
 96440
 96441
 96442
 96443
 96444
 96445
 96446
 96447
 96448
 96449
 96450
 96451
 96452
 96453
 96454
 96455
 96456
 96457
 96458
 96459
 96460
 96461
 96462
 96463
 96464
 96465
 96466
 96467
 96468
 96469
 96470
 96471
 96472
 96473
 96474
 96475
 96476
 96477
 96478
 96479
 96480
 96481
 96482
 96483
 96484
 96485
 96486
 96487
 96488
 96489
 96490
 96491
 96492
 96493
 96494
 96495
 96496
 96497
 96498
 96499
 96500
 96501
 96502
 96503
 96504
 96505
 96506
 96507
 96508
 96509
 96510
 96511
 96512
 96513
 96514
 96515
 96516
 96517
 96518
 96519
 96520
 96521
 96522
 96523
 96524
 96525
 96526
 96527
 96528
 96529
 96530
 96531
 96532
 96533
 96534
 96535
 96536
 96537
 96538
 96539
 96540
 96541
 96542
 96543
 96544
 96545
 96546
 96547
 96548
 96549
 96550
 96551
 96552
 96553
 96554
 96555
 96556
 96557
 96558
 96559
 96560
 96561
 96562
 96563
 96564
 96565
 96566
 96567
 96568
 96569
 96570
 96571
 96572
 96573
 96574
 96575
 96576
 96577
 96578
 96579
 96580
 96581
 96582
 96583
 96584
 96585
 96586
 96587
 96588
 96589
 96590
 96591
 96592
 96593
 96594
 96595
 96596
 96597
 96598
 96599
 96600
 96601
 96602
 96603
 96604
 96605
 96606
 96607
 96608
 96609
 96610
 96611
 96612
 96613
 96614
 96615
 96616
 96617
 96618
 96619
 96620
 96621
 96622
 96623
 96624
 96625
 96626
 96627
 96628
 96629
 96630
 96631
 96632
 96633
 96634
 96635
 96636
 96637
 96638
 96639
 96640
 96641
 96642
 96643
 96644
 96645
 96646
 96647
 96648
 96649
 96650
 96651
 96652
 96653
 96654
 96655
 96656
 96657
 96658
 96659
 96660
 96661
 96662
 96663
 96664
 96665
 96666
 96667
 96668
 96669
 96670
 96671
 96672
 96673
 96674
 96675
 96676
 96677
 96678
 96679
 96680
 96681
 96682
 96683
 96684
 96685
 96686
 96687
 96688
 96689
 96690
 96691
 96692
 96693
 96694
 96695
 96696
 96697
 96698
 96699
 96700
 96701
 96702
 96703
 96704
 96705
 96706
 96707
 96708
 96709
 96710
 96711
 96712
 96713
 96714
 96715
 96716
 96717
 96718
 96719
 96720
 96721
 96722
 96723
 96724
 96725
 96726
 96727
 96728
 96729
 96730
 96731
 96732
 96733
 96734
 96735
 96736
 96737
 96738
 96739
 96740
 96741
 96742
 96743
 96744
 96745
 96746
 96747
 96748
 96749
 96750
 96751
 96752
 96753
 96754
 96755
 96756
 96757
 96758
 96759
 96760
 96761
 96762
 96763
 96764
 96765
 96766
 96767
 96768
 96769
 96770
 96771
 96772
 96773
 96774
 96775
 96776
 96777
 96778
 96779
 96780
 96781
 96782
 96783
 96784
 96785
 96786
 96787
 96788
 96789
 96790
 96791
 96792
 96793
 96794
 96795
 96796
 96797
 96798
 96799
 96800
 96801
 96802
 96803
 96804
 96805
 96806
 96807
 96808
 96809
 96810
 96811
 96812
 96813
 96814
 96815
 96816
 96817
 96818
 96819
 96820
 96821
 96822
 96823
 96824
 96825
 96826
 96827
 96828
 96829
 96830
 96831
 96832
 96833
 96834
 96835
 96836
 96837
 96838
 96839
 96840
 96841
 96842
 96843
 96844
 96845
 96846
 96847
 96848
 96849
 96850
 96851
 96852
 96853
 96854
 96855
 96856
 96857
 96858
 96859
 96860
 96861
 96862
 96863
 96864
 96865
 96866
 96867
 96868
 96869
 96870
 96871
 96872
 96873
 96874
 96875
 96876
 96877
 96878
 96879
 96880
 96881
 96882
 96883
 96884
 96885
 96886
 96887
 96888
 96889
 96890
 96891
 96892
 96893
 96894
 96895
 96896
 96897
 96898
 96899
 96900
 96901
 96902
 96903
 96904
 96905
 96906
 96907
 96908
 96909
 96910
 96911
 96912
 96913
 96914
 96915
 96916
 96917
 96918
 96919
 96920
 96921
 96922
 96923
 96924
 96925
 96926
 96927
 96928
 96929
 96930
 96931
 96932
 96933
 96934
 96935
 96936
 96937
 96938
 96939
 96940
 96941
 96942
 96943
 96944
 96945
 96946
 96947
 96948
 96949
 96950
 96951
 96952
 96953
 96954
 96955
 96956
 96957
 96958
 96959
 96960
 96961
 96962
 96963
 96964
 96965
 96966
 96967
 96968
 96969
 96970
 96971
 96972
 96973
 96974
 96975
 96976
 96977
 96978
 96979
 96980
 96981
 96982
 96983
 96984
 96985
 96986
 96987
 96988
 96989
 96990
 96991
 96992
 96993
 96994
 96995
 96996
 96997
 96998
 96999
 97000
 97001
 97002
 97003
 97004
 97005
 97006
 97007
 97008
 97009
 97010
 97011
 97012
 97013
 97014
 97015
 97016
 97017
 97018
 97019
 97020
 97021
 97022
 97023
 97024
 97025
 97026
 97027
 97028
 97029
 97030
 97031
 97032
 97033
 97034
 97035
 97036
 97037
 97038
 97039
 97040
 97041
 97042
 97043
 97044
 97045
 97046
 97047
 97048
 97049
 97050
 97051
 97052
 97053
 97054
 97055
 97056
 97057
 97058
 97059
 97060
 97061
 97062
 97063
 97064
 97065
 97066
 97067
 97068
 97069
 97070
 97071
 97072
 97073
 97074
 97075
 97076
 97077
 97078
 97079
 97080
 97081
 97082
 97083
 97084
 97085
 97086
 97087
 97088
 97089
 97090
 97091
 97092
 97093
 97094
 97095
 97096
 97097
 97098
 97099
 97100
 97101
 97102
 97103
 97104
 97105
 97106
 97107
 97108
 97109
 97110
 97111
 97112
 97113
 97114
 97115
 97116
 97117
 97118
 97119
 97120
 97121
 97122
 97123
 97124
 97125
 97126
 97127
 97128
 97129
 97130
 97131
 97132
 97133
 97134
 97135
 97136
 97137
 97138
 97139
 97140
 97141
 97142
 97143
 97144
 97145
 97146
 97147
 97148
 97149
 97150
 97151
 97152
 97153
 97154
 97155
 97156
 97157
 97158
 97159
 97160
 97161
 97162
 97163
 97164
 97165
 97166
 97167
 97168
 97169
 97170
 97171
 97172
 97173
 97174
 97175
 97176
 97177
 97178
 97179
 97180
 97181
 97182
 97183
 97184
 97185
 97186
 97187
 97188
 97189
 97190
 97191
 97192
 97193
 97194
 97195
 97196
 97197
 97198
 97199
 97200
 97201
 97202
 97203
 97204
 97205
 97206
 97207
 97208
 97209
 97210
 97211
 97212
 97213
 97214
 97215
 97216
 97217
 97218
 97219
 97220
 97221
 97222
 97223
 97224
 97225
 97226
 97227
 97228
 97229
 97230
 97231
 97232
 97233
 97234
 97235
 97236
 97237
 97238
 97239
 97240
 97241
 97242
 97243
 97244
 97245
 97246
 97247
 97248
 97249
 97250
 97251
 97252
 97253
 97254
 97255
 97256
 97257
 97258
 97259
 97260
 97261
 97262
 97263
 97264
 97265
 97266
 97267
 97268
 97269
 97270
 97271
 97272
 97273
 97274
 97275
 97276
 97277
 97278
 97279
 97280
 97281
 97282
 97283
 97284
 97285
 97286
 97287
 97288
 97289
 97290
 97291
 97292
 97293
 97294
 97295
 97296
 97297
 97298
 97299
 97300
 97301
 97302
 97303
 97304
 97305
 97306
 97307
 97308
 97309
 97310
 97311
 97312
 97313
 97314
 97315
 97316
 97317
 97318
 97319
 97320
 97321
 97322
 97323
 97324
 97325
 97326
 97327
 97328
 97329
 97330
 97331
 97332
 97333
 97334
 97335
 97336
 97337
 97338
 97339
 97340
 97341
 97342
 97343
 97344
 97345
 97346
 97347
 97348
 97349
 97350
 97351
 97352
 97353
 97354
 97355
 97356
 97357
 97358
 97359
 97360
 97361
 97362
 97363
 97364
 97365
 97366
 97367
 97368
 97369
 97370
 97371
 97372
 97373
 97374
 97375
 97376
 97377
 97378
 97379
 97380
 97381
 97382
 97383
 97384
 97385
 97386
 97387
 97388
 97389
 97390
 97391
 97392
 97393
 97394
 97395
 97396
 97397
 97398
 97399
 97400
 97401
 97402
 97403
 97404
 97405
 97406
 97407
 97408
 97409
 97410
 97411
 97412
 97413
 97414
 97415
 97416
 97417
 97418
 97419
 97420
 97421
 97422
 97423
 97424
 97425
 97426
 97427
 97428
 97429
 97430
 97431
 97432
 97433
 97434
 97435
 97436
 97437
 97438
 97439
 97440
 97441
 97442
 97443
 97444
 97445
 97446
 97447
 97448
 97449
 97450
 97451
 97452
 97453
 97454
 97455
 97456
 97457
 97458
 97459
 97460
 97461
 97462
 97463
 97464
 97465
 97466
 97467
 97468
 97469
 97470
 97471
 97472
 97473
 97474
 97475
 97476
 97477
 97478
 97479
 97480
 97481
 97482
 97483
 97484
 97485
 97486
 97487
 97488
 97489
 97490
 97491
 97492
 97493
 97494
 97495
 97496
 97497
 97498
 97499
 97500
 97501
 97502
 97503
 97504
 97505
 97506
 97507
 97508
 97509
 97510
 97511
 97512
 97513
 97514
 97515
 97516
 97517
 97518
 97519
 97520
 97521
 97522
 97523
 97524
 97525
 97526
 97527
 97528
 97529
 97530
 97531
 97532
 97533
 97534
 97535
 97536
 97537
 97538
 97539
 97540
 97541
 97542
 97543
 97544
 97545
 97546
 97547
 97548
 97549
 97550
 97551
 97552
 97553
 97554
 97555
 97556
 97557
 97558
 97559
 97560
 97561
 97562
 97563
 97564
 97565
 97566
 97567
 97568
 97569
 97570
 97571
 97572
 97573
 97574
 97575
 97576
 97577
 97578
 97579
 97580
 97581
 97582
 97583
 97584
 97585
 97586
 97587
 97588
 97589
 97590
 97591
 97592
 97593
 97594
 97595
 97596
 97597
 97598
 97599
 97600
 97601
 97602
 97603
 97604
 97605
 97606
 97607
 97608
 97609
 97610
 97611
 97612
 97613
 97614
 97615
 97616
 97617
 97618
 97619
 97620
 97621
 97622
 97623
 97624
 97625
 97626
 97627
 97628
 97629
 97630
 97631
 97632
 97633
 97634
 97635
 97636
 97637
 97638
 97639
 97640
 97641
 97642
 97643
 97644
 97645
 97646
 97647
 97648
 97649
 97650
 97651
 97652
 97653
 97654
 97655
 97656
 97657
 97658
 97659
 97660
 97661
 97662
 97663
 97664
 97665
 97666
 97667
 97668
 97669
 97670
 97671
 97672
 97673
 97674
 97675
 97676
 97677
 97678
 97679
 97680
 97681
 97682
 97683
 97684
 97685
 97686
 97687
 97688
 97689
 97690
 97691
 97692
 97693
 97694
 97695
 97696
 97697
 97698
 97699
 97700
 97701
 97702
 97703
 97704
 97705
 97706
 97707
 97708
 97709
 97710
 97711
 97712
 97713
 97714
 97715
 97716
 97717
 97718
 97719
 97720
 97721
 97722
 97723
 97724
 97725
 97726
 97727
 97728
 97729
 97730
 97731
 97732
 97733
 97734
 97735
 97736
 97737
 97738
 97739
 97740
 97741
 97742
 97743
 97744
 97745
 97746
 97747
 97748
 97749
 97750
 97751
 97752
 97753
 97754
 97755
 97756
 97757
 97758
 97759
 97760
 97761
 97762
 97763
 97764
 97765
 97766
 97767
 97768
 97769
 97770
 97771
 97772
 97773
 97774
 97775
 97776
 97777
 97778
 97779
 97780
 97781
 97782
 97783
 97784
 97785
 97786
 97787
 97788
 97789
 97790
 97791
 97792
 97793
 97794
 97795
 97796
 97797
 97798
 97799
 97800
 97801
 97802
 97803
 97804
 97805
 97806
 97807
 97808
 97809
 97810
 97811
 97812
 97813
 97814
 97815
 97816
 97817
 97818
 97819
 97820
 97821
 97822
 97823
 97824
 97825
 97826
 97827
 97828
 97829
 97830
 97831
 97832
 97833
 97834
 97835
 97836
 97837
 97838
 97839
 97840
 97841
 97842
 97843
 97844
 97845
 97846
 97847
 97848
 97849
 97850
 97851
 97852
 97853
 97854
 97855
 97856
 97857
 97858
 97859
 97860
 97861
 97862
 97863
 97864
 97865
 97866
 97867
 97868
 97869
 97870
 97871
 97872
 97873
 97874
 97875
 97876
 97877
 97878
 97879
 97880
 97881
 97882
 97883
 97884
 97885
 97886
 97887
 97888
 97889
 97890
 97891
 97892
 97893
 97894
 97895
 97896
 97897
 97898
 97899
 97900
 97901
 97902
 97903
 97904
 97905
 97906
 97907
 97908
 97909
 97910
 97911
 97912
 97913
 97914
 97915
 97916
 97917
 97918
 97919
 97920
 97921
 97922
 97923
 97924
 97925
 97926
 97927
 97928
 97929
 97930
 97931
 97932
 97933
 97934
 97935
 97936
 97937
 97938
 97939
 97940
 97941
 97942
 97943
 97944
 97945
 97946
 97947
 97948
 97949
 97950
 97951
 97952
 97953
 97954
 97955
 97956
 97957
 97958
 97959
 97960
 97961
 97962
 97963
 97964
 97965
 97966
 97967
 97968
 97969
 97970
 97971
 97972
 97973
 97974
 97975
 97976
 97977
 97978
 97979
 97980
 97981
 97982
 97983
 97984
 97985
 97986
 97987
 97988
 97989
 97990
 97991
 97992
 97993
 97994
 97995
 97996
 97997
 97998
 97999
 98000
 98001
 98002
 98003
 98004
 98005
 98006
 98007
 98008
 98009
 98010
 98011
 98012
 98013
 98014
 98015
 98016
 98017
 98018
 98019
 98020
 98021
 98022
 98023
 98024
 98025
 98026
 98027
 98028
 98029
 98030
 98031
 98032
 98033
 98034
 98035
 98036
 98037
 98038
 98039
 98040
 98041
 98042
 98043
 98044
 98045
 98046
 98047
 98048
 98049
 98050
 98051
 98052
 98053
 98054
 98055
 98056
 98057
 98058
 98059
 98060
 98061
 98062
 98063
 98064
 98065
 98066
 98067
 98068
 98069
 98070
 98071
 98072
 98073
 98074
 98075
 98076
 98077
 98078
 98079
 98080
 98081
 98082
 98083
 98084
 98085
 98086
 98087
 98088
 98089
 98090
 98091
 98092
 98093
 98094
 98095
 98096
 98097
 98098
 98099
 98100
 98101
 98102
 98103
 98104
 98105
 98106
 98107
 98108
 98109
 98110
 98111
 98112
 98113
 98114
 98115
 98116
 98117
 98118
 98119
 98120
 98121
 98122
 98123
 98124
 98125
 98126
 98127
 98128
 98129
 98130
 98131
 98132
 98133
 98134
 98135
 98136
 98137
 98138
 98139
 98140
 98141
 98142
 98143
 98144
 98145
 98146
 98147
 98148
 98149
 98150
 98151
 98152
 98153
 98154
 98155
 98156
 98157
 98158
 98159
 98160
 98161
 98162
 98163
 98164
 98165
 98166
 98167
 98168
 98169
 98170
 98171
 98172
 98173
 98174
 98175
 98176
 98177
 98178
 98179
 98180
 98181
 98182
 98183
 98184
 98185
 98186
 98187
 98188
 98189
 98190
 98191
 98192
 98193
 98194
 98195
 98196
 98197
 98198
 98199
 98200
 98201
 98202
 98203
 98204
 98205
 98206
 98207
 98208
 98209
 98210
 98211
 98212
 98213
 98214
 98215
 98216
 98217
 98218
 98219
 98220
 98221
 98222
 98223
 98224
 98225
 98226
 98227
 98228
 98229
 98230
 98231
 98232
 98233
 98234
 98235
 98236
 98237
 98238
 98239
 98240
 98241
 98242
 98243
 98244
 98245
 98246
 98247
 98248
 98249
 98250
 98251
 98252
 98253
 98254
 98255
 98256
 98257
 98258
 98259
 98260
 98261
 98262
 98263
 98264
 98265
 98266
 98267
 98268
 98269
 98270
 98271
 98272
 98273
 98274
 98275
 98276
 98277
 98278
 98279
 98280
 98281
 98282
 98283
 98284
 98285
 98286
 98287
 98288
 98289
 98290
 98291
 98292
 98293
 98294
 98295
 98296
 98297
 98298
 98299
 98300
 98301
 98302
 98303
 98304
 98305
 98306
 98307
 98308
 98309
 98310
 98311
 98312
 98313
 98314
 98315
 98316
 98317
 98318
 98319
 98320
 98321
 98322
 98323
 98324
 98325
 98326
 98327
 98328
 98329
 98330
 98331
 98332
 98333
 98334
 98335
 98336
 98337
 98338
 98339
 98340
 98341
 98342
 98343
 98344
 98345
 98346
 98347
 98348
 98349
 98350
 98351
 98352
 98353
 98354
 98355
 98356
 98357
 98358
 98359
 98360
 98361
 98362
 98363
 98364
 98365
 98366
 98367
 98368
 98369
 98370
 98371
 98372
 98373
 98374
 98375
 98376
 98377
 98378
 98379
 98380
 98381
 98382
 98383
 98384
 98385
 98386
 98387
 98388
 98389
 98390
 98391
 98392
 98393
 98394
 98395
 98396
 98397
 98398
 98399
 98400
 98401
 98402
 98403
 98404
 98405
 98406
 98407
 98408
 98409
 98410
 98411
 98412
 98413
 98414
 98415
 98416
 98417
 98418
 98419
 98420
 98421
 98422
 98423
 98424
 98425
 98426
 98427
 98428
 98429
 98430
 98431
 98432
 98433
 98434
 98435
 98436
 98437
 98438
 98439
 98440
 98441
 98442
 98443
 98444
 98445
 98446
 98447
 98448
 98449
 98450
 98451
 98452
 98453
 98454
 98455
 98456
 98457
 98458
 98459
 98460
 98461
 98462
 98463
 98464
 98465
 98466
 98467
 98468
 98469
 98470
 98471
 98472
 98473
 98474
 98475
 98476
 98477
 98478
 98479
 98480
 98481
 98482
 98483
 98484
 98485
 98486
 98487
 98488
 98489
 98490
 98491
 98492
 98493
 98494
 98495
 98496
 98497
 98498
 98499
 98500
 98501
 98502
 98503
 98504
 98505
 98506
 98507
 98508
 98509
 98510
 98511
 98512
 98513
 98514
 98515
 98516
 98517
 98518
 98519
 98520
 98521
 98522
 98523
 98524
 98525
 98526
 98527
 98528
 98529
 98530
 98531
 98532
 98533
 98534
 98535
 98536
 98537
 98538
 98539
 98540
 98541
 98542
 98543
 98544
 98545
 98546
 98547
 98548
 98549
 98550
 98551
 98552
 98553
 98554
 98555
 98556
 98557
 98558
 98559
 98560
 98561
 98562
 98563
 98564
 98565
 98566
 98567
 98568
 98569
 98570
 98571
 98572
 98573
 98574
 98575
 98576
 98577
 98578
 98579
 98580
 98581
 98582
 98583
 98584
 98585
 98586
 98587
 98588
 98589
 98590
 98591
 98592
 98593
 98594
 98595
 98596
 98597
 98598
 98599
 98600
 98601
 98602
 98603
 98604
 98605
 98606
 98607
 98608
 98609
 98610
 98611
 98612
 98613
 98614
 98615
 98616
 98617
 98618
 98619
 98620
 98621
 98622
 98623
 98624
 98625
 98626
 98627
 98628
 98629
 98630
 98631
 98632
 98633
 98634
 98635
 98636
 98637
 98638
 98639
 98640
 98641
 98642
 98643
 98644
 98645
 98646
 98647
 98648
 98649
 98650
 98651
 98652
 98653
 98654
 98655
 98656
 98657
 98658
 98659
 98660
 98661
 98662
 98663
 98664
 98665
 98666
 98667
 98668
 98669
 98670
 98671
 98672
 98673
 98674
 98675
 98676
 98677
 98678
 98679
 98680
 98681
 98682
 98683
 98684
 98685
 98686
 98687
 98688
 98689
 98690
 98691
 98692
 98693
 98694
 98695
 98696
 98697
 98698
 98699
 98700
 98701
 98702
 98703
 98704
 98705
 98706
 98707
 98708
 98709
 98710
 98711
 98712
 98713
 98714
 98715
 98716
 98717
 98718
 98719
 98720
 98721
 98722
 98723
 98724
 98725
 98726
 98727
 98728
 98729
 98730
 98731
 98732
 98733
 98734
 98735
 98736
 98737
 98738
 98739
 98740
 98741
 98742
 98743
 98744
 98745
 98746
 98747
 98748
 98749
 98750
 98751
 98752
 98753
 98754
 98755
 98756
 98757
 98758
 98759
 98760
 98761
 98762
 98763
 98764
 98765
 98766
 98767
 98768
 98769
 98770
 98771
 98772
 98773
 98774
 98775
 98776
 98777
 98778
 98779
 98780
 98781
 98782
 98783
 98784
 98785
 98786
 98787
 98788
 98789
 98790
 98791
 98792
 98793
 98794
 98795
 98796
 98797
 98798
 98799
 98800
 98801
 98802
 98803
 98804
 98805
 98806
 98807
 98808
 98809
 98810
 98811
 98812
 98813
 98814
 98815
 98816
 98817
 98818
 98819
 98820
 98821
 98822
 98823
 98824
 98825
 98826
 98827
 98828
 98829
 98830
 98831
 98832
 98833
 98834
 98835
 98836
 98837
 98838
 98839
 98840
 98841
 98842
 98843
 98844
 98845
 98846
 98847
 98848
 98849
 98850
 98851
 98852
 98853
 98854
 98855
 98856
 98857
 98858
 98859
 98860
 98861
 98862
 98863
 98864
 98865
 98866
 98867
 98868
 98869
 98870
 98871
 98872
 98873
 98874
 98875
 98876
 98877
 98878
 98879
 98880
 98881
 98882
 98883
 98884
 98885
 98886
 98887
 98888
 98889
 98890
 98891
 98892
 98893
 98894
 98895
 98896
 98897
 98898
 98899
 98900
 98901
 98902
 98903
 98904
 98905
 98906
 98907
 98908
 98909
 98910
 98911
 98912
 98913
 98914
 98915
 98916
 98917
 98918
 98919
 98920
 98921
 98922
 98923
 98924
 98925
 98926
 98927
 98928
 98929
 98930
 98931
 98932
 98933
 98934
 98935
 98936
 98937
 98938
 98939
 98940
 98941
 98942
 98943
 98944
 98945
 98946
 98947
 98948
 98949
 98950
 98951
 98952
 98953
 98954
 98955
 98956
 98957
 98958
 98959
 98960
 98961
 98962
 98963
 98964
 98965
 98966
 98967
 98968
 98969
 98970
 98971
 98972
 98973
 98974
 98975
 98976
 98977
 98978
 98979
 98980
 98981
 98982
 98983
 98984
 98985
 98986
 98987
 98988
 98989
 98990
 98991
 98992
 98993
 98994
 98995
 98996
 98997
 98998
 98999
 99000
 99001
 99002
 99003
 99004
 99005
 99006
 99007
 99008
 99009
 99010
 99011
 99012
 99013
 99014
 99015
 99016
 99017
 99018
 99019
 99020
 99021
 99022
 99023
 99024
 99025
 99026
 99027
 99028
 99029
 99030
 99031
 99032
 99033
 99034
 99035
 99036
 99037
 99038
 99039
 99040
 99041
 99042
 99043
 99044
 99045
 99046
 99047
 99048
 99049
 99050
 99051
 99052
 99053
 99054
 99055
 99056
 99057
 99058
 99059
 99060
 99061
 99062
 99063
 99064
 99065
 99066
 99067
 99068
 99069
 99070
 99071
 99072
 99073
 99074
 99075
 99076
 99077
 99078
 99079
 99080
 99081
 99082
 99083
 99084
 99085
 99086
 99087
 99088
 99089
 99090
 99091
 99092
 99093
 99094
 99095
 99096
 99097
 99098
 99099
 99100
 99101
 99102
 99103
 99104
 99105
 99106
 99107
 99108
 99109
 99110
 99111
 99112
 99113
 99114
 99115
 99116
 99117
 99118
 99119
 99120
 99121
 99122
 99123
 99124
 99125
 99126
 99127
 99128
 99129
 99130
 99131
 99132
 99133
 99134
 99135
 99136
 99137
 99138
 99139
 99140
 99141
 99142
 99143
 99144
 99145
 99146
 99147
 99148
 99149
 99150
 99151
 99152
 99153
 99154
 99155
 99156
 99157
 99158
 99159
 99160
 99161
 99162
 99163
 99164
 99165
 99166
 99167
 99168
 99169
 99170
 99171
 99172
 99173
 99174
 99175
 99176
 99177
 99178
 99179
 99180
 99181
 99182
 99183
 99184
 99185
 99186
 99187
 99188
 99189
 99190
 99191
 99192
 99193
 99194
 99195
 99196
 99197
 99198
 99199
 99200
 99201
 99202
 99203
 99204
 99205
 99206
 99207
 99208
 99209
 99210
 99211
 99212
 99213
 99214
 99215
 99216
 99217
 99218
 99219
 99220
 99221
 99222
 99223
 99224
 99225
 99226
 99227
 99228
 99229
 99230
 99231
 99232
 99233
 99234
 99235
 99236
 99237
 99238
 99239
 99240
 99241
 99242
 99243
 99244
 99245
 99246
 99247
 99248
 99249
 99250
 99251
 99252
 99253
 99254
 99255
 99256
 99257
 99258
 99259
 99260
 99261
 99262
 99263
 99264
 99265
 99266
 99267
 99268
 99269
 99270
 99271
 99272
 99273
 99274
 99275
 99276
 99277
 99278
 99279
 99280
 99281
 99282
 99283
 99284
 99285
 99286
 99287
 99288
 99289
 99290
 99291
 99292
 99293
 99294
 99295
 99296
 99297
 99298
 99299
 99300
 99301
 99302
 99303
 99304
 99305
 99306
 99307
 99308
 99309
 99310
 99311
 99312
 99313
 99314
 99315
 99316
 99317
 99318
 99319
 99320
 99321
 99322
 99323
 99324
 99325
 99326
 99327
 99328
 99329
 99330
 99331
 99332
 99333
 99334
 99335
 99336
 99337
 99338
 99339
 99340
 99341
 99342
 99343
 99344
 99345
 99346
 99347
 99348
 99349
 99350
 99351
 99352
 99353
 99354
 99355
 99356
 99357
 99358
 99359
 99360
 99361
 99362
 99363
 99364
 99365
 99366
 99367
 99368
 99369
 99370
 99371
 99372
 99373
 99374
 99375
 99376
 99377
 99378
 99379
 99380
 99381
 99382
 99383
 99384
 99385
 99386
 99387
 99388
 99389
 99390
 99391
 99392
 99393
 99394
 99395
 99396
 99397
 99398
 99399
 99400
 99401
 99402
 99403
 99404
 99405
 99406
 99407
 99408
 99409
 99410
 99411
 99412
 99413
 99414
 99415
 99416
 99417
 99418
 99419
 99420
 99421
 99422
 99423
 99424
 99425
 99426
 99427
 99428
 99429
 99430
 99431
 99432
 99433
 99434
 99435
 99436
 99437
 99438
 99439
 99440
 99441
 99442
 99443
 99444
 99445
 99446
 99447
 99448
 99449
 99450
 99451
 99452
 99453
 99454
 99455
 99456
 99457
 99458
 99459
 99460
 99461
 99462
 99463
 99464
 99465
 99466
 99467
 99468
 99469
 99470
 99471
 99472
 99473
 99474
 99475
 99476
 99477
 99478
 99479
 99480
 99481
 99482
 99483
 99484
 99485
 99486
 99487
 99488
 99489
 99490
 99491
 99492
 99493
 99494
 99495
 99496
 99497
 99498
 99499
 99500
 99501
 99502
 99503
 99504
 99505
 99506
 99507
 99508
 99509
 99510
 99511
 99512
 99513
 99514
 99515
 99516
 99517
 99518
 99519
 99520
 99521
 99522
 99523
 99524
 99525
 99526
 99527
 99528
 99529
 99530
 99531
 99532
 99533
 99534
 99535
 99536
 99537
 99538
 99539
 99540
 99541
 99542
 99543
 99544
 99545
 99546
 99547
 99548
 99549
 99550
 99551
 99552
 99553
 99554
 99555
 99556
 99557
 99558
 99559
 99560
 99561
 99562
 99563
 99564
 99565
 99566
 99567
 99568
 99569
 99570
 99571
 99572
 99573
 99574
 99575
 99576
 99577
 99578
 99579
 99580
 99581
 99582
 99583
 99584
 99585
 99586
 99587
 99588
 99589
 99590
 99591
 99592
 99593
 99594
 99595
 99596
 99597
 99598
 99599
 99600
 99601
 99602
 99603
 99604
 99605
 99606
 99607
 99608
 99609
 99610
 99611
 99612
 99613
 99614
 99615
 99616
 99617
 99618
 99619
 99620
 99621
 99622
 99623
 99624
 99625
 99626
 99627
 99628
 99629
 99630
 99631
 99632
 99633
 99634
 99635
 99636
 99637
 99638
 99639
 99640
 99641
 99642
 99643
 99644
 99645
 99646
 99647
 99648
 99649
 99650
 99651
 99652
 99653
 99654
 99655
 99656
 99657
 99658
 99659
 99660
 99661
 99662
 99663
 99664
 99665
 99666
 99667
 99668
 99669
 99670
 99671
 99672
 99673
 99674
 99675
 99676
 99677
 99678
 99679
 99680
 99681
 99682
 99683
 99684
 99685
 99686
 99687
 99688
 99689
 99690
 99691
 99692
 99693
 99694
 99695
 99696
 99697
 99698
 99699
 99700
 99701
 99702
 99703
 99704
 99705
 99706
 99707
 99708
 99709
 99710
 99711
 99712
 99713
 99714
 99715
 99716
 99717
 99718
 99719
 99720
 99721
 99722
 99723
 99724
 99725
 99726
 99727
 99728
 99729
 99730
 99731
 99732
 99733
 99734
 99735
 99736
 99737
 99738
 99739
 99740
 99741
 99742
 99743
 99744
 99745
 99746
 99747
 99748
 99749
 99750
 99751
 99752
 99753
 99754
 99755
 99756
 99757
 99758
 99759
 99760
 99761
 99762
 99763
 99764
 99765
 99766
 99767
 99768
 99769
 99770
 99771
 99772
 99773
 99774
 99775
 99776
 99777
 99778
 99779
 99780
 99781
 99782
 99783
 99784
 99785
 99786
 99787
 99788
 99789
 99790
 99791
 99792
 99793
 99794
 99795
 99796
 99797
 99798
 99799
 99800
 99801
 99802
 99803
 99804
 99805
 99806
 99807
 99808
 99809
 99810
 99811
 99812
 99813
 99814
 99815
 99816
 99817
 99818
 99819
 99820
 99821
 99822
 99823
 99824
 99825
 99826
 99827
 99828
 99829
 99830
 99831
 99832
 99833
 99834
 99835
 99836
 99837
 99838
 99839
 99840
 99841
 99842
 99843
 99844
 99845
 99846
 99847
 99848
 99849
 99850
 99851
 99852
 99853
 99854
 99855
 99856
 99857
 99858
 99859
 99860
 99861
 99862
 99863
 99864
 99865
 99866
 99867
 99868
 99869
 99870
 99871
 99872
 99873
 99874
 99875
 99876
 99877
 99878
 99879
 99880
 99881
 99882
 99883
 99884
 99885
 99886
 99887
 99888
 99889
 99890
 99891
 99892
 99893
 99894
 99895
 99896
 99897
 99898
 99899
 99900
 99901
 99902
 99903
 99904
 99905
 99906
 99907
 99908
 99909
 99910
 99911
 99912
 99913
 99914
 99915
 99916
 99917
 99918
 99919
 99920
 99921
 99922
 99923
 99924
 99925
 99926
 99927
 99928
 99929
 99930
 99931
 99932
 99933
 99934
 99935
 99936
 99937
 99938
 99939
 99940
 99941
 99942
 99943
 99944
 99945
 99946
 99947
 99948
 99949
 99950
 99951
 99952
 99953
 99954
 99955
 99956
 99957
 99958
 99959
 99960
 99961
 99962
 99963
 99964
 99965
 99966
 99967
 99968
 99969
 99970
 99971
 99972
 99973
 99974
 99975
 99976
 99977
 99978
 99979
 99980
 99981
 99982
 99983
 99984
 99985
 99986
 99987
 99988
 99989
 99990
 99991
 99992
 99993
 99994
 99995
 99996
 99997
 99998
 99999
100000
100001
100002
100003
100004
100005
100006
100007
100008
100009
100010
100011
100012
100013
100014
100015
100016
100017
100018
100019
100020
100021
100022
100023
100024
100025
100026
100027
100028
100029
100030
100031
100032
100033
100034
100035
100036
100037
100038
100039
100040
100041
100042
100043
100044
100045
100046
100047
100048
100049
100050
100051
100052
100053
100054
100055
100056
100057
100058
100059
100060
100061
100062
100063
100064
100065
100066
100067
100068
100069
100070
100071
100072
100073
100074
100075
100076
100077
100078
100079
100080
100081
100082
100083
100084
100085
100086
100087
100088
100089
100090
100091
100092
100093
100094
100095
100096
100097
100098
100099
100100
100101
100102
100103
100104
100105
100106
100107
100108
100109
100110
100111
100112
100113
100114
100115
100116
100117
100118
100119
100120
100121
100122
100123
100124
100125
100126
100127
100128
100129
100130
100131
100132
100133
100134
100135
100136
100137
100138
100139
100140
100141
100142
100143
100144
100145
100146
100147
100148
100149
100150
100151
100152
100153
100154
100155
100156
100157
100158
100159
100160
100161
100162
100163
100164
100165
100166
100167
100168
100169
100170
100171
100172
100173
100174
100175
100176
100177
100178
100179
100180
100181
100182
100183
100184
100185
100186
100187
100188
100189
100190
100191
100192
100193
100194
100195
100196
100197
100198
100199
100200
100201
100202
100203
100204
100205
100206
100207
100208
100209
100210
100211
100212
100213
100214
100215
100216
100217
100218
100219
100220
100221
100222
100223
100224
100225
100226
100227
100228
100229
100230
100231
100232
100233
100234
100235
100236
100237
100238
100239
100240
100241
100242
100243
100244
100245
100246
100247
100248
100249
100250
100251
100252
100253
100254
100255
100256
100257
100258
100259
100260
100261
100262
100263
100264
100265
100266
100267
100268
100269
100270
100271
100272
100273
100274
100275
100276
100277
100278
100279
100280
100281
100282
100283
100284
100285
100286
100287
100288
100289
100290
100291
100292
100293
100294
100295
100296
100297
100298
100299
100300
100301
100302
100303
100304
100305
100306
100307
100308
100309
100310
100311
100312
100313
100314
100315
100316
100317
100318
100319
100320
100321
100322
100323
100324
100325
100326
100327
100328
100329
100330
100331
100332
100333
100334
100335
100336
100337
100338
100339
100340
100341
100342
100343
100344
100345
100346
100347
100348
100349
100350
100351
100352
100353
100354
100355
100356
100357
100358
100359
100360
100361
100362
100363
100364
100365
100366
100367
100368
100369
100370
100371
100372
100373
100374
100375
100376
100377
100378
100379
100380
100381
100382
100383
100384
100385
100386
100387
100388
100389
100390
100391
100392
100393
100394
100395
100396
100397
100398
100399
100400
100401
100402
100403
100404
100405
100406
100407
100408
100409
100410
100411
100412
100413
100414
100415
100416
100417
100418
100419
100420
100421
100422
100423
100424
100425
100426
100427
100428
100429
100430
100431
100432
100433
100434
100435
100436
100437
100438
100439
100440
100441
100442
100443
100444
100445
100446
100447
100448
100449
100450
100451
100452
100453
100454
100455
100456
100457
100458
100459
100460
100461
100462
100463
100464
100465
100466
100467
100468
100469
100470
100471
100472
100473
100474
100475
100476
100477
100478
100479
100480
100481
100482
100483
100484
100485
100486
100487
100488
100489
100490
100491
100492
100493
100494
100495
100496
100497
100498
100499
100500
100501
100502
100503
100504
100505
100506
100507
100508
100509
100510
100511
100512
100513
100514
100515
100516
100517
100518
100519
100520
100521
100522
100523
100524
100525
100526
100527
100528
100529
100530
100531
100532
100533
100534
100535
100536
100537
100538
100539
100540
100541
100542
100543
100544
100545
100546
100547
100548
100549
100550
100551
100552
100553
100554
100555
100556
100557
100558
100559
100560
100561
100562
100563
100564
100565
100566
100567
100568
100569
100570
100571
100572
100573
100574
100575
100576
100577
100578
100579
100580
100581
100582
100583
100584
100585
100586
100587
100588
100589
100590
100591
100592
100593
100594
100595
100596
100597
100598
100599
100600
100601
100602
100603
100604
100605
100606
100607
100608
100609
100610
100611
100612
100613
100614
100615
100616
100617
100618
100619
100620
100621
100622
100623
100624
100625
100626
100627
100628
100629
100630
100631
100632
100633
100634
100635
100636
100637
100638
100639
100640
100641
100642
100643
100644
100645
100646
100647
100648
100649
100650
100651
100652
100653
100654
100655
100656
100657
100658
100659
100660
100661
100662
100663
100664
100665
100666
100667
100668
100669
100670
100671
100672
100673
100674
100675
100676
100677
100678
100679
100680
100681
100682
100683
100684
100685
100686
100687
100688
100689
100690
100691
100692
100693
100694
100695
100696
100697
100698
100699
100700
100701
100702
100703
100704
100705
100706
100707
100708
100709
100710
100711
100712
100713
100714
100715
100716
100717
100718
100719
100720
100721
100722
100723
100724
100725
100726
100727
100728
100729
100730
100731
100732
100733
100734
100735
100736
100737
100738
100739
100740
100741
100742
100743
100744
100745
100746
100747
100748
100749
100750
100751
100752
100753
100754
100755
100756
100757
100758
100759
100760
100761
100762
100763
100764
100765
100766
100767
100768
100769
100770
100771
100772
100773
100774
100775
100776
100777
100778
100779
100780
100781
100782
100783
100784
100785
100786
100787
100788
100789
100790
100791
100792
100793
100794
100795
100796
100797
100798
100799
100800
100801
100802
100803
100804
100805
100806
100807
100808
100809
100810
100811
100812
100813
100814
100815
100816
100817
100818
100819
100820
100821
100822
100823
100824
100825
100826
100827
100828
100829
100830
100831
100832
100833
100834
100835
100836
100837
100838
100839
100840
100841
100842
100843
100844
100845
100846
100847
100848
100849
100850
100851
100852
100853
100854
100855
100856
100857
100858
100859
100860
100861
100862
100863
100864
100865
100866
100867
100868
100869
100870
100871
100872
100873
100874
100875
100876
100877
100878
100879
100880
100881
100882
100883
100884
100885
100886
100887
100888
100889
100890
100891
100892
100893
100894
100895
100896
100897
100898
100899
100900
100901
100902
100903
100904
100905
100906
100907
100908
100909
100910
100911
100912
100913
100914
100915
100916
100917
100918
100919
100920
100921
100922
100923
100924
100925
100926
100927
100928
100929
100930
100931
100932
100933
100934
100935
100936
100937
100938
100939
100940
100941
100942
100943
100944
100945
100946
100947
100948
100949
100950
100951
100952
100953
100954
100955
100956
100957
100958
100959
100960
100961
100962
100963
100964
100965
100966
100967
100968
100969
100970
100971
100972
100973
100974
100975
100976
100977
100978
100979
100980
100981
100982
100983
100984
100985
100986
100987
100988
100989
100990
100991
100992
100993
100994
100995
100996
100997
100998
100999
101000
101001
101002
101003
101004
101005
101006
101007
101008
101009
101010
101011
101012
101013
101014
101015
101016
101017
101018
101019
101020
101021
101022
101023
101024
101025
101026
101027
101028
101029
101030
101031
101032
101033
101034
101035
101036
101037
101038
101039
101040
101041
101042
101043
101044
101045
101046
101047
101048
101049
101050
101051
101052
101053
101054
101055
101056
101057
101058
101059
101060
101061
101062
101063
101064
101065
101066
101067
101068
101069
101070
101071
101072
101073
101074
101075
101076
101077
101078
101079
101080
101081
101082
101083
101084
101085
101086
101087
101088
101089
101090
101091
101092
101093
101094
101095
101096
101097
101098
101099
101100
101101
101102
101103
101104
101105
101106
101107
101108
101109
101110
101111
101112
101113
101114
101115
101116
101117
101118
101119
101120
101121
101122
101123
101124
101125
101126
101127
101128
101129
101130
101131
101132
101133
101134
101135
101136
101137
101138
101139
101140
101141
101142
101143
101144
101145
101146
101147
101148
101149
101150
101151
101152
101153
101154
101155
101156
101157
101158
101159
101160
101161
101162
101163
101164
101165
101166
101167
101168
101169
101170
101171
101172
101173
101174
101175
101176
101177
101178
101179
101180
101181
101182
101183
101184
101185
101186
101187
101188
101189
101190
101191
101192
101193
101194
101195
101196
101197
101198
101199
101200
101201
101202
101203
101204
101205
101206
101207
101208
101209
101210
101211
101212
101213
101214
101215
101216
101217
101218
101219
101220
101221
101222
101223
101224
101225
101226
101227
101228
101229
101230
101231
101232
101233
101234
101235
101236
101237
101238
101239
101240
101241
101242
101243
101244
101245
101246
101247
101248
101249
101250
101251
101252
101253
101254
101255
101256
101257
101258
101259
101260
101261
101262
101263
101264
101265
101266
101267
101268
101269
101270
101271
101272
101273
101274
101275
101276
101277
101278
101279
101280
101281
101282
101283
101284
101285
101286
101287
101288
101289
101290
101291
101292
101293
101294
101295
101296
101297
101298
101299
101300
101301
101302
101303
101304
101305
101306
101307
101308
101309
101310
101311
101312
101313
101314
101315
101316
101317
101318
101319
101320
101321
101322
101323
101324
101325
101326
101327
101328
101329
101330
101331
101332
101333
101334
101335
101336
101337
101338
101339
101340
101341
101342
101343
101344
101345
101346
101347
101348
101349
101350
101351
101352
101353
101354
101355
101356
101357
101358
101359
101360
101361
101362
101363
101364
101365
101366
101367
101368
101369
101370
101371
101372
101373
101374
101375
101376
101377
101378
101379
101380
101381
101382
101383
101384
101385
101386
101387
101388
101389
101390
101391
101392
101393
101394
101395
101396
101397
101398
101399
101400
101401
101402
101403
101404
101405
101406
101407
101408
101409
101410
101411
101412
101413
101414
101415
101416
101417
101418
101419
101420
101421
101422
101423
101424
101425
101426
101427
101428
101429
101430
101431
101432
101433
101434
101435
101436
101437
101438
101439
101440
101441
101442
101443
101444
101445
101446
101447
101448
101449
101450
101451
101452
101453
101454
101455
101456
101457
101458
101459
101460
101461
101462
101463
101464
101465
101466
101467
101468
101469
101470
101471
101472
101473
101474
101475
101476
101477
101478
101479
101480
101481
101482
101483
101484
101485
101486
101487
101488
101489
101490
101491
101492
101493
101494
101495
101496
101497
101498
101499
101500
101501
101502
101503
101504
101505
101506
101507
101508
101509
101510
101511
101512
101513
101514
101515
101516
101517
101518
101519
101520
101521
101522
101523
101524
101525
101526
101527
101528
101529
101530
101531
101532
101533
101534
101535
101536
101537
101538
101539
101540
101541
101542
101543
101544
101545
101546
101547
101548
101549
101550
101551
101552
101553
101554
101555
101556
101557
101558
101559
101560
101561
101562
101563
101564
101565
101566
101567
101568
101569
101570
101571
101572
101573
101574
101575
101576
101577
101578
101579
101580
101581
101582
101583
101584
101585
101586
101587
101588
101589
101590
101591
101592
101593
101594
101595
101596
101597
101598
101599
101600
101601
101602
101603
101604
101605
101606
101607
101608
101609
101610
101611
101612
101613
101614
101615
101616
101617
101618
101619
101620
101621
101622
101623
101624
101625
101626
101627
101628
101629
101630
101631
101632
101633
101634
101635
101636
101637
101638
101639
101640
101641
101642
101643
101644
101645
101646
101647
101648
101649
101650
101651
101652
101653
101654
101655
101656
101657
101658
101659
101660
101661
101662
101663
101664
101665
101666
101667
101668
101669
101670
101671
101672
101673
101674
101675
101676
101677
101678
101679
101680
101681
101682
101683
101684
101685
101686
101687
101688
101689
101690
101691
101692
101693
101694
101695
101696
101697
101698
101699
101700
101701
101702
101703
101704
101705
101706
101707
101708
101709
101710
101711
101712
101713
101714
101715
101716
101717
101718
101719
101720
101721
101722
101723
101724
101725
101726
101727
101728
101729
101730
101731
101732
101733
101734
101735
101736
101737
101738
101739
101740
101741
101742
101743
101744
101745
101746
101747
101748
101749
101750
101751
101752
101753
101754
101755
101756
101757
101758
101759
101760
101761
101762
101763
101764
101765
101766
101767
101768
101769
101770
101771
101772
101773
101774
101775
101776
101777
101778
101779
101780
101781
101782
101783
101784
101785
101786
101787
101788
101789
101790
101791
101792
101793
101794
101795
101796
101797
101798
101799
101800
101801
101802
101803
101804
101805
101806
101807
101808
101809
101810
101811
101812
101813
101814
101815
101816
101817
101818
101819
101820
101821
101822
101823
101824
101825
101826
101827
101828
101829
101830
101831
101832
101833
101834
101835
101836
101837
101838
101839
101840
101841
101842
101843
101844
101845
101846
101847
101848
101849
101850
101851
101852
101853
101854
101855
101856
101857
101858
101859
101860
101861
101862
101863
101864
101865
101866
101867
101868
101869
101870
101871
101872
101873
101874
101875
101876
101877
101878
101879
101880
101881
101882
101883
101884
101885
101886
101887
101888
101889
101890
101891
101892
101893
101894
101895
101896
101897
101898
101899
101900
101901
101902
101903
101904
101905
101906
101907
101908
101909
101910
101911
101912
101913
101914
101915
101916
101917
101918
101919
101920
101921
101922
101923
101924
101925
101926
101927
101928
101929
101930
101931
101932
101933
101934
101935
101936
101937
101938
101939
101940
101941
101942
101943
101944
101945
101946
101947
101948
101949
101950
101951
101952
101953
101954
101955
101956
101957
101958
101959
101960
101961
101962
101963
101964
101965
101966
101967
101968
101969
101970
101971
101972
101973
101974
101975
101976
101977
101978
101979
101980
101981
101982
101983
101984
101985
101986
101987
101988
101989
101990
101991
101992
101993
101994
101995
101996
101997
101998
101999
102000
102001
102002
102003
102004
102005
102006
102007
102008
102009
102010
102011
102012
102013
102014
102015
102016
102017
102018
102019
102020
102021
102022
102023
102024
102025
102026
102027
102028
102029
102030
102031
102032
102033
102034
102035
102036
102037
102038
102039
102040
102041
102042
102043
102044
102045
102046
102047
102048
102049
102050
102051
102052
102053
102054
102055
102056
102057
102058
102059
102060
102061
102062
102063
102064
102065
102066
102067
102068
102069
102070
102071
102072
102073
102074
102075
102076
102077
102078
102079
102080
102081
102082
102083
102084
102085
102086
102087
102088
102089
102090
102091
102092
102093
102094
102095
102096
102097
102098
102099
102100
102101
102102
102103
102104
102105
102106
102107
102108
102109
102110
102111
102112
102113
102114
102115
102116
102117
102118
102119
102120
102121
102122
102123
102124
102125
102126
102127
102128
102129
102130
102131
102132
102133
102134
102135
102136
102137
102138
102139
102140
102141
102142
102143
102144
102145
102146
102147
102148
102149
102150
102151
102152
102153
102154
102155
102156
102157
102158
102159
102160
102161
102162
102163
102164
102165
102166
102167
102168
102169
102170
102171
102172
102173
102174
102175
102176
102177
102178
102179
102180
102181
102182
102183
102184
102185
102186
102187
102188
102189
102190
102191
102192
102193
102194
102195
102196
102197
102198
102199
102200
102201
102202
102203
102204
102205
102206
102207
102208
102209
102210
102211
102212
102213
102214
102215
102216
102217
102218
102219
102220
102221
102222
102223
102224
102225
102226
102227
102228
102229
102230
102231
102232
102233
102234
102235
102236
102237
102238
102239
102240
102241
102242
102243
102244
102245
102246
102247
102248
102249
102250
102251
102252
102253
102254
102255
102256
102257
102258
102259
102260
102261
102262
102263
102264
102265
102266
102267
102268
102269
102270
102271
102272
102273
102274
102275
102276
102277
102278
102279
102280
102281
102282
102283
102284
102285
102286
102287
102288
102289
102290
102291
102292
102293
102294
102295
102296
102297
102298
102299
102300
102301
102302
102303
102304
102305
102306
102307
102308
102309
102310
102311
102312
102313
102314
102315
102316
102317
102318
102319
102320
102321
102322
102323
102324
102325
102326
102327
102328
102329
102330
102331
102332
102333
102334
102335
102336
102337
102338
102339
102340
102341
102342
102343
102344
102345
102346
102347
102348
102349
102350
102351
102352
102353
102354
102355
102356
102357
102358
102359
102360
102361
102362
102363
102364
102365
102366
102367
102368
102369
102370
102371
102372
102373
102374
102375
102376
102377
102378
102379
102380
102381
102382
102383
102384
102385
102386
102387
102388
102389
102390
102391
102392
102393
102394
102395
102396
102397
102398
102399
102400
102401
102402
102403
102404
102405
102406
102407
102408
102409
102410
102411
102412
102413
102414
102415
102416
102417
102418
102419
102420
102421
102422
102423
102424
102425
102426
102427
102428
102429
102430
102431
102432
102433
102434
102435
102436
102437
102438
102439
102440
102441
102442
102443
102444
102445
102446
102447
102448
102449
102450
102451
102452
102453
102454
102455
102456
102457
102458
102459
102460
102461
102462
102463
102464
102465
102466
102467
102468
102469
102470
102471
102472
102473
102474
102475
102476
102477
102478
102479
102480
102481
102482
102483
102484
102485
102486
102487
102488
102489
102490
102491
102492
102493
102494
102495
102496
102497
102498
102499
102500
102501
102502
102503
102504
102505
102506
102507
102508
102509
102510
102511
102512
102513
102514
102515
102516
102517
102518
102519
102520
102521
102522
102523
102524
102525
102526
102527
102528
102529
102530
102531
102532
102533
102534
102535
102536
102537
102538
102539
102540
102541
102542
102543
102544
102545
102546
102547
102548
102549
102550
102551
102552
102553
102554
102555
102556
102557
102558
102559
102560
102561
102562
102563
102564
102565
102566
102567
102568
102569
102570
102571
102572
102573
102574
102575
102576
102577
102578
102579
102580
102581
102582
102583
102584
102585
102586
102587
102588
102589
102590
102591
102592
102593
102594
102595
102596
102597
102598
102599
102600
102601
102602
102603
102604
102605
102606
102607
102608
102609
102610
102611
102612
102613
102614
102615
102616
102617
102618
102619
102620
102621
102622
102623
102624
102625
102626
102627
102628
102629
102630
102631
102632
102633
102634
102635
102636
102637
102638
102639
102640
102641
102642
102643
102644
102645
102646
102647
102648
102649
102650
102651
102652
102653
102654
102655
102656
102657
102658
102659
102660
102661
102662
102663
102664
102665
102666
102667
102668
102669
102670
102671
102672
102673
102674
102675
102676
102677
102678
102679
102680
102681
102682
102683
102684
102685
102686
102687
102688
102689
102690
102691
102692
102693
102694
102695
102696
102697
102698
102699
102700
102701
102702
102703
102704
102705
102706
102707
102708
102709
102710
102711
102712
102713
102714
102715
102716
102717
102718
102719
102720
102721
102722
102723
102724
102725
102726
102727
102728
102729
102730
102731
102732
102733
102734
102735
102736
102737
102738
102739
102740
102741
102742
102743
102744
102745
102746
102747
102748
102749
102750
102751
102752
102753
102754
102755
102756
102757
102758
102759
102760
102761
102762
102763
102764
102765
102766
102767
102768
102769
102770
102771
102772
102773
102774
102775
102776
102777
102778
102779
102780
102781
102782
102783
102784
102785
102786
102787
102788
102789
102790
102791
102792
102793
102794
102795
102796
102797
102798
102799
102800
102801
102802
102803
102804
102805
102806
102807
102808
102809
102810
102811
102812
102813
102814
102815
102816
102817
102818
102819
102820
102821
102822
102823
102824
102825
102826
102827
102828
102829
102830
102831
102832
102833
102834
102835
102836
102837
102838
102839
102840
102841
102842
102843
102844
102845
102846
102847
102848
102849
102850
102851
102852
102853
102854
102855
102856
102857
102858
102859
102860
102861
102862
102863
102864
102865
102866
102867
102868
102869
102870
102871
102872
102873
102874
102875
102876
102877
102878
102879
102880
102881
102882
102883
102884
102885
102886
102887
102888
102889
102890
102891
102892
102893
102894
102895
102896
102897
102898
102899
102900
102901
102902
102903
102904
102905
102906
102907
102908
102909
102910
102911
102912
102913
102914
102915
102916
102917
102918
102919
102920
102921
102922
102923
102924
102925
102926
102927
102928
102929
102930
102931
102932
102933
102934
102935
102936
102937
102938
102939
102940
102941
102942
102943
102944
102945
102946
102947
102948
102949
102950
102951
102952
102953
102954
102955
102956
102957
102958
102959
102960
102961
102962
102963
102964
102965
102966
102967
102968
102969
102970
102971
102972
102973
102974
102975
102976
102977
102978
102979
102980
102981
102982
102983
102984
102985
102986
102987
102988
102989
102990
102991
102992
102993
102994
102995
102996
102997
102998
102999
103000
103001
103002
103003
103004
103005
103006
103007
103008
103009
103010
103011
103012
103013
103014
103015
103016
103017
103018
103019
103020
103021
103022
103023
103024
103025
103026
103027
103028
103029
103030
103031
103032
103033
103034
103035
103036
103037
103038
103039
103040
103041
103042
103043
103044
103045
103046
103047
103048
103049
103050
103051
103052
103053
103054
103055
103056
103057
103058
103059
103060
103061
103062
103063
103064
103065
103066
103067
103068
103069
103070
103071
103072
103073
103074
103075
103076
103077
103078
103079
103080
103081
103082
103083
103084
103085
103086
103087
103088
103089
103090
103091
103092
103093
103094
103095
103096
103097
103098
103099
103100
103101
103102
103103
103104
103105
103106
103107
103108
103109
103110
103111
103112
103113
103114
103115
103116
103117
103118
103119
103120
103121
103122
103123
103124
103125
103126
103127
103128
103129
103130
103131
103132
103133
103134
103135
103136
103137
103138
103139
103140
103141
103142
103143
103144
103145
103146
103147
103148
103149
103150
103151
103152
103153
103154
103155
103156
103157
103158
103159
103160
103161
103162
103163
103164
103165
103166
103167
103168
103169
103170
103171
103172
103173
103174
103175
103176
103177
103178
103179
103180
103181
103182
103183
103184
103185
103186
103187
103188
103189
103190
103191
103192
103193
103194
103195
103196
103197
103198
103199
103200
103201
103202
103203
103204
103205
103206
103207
103208
103209
103210
103211
103212
103213
103214
103215
103216
103217
103218
103219
103220
103221
103222
103223
103224
103225
103226
103227
103228
103229
103230
103231
103232
103233
103234
103235
103236
103237
103238
103239
103240
103241
103242
103243
103244
103245
103246
103247
103248
103249
103250
103251
103252
103253
103254
103255
103256
103257
103258
103259
103260
103261
103262
103263
103264
103265
103266
103267
103268
103269
103270
103271
103272
103273
103274
103275
103276
103277
103278
103279
103280
103281
103282
103283
103284
103285
103286
103287
103288
103289
103290
103291
103292
103293
103294
103295
103296
103297
103298
103299
103300
103301
103302
103303
103304
103305
103306
103307
103308
103309
103310
103311
103312
103313
103314
103315
103316
103317
103318
103319
103320
103321
103322
103323
103324
103325
103326
103327
103328
103329
103330
103331
103332
103333
103334
103335
103336
103337
103338
103339
103340
103341
103342
103343
103344
103345
103346
103347
103348
103349
103350
103351
103352
103353
103354
103355
103356
103357
103358
103359
103360
103361
103362
103363
103364
103365
103366
103367
103368
103369
103370
103371
103372
103373
103374
103375
103376
103377
103378
103379
103380
103381
103382
103383
103384
103385
103386
103387
103388
103389
103390
103391
103392
103393
103394
103395
103396
103397
103398
103399
103400
103401
103402
103403
103404
103405
103406
103407
103408
103409
103410
103411
103412
103413
103414
103415
103416
103417
103418
103419
103420
103421
103422
103423
103424
103425
103426
103427
103428
103429
103430
103431
103432
103433
103434
103435
103436
103437
103438
103439
103440
103441
103442
103443
103444
103445
103446
103447
103448
103449
103450
103451
103452
103453
103454
103455
103456
103457
103458
103459
103460
103461
103462
103463
103464
103465
103466
103467
103468
103469
103470
103471
103472
103473
103474
103475
103476
103477
103478
103479
103480
103481
103482
103483
103484
103485
103486
103487
103488
103489
103490
103491
103492
103493
103494
103495
103496
103497
103498
103499
103500
103501
103502
103503
103504
103505
103506
103507
103508
103509
103510
103511
103512
103513
103514
103515
103516
103517
103518
103519
103520
103521
103522
103523
103524
103525
103526
103527
103528
103529
103530
103531
103532
103533
103534
103535
103536
103537
103538
103539
103540
103541
103542
103543
103544
103545
103546
103547
103548
103549
103550
103551
103552
103553
103554
103555
103556
103557
103558
103559
103560
103561
103562
103563
103564
103565
103566
103567
103568
103569
103570
103571
103572
103573
103574
103575
103576
103577
103578
103579
103580
103581
103582
103583
103584
103585
103586
103587
103588
103589
103590
103591
103592
103593
103594
103595
103596
103597
103598
103599
103600
103601
103602
103603
103604
103605
103606
103607
103608
103609
103610
103611
103612
103613
103614
103615
103616
103617
103618
103619
103620
103621
103622
103623
103624
103625
103626
103627
103628
103629
103630
103631
103632
103633
103634
103635
103636
103637
103638
103639
103640
103641
103642
103643
103644
103645
103646
103647
103648
103649
103650
103651
103652
103653
103654
103655
103656
103657
103658
103659
103660
103661
103662
103663
103664
103665
103666
103667
103668
103669
103670
103671
103672
103673
103674
103675
103676
103677
103678
103679
103680
103681
103682
103683
103684
103685
103686
103687
103688
103689
103690
103691
103692
103693
103694
103695
103696
103697
103698
103699
103700
103701
103702
103703
103704
103705
103706
103707
103708
103709
103710
103711
103712
103713
103714
103715
103716
103717
103718
103719
103720
103721
103722
103723
103724
103725
103726
103727
103728
103729
103730
103731
103732
103733
103734
103735
103736
103737
103738
103739
103740
103741
103742
103743
103744
103745
103746
103747
103748
103749
103750
103751
103752
103753
103754
103755
103756
103757
103758
103759
103760
103761
103762
103763
103764
103765
103766
103767
103768
103769
103770
103771
103772
103773
103774
103775
103776
103777
103778
103779
103780
103781
103782
103783
103784
103785
103786
103787
103788
103789
103790
103791
103792
103793
103794
103795
103796
103797
103798
103799
103800
103801
103802
103803
103804
103805
103806
103807
103808
103809
103810
103811
103812
103813
103814
103815
103816
103817
103818
103819
103820
103821
103822
103823
103824
103825
103826
103827
103828
103829
103830
103831
103832
103833
103834
103835
103836
103837
103838
103839
103840
103841
103842
103843
103844
103845
103846
103847
103848
103849
103850
103851
103852
103853
103854
103855
103856
103857
103858
103859
103860
103861
103862
103863
103864
103865
103866
103867
103868
103869
103870
103871
103872
103873
103874
103875
103876
103877
103878
103879
103880
103881
103882
103883
103884
103885
103886
103887
103888
103889
103890
103891
103892
103893
103894
103895
103896
103897
103898
103899
103900
103901
103902
103903
103904
103905
103906
103907
103908
103909
103910
103911
103912
103913
103914
103915
103916
103917
103918
103919
103920
103921
103922
103923
103924
103925
103926
103927
103928
103929
103930
103931
103932
103933
103934
103935
103936
103937
103938
103939
103940
103941
103942
103943
103944
103945
103946
103947
103948
103949
103950
103951
103952
103953
103954
103955
103956
103957
103958
103959
103960
103961
103962
103963
103964
103965
103966
103967
103968
103969
103970
103971
103972
103973
103974
103975
103976
103977
103978
103979
103980
103981
103982
103983
103984
103985
103986
103987
103988
103989
103990
103991
103992
103993
103994
103995
103996
103997
103998
103999
104000
104001
104002
104003
104004
104005
104006
104007
104008
104009
104010
104011
104012
104013
104014
104015
104016
104017
104018
104019
104020
104021
104022
104023
104024
104025
104026
104027
104028
104029
104030
104031
104032
104033
104034
104035
104036
104037
104038
104039
104040
104041
104042
104043
104044
104045
104046
104047
104048
104049
104050
104051
104052
104053
104054
104055
104056
104057
104058
104059
104060
104061
104062
104063
104064
104065
104066
104067
104068
104069
104070
104071
104072
104073
104074
104075
104076
104077
104078
104079
104080
104081
104082
104083
104084
104085
104086
104087
104088
104089
104090
104091
104092
104093
104094
104095
104096
104097
104098
104099
104100
104101
104102
104103
104104
104105
104106
104107
104108
104109
104110
104111
104112
104113
104114
104115
104116
104117
104118
104119
104120
104121
104122
104123
104124
104125
104126
104127
104128
104129
104130
104131
104132
104133
104134
104135
104136
104137
104138
104139
104140
104141
104142
104143
104144
104145
104146
104147
104148
104149
104150
104151
104152
104153
104154
104155
104156
104157
104158
104159
104160
104161
104162
104163
104164
104165
104166
104167
104168
104169
104170
104171
104172
104173
104174
104175
104176
104177
104178
104179
104180
104181
104182
104183
104184
104185
104186
104187
104188
104189
104190
104191
104192
104193
104194
104195
104196
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Detailed History of Ghostscript versions 8.n</title>
<!--
	WARNING: do not use Pete Kaiser's emacs function "gs-toc" alone to
	re-create the table of contents here, because it will replace the
	hand-edited TOC subheads with a separate subhead for each H2 in
	the body of the file.  Or if you do, first look at the original
	TOC to see how to edit it for visual conciseness.
-->
<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
</head>

<body>
<!-- [1.0 begin visible header] ============================================ -->

<!-- [1.1 begin headline] ================================================== -->

<table width="100%" border="0">
<tr><th align="center" bgcolor="#CCCC00"><font size=6>Detailed History of Ghostscript versions 8.xx</font>
</table>

<!-- [1.1 end headline] ==================================================== -->

<!-- [1.2 begin table of contents] ========================================= -->

<h2>Table of contents</h2>

<blockquote><ul>
<li><a href="#Version8.71">Version 8.71 (2009-02-10)</a>
<li><a href="#Version8.70">Version 8.70 (2009-07-31)</a>
<li><a href="#Version8.64">Version 8.64 (2009-02-03)</a>
<li><a href="#Version8.63">Version 8.63 (2008-08-01)</a>
<li><a href="#Version8.62">Version 8.62 (2008-02-29)</a>
<li><a href="#Version8.61">Version 8.61 (2007-11-21)</a>
<li><a href="#Version8.60">Version 8.60 (2007-08-01)</a>
<li><a href="#Version8.57">Version 8.57 (2007-05-11)</a>
<li><a href="#Version8.56">Version 8.56 (2007-03-14)</a>
<li><a href="#Version8.54">Version 8.54 (2006-05-17)</a>
<li><a href="#Version8.53">Version 8.53 (2005-10-20)</a>
<li><a href="#Version8.52">Version 8.52 (2005-10-07)</a>
<li><a href="#Version8.51">Version 8.51 (2005-04-18)</a>
<li><a href="#Version8.50">Version 8.50 (2004-12-10)</a>
<li><a href="#Version8.33">Version 8.33 (2004-11-20)</a>
<li><a href="#Version8.32">Version 8.32 (2004-10-26)</a>
<li><a href="#Version8.31">Version 8.31 (2004-08-28)</a>
<li><a href="#Version8.30">Version 8.30 (2004-05-29)</a>
<li><a href="#Version8.12">Version 8.12 (2003-12-08)</a>
<li><a href="#Version8.11">Version 8.11 (2003-08-16)</a>
<li><a href="#Version8.10">Version 8.10 (2003-05-21)</a>
<li><a href="#Version8.00">Version 8.00 (2002-11-21)</a>
<ul>
<li><a href="#8.00_Incompatible_changes">Incompatible changes</a>,
    <a href="#8.00-Documentation">Documentation</a>,
    <a href="#8.00-Procedures">Procedures</a>,
    <a href="#8.00-Utilities">Utilities</a>,
    <a href="#8.00-Drivers">Drivers</a>,
    <a href="#8.00-PDF_writer">PDF writer</a>,
    <a href="#8.00-PDF_Interpreter">PDF Interpreter</a>,
    <a href="#8.00-Interpreter">Interpreter</a>,
    <a href="#8.00-Library">Library</a>
</ul>
</ul></blockquote>

<!-- [1.2 end table of contents] =========================================== -->

<!-- [1.3 begin hint] ====================================================== -->

<p>
This document is a record of changes in Ghostscript releases numbered 8.xx.
For earlier versions, see the the history documents:

<blockquote>
<a href="History7.htm">History of Ghostscript versions 7.n</a><br>
<a href="History6.htm">History of Ghostscript versions 6.n</a><br>
<a href="History5.htm">History of Ghostscript versions 5.n</a><br>
<a href="History4.htm">History of Ghostscript versions 4.n</a><br>
<a href="History3.htm">History of Ghostscript versions 3.n</a><br>
<a href="History2.htm">History of Ghostscript versions 2.n</a><br>
<a href="History1.htm">History of Ghostscript versions 1.n</a>
</blockquote>

<p>For other information, see the <a href="Readme.htm">Ghostscript
overview</a>.

<!-- [1.3 end hint] ======================================================== -->

<hr>

<!-- [1.0 end visible header] ============================================== -->

<!-- [2.0 begin contents] ================================================== -->

<h2><a name="Version8.71"></a>Version 8.71 (2010-02-10)</h2>

<p>This is the second release in the stable 8.7x series. It features
improved handling of fonts, nesting and color fixes with
transparency objects, reduced memory footprint for the halftone cache,
as well as improvements to the pxl output devices,
and the usual number of bug and robustness fixes.

<p>New in this release is an experimental project file for
Microsoft Visual Studio. This wraps the normal nmake build,
and makes it easier for developers to get started building
Ghostscript with that compiler.</p>

<p>Support for tiff file output is now provided using the libtiff
implementation rather than our more limited native code as in
previous releases. There is also a new 'tiffsep1' output device
which produces halftoned separations at 1 bit-per-pixel, in contrast
to the 'tiffsep' device which produces 8 bit-per-pixel plates.

<p>Support for using FreeType as a type rasterizer has been greatly improved.
We do not recommend its use as of this release, but it is much more functional
than previously and our intent is that it will become the default in a future
release.

<p>The graphics library has been updated to provide more accurate scan
conversion of vector art including fixes to dash behavior, transparent
stroked paths, thick stroked paths, radial shadings, xps cap handling,
"pie" joins, degenerate beziers, improved handling of dropouts in
thin strokes and better thin axis-aligned strokes.

<p>For a list of open issues, or to report problems with this release,
please visit <a href="http://bugs.ghostscript.com/">bugs.ghostscript.com</a>.

<h3><a name="8.71_Incompatible_changes"></a>Incompatible changes</h3>

<p>
No recorded incompatible changes.

<h3><a name="8.71_changelog"></a>Changelog</h3>

<p><strong><a name="2010-02-09T161339.643382Z"></a>
2010-02-09T16:13:39.643382Z Ralph Giles</strong></p>
<blockquote>
<pre>
Clean up some typos in the release notes, and mention the reduced memory
footprint of the halftone cache from r10006.
</pre>
<p>[doc/News.htm]</p>
</blockquote>

<p><strong><a name="2010-02-08T221030.586772Z"></a>
2010-02-08T22:10:30.586772Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the change logs for the second 8.71 release candidate.
</pre>
<p>[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]</p>
</blockquote>

<p><strong><a name="2010-02-08T220322.755385Z"></a>
2010-02-08T22:03:22.755385Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add some notes on what's new in the 8.71 release.
</pre>
<p>[doc/News.htm]</p>
</blockquote>

<p><strong><a name="2010-02-08T200658.778484Z"></a>
2010-02-08T20:06:58.778484Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the the release dates for the second 8.71 release candidate.
</pre>
<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 base/gscdef.c man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Fonts.htm doc/Ps2ps2.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp man/font2c.1 man/gsnd.1 base/version.mak man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]</p>
</blockquote>

<p><strong><a name="2010-02-08T173532.033134Z"></a>
2010-02-08T17:35:32.033134Z Robin Watts</strong></p>
<blockquote>
<pre>
Update Visual Studio solutions to use the DEVSTUDIO= form of makefile
invocation, rather than MSVC_STUDIO=8 version. This should isolate the
solution/projects entirely from the version of visual studio in use.

Simplify the ReadMe.txt file accordingly.

Take the opportunity to add the resource files to the list in the
ghostscript.vcproj file. This makes no difference to the project in
terms of building, but enables easy navigation/editing of files
within VS.

</pre>
<p>[/trunk/ghostpdl/win32/ReadMe.txt /trunk/ghostpdl/win32/xps.vcproj ghostscript.vcproj /trunk/ghostpdl/win32/pcl.vcproj /trunk/ghostpdl/win32/svg.vcproj /trunk/ghostpdl/win32/language_switch.vcproj]</p>
</blockquote>

<p><strong><a name="2010-02-08T164547.345828Z"></a>
2010-02-08T16:45:47.345828Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) bug #691101 (part 2 of 2)

The revisions 10474 and 10476 were intended to address an indeterminism but actually
introduced a fairly serious regression. The code was changed to return any error value
from the glyph_info method before testing the members of the 'info' structure passed to
the method. Previously one of the member could be examined when an error had meant that
the member was still uniinitialised.

However, these revision missed the fact that the glyph_info method can return a
'rangecheck' error when they require a CDevProc to be executed. Because the error code
was tested before checking for a CDevProc, the pdfwrite code never executed the
CDevproc.

This resulted in a (very) few regressions, this is because the PDF interpreter uses
a CDevProc to alter the widths of glyphs if a /W array is present in a PDF file.

The code now initialises the member of the structure to 0, which we then test before
checking the return code. If we need to run a CDevProc we now do so.

Part 2 of this commit explains some further issues with CDevProcs.

</pre>
<p>[base/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2010-02-08T164518.598274Z"></a>
2010-02-08T16:45:18.598274Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) bug #691101 (part 1 of 2)

The revision 10603 fixed a number of issues relating to FontMatrix and descendant fonts
of CIDFonts. However part of the fix, in CIDWProc, used 'currentfont' to address the
font dictionary instead of 'currentdict', as is done in the rest of the routine.

For rendering devices this works well, but for pdfwrite the two dictionaries are not 
the same, and this causes PostScript errors.

This error was initially hidden by the revisions 10474 and 10476 which inadvertently 
caused all CDevProc routines not to execute when using pdfwrite.

This patch alters the CIDWProc to use currentdict instead of currentfont, there are no
differences with rendering devices but with pdfwrite this causes the CDevProc to 
execute properly, eliminating a number of errors (when the faulty revisiions 10474
and 10476 are rolled back)

</pre>
<p>[Resource/Init/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2010-02-04T174757.663462Z"></a>
2010-02-04T17:47:57.663462Z Lars Uebernickel</strong></p>
<blockquote>
<pre>
Changed MaxStripSize for TIFF devices to default to 8 KB.

This is necessary, because libtiff keeps a whole strip in memory at a time,
which resulted in very large buffers for big files.  Support of MaxStripSize for
all TIFF devices which didn't have it before was also added.

</pre>
<p>[base/gdevtifs.c base/gdevtifs.h tiff/libtiff/tif_config.vc.h base/gdevtsep.c doc/Devices.htm base/gdevtfnx.c base/gdevtfax.c]</p>
</blockquote>

<p><strong><a name="2010-02-04T033854.455593Z"></a>
2010-02-04T03:38:54.455593Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update change logs for the 8.71 release candidate.
</pre>
<p>[doc/Changes.htm doc/History8.htm doc/Details8.htm doc/Details.htm]</p>
</blockquote>

<p><strong><a name="2010-02-03T224615.528358Z"></a>
2010-02-03T22:46:15.528358Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the list of open bugs.

It's grown long enough to be unhelpful to track explicitly in each release.
</pre>
<p>[doc/News.htm]</p>
</blockquote>

<p><strong><a name="2010-02-03T224250.644387Z"></a>
2010-02-03T22:42:50.644387Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update release date for the 8.71 release candidate.
</pre>
<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 base/gscdef.c man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Fonts.htm doc/Ps2ps2.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp man/font2c.1 man/gsnd.1 base/version.mak man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]</p>
</blockquote>

<p><strong><a name="2010-02-03T223942.033100Z"></a>
2010-02-03T22:39:42.033100Z Ralph Giles</strong></p>
<blockquote>
<pre>
Document the location of the new vcproj file, and exclude it from the
extraneous files test.
</pre>
<p>[doc/Develop.htm toolbin/tests/check_dirs.py]</p>
</blockquote>

<p><strong><a name="2010-02-03T222934.129817Z"></a>
2010-02-03T22:29:34.129817Z Ralph Giles</strong></p>
<blockquote>
<pre>
Bump the copyright date for the windows metadata.
</pre>
<p>[psi/dwsetup.rc psi/winint.mak]</p>
</blockquote>

<p><strong><a name="2010-02-02T224855.363996Z"></a>
2010-02-02T22:48:55.363996Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update our included copy of the libpng source to 1.2.42.
</pre>
<p>[libpng]</p>
</blockquote>

<p><strong><a name="2010-02-02T224555.167908Z"></a>
2010-02-02T22:45:55.167908Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the in-tree copy of the libpng source to make way for a newer release.
</pre>
<p>[libpng]</p>
</blockquote>

<p><strong><a name="2010-02-02T193015.986507Z"></a>
2010-02-02T19:30:15.986507Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update jbig2dec with the 0.11 release source.
</pre>
<p>[jbig2dec/aclocal.m4 jbig2dec/jbig2_metadata.c jbig2dec/install-sh jbig2dec/jbig2.c jbig2dec/mkinstalldirs jbig2dec/jbig2_image.c jbig2dec/configure jbig2dec/Makefile.in jbig2dec/jbig2_text.c jbig2dec/jbig2_metadata.h jbig2dec/jbig2_priv.h jbig2dec/depcomp jbig2dec/compile jbig2dec/jbig2dec.c jbig2dec/config.guess jbig2dec/jbig2_refinement.c jbig2dec/ltmain.sh jbig2dec/config.sub jbig2dec/README jbig2dec/jbig2_halftone.c jbig2dec/config.h.in jbig2dec/jbig2_segment.c jbig2dec/configure.ac jbig2dec/jbig2dec.1 jbig2dec/CHANGES jbig2dec/COPYING jbig2dec/Makefile.am jbig2dec/missing jbig2dec/jbig2_page.c]</p>
</blockquote>

<p><strong><a name="2010-02-02T181437.922390Z"></a>
2010-02-02T18:14:37.922390Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
Set rc.exe location according to MSSDK variable - fix build problem with windows 7 SDK - bug 691062.</pre>
<p>[psi/msvc32.mak]</p>
</blockquote>

<p><strong><a name="2010-02-02T072357.821537Z"></a>
2010-02-02T07:23:57.821537Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Re-implement optional content support to avoid dependence on proper nesting
of optional content and q..Q blocks. Check for the visibility flag and skip
most graphic operations when needed. Skip test rendering operations by
installing nullpage device to minimize changes in a rather complicated code.
Bug 691076, customers 531, 850.
</pre>
<p>[Resource/Init/pdf_ops.ps Resource/Init/pdf_main.ps Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2010-02-01T194149.001947Z"></a>
2010-02-01T19:41:49.001947Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix Windows UninstallString registry entry to use &quot; &quot; around the path and
uninistgs.exe so that (the usual) spaces in the path don't cause problems.
Thanks to Stefan Kanthak for pointing this out.
</pre>
<p>[psi/dwinst.cpp]</p>
</blockquote>

<p><strong><a name="2010-02-01T000204.763835Z"></a>
2010-02-01T00:02:04.763835Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Patch font resource category for CET testing to always return the font
memory usage as unknown (-1) to avoid differences between hosts.
Bug 691057.
</pre>
<p>[Resource/Init/gs_cet.ps]</p>
</blockquote>

<p><strong><a name="2010-01-31T203013.616671Z"></a>
2010-01-31T20:30:13.616671Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use the sum of local and global VM usage for the value reported by
&quot;/Font resourcestatus&quot;. This gives better estimation of memory consumption
and makes the result independent of the global state when the font was
loaded. With this patch CET case 23-33.PS shows different values for
&quot;/Font resourcestatus&quot;.
</pre>
<p>[Resource/Init/gs_res.ps]</p>
</blockquote>

<p><strong><a name="2010-01-31T004638.360004Z"></a>
2010-01-31T00:46:38.360004Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add a check whether the current layer is visible to Do operator.
This is a first step to replace implementation that relies on installation
of an non-rendering output device (nullpage) with an implementation
that uses direct checks. Bug 691059.
</pre>
<p>[Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2010-01-30T202519.240406Z"></a>
2010-01-30T20:25:19.240406Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix 'undefined' error in 29-07C.PS CET test file that was happening because
.selectmedia procedure in gs_setpd.ps was building an error information
dictionary ('&lt;failed&gt;' in its comment) with many keys those doesn't exist in
&lt;request&gt; dictionary, such as /LeadinEdge or /InsertSheet.  This draws the
policy 0 procedure (line 544) to 'get' non-existant keys from &lt;merged&gt;
dictionary. Thanks to Masaki Ushizaka for the patch. Bug 691065.
</pre>
<p>[Resource/Init/gs_setpd.ps]</p>
</blockquote>

<p><strong><a name="2010-01-30T065014.586165Z"></a>
2010-01-30T06:50:14.586165Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Preserve /F and /BS attributes of /Link annotation during PDF to PDF
conversion. Thanks to Ken for the patch. Bug 691092, customer 1.
</pre>
<p>[Resource/Init/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2010-01-29T214045.586239Z"></a>
2010-01-29T21:40:45.586239Z regression</strong></p>
<blockquote>
<pre>
Added highres option to clusterpush.pl (opposite of lowres).
</pre>
<p>[toolbin/localcluster/build.pl toolbin/localcluster/clusterpush.pl toolbin/localcluster/run.pl]</p>
</blockquote>

<p><strong><a name="2010-01-28T214337.243405Z"></a>
2010-01-28T21:43:37.243405Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Fixed typo in clusterpush.pl.
</pre>
<p>[toolbin/localcluster/clusterpush.pl]</p>
</blockquote>

<p><strong><a name="2010-01-28T193419.913293Z"></a>
2010-01-28T19:34:19.913293Z regression</strong></p>
<blockquote>
<pre>
Added a new option to clusterpush.pl: lowres.  This option can appear
anywhere on the comand line and signals the local cluster regression to
only run lowres (72 and 75 dpi) output, for example:

  clusterpush.pl pcl lowres

or

  clusterpush.pl lowres &quot;gs pcl&quot; henrys

Note that this will fail if we ever hire an engineer with the name lowres
or use that as an internal product name.  Also, there currently aren't
any 75 dpi baseline md5sums for the pcl product, so until the next pcl
svn commit it doens't make sense to run with this option.

Also added partial support for generating bitmaps with changes and running them through bmpcmp.

</pre>
<p>[toolbin/localcluster/clustermaster.pl toolbin/localcluster/build.pl toolbin/localcluster/clusterpush.pl toolbin/localcluster/run.pl]</p>
</blockquote>

<p><strong><a name="2010-01-28T151836.842224Z"></a>
2010-01-28T15:18:36.842224Z Robin Watts</strong></p>
<blockquote>
<pre>
Squash a warning about %d and size_t spotted by Marcos. Thanks.

</pre>
<p>[toolbin/bmpcmp.c]</p>
</blockquote>

<p><strong><a name="2010-01-28T151305.688649Z"></a>
2010-01-28T15:13:05.688649Z Robin Watts</strong></p>
<blockquote>
<pre>
Fix free of incorrect pointer in bmpcmp.
Also tweak pnm reading so that no seeks are used, so we can use the

  bmpcmp &lt; (zcat foo.pnm.gz)  &lt; (zcat bar.pnm.gz) ...

trick if required (bmps still seek!).

</pre>
<p>[toolbin/bmpcmp.c]</p>
</blockquote>

<p><strong><a name="2010-01-28T144422.110825Z"></a>
2010-01-28T14:44:22.110825Z Ken Sharp</strong></p>
<blockquote>
<pre>
Remove accidental stupid inclusion of a C++ style comment ....
</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2010-01-28T143252.354649Z"></a>
2010-01-28T14:32:52.354649Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI)

Bit complex here. The FAPI code needs to tell the font rendering engine how much to
scale the font in order to get properly sized bitmaps. It does this by looking at the 
FontMatrix, comparing it with the 'original' FontMatrix and determining the scale from
there. 

The problem is that the 'original' FontMatrix was being retrieved from a copy of the 
font stored when it is defined, intended for use by pdfwrite. When we define a font we
check to see if it has an /OrigFont entry, and simply use the one which is present if
we do.

This causes us problems if we make a new scaled font by taking an existing font and 
changing its FontMatrix. We don't write the new FontMatrix into the OrigFont dict, and
so when we come to determine the font scale we divide the FontMatrix by the 'original'
stored matrix. This effectively results in any scale factor built into the FotnMatrix
being applied twice, once by FreeType because the FontMatrix isn't the default, and 
once by the FAPI when it divides the FotnMatrix by the original.

I didn't want to modify the OrigFont entry, as that would probably break pdfwrite, so
I've modified the FAPI code to take a copy of the FontMatrix at the time the font is
defined and store it in its own structure. We then use this to determine how much to
scale the font by dividing the current FontMatrix by the matrix at the time the font
was defined.

This fixes my hand-crafter test file and improves the output of Bug687615.ps and 
two_encodings.ps. The output is now the correct size, but the spacing is wrong in 
bug687615.ps and many glyphs are missing from two_encodings.ps.
</pre>
<p>[psi/fapi_ft.c psi/zfapi.c psi/ifapi.h psi/fapiufst.c]</p>
</blockquote>

<p><strong><a name="2010-01-27T190807.958712Z"></a>
2010-01-27T19:08:07.958712Z Robin Watts</strong></p>
<blockquote>
<pre>
Updated version of bmpcmp.c to support maxdiffs parameter. Also, bitmaps
are output numbered 00000, 00001, etc rather than 0, 1, etc to tidy
directory listings.

Updated htmldiff.pl file to cope with the rejigged number formats.

</pre>
<p>[toolbin/bmpcmp.c toolbin/htmldiff.pl]</p>
</blockquote>

<p><strong><a name="2010-01-27T145555.064385Z"></a>
2010-01-27T14:55:55.064385Z Robin Watts</strong></p>
<blockquote>
<pre>
Introduce new gs_currentdevicecolor function (and inline macro version) to
retrieve the current device color from the graphics state. Use this in the
2 places in pl that require it. This restricts all the knowledge of the
way colors are stored in the graphics state to being within the gs code.

This is done as a precursor to the work to support 2 color's in the graphics
state to enable a branch to be taken on gs only.

Regression tests predict 128 changes, but local testing with htmldiff.pl shows
none.

</pre>
<p>[base/gscolor2.c base/gscolor2.h /trunk/ghostpdl/pl/plchar.c /trunk/ghostpdl/pl/pldraw.c base/gzstate.h]</p>
</blockquote>

<p><strong><a name="2010-01-26T011546.612807Z"></a>
2010-01-26T01:15:46.612807Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fix for memory leak reported in bug 690754.  The memory leak occurred when processing xps transparency files.  The softmask group buffer was not being deallocated properly.  We now properly deallocate an old soft mask buffer that will no longer be used when new one is coming in to replace it.  There should not be any rendering differences with this commit.</pre>
<p>[base/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2010-01-24T172738.965229Z"></a>
2010-01-24T17:27:38.965229Z Robin Watts</strong></p>
<blockquote>
<pre>
Fix problems with htmldiff.pl introduced when introducing iframes mode.
(Javascript wasn't working, image source was incorrect).

</pre>
<p>[toolbin/htmldiff.pl]</p>
</blockquote>

<p><strong><a name="2010-01-24T162043.098277Z"></a>
2010-01-24T16:20:43.098277Z Robin Watts</strong></p>
<blockquote>
<pre>
Correct some errors in htmldiff.pl. Firstly, perl doesn't have true/false,
so use 0/1. Secondly, move framenum increment out of if where I'd incorrectly
put it before, resulting in everything going into the same dir unless iframes
were used.

</pre>
<p>[toolbin/htmldiff.pl]</p>
</blockquote>

<p><strong><a name="2010-01-23T174247.176361Z"></a>
2010-01-23T17:42:47.176361Z Robin Watts</strong></p>
<blockquote>
<pre>
Updated htmldiff; neater output structure - each files diffs go into their
own subdirectory. Option to use iframes to avoid regenerating the html
twice. Config file include now uses ENV{&quot;HOME&quot;} rather than ~ to work on
Mac OS.


</pre>
<p>[toolbin/htmldiff.pl]</p>
</blockquote>

<p><strong><a name="2010-01-22T174602.036283Z"></a>
2010-01-22T17:46:02.036283Z Till Kamppeter</strong></p>
<blockquote>
<pre>
&quot;cups&quot; output device: Reallocate memory for raster data only if the size of the bitmap has changed, to avoid data getting messed up by unneeded reallocation. This should finally fix bug #691029.
</pre>
<p>[cups/gdevcups.c]</p>
</blockquote>

<p><strong><a name="2010-01-22T090128.663933Z"></a>
2010-01-22T09:01:28.663933Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pswrite)

The pswrite device only partially implemented the 'file per page' output model. It
closed the output file and the bbox device, but did not open a new output file or
reopen the bbox device, leading to potential crashes later when the pswrite device
tried to access the bbox device.

This patch reopens the bbox device, and opens a new output file, at the end of every
page when we are outputting one file per page. The problem is that this will emit an
empty EPS after the last page is completed. Fixing this would mean delaying opening the
output file until we had received a marking operation. That's more work than we want
to do on this device, so this is being left as an issue.
</pre>
<p>[base/gdevps.c]</p>
</blockquote>

<p><strong><a name="2010-01-21T030421.383005Z"></a>
2010-01-21T03:04:21.383005Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
adding the tiff directory to the list of files to zip up during a windows build. Thanks Gennadiy Tsarenkov or the report and patch. Fixes bug 691069</pre>
<p>[psi/winint.mak]</p>
</blockquote>

<p><strong><a name="2010-01-20T190701.585691Z"></a>
2010-01-20T19:07:01.585691Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Fixed handling of back sides when duplex printing via the CUPS Raster output device. With PostScript as input format the y-axis of the back sides was often flipped (bug #691029).
</pre>
<p>[cups/gdevcups.c]</p>
</blockquote>

<p><strong><a name="2010-01-20T181139.888031Z"></a>
2010-01-20T18:11:39.888031Z Michael Vrhel</strong></p>
<blockquote>
<pre>
This commit is a fix for bug 691021 which had quantized (unsmooth) shading artifacts when transparency was present.

The primary changes to the code are:

The adaptive (non-fixed) smoothness method is now used in the shading code when transparency is present.  Previously there was a check put in place and if there was transparency a fixed amount of smoothing was enforced.

The color cache used in the shading code was updated to use the color information in the transparency device that is contained in the imager state.  This object is initialized with either the target device when there is no transparency or with the PDF14 device when there is transparency.  In this way, the proper color information is used by the cache.

The shading code makes use of the member variables comp_shift and comp_bits in the color_info member variable of the target device.  This information is now properly updated in the PDF14 device as the transparency group color space changes.

A clist change was also required for proper XPS rendering of gradients.  When it has a gradient with a transparency component, the XPS code first creates a soft mask group and draws the alpha shading.  It then creates a transparency group to draw the color components portion of the shading.  When the transparency group is popped, is is composed using the soft mask buffer which is the XPS opacity shading.  When we are going through the clist writer, the writer will end up drawing the shadings for both the opacity component and the color component with trapezoid fills.  Later, during the clist reading and execution of the trapezoid filling, a clipping device is created.  This device is created with the color info properties of the target device, which in our case is a PDF14 device.  The clipping device is first created during the soft mask group.  This group has color information associated with a grey device since it is just a single channel (the XPS alpha channel).  Later, the same clipping device is used when we are doing the trapezoid filling during the transparency group fills.  The problem is that the color information of the target device may have changed, for example if the transparency color group is RGB or CMYK.  We need to test for that and update the color info for the clipping device. 

There are several regression test files that are affected by this commit.  I looked at all of them. Changes appear to be progressions or visually unnoticeable.  Files are

Bug688807.pdf
Bug689918.pdf
Bug690115.pdf
Bug690206.pdf
Bug690535.pdf
Bug690709.pdf
CATX1101.pdf
CATX4135.pdf
CATX5233.pdf
CATX6508.pdf
CATX9004.pdf
IA3Z0302.pdf
IA3Z0303.pdf
as well as most of the fts_##xx.xps tests.  


</pre>
<p>[base/gscicach.h base/gxshade6.c base/gdevp14.c base/gdevp14.h base/gxshade.c base/gscicach.c base/gxclrast.c base/gxshade.h]</p>
</blockquote>

<p><strong><a name="2010-01-19T213816.998845Z"></a>
2010-01-19T21:38:16.998845Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
adding comment about possible future rewrite with XGetPixel() ; no code change</pre>
<p>[base/gdevx.c]</p>
</blockquote>

<p><strong><a name="2010-01-19T154857.559895Z"></a>
2010-01-19T15:48:57.559895Z Robin Watts</strong></p>
<blockquote>
<pre>
Attempt to fix bug 691030, regression with thin lines. This regression was
caused by revision 10391, where I pulled the rectangle special cases into
line with the more general case. Sadly, the more general case appears to be
wrong in the way it rounds lines lying on integer values.

The fix is to correct the rounding in the general case, and to keep the
rectangle special cases in line with this. Unfortunately this produces
unacceptable results with the PCL interpreter.

We therefore commit a compromise solution, whereby we make the code do the
'correct' thing (or what we believe the correct thing is) for postscript,
and leave operation alone for the other languages. We spot this by examining
the fill_adjust values. This seems to works, with the minor problem that we
still see some changes in PCL due to it sometimes using non-zero fill_adjust
to thicken lines. A visual check shows the diffs to be reasonable.

Expected Differences: MANY. But extensively checked with htmldiff and they
seem OK.


</pre>
<p>[base/gxdevcli.h base/gdevtxtw.c base/gdevtrac.c base/gdevbbox.c base/gdevmem.c base/gdevnfwd.c base/gdevddrw.c base/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2010-01-19T111824.072283Z"></a>
2010-01-19T11:18:24.072283Z Robin Watts</strong></p>
<blockquote>
<pre>
Move ghostscript.vcproj from win32 to gs directory, and adjust solution file
accordingly. This serves 2 purposes; firstly, the solution now correctly
supports tag jumping (that is, the ability to click on a warning or error
and jump to that line in the file). The second is that the ghostscript
project now lives in the ghostscript directory, and hence may be usable by
people wanting to build *just* ghostscript, rather than ghostscript as a
component of GhostPDL.

Update ReadMe.txt to reflect this change, and document a known problem.

No expected differences.

</pre>
<p>[/trunk/ghostpdl/win32/ghostscript.vcproj /trunk/ghostpdl/win32/ReadMe.txt ghostscript.vcproj /trunk/ghostpdl/win32/GhostPDL.sln]</p>
</blockquote>

<p><strong><a name="2010-01-18T112829.454584Z"></a>
2010-01-18T11:28:29.454584Z Ken Sharp</strong></p>
<blockquote>
<pre>
Addendum to revision 10615. Use the *y* scale factor for computing the vertical character
advance, not the x scale which the previous commit used. Also note that the text of the
previous log said:

&quot;as a parameter to zchar_set_cache to set the horizontal advance&quot;

That should, of course, read vertical advance.
</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2010-01-18T111655.954810Z"></a>
2010-01-18T11:16:55.954810Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI - FreeType). The current FAPI implementation for FreeType ignores any vertical
advance defined in a glyph. This causes type 1 glyphs defined with an sbw (not hsbw) 
which have a vertical advance as well as, or instead of, a horizontal advance to not
advance the current point correctly.

There is a separate issue with FreeType which does not return the correct vertical 
advance which will be addressed in a separate patch.

This patch adds the vertical advance to the metrics structure and uses it as a 
parameter to zchar_set_cache to set the horizontal advance in GS for the glyph.
</pre>
<p>[psi/fapi_ft.c psi/zfapi.c psi/ifapi.h]</p>
</blockquote>

<p><strong><a name="2010-01-18T084120.191771Z"></a>
2010-01-18T08:41:20.191771Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI). The code to 'serialise' a CFF font (that is to convert the internal GS
representation back to a stream resembling a disk font) was seriously broken when writing
a local Subrs DICT.

The offset to the Subrs DICT is stored in the Private DICT as an offset from the
start of  the Private DICT. This means it depends on the length of the Private DICT,
but the Private DICT includes that offset, so the length of the Private DICT is
dependent on the size of the offset (CFF integers use between 1 &amp; 5 bytes depending
on their value).

The normal method for dealing with this is a process of refinement; assume that a 1 byte
representation will suffice, calculate the size of the DICT, see if that size can be 
represented in 1 byte. If not assume a 2 byte representation, recalculate the size
of the DICT, see if it can be represented in 2 bytes and so on.

It looks like the code was intended to do this, but it was in fact seriously broken
and ended up incrementing an integer for size of DICT until it became negative, and
then stored a negative (and incorrect) offset to the Subrs.

Replaced the code with a simple for loop surrounding a switch.
</pre>
<p>[psi/write_t2.c]</p>
</blockquote>

<p><strong><a name="2010-01-14T163845.881264Z"></a>
2010-01-14T16:38:45.881264Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix the syntax error accidentally committed in revision 10608 which prevented
Ghostscript from building.
</pre>
<p>[base/gdevpdtw.c]</p>
</blockquote>

<p><strong><a name="2010-01-14T162503.707208Z"></a>
2010-01-14T16:25:03.707208Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) Bug #691058 &quot;Incorrect embedding of CIDToGIDMap for CIDFontType 2&quot;.

Previously we would embed a CIDToGIDMap for a CIDFontType 2 font (TrueType outlines) if
the font had a non-identity CIDToGIDMap, or if we were producing PDF/A output.

However the spec (PDF 1.7, Section 5.6, &quot;Glyph Selection in CIDFonts') says that we
should *always* embed a CIDToGIDMap if the font is embedded, and never if the font is
not. 

This patch modified the CIDToGIDMap production so that we ignore the production of PDF/A
files, and instead check whether the font is being embedded. If it is being embedded
then we create a CIDToGIDMap, if it is not, then we don't.
</pre>
<p>[base/gdevpdtw.c]</p>
</blockquote>

<p><strong><a name="2010-01-14T022419.739891Z"></a>
2010-01-14T02:24:19.739891Z Masaki Ushizaka</strong></p>
<blockquote>
<pre>
Fix two warnings introduced in rev. 10603.  Signed/unsigned incompatibility.
</pre>
<p>[base/gschar0.c]</p>
</blockquote>

<p><strong><a name="2010-01-13T210409.482842Z"></a>
2010-01-13T21:04:09.482842Z regression</strong></p>
<blockquote>
<pre>

General cleanup and minor improvements of the local cluster code:
  changed timeout values
  keep logs of machine status messages
  change previous md5sum cache size
  better differentiate pdfwrite vs bitmap output errors


</pre>
<p>[toolbin/localcluster/clustermaster.pl toolbin/localcluster/readlog.pl toolbin/localcluster/build.pl toolbin/localcluster/run.pl toolbin/localcluster/compare.pl]</p>
</blockquote>

<p><strong><a name="2010-01-12T214228.034208Z"></a>
2010-01-12T21:42:28.034208Z Robin Watts</strong></p>
<blockquote>
<pre>
Fix overallocation in bmpcmp.c that was causing out of memory errors.


</pre>
<p>[toolbin/bmpcmp.c]</p>
</blockquote>

<p><strong><a name="2010-01-12T202232.464302Z"></a>
2010-01-12T20:22:32.464302Z Robin Watts</strong></p>
<blockquote>
<pre>
Updated bmpcmp.c and htmldiff.pl. bmpcmp.c now outputs metadata about each set
of difference bitmaps (which page, bbox etc). htmldiff.pl now reads that
metadata and outputs that into the file. Some javascript hackery is used to
display the device coords of the point under the mouse pointer.

Finally, if the &#36;parallel option is set, htmldiff will fork jobs in parallel
to try to make better use of multicore machines.


</pre>
<p>[toolbin/bmpcmp.c toolbin/htmldiff.pl]</p>
</blockquote>

<p><strong><a name="2010-01-12T094958.118243Z"></a>
2010-01-12T09:49:58.118243Z Masaki Ushizaka</strong></p>
<blockquote>
<pre>
Fix for bug #690834 &amp; #687832

Bug #690834: text garbled in PS viewer; PDF works
 - Fixed to concatenate CIDFont FDArray font's FontMatrix when running under 'cshow' or 'glyphshow'.
 - Fixed to use correct FDArray font when concatenate its FontMatrix.
 - Changed the meaning of 'fstack.items[n].index' to keep track of FDArray font and FontMatrix.
 - Reverted the rev. 5613 which was a fix for bug #687832.
Bug #687832: (PDF interpreter) : CID Font in PDF
 - Fixed the interpretaion of W/W2/DW/DW2 value from glyph space (wrong) to 1000th of text space (correct).

Applying this patch makes some one dot differences on text in 19 files of LocalCluster test. (List is in Bugzilla #687832 comment #9).</pre>
<p>[base/gxchar.c Resource/Init/pdf_font.ps base/gdevpdtc.c base/gschar0.c base/gxtext.h]</p>
</blockquote>

<p><strong><a name="2010-01-11T120826.301794Z"></a>
2010-01-11T12:08:26.301794Z Ken Sharp</strong></p>
<blockquote>
<pre>
Bug #691044 &quot;&quot;

Another problem caused by a corrupt compressed data stream, resulting in garbage data
being sent to the TrueType interpreter.

Caused when the TT interpreter is given an argument of 0 to the MINDEX operator. Rather
than flag this as an error I've chosen to simply return. This is because it seems that
a value of 0 is actually legal (stupid, but legal), and simply leaves the stack
unchanged.

</pre>
<p>[base/ttinterp.c]</p>
</blockquote>

<p><strong><a name="2010-01-10T155148.168326Z"></a>
2010-01-10T15:51:48.168326Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Don't use operator 'execute' because it resets the /command attribute
in &#36;error dictionary. Use '.execute pop' instead. Keep 'execute' as an
operator for backward compatibility. Thanks to dakka.akka@gmail.com
for analysis of the bug. Bug 691050.
</pre>
<p>[toolbin/smoke.ps Resource/Init/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2010-01-09T235933.690907Z"></a>
2010-01-09T23:59:33.690907Z Robin Watts</strong></p>
<blockquote>
<pre>
Updated version of bmpcmp. Now loads bmp, pgm, pbm, ppm files. Diffs are
always written as bmps though.

No expected differences.

</pre>
<p>[toolbin/bmpcmp.c]</p>
</blockquote>

<p><strong><a name="2010-01-09T160124.458674Z"></a>
2010-01-09T16:01:24.458674Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix a Coverity warning. We were potentially passing a NULL pointer to a routine which
would unconditionally dereference it. Fixed by taking no action if the pointer is NULL.
</pre>
<p>[base/gsgdata.c]</p>
</blockquote>

<p><strong><a name="2010-01-08T011724.694675Z"></a>
2010-01-08T01:17:24.694675Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add documentation on the limitations of -sstdout=_____ where users expected
_all_ stdout I/O to be redirected, not just PS writing to stdout. Bug 691037.
</pre>
<p>[doc/Use.htm]</p>
</blockquote>

<p><strong><a name="2010-01-07T105336.539549Z"></a>
2010-01-07T10:53:36.539549Z Robin Watts</strong></p>
<blockquote>
<pre>
Changes to the MSVC makefiles to prepare for the prototype vs2005 solution
file. Firstly, we introduce an SBR symbol; if this is set when invoking the
makefile, we add a new flag to the C compiler (held in SBRFLAGS) to cause
the generation of the browse data for each source file. Next, we introduce a
new bsc build target to combine those .sbr files into appropriate .bsc ones.
The final change is enable debug builds to put their builds into debugobj
rather than obj directories.

With luck, this should cause no differences for anyone other than me.

</pre>
<p>[/trunk/ghostpdl/common/msvc_top.mak /trunk/ghostpdl/language_switch/pspcl6_msvc.mak /trunk/ghostpdl/svg/svg_msvc.mak base/msvccmd.mak /trunk/ghostpdl/xps/xps_msvc.mak psi/msvc32.mak base/msvclib.mak /trunk/ghostpdl/main/pcl6_msvc.mak]</p>
</blockquote>

<p><strong><a name="2010-01-07T103153.862753Z"></a>
2010-01-07T10:31:53.862753Z Ken Sharp</strong></p>
<blockquote>
<pre>
Update the example file. The old file used a single 'charpath pathbbox' to determine the
height of the text. It then used the 'scale' operator to draw larger text.

If the path was fixed to pixel boundaries, and the point size was low (default 15
points) this could lead to a small error which was magnified by the cumulative scale
operations.

This led to significant differences when using the FreeType font code, as it seems to 
return a hinted path which is bounded by pixel co-ordinates, unlike the regular GS
code.

The altered code scales the font and recalculates the height of the text each time
giving more accurate results. In addition a minimum size has been introduced (50 points)
for the calculation of the text height. Together these result in much closer output.
</pre>
<p>[examples/alphabet.ps]</p>
</blockquote>

<p><strong><a name="2010-01-06T111901.103028Z"></a>
2010-01-06T11:19:01.103028Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix bug #691043 &quot;Vulnerability report : Ghostscript gs_type2_interpret null ptr
dereference (Segmentation Fault)&quot;. The problem appears to be caused by a corrupt
compressed data stream which results in garbage font data being sent to the type 2 and
under some conditions the type 1, font interpreters.

As noted these font interpreters are normally coded to be intolerant of faults, and
do not normally perform much error checking. As a result badly formed (or as in this
case, garbage) fonts can cause serious problems.

Although the null dereference is the cause of the error, this is actually caused by
interpreting the data as a font, and decrementing the font instruction pointer below
the bottom of the instruction stack. 

The patch here adopts the suggestion from the original bug reporter of checking the
pointer before the dereference, but in addition adds some checking when the
instruction pointer is decremented to see that it does not descend past the bottom of
the stack. This is because tests showed that it was possible to reach this point with
a non-NULL pointer, which was still invalid and caused a segmentation violation.

In addition the free_glyph routine has been modified to check the pgd (pointer to 
glyph data) parameter is non-NULL, and that its 'procs' member is non-NULL, before
attempting to call the free procedure. This fault was exposed by selecting the pdfwrite
device.

Although improved this is not a comprehensive fix, there are other locations where the
font instruction pointer may be incremented past the top, or decremented past the
bottom, of the instruction stack. However the FreeType font interpreter correctly
detects the problems without causing a crash, so I don't think we should expend too
much effort on rewriting our current font code to cope.
</pre>
<p>[base/gsgdata.c base/gstype1.c base/gstype2.c base/gxtype1.c]</p>
</blockquote>

<p><strong><a name="2010-01-05T155758.786575Z"></a>
2010-01-05T15:57:58.786575Z Ken Sharp</strong></p>
<blockquote>
<pre>
Revert code introduced in revision 10578. This code is no longer required since the
test in the FreeType code, which this code evaded, is no longer present when built
using the incremental interface.

</pre>
<p>[psi/fapi_ft.c]</p>
</blockquote>

<p><strong><a name="2010-01-05T005207.186738Z"></a>
2010-01-05T00:52:07.186738Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Remove duplicate call to errwrite() introduced by the rev. 10568.
Thanks to Henry for spotting this.
</pre>
<p>[base/gsmisc.c]</p>
</blockquote>

<p><strong><a name="2010-01-04T150922.066340Z"></a>
2010-01-04T15:09:22.066340Z Ken Sharp</strong></p>
<blockquote>
<pre>
Add a comment to explain the arbitrary choice of value for num_glyphs in revision 10578.
</pre>
<p>[psi/fapi_ft.c]</p>
</blockquote>

<p><strong><a name="2010-01-04T092721.029560Z"></a>
2010-01-04T09:27:21.029560Z Ken Sharp</strong></p>
<blockquote>
<pre>
FreeType interface fix. When using the incremental interface to FreeType (which in fact
we always use), Ghostscript is responsible for locating and passing the glyph
description data to FreeType, and so we don't bother to track certain kinds of data
in the FreeType structure.

However, even when using the incremental interface, FT still tests some of this data, in
particular it tests the requested glyph index against the reported number of glyphs
in the font, and aborts if the index is too large.

This patch simply sets the num_glyphs member of the FT_face structure to a large number
(65534) so that the internal FreeType test is successful, and we don't have to bother
with the record-keeping that would be required to keep this member updated when fonts
change.
</pre>
<p>[psi/fapi_ft.c]</p>
</blockquote>

<p><strong><a name="2010-01-03T010712.832443Z"></a>
2010-01-03T01:07:12.832443Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix error recovery code that messed up operand stack trying to break out
of post table processing when the offset to the glyph name is beyond the
table length. Bug 690837.
</pre>
<p>[Resource/Init/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2010-01-02T184840.508429Z"></a>
2010-01-02T18:48:40.508429Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Remove description of -dIgnoreTTEncoding flag from the documentation.
</pre>
<p>[doc/Use.htm]</p>
</blockquote>

<p><strong><a name="2010-01-02T184515.635704Z"></a>
2010-01-02T18:45:15.635704Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Implement symbolic glyph mapping as described in PDF 1.7. Use it for TrueType
fonts with symbolic flag set or having no encoding entry.
The flag -dIgnoreTTEncoding is removed because symbolic fonts always do this
now and non-symbolic fonts should never ignore encoding.
Bug 691035, customer 220.

The new spec includes cmap 3,0 in the supported list. We discovered this
before but didn't use cmap 3,0 as a first choice. PDF 1.7 is not clear about
the choice between symbolic and non-symbolic branches. Current algorithm
is based on a few experiments with AR 8.

The patch causes rendering differences in comparefiles/keyboard.pdf
A few undefined characters change from boxes to empty space.
Current rendering of undefined characters in Ghostscript doesn't match
Adobe Acrobat and should be revised.
</pre>
<p>[Resource/Init/pdf_font.ps Resource/Init/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2009-12-30T173030.315764Z"></a>
2009-12-30T17:30:30.315764Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Remove C++ comments (//) and commented out code because this is not compatible
with old compilers and breaks our coding standard. Comments were introduced
by rev. 9664 and 9778. Bug 691032.
</pre>
<p>[contrib/gdevcd8.c psi/iscannum.c]</p>
</blockquote>

<p><strong><a name="2009-12-30T150640.609490Z"></a>
2009-12-30T15:06:40.609490Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add a check whether the entry in post table of TrueType font crosses
the end of the table. Fill the rest of the table with /.notdef and
continue. Bug 691031.
</pre>
<p>[Resource/Init/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2009-12-29T221801.420560Z"></a>
2009-12-29T22:18:01.420560Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use safer function vsnprintf() instead of vsprintf() for error reporting.
Truncate long messages, issue a warning, and continue. Bug 690829.
</pre>
<p>[base/lib.mak base/gsmisc.c base/stdio_.h]</p>
</blockquote>

<p><strong><a name="2009-12-29T011748.171480Z"></a>
2009-12-29T01:17:48.171480Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Remove stage 2 from seticcspace() and a corresponding PS procedure because
it's no longer needed. Since rev. 10563 the string data source is converted
to reusable stream without a call-out. Bug 690828.
</pre>
<p>[psi/zcolor.c Resource/Init/gs_cspace.ps]</p>
</blockquote>

<p><strong><a name="2009-12-28T070359.416178Z"></a>
2009-12-28T07:03:59.416178Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Don't use long and buggy call-out process to convert a string to a
reusable stream. Do it in 3 lines of C code. Bug 690828.

DETAILS:
The patch fixes string data source handling but leaves most of call-out
machinery in place. Clean-up will be done as anoter commit to separate
material and cosmetic changes.
</pre>
<p>[psi/zcolor.c psi/zfrsd.c psi/zfrsd.h psi/int.mak]</p>
</blockquote>

<p><strong><a name="2009-12-27T155842.012990Z"></a>
2009-12-27T15:58:42.012990Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Assume /FirstChar is 0 and /LastChar is 255 when they are not defined, and
issue a warning. Bug 691022.
</pre>
<p>[Resource/Init/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2009-12-27T153532.126971Z"></a>
2009-12-27T15:35:32.126971Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Consider fonts without font stream and with wrong or missing /Subtype
attribute as Type 1 fonts. Bug 691023.
</pre>
<p>[Resource/Init/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2009-12-26T222145.513158Z"></a>
2009-12-26T22:21:45.513158Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a compile error on UN*X platforms introduced by the previous commit
(rev. 10558).
</pre>
<p>[base/gp_psync.c]</p>
</blockquote>

<p><strong><a name="2009-12-26T200544.539107Z"></a>
2009-12-26T20:05:44.539107Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a Coverity warning about checking after dereferencing.
In this case dereferencing means &amp;((foo *)0)-&gt;bar, which is harmless.
</pre>
<p>[base/gp_psync.c]</p>
</blockquote>

<p><strong><a name="2009-12-26T183235.542626Z"></a>
2009-12-26T18:32:35.542626Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Move checking gstate for 0 immediately after allocation. Fix a Coverity
warning about checking after dereferencing.
</pre>
<p>[base/gsstate.c]</p>
</blockquote>

<p><strong><a name="2009-12-26T182204.265168Z"></a>
2009-12-26T18:22:04.265168Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Don't dereference a pointer before checking it for NULL. Fix a Coverity
warning about checking after dereferencing.
</pre>
<p>[base/gxdhtserial.c]</p>
</blockquote>

<p><strong><a name="2009-12-26T013511.234623Z"></a>
2009-12-26T01:35:11.234623Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Include stdlib.h for a prototype for abs().
</pre>
<p>[base/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2009-12-26T011312.801372Z"></a>
2009-12-26T01:13:12.801372Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a case where a pointer is first dereferenced and then checked for 0.
</pre>
<p>[base/ttobjs.c]</p>
</blockquote>

<p><strong><a name="2009-12-26T004830.642019Z"></a>
2009-12-26T00:48:30.642019Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Clear Coverity warnings about unreachable code. Fix incorrect error
processing in some contributed drivers. Also remove a spurious *.orig file.
</pre>
<p>[contrib/lips4/gdevl4v.c.orig contrib/lips4/gdevl4v.c contrib/eplaser/gdevescv.c contrib/lips4/gdevl4r.c]</p>
</blockquote>

<p><strong><a name="2009-12-24T003305.486056Z"></a>
2009-12-24T00:33:05.486056Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix detection for nearing/passing command list buffer limit to allow for
the condition when the pointer is past the limit (which is NOT the end
of the buffer, but is only a warning). Change this variable name to
'warn_limit' to avoid confusion with the 'limit' used in most other
buffer management areas, such as streams. Bug 691016.
</pre>
<p>[base/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2009-12-23T211234.206998Z"></a>
2009-12-23T21:12:34.206998Z Robin Watts</strong></p>
<blockquote>
<pre>
Add new assert_.h header file. Convert existing code to use it.

</pre>
<p>[contrib/gdevcd8.c /trunk/ghostpdl/pl/pldebug.h base/assert_.h contrib/pcl3/eprn/mediasize.c contrib/lips4/gdevlprn.h contrib/pcl3/eprn/eprnrend.c]</p>
</blockquote>

<p><strong><a name="2009-12-22T233230.888745Z"></a>
2009-12-22T23:32:30.888745Z regression</strong></p>
<blockquote>
<pre>
Remove -dNOOUTERSAVE and related commands from command line and optionally
read in list of fast to process files (so that long commands can be
processed first).

</pre>
<p>[toolbin/localcluster/build.pl]</p>
</blockquote>

<p><strong><a name="2009-12-21T160338.968428Z"></a>
2009-12-21T16:03:38.968428Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) Bug #691009 &quot;Regression: 14-01.PS fails with pdfwrite&quot;. revision 10297,
a fix for pdfwrite involving composite fonts with type 3 descendants, did not check a
return value. This could cause a segment fault later, if a type 0 font was invalid.

The Genoa file 14-01.ps specifically runs tests with invalid type 0 fonts to check the
behaviour under error conditions and appears to be the only test file we have which
does this.
</pre>
<p>[base/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2009-12-21T072023.809940Z"></a>
2009-12-21T07:20:23.809940Z Ralph Giles</strong></p>
<blockquote>
<pre>
Revert c10520 which causes problems with the MSVC build.

&#36;(CC_) enforces 'ansi' C under msvc32.mak, disabling any Microsoft
extensions. This often causes problems with 3rd party libraries
which try to take advantage of those extensions.

This means that the -fPIC flag is again not propagated in the GCC
build; this is just to unbreak the build until I can test a different
solution which works on both platforms.
</pre>
<p>[base/libtiff.mak]</p>
</blockquote>

<p><strong><a name="2009-12-20T195400.274659Z"></a>
2009-12-20T19:54:00.274659Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a Coverity warning: comparing array against NULL is not useful.
</pre>
<p>[base/gxclthrd.c]</p>
</blockquote>

<p><strong><a name="2009-12-20T194310.432199Z"></a>
2009-12-20T19:43:10.432199Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a Coverity warning about an expression with undefined order of evaluation.
</pre>
<p>[contrib/gdevbjca.c]</p>
</blockquote>

<p><strong><a name="2009-12-20T185408.195262Z"></a>
2009-12-20T18:54:08.195262Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a Coverity warning about an expression with undefined order of evaluation.
</pre>
<p>[contrib/pcl3/eprn/eprnrend.c]</p>
</blockquote>

<p><strong><a name="2009-12-20T142439.934442Z"></a>
2009-12-20T14:24:39.934442Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix Coverity warnings about unchecked return code.
</pre>
<p>[base/gxchar.c]</p>
</blockquote>

<p><strong><a name="2009-12-20T065250.539169Z"></a>
2009-12-20T06:52:50.539169Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix Coverity warnings about unchecked return code.
</pre>
<p>[base/gsptype1.c]</p>
</blockquote>

<p><strong><a name="2009-12-19T171409.025653Z"></a>
2009-12-19T17:14:09.025653Z regression</strong></p>
<blockquote>
<pre>
Minor improvements:

skip.lst is now processed by compare.pl instead of build.pl, so tests
to be skipped will be run, just not reported.

Store the archive count in the md5sum.archive so the report email will
be accurate.

Treat indeterminate errors (mostly timeouts) the same as indeterminate
md5sums (i.e. report them below the fold).

</pre>
<p>[toolbin/localcluster/clustermaster.pl toolbin/localcluster/build.pl toolbin/localcluster/cachearchive.pl toolbin/localcluster/compare.pl]</p>
</blockquote>

<p><strong><a name="2009-12-19T011649.970378Z"></a>
2009-12-19T01:16:49.970378Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix an array overrun in zsethalftone5() caused by an unchecked error code
when the number of colorants exceeds the current implementation limit;
throw a /limitcheck error instead. Also fix an unrelated Coverity warning
about unchecked return value from dict_int_param(). Bug 691001.
</pre>
<p>[psi/zht2.c]</p>
</blockquote>

<p><strong><a name="2009-12-18T222419.154314Z"></a>
2009-12-18T22:24:19.154314Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update some obsolete gs_throw() calls. Bug 691010.

This code seemed to be using an early version of the gs_throw() error
reporting macros, passing an undefined -997 error code, a redundant
__func__ error message, and expecting the macro to break flow control.

This commit updates it to the modern version's behaviour.</pre>
<p>[base/gdevdbit.c]</p>
</blockquote>

<p><strong><a name="2009-12-18T211417.100541Z"></a>
2009-12-18T21:14:17.100541Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a missing header to ensure delaration and definition match
for mem_mono_strip_copy_rop(). Fixes a warning in the gcc build.</pre>
<p>[base/lib.mak base/gdevmr1.c]</p>
</blockquote>

<p><strong><a name="2009-12-18T183246.014514Z"></a>
2009-12-18T18:32:46.014514Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add .libs and autom4te.cache to the exclude list for clusterpush.

Builds which generate .deps directories also generally create the
other two. The autom4te.cache files aren't necessarily large but
aren't appropriate to copy to another system since they represent
details of the local build environment.
</pre>
<p>[toolbin/localcluster/clusterpush.pl]</p>
</blockquote>

<p><strong><a name="2009-12-18T162412.002354Z"></a>
2009-12-18T16:24:12.002354Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Added .deps to the exclude list for clusterpush.pl.
</pre>
<p>[toolbin/localcluster/clusterpush.pl]</p>
</blockquote>

<p><strong><a name="2009-12-18T070410.684226Z"></a>
2009-12-18T07:04:10.684226Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add graphics library support for raster operations and extended halftone
methods to the default gcc build.

This allows ghostpcl to build linked against the default 'so' build of
the gs library. On my Linux x86_64 this increases the size of the library
by 29K. While significant, I prefer this to the maintenance burden of
the two different configurations. 
</pre>
<p>[base/Makefile.in]</p>
</blockquote>

<p><strong><a name="2009-12-18T063702.606724Z"></a>
2009-12-18T06:37:02.606724Z Ralph Giles</strong></p>
<blockquote>
<pre>
Derive the libtiff compiler line from &#36;(CC_) instead of &#36;(CC) so
the common flag set is propagated.

Without this, additional options, like XCFLAGS=-fPIC aren't used when
compiling the libtiff source files.
</pre>
<p>[base/libtiff.mak]</p>
</blockquote>

<p><strong><a name="2009-12-18T052314.353404Z"></a>
2009-12-18T05:23:14.353404Z Henry Stiles</strong></p>
<blockquote>
<pre>
Export the the type 42 component parser procedure for pcl, no expected
differences.
</pre>
<p>[base/gxfont42.h base/gstype42.c]</p>
</blockquote>

<p><strong><a name="2009-12-18T013829.130442Z"></a>
2009-12-18T01:38:29.130442Z Ralph Giles</strong></p>
<blockquote>
<pre>
And the 'nogc' allocator to the default gcc build.

This allows ghostxps to build linked against the default 'so' build of
the gs library, simplifying some build options. The code size increase
is negligible.
</pre>
<p>[base/Makefile.in]</p>
</blockquote>

<p><strong><a name="2009-12-17T201408.344945Z"></a>
2009-12-17T20:14:08.344945Z Robin Watts</strong></p>
<blockquote>
<pre>
Fix for bug 690620. Original patch from HenryS. This adjusts rectangular
fills to more closely match that used by Acrobat v8.

DETAILS:

This patch updates the rectangle rendering to follow the mathematical
description of scan conversion more closely. It also includes special case
code to emulate the peculiarities of Adobe Acrobat 8.

A specific test is used to ensure that zero width/height clips are handled
correctly. I am not entirely convinced that relying on the inner bbox is
mathematically correct, but in the tests I've done (see clipbug.ps on the
bug, it seems to be enough to match Acrobat).

</pre>
<p>[base/gsdps1.c]</p>
</blockquote>

<p><strong><a name="2009-12-17T181348.602966Z"></a>
2009-12-17T18:13:48.602966Z regression</strong></p>
<blockquote>
<pre>
Cache the previous revisions crc values to improve compare.pl performance.

Also remove the no longer needed splitjobs.pl from the repository.

</pre>
<p>[toolbin/localcluster/splitjobs.pl toolbin/localcluster/clustermaster.pl toolbin/localcluster/cachearchive.pl toolbin/localcluster/compare.pl]</p>
</blockquote>

<p><strong><a name="2009-12-17T175714.753910Z"></a>
2009-12-17T17:57:14.753910Z Robin Watts</strong></p>
<blockquote>
<pre>
Update the arguments passed to ghostscript by htmldiff.pl so that they
more closely match those used by the localcluster.

DETAILS

localcluster uses &quot;-dNOOUTERSAVE -dJOBSERVER -c false 0 startjob pop -f&quot;

The use of -dJOBSERVER changes the output given for some of the ps3cet files
due to having different stack contents at the outer level.

This seems to eliminate most of the differences between htmldiff results
and local cluster results. Those that remain seem to be caused by differences
in the output of devices (htmldiff uses bmp, wheras the localcluster uses
pgm/pbm/etc).

One minor point; the use of -dJOBSERVER is defined in doc/Use.htm
to require input to be supplied via stdin. I originally wrote the code to
do this, but it seems this gives problems on Windows for some files
(for reasons that are beyond my comprehension at this time). Accordingly,
I've swapped back to supplying the filenames on the command line and
everything seems to be fine.

If this presents a problem on platforms other than windows, simply
edit the value of &#36;redir as shown at the top of the file and redirection
will be used. If this turns out to be necessary, it may be possible to
automate this.

</pre>
<p>[toolbin/htmldiff.pl]</p>
</blockquote>

<p><strong><a name="2009-12-17T152407.353413Z"></a>
2009-12-17T15:24:07.353413Z regression</strong></p>
<blockquote>
<pre>
Minor cleanup/improvement of local cluster code.

DETAILS:

compare.pl: ignore missing archive directory

clustermaster.pl: rather than pausing 60 seconds after the first compile
error is detected wait until all nodes report compile fail or 60 seconds
has elapsed.  in the former case don't bother to send abort to nodes.

build.pl: add support for skip.lst (lists specific tests to skip)

add tests_private/customer_tests to test lists

force tests_private/customer_tests to be dispatached earlier
in the run (some of these tests take a long time and often
the regression run is waiting for one or more to be completed).

clusterpush.pl:  remove cluster_command.run before syncing

run.pl: more intelligently report compile fails.

save the previous non-user build of gs to be used for the following user
builds that don't build gs (previously whatever gs build as last build
was used).


</pre>
<p>[toolbin/localcluster/clustermaster.pl toolbin/localcluster/build.pl toolbin/localcluster/clusterpush.pl toolbin/localcluster/run.pl toolbin/localcluster/compare.pl]</p>
</blockquote>

<p><strong><a name="2009-12-16T184620.783419Z"></a>
2009-12-16T18:46:20.783419Z Robin Watts</strong></p>
<blockquote>
<pre>
Fix for incorrect bbox test in bmpcmp.

bmpcmp would correctly assess the changed region, but then incorrectly accept
changes restricted to a single row or column as not being changes at all.

DETAILS:

This resolves most of the differences between the results given by htmldiff.pl
and those given by the regression cluster. Some remain, but they are due (I
think) to a) different invocations of ghostscript, or b) differences in
device output (pgmraw vs bmp16m).
</pre>
<p>[toolbin/bmpcmp.c]</p>
</blockquote>

<p><strong><a name="2009-12-16T183340.102435Z"></a>
2009-12-16T18:33:40.102435Z Robin Watts</strong></p>
<blockquote>
<pre>
Broken fix for incorrect bbox test in bmpcmp; please ignore this revision
and use 10507 instead.

bmpcmp would correctly assess the changed region, but then incorrectly accept
changes restricted to a single row or column as not being changes at all.
</pre>
<p>[toolbin/bmpcmp.c]</p>
</blockquote>

<p><strong><a name="2009-12-16T174049.399642Z"></a>
2009-12-16T17:40:49.399642Z Robin Watts</strong></p>
<blockquote>
<pre>
Improved version of htmldiff.pl: New HTML file started every 100 or so sets
of image differences (configurable). This should stop browsers grinding to a
halt. Improved reporting of conversion errors.

</pre>
<p>[toolbin/htmldiff.pl]</p>
</blockquote>

<p><strong><a name="2009-12-15T221458.866880Z"></a>
2009-12-15T22:14:58.866880Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Increase the limit on the number of color components to 12. A file with
9 components has been found in the wild, add 3 more for a small reserve.
Bug 691002.
</pre>
<p>[base/gsccolor.h]</p>
</blockquote>

<p><strong><a name="2009-12-15T143456.554574Z"></a>
2009-12-15T14:34:56.554574Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a botched use of references where a pointer to a reference in a
PostScript VM was used as a temporary variable. Bug 690828.
</pre>
<p>[psi/zcolor.c]</p>
</blockquote>

<p><strong><a name="2009-12-15T095523.729025Z"></a>
2009-12-15T09:55:23.729025Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI) : Silence a compiler warning

Details
Flagged by Marcos, the variable 'ep' was unused and raised a gcc warning.

</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-12-13T013159.081596Z"></a>
2009-12-13T01:31:59.081596Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Accept ASCII85 stream that ends with bare '~' in PDF files for compatibility
with Acrobat Reader. Add /PDFRules ASCII85Decode filter parameter to select
between PS and PDF logic. Bug 690976, customer 870.

</pre>
<p>[base/sa85d.h Resource/Init/pdf_base.ps base/sa85d.c psi/zfdecode.c]</p>
</blockquote>

<p><strong><a name="2009-12-12T230518.157328Z"></a>
2009-12-12T23:05:18.157328Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix RasterOp texture rendering from uninitialized memory (past end of buffer)
when the texture was 'expanded' and the unexpanded texture had repitions in y.
Bug 690299.

DETAILS:

The expansion was only needed if the device color space was RGB, but not 8 bit.
This doesn't really give valid output anyway for RasterOps, but at least
we no longer reference past buffer bounds (see the 'trow' calculation in
gdevmr8n.c).

</pre>
<p>[base/gdevdrop.c]</p>
</blockquote>

<p><strong><a name="2009-12-12T223917.759602Z"></a>
2009-12-12T22:39:17.759602Z regression</strong></p>
<blockquote>
<pre>
Added abort option to clusterpush.pl (i.e. 'clusterpush.pl abort') to
abort current job and remove any jobs queued for a user (it is possible
to abort/remove jobs for other users, but I'll leave that undocumented).

Also partially added support for mupdf regression testing.

</pre>
<p>[toolbin/localcluster/clustermaster.pl toolbin/localcluster/build.pl toolbin/localcluster/clusterpush.pl toolbin/localcluster/run.pl]</p>
</blockquote>

<p><strong><a name="2009-12-12T182525.212987Z"></a>
2009-12-12T18:25:25.212987Z regression</strong></p>
<blockquote>
<pre>
Added --max-size=2500000 to avoid sending very large files.

Divide queueing and syncing into two steps, so that it's possible
to ^C if you decide the files being transmistted are incorrect.

</pre>
<p>[toolbin/localcluster/clusterpush.pl]</p>
</blockquote>

<p><strong><a name="2009-12-12T034655.487466Z"></a>
2009-12-12T03:46:55.487466Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
Coverity warning #4475, uninitialized value</pre>
<p>[base/gdevpxut.c]</p>
</blockquote>

<p><strong><a name="2009-12-12T034555.759446Z"></a>
2009-12-12T03:45:55.759446Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
Coverty warning #1158, unchecked return values</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-12-12T034513.363455Z"></a>
2009-12-12T03:45:13.363455Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
Coverity warning #2555, removing unused header</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-12-12T034349.383201Z"></a>
2009-12-12T03:43:49.383201Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
treat depth 15 the same as depth 16 in get_bits_rectangle()

It looks to be 'just work' (or no worse than depth 16) by treating depth 
15 the same as depth 16 in get_bits_rectangle. The pcl files in the original report
works now; but a pxl file shows some visual artifects (and different one) at depth
15, 16 and will be filed separately.

This fix fix bug 690328 (make X11 device continue for those pcl files; caveate 
visual artefacts for at least one pxl file)

</pre>
<p>[base/gdevx.c doc/Devices.htm]</p>
</blockquote>

<p><strong><a name="2009-12-12T002826.868635Z"></a>
2009-12-12T00:28:26.868635Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix hang condition due to pointer comparison, bug 690638.

DETAILS:

The clist buffer management mostly checked the amount of data in the buffer
by computing the difference between the limit and the current pointer. This
patch fixes the places that computed a new pointer of the desired amount
plus the current pointer and compared to the limit. If this overflowed
the register, then the sum was less than the (unsigned) limit pointer.

</pre>
<p>[base/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2009-12-11T191857.300388Z"></a>
2009-12-11T19:18:57.300388Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix incorrect calculation of the operand stack base (pdfemptycount) in PDF
interpreter, which caused incorrect processing of scn operator. Bug 690977.

</pre>
<p>[Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2009-12-10T032932.317033Z"></a>
2009-12-10T03:29:32.317033Z regression</strong></p>
<blockquote>
<pre>
Removed bitrgb and pgmraw from pcl regression tests.

Fixed a bug where failed compiles would cause a job restart loop.

</pre>
<p>[toolbin/localcluster/clustermaster.pl toolbin/localcluster/build.pl toolbin/localcluster/run.pl]</p>
</blockquote>

<p><strong><a name="2009-12-09T172434.115310Z"></a>
2009-12-09T17:24:34.115310Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : regressions with revision 10474

Details
Revision 10474 unexpectedly caused a number of regressions resulting in unreadable
PDF files. This revision changes the way we deal with the indeterminacy caused by 
not checking the return value. In this case if the return value is an error we *set*
the members field of the gs_glyoh_info struct to 0 and allow the code to test the
value

</pre>
<p>[base/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2009-12-09T153227.320916Z"></a>
2009-12-09T15:32:27.320916Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Unchecked return value causing indeterminisms

Details
Bug #690762 &quot;&quot;
Reported and investigated by Marcos using Valgrind. The return value from a glyph_info
method was not checked before accessing the members of the 'gs_glyph_info' structure. If
an error occurred the fields of the structure were potentially not initialised, leading
to indeterminate results.

Modified to check the return value properly.

</pre>
<p>[base/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2009-12-08T160901.319365Z"></a>
2009-12-08T16:09:01.319365Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI) : Handle Type 42 fonts with CharStrings dictionaries with real PS glyphs

Details
The FAPI code regarded a Type42 font which contained a CharStrigns dictionary where the
contents of the dictionary were not simply integers but actual glyph descriptions to be
an invalid font. Regular Ghostscript, Jaws and Acrobat Distiller happily accept such
bizarre fonts and correctly render the glyphs in them, even the PostScript ones.

Modified FAPI to execute the glyph descriptions in this case rather than raising an
error.

</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-12-08T075226.208006Z"></a>
2009-12-08T07:52:26.208006Z Ralph Giles</strong></p>
<blockquote>
<pre>
Revert remaining changes to the clusterpush script inadvertently 
included in r10461. This version is now identical with the version
in r10435. In particular, the more sophisticated gs/ghostpdl detection
which works for branches and custom-named directories is restored.
</pre>
<p>[toolbin/localcluster/clusterpush.pl]</p>
</blockquote>

<p><strong><a name="2009-12-08T074112.811962Z"></a>
2009-12-08T07:41:12.811962Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update local cluster documentation to reference the 'regression' account
instead of 'marcos' and other minor cleanup.
</pre>
<p>[toolbin/localcluster/setupcluster toolbin/localcluster/clusterpush.pl toolbin/localcluster/readme toolbin/localcluster/clusterpush.txt]</p>
</blockquote>

<p><strong><a name="2009-12-08T072503.670058Z"></a>
2009-12-08T07:25:03.670058Z Ralph Giles</strong></p>
<blockquote>
<pre>
Use the new 'regression' username in the clusterpush script.

This corrects what looks like an inadvertent commit of an older version
in r10461.
</pre>
<p>[toolbin/localcluster/clusterpush.pl]</p>
</blockquote>

<p><strong><a name="2009-12-08T063151.930815Z"></a>
2009-12-08T06:31:51.930815Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a Coverity warning. Don't assign a value to a variable if it isn't used.
</pre>
<p>[psi/imainarg.c]</p>
</blockquote>

<p><strong><a name="2009-12-08T033305.781180Z"></a>
2009-12-08T03:33:05.781180Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix Coverity warnings caused by a recurring error in opvp driver where
'if (i &gt; sizeof(foo)/sizeof(*foo)) ...' was used to prevent out-of-bounds
access to foo[i] .
</pre>
<p>[contrib/opvp/gdevopvp.c]</p>
</blockquote>

<p><strong><a name="2009-12-08T033218.888688Z"></a>
2009-12-08T03:32:18.888688Z regression</strong></p>
<blockquote>
<pre>
Improve the node failure job reallocation logic.

Details

Since the cluster jobs are now distributed to the cluster nodes in
batches a node failure no longer requires a job restart.  Instead the
jobs that had been sent to the failed node are put back into the pending
queue and sent to the remaining node(s).

</pre>
<p>[toolbin/localcluster/clustermaster.pl toolbin/localcluster/clusterpush.pl toolbin/localcluster/run.pl toolbin/localcluster/compare.pl]</p>
</blockquote>

<p><strong><a name="2009-12-08T004259.473070Z"></a>
2009-12-08T00:42:59.473070Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a Coverity warning. Avoid a FILE pointer leak in an unlikely
case when gs_main_init2() fails.

</pre>
<p>[psi/imainarg.c]</p>
</blockquote>

<p><strong><a name="2009-12-07T154953.218004Z"></a>
2009-12-07T15:49:53.218004Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI) : Ignore some TrueType faults

Details
The file Bug689516.pdf contains TrueType fonts with problems, one of the fonts has 
multiple fatal errors:

1) GLYF and LOCA tables contain more than NumGlyphs glyphs, and some of these
glyphs are used.
2) At least one glyph uses more points than the declared maxPoints value.
3) The FPGM is invalid.

Acrobat ignores these but elides the glyphs with problems, GS's internal TT rendering
engine issues a warning and also elides these glyphs.

Modified the FreeType FAPI code to catch certain classes of error and emit slightly
different, possibly slightly more informative, warnings, and continue, ignoring the
faulty glyph(s).

</pre>
<p>[psi/fapi_ft.c]</p>
</blockquote>

<p><strong><a name="2009-12-07T054636.982240Z"></a>
2009-12-07T05:46:36.982240Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a Coverity warning. Add missing assignment to 'code' variable. The later
use of 'code' in the conditional expression indicates that this was the
author's intention. 

</pre>
<p>[base/gsfont.c]</p>
</blockquote>

<p><strong><a name="2009-12-06T191208.897785Z"></a>
2009-12-06T19:12:08.897785Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a Coverity warning. Add missing assignment to 'code' variable. The later
use of 'code' in the conditional expression indicates that this was the
author's intention. 

</pre>
<p>[base/gxttfb.c]</p>
</blockquote>

<p><strong><a name="2009-12-06T145558.088044Z"></a>
2009-12-06T14:55:58.088044Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a Coverity warning. Check the return code from sget_variable_uint()
in image4 serialization.

</pre>
<p>[base/gximage4.c]</p>
</blockquote>

<p><strong><a name="2009-12-06T022136.356914Z"></a>
2009-12-06T02:21:36.356914Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a Coverity warning and improve readability. Don't define a local variable
with the same name as a function argument.

</pre>
<p>[psi/ziodevsc.c]</p>
</blockquote>

<p><strong><a name="2009-12-06T005638.018707Z"></a>
2009-12-06T00:56:38.018707Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a Coverity warning and improve portability. Don't access sequential
members of a structure as an array.

</pre>
<p>[psi/zht1.c]</p>
</blockquote>

<p><strong><a name="2009-12-05T231032.160743Z"></a>
2009-12-05T23:10:32.160743Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a Coverity warning. Change the logic in obj_cvs() to handle all possible
combinations and avoid a potential SEGV.

</pre>
<p>[psi/iutil.c]</p>
</blockquote>

<p><strong><a name="2009-12-05T192142.203093Z"></a>
2009-12-05T19:21:42.203093Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a Coverity warning and a potential SEGV caused by a wrong pointer
checked for NULL after memory allocation.

</pre>
<p>[psi/zfcid1.c]</p>
</blockquote>

<p><strong><a name="2009-12-05T172701.175245Z"></a>
2009-12-05T17:27:01.175245Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a Coverity warning. Remove dead and commented out code that didn't
change since April 2000, rev 324.

</pre>
<p>[psi/zfcmap.c]</p>
</blockquote>

<p><strong><a name="2009-12-04T155208.152428Z"></a>
2009-12-04T15:52:08.152428Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI) : empty glyphs causing problems after revision 10434

Details
As noted by SaGS in the thread for bug 690448, the revision for 10434 does not 
properly cater for 0 length glyphs, and instead makes such glyphs the same as the next
(in GLYF table) non-empty glyph.

Also as pointed out by SaGS, the glyph length is already calculated so we don't need to
repeat the performance with the LOCA table anyway. Modified the code to use the 
pre-calculated glyph lengths instead of recalculating them incorrectly.

</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-12-04T153803.727531Z"></a>
2009-12-04T15:38:03.727531Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI) : TT tables &gt; 64Kb not read properly.

Details
If, while reading a TrueType table for serialisation, we ran off the end of an sfnts
string, we switch to the next string, and carry on reading the data. However, we did not
update the destination pointer leading to corruption of the already processed data and 
general corruption of the table.

We now update the destination pointer before continuing to write data to it.

</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-12-04T035110.377640Z"></a>
2009-12-04T03:51:10.377640Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Rearrange JP2 color space processing code to facilitate experiments with
enumerated color spaces.

</pre>
<p>[Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2009-12-04T003304.330450Z"></a>
2009-12-04T00:33:04.330450Z Robin Watts</strong></p>
<blockquote>
<pre>
Extend ghostscript graphics library with the capability to handle different
start, end and dash caps.

The existing gs_setlinecap function sets all 3 caps in lockstep, so no change
with current code. New functions gs_setlinestartcap, gs_setlineendcap,
gs_setlinedashcap set the different cap styles.

The dashing code now leaves segment notes in the output path to inform the
choice of which caps to use. The stroking code is updated to honours these
notes.

gxclpath.c and gdevvec.c assume that all caps are the same as start_cap.
Check that this is valid.

</pre>
<p>[base/gsstate.c base/gxclpath.c base/gxline.h base/gxpdash.c base/gxpath.h base/gdevpdtt.c base/gsline.c base/gdevvec.c base/gdevpdfg.c base/gsline.h base/gxstroke.c base/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2009-12-03T192112.315688Z"></a>
2009-12-03T19:21:12.315688Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
I missed a file that should have been part of the r10440 commit.
</pre>
<p>[toolbin/localcluster/clusterpull.sh]</p>
</blockquote>

<p><strong><a name="2009-12-03T191412.694527Z"></a>
2009-12-03T19:14:12.694527Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a Coverity warning by removing redindant checks. The 'pie' pointer cannot
be null here because it is dereferenced earlier.

</pre>
<p>[psi/zimage.c]</p>
</blockquote>

<p><strong><a name="2009-12-03T173038.929684Z"></a>
2009-12-03T17:30:38.929684Z Robin Watts</strong></p>
<blockquote>
<pre>
Remove stray (incorrect) initialisation. This removes a &quot;removing const&quot;
warning.


</pre>
<p>[base/gdevpdfe.c]</p>
</blockquote>

<p><strong><a name="2009-12-03T161800.535689Z"></a>
2009-12-03T16:18:00.535689Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Improved cluster reliability (automatically reset stale nodes, move
watchdog from cron to run.pl, check for periodic transfer, etc.).

</pre>
<p>[toolbin/localcluster/clustermonitor.pl toolbin/localcluster/clustermaster.pl toolbin/localcluster/run.pl]</p>
</blockquote>

<p><strong><a name="2009-12-03T060839.915454Z"></a>
2009-12-03T06:08:39.915454Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add argument list and 'minst' address to -Z: debugging report to assist in tracking
cluster test logs (to see which, if any, jobs start but don't finish).
</pre>
<p>[psi/imain.c psi/imainarg.c]</p>
</blockquote>

<p><strong><a name="2009-12-03T000230.276576Z"></a>
2009-12-03T00:02:30.276576Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
send images with Interpolate=true back to gx_default.

comparefiles/148-01.ps have a few Type 1 images with
&lt;&lt;Interpolate true&gt;&gt; are not rendered with Interpolate.

Since pxlcolor/pxlmono cannot do Interpolate within, 
and has no code to do such thing, the correct solution 
is simply detect such images and use gx_default_*. Fixes bug 690970.

</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-12-02T195705.281734Z"></a>
2009-12-02T19:57:05.281734Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Improved logic in clusterpush.pl to detect if running from a gs or ghostpdl director.
</pre>
<p>[toolbin/localcluster/clusterpush.pl]</p>
</blockquote>

<p><strong><a name="2009-12-02T142041.078998Z"></a>
2009-12-02T14:20:41.078998Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI): error in revision 10433

Details
Accidentally committed a version where the calculation of the initial offset to test
against was the end of the LOCA table, instead of the theoretical maximum size of the
GLYF table.

</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-12-02T141344.401916Z"></a>
2009-12-02T14:13:44.401916Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI) : FAPI code not expecting unsorted LOCA/GLYF tables

Details
The FAPI code needs to copy the GLYF data, to do this it needs to know how long the 
data is. The only way to do this is to consult the LOCA table which gives the offset
to each glyph in the GLYF table. Subtracting the start of the glyph from the start of
the next glyph in the GLYF table gives the length.

The existing code assumed that the GLYF (and therefore LOCA) tables was ordered, that is
that glyph 1 followed glyph 0 and so on. There is no such restriction, glyphs can
appear in any order, so the simple subtraction caused incorrect glyph lengths, which
could lead to truncation of the data and caused errors.

We now pick up the offset of the glyph we want from the LOCA table, and then search the 
entire table to find the glyph whose offset is nearest (but after) the offset of the
glyph we want.

</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-12-02T070016.393155Z"></a>
2009-12-02T07:00:16.393155Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix vertical positioning of interpolated images that caused images to be moved
down, possibly past the end of the band. An extra multiplication by -1 was the
culprit. Bug 690885, customers 531 and 850.

</pre>
<p>[base/gxiscale.c]</p>
</blockquote>

<p><strong><a name="2009-12-01T193906.587717Z"></a>
2009-12-01T19:39:06.587717Z Robin Watts</strong></p>
<blockquote>
<pre>
Fix dropouts seen with thin lines by using the method described in bug 687721,
namely, that of extending the trapezoids filled by a small triangular region
at each end.

Local cluster testing shows 66 changes, of which only 20 or so are real.
Of these, most are clearly improvements, and the rest are neutral. 

</pre>
<p>[base/gdevddrw.c]</p>
</blockquote>

<p><strong><a name="2009-12-01T191035.168567Z"></a>
2009-12-01T19:10:35.168567Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the clustermonitor cgi script to read the new combined queue 
file for pending jobs.
</pre>
<p>[toolbin/localcluster/clustermonitor.cgi]</p>
</blockquote>

<p><strong><a name="2009-12-01T190827.833775Z"></a>
2009-12-01T19:08:27.833775Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the clustermonitor cgi script to return regression results.

This makes use of the CGI module to parse an optional 'report' query
parameter, which if present, returns a specific regression result
instead of the default json dashboard status. Current it only supports
svn jobs, not custom runs submitted through the clusterpush script.

Also cleans up the the paths to use a &#36;clusteroot variable for the 
prefix.
</pre>
<p>[toolbin/localcluster/clustermonitor.cgi]</p>
</blockquote>

<p><strong><a name="2009-12-01T183608.279176Z"></a>
2009-12-01T18:36:08.279176Z Robin Watts</strong></p>
<blockquote>
<pre>
Factor out the miter checking code into a single function rather than having it
repeated 3 times.

Add a test to the extracted code to spot the case where the cdelta's are too
small to be reliably used to calculate the correct miter point. In such cases
revert to using the raw vectors suitably scaled.

Testing reports 69 changes in the regression files, none of which can be
reproduced locally. This fixes bug 690098.

</pre>
<p>[base/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2009-12-01T180858.973794Z"></a>
2009-12-01T18:08:58.973794Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a Coverity warning and a potential array overrun in obj_cvp().

</pre>
<p>[psi/iutil.c]</p>
</blockquote>

<p><strong><a name="2009-12-01T160436.569081Z"></a>
2009-12-01T16:04:36.569081Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Another clusterpush.pl change that was lost, should have been part of r10421.
</pre>
<p>[toolbin/localcluster/clusterpush.pl]</p>
</blockquote>

<p><strong><a name="2009-12-01T153715.738865Z"></a>
2009-12-01T15:37:15.738865Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Fixed localcluster/clusterpush.pl to work with casper3.
</pre>
<p>[toolbin/localcluster/clusterpush.pl]</p>
</blockquote>

<p><strong><a name="2009-12-01T090210.394257Z"></a>
2009-12-01T09:02:10.394257Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
All local cluster jobs are now queued (instead of just user jobs).
This eliminates a race condition that could have occured if the
ghostpdl/ghostscript repository is updated after the cluster master
initiates a cluster run but before the nodes perform the svn update.
As a side-effect of this change svn commit jobs are not longer given
priority over user jobs.

</pre>
<p>[toolbin/localcluster/clustermaster.pl toolbin/localcluster/build.pl toolbin/localcluster/clusterpush.pl toolbin/localcluster/run.pl]</p>
</blockquote>

<p><strong><a name="2009-12-01T034054.743929Z"></a>
2009-12-01T03:40:54.743929Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a Coverity warning about unchecked negative return and a possible
access to an array at a negative position.

</pre>
<p>[psi/zupath.c]</p>
</blockquote>

<p><strong><a name="2009-11-30T233723.019948Z"></a>
2009-11-30T23:37:23.019948Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fix for bug 690218.   If the SeparationOrder was specified, then we should only allocate buffer space for those colorants.  See devn_put_params for details on this.  Right now, the PDF14 device will always include CMYK.  A future optimization is to be able to NOT have those included in the bufferallocations if we don't specify them.  In that case it would then be possible to output 8 separations at a time without using compressed color.  Note that if SeparationOrder is not specified, the number of colorants used in the pdf14 device buffer allocations is equal to the number of colorants in the document up to a maximum of 64.</pre>
<p>[base/gstrans.c]</p>
</blockquote>

<p><strong><a name="2009-11-30T231219.025235Z"></a>
2009-11-30T23:12:19.025235Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Change from batch job distribution system to polled system.
</pre>
<p>[toolbin/localcluster/splitjobs.pl toolbin/localcluster/clustermaster.pl toolbin/localcluster/build.pl toolbin/localcluster/clusterpush.pl toolbin/localcluster/run.pl]</p>
</blockquote>

<p><strong><a name="2009-11-30T225724.661785Z"></a>
2009-11-30T22:57:24.661785Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for segfault when image 'clues' are accessed during a GC after a
restore has erased (set to zero) the contents. Bug 690915.

DETAILS:

As described in gx_image_free_enum comment, the penum may not be freed if
it is at a higher (outer) save level, so the contents (including the
&quot;clues&quot; are zeroed, but the ENUM in image_enum_enum_ptrs (gxipixel.c)
did not check for this. This was indeterministic since it depended on
when the GC scan ran.
</pre>
<p>[base/gxipixel.c]</p>
</blockquote>

<p><strong><a name="2009-11-30T203448.913220Z"></a>
2009-11-30T20:34:48.913220Z Henry Stiles</strong></p>
<blockquote>
<pre>
Remove an unnecessary diagnostic debug printf which should not have
been checked in.  No expected differences.
</pre>
<p>[base/gsalloc.c]</p>
</blockquote>

<p><strong><a name="2009-11-30T164008.309112Z"></a>
2009-11-30T16:40:08.309112Z Henry Stiles</strong></p>
<blockquote>
<pre>
New procedure to dump memory chunks with less detail.  This will be
used by the non garbage collecting client languages to print memory
leak information at the end of jobs.  No expected differences.
</pre>
<p>[base/gsalloc.c]</p>
</blockquote>

<p><strong><a name="2009-11-30T090526.245478Z"></a>
2009-11-30T09:05:26.245478Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI): Can't handle FontBBox as 't_mixedarray'

Details
The FAPI code extracts the entries in the FontBBox, but only catered for the internal
GS 't_array' or 't_shortarray' types, we can also get the 't_mixedarray' type.

</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-11-30T024711.189285Z"></a>
2009-11-30T02:47:11.189285Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
updating begin_image and fill_mask to cope with white/black+transparent

Apparently not all black/white+transparent uses the copy_mono code path, which
has been recently updated to do white-on-mask. There are two other ways
black/white+transparent can pass through pxl - in begin_image() (as part of an
RGB/Gray image with an alpha channel) which is most of the files in bug
690947, and fill_mask() which has no known cases yet.

Note the new addition to fill_mask() and begin_image() is not identical to that
in copy_mono() in the case of the drawing color being white - fill_mask() and
begin_image() both try to draw white on the blacks of a black/white mask and
transparent on the white, whereas copy_mono() draws white on the white and draw
transparent on the opposite (set to black but really transparent), so the
source is inverted in fill_mask() and begin_image() compared to copy_mono().

</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-11-30T024119.062276Z"></a>
2009-11-30T02:41:19.062276Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
set ROP to paint through character glyphs (pattern tiles).

Apparently complete pattern tiles are sent as a character in a custom symbol
font (rather than small rectangles for incomplete tiles), thus allowing re-use.
The code set the fill color but never set ROP to &quot;paint with brush color&quot; thus
glyphs appears as black. This patch set the ROP3 operation to paint through
complete pattern tiles. Fixes bug 690949, also some of the problems in bug
690585 (for ghostpdl).

</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-11-30T023644.876347Z"></a>
2009-11-30T02:36:44.876347Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
fix typo introduced in r5556

It appears that 'r5556: Added macros for assertions' introduced a typo.
There is no known effect from this typo, except possibly stroke color 
not being set where it should.

</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-11-30T023052.552359Z"></a>
2009-11-30T02:30:52.552359Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
another ID to name update</pre>
<p>[doc/AUTHORS]</p>
</blockquote>

<p><strong><a name="2009-11-30T022945.556262Z"></a>
2009-11-30T02:29:45.556262Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
avoid setting join to invalid value; issue found in bug 690585</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-11-29T024331.722821Z"></a>
2009-11-29T02:43:31.722821Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix to correct mask offsets (bit order) for big_endian as well as sharing this
array for the various devices. Bug 690954.

</pre>
<p>[base/gdevtsep.c]</p>
</blockquote>

<p><strong><a name="2009-11-28T105910.646748Z"></a>
2009-11-28T10:59:10.646748Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI) : segmentation violation with Multiple Master fonts

Details
When extracting the &#36;Blend procedure from a Multiple Master font, if the procedure
contained a name object, there was a typo which used an uninitialised variable
instead of the extracted name element to convert the name to a string.

Fixed by using the correct name object instead

</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-11-28T043943.983110Z"></a>
2009-11-28T04:39:43.983110Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Changes to accomodate the transition from casper2 to casper3.
</pre>
<p>[toolbin/localcluster/clustermonitor.pl toolbin/localcluster/clustermaster.pl toolbin/localcluster/clusterpull.sh toolbin/localcluster/build.pl toolbin/localcluster/clusterpush.pl toolbin/localcluster/run.pl]</p>
</blockquote>

<p><strong><a name="2009-11-27T191508.980517Z"></a>
2009-11-27T19:15:08.980517Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix dereference of NULL when target device passed to gx_forward_put_params
was NULL. This occurred with the standalone 'bbox' device.
</pre>
<p>[base/gdevnfwd.c]</p>
</blockquote>

<p><strong><a name="2009-11-27T190702.726122Z"></a>
2009-11-27T19:07:02.726122Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for Device N capable device segfaults (psdcmyk, tiffsep, tiffsep1, ...) that use
the gdevdevn.c parameter handling. A 'restore' could free up separation names but
the pointers in the device were unchanged. Bug 690956.

</pre>
<p>[base/gdevdevn.c]</p>
</blockquote>

<p><strong><a name="2009-11-27T141919.911778Z"></a>
2009-11-27T14:19:19.911778Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI) : invalid fonts resulting in errors

Details
The files Adobe Garamond CE.pdf, Bauhaus CE.pdf and Futura CE.pdf alll contain subset CFF
fonts, and use the same (ecaron) glyph. In all three cases the font uses the deprecated
'SEAC' endchar construction and in all three cases at least one component glyph is not
present in the font.

Probably the producer didn't realise the component glyphs were required amd did not 
include them in the subset.

As a result the FAPI code properly rasied an error, sicne the required glyph is not 
presemt. Adobe Acrobat (of course) ignores the error and simply elides the missing 
glyph. Regular Ghostscript has at some time been coded to do the same and emit a 
warning.

For compatibility this 'feature' has been implemented in  the FAPI interface.

</pre>
<p>[psi/fapi_ft.c]</p>
</blockquote>

<p><strong><a name="2009-11-27T005509.262519Z"></a>
2009-11-27T00:55:09.262519Z Robin Watts</strong></p>
<blockquote>
<pre>
Part 2 of commit 10391. Reinitroduce special cases in a way that doesn't change
the output. A clustertest shows 33 differences overall, but testing of those
files on my local machine shows them all to be identical.

This fixes bug 687666.

</pre>
<p>[base/gdevddrw.c]</p>
</blockquote>

<p><strong><a name="2009-11-26T204831.400887Z"></a>
2009-11-26T20:48:31.400887Z Robin Watts</strong></p>
<blockquote>
<pre>
First of a 2 part commit, fixing the special case horizontal/vertical
rectangle code in the thin line code in gdevddrw.c, as it doesn't match
the general case. This will cause many differences in the regression tests.

Part 2 will commit a fixed version that will hopefully show none.

</pre>
<p>[base/gdevddrw.c]</p>
</blockquote>

<p><strong><a name="2009-11-26T165325.042900Z"></a>
2009-11-26T16:53:25.042900Z Ken Sharp</strong></p>
<blockquote>
<pre>
Removed commented out code that should not have been left behind in revision 10389
</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-11-26T164403.688193Z"></a>
2009-11-26T16:44:03.688193Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI) : intermittent crashes with TrueType fonts

Details
The sfnts reader code in the FAPI module maintains a pointer to a string from an array
of strings (the /sfnts array). It then used the offset member to point along the string
to the current byte within it. When reading multiple bytes, it checks there is
sufficient data by checking ptr+offset against the size of the string. However the code
did not increment the offset member after reading multiple bytes, instead it incremented
the actual pointer. This completely bypassed the size checking, which could cause a
crash depending on the memory layout. This was only likely to happen with fonts with
very large TrueType tables (ie those not conforming to Type 42 recommendations
regarding string sizes, see tech note 5012)

Altered the code to always increment the offset rather than the pointer so that size
checking works properly.

</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-11-26T101815.394246Z"></a>
2009-11-26T10:18:15.394246Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI) : Incorrect GID supplied to font interpreter for CIDFonts with TT outlines

Details
CIDFonts use a CID, for CIDFonts with TrueType outlines the font contains a CIDToGIDMap
entry which is used to convert the CID into a TrueType Glyph ID (GID). We were not using
the data, which resulted in us passing the CID directly to the font interpreter, which
caused the wrong glyph to be extracted, or failures to occur because the GID was larger
than the number of glyphs in the font.

The type 42 font code in GS converts the CIDToGIDMap into a CIDMap entry, we now use
this to convert the CID into a correct GID for the font interpreter to use.

</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-11-26T101300.448002Z"></a>
2009-11-26T10:13:00.448002Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI) : CIDFonts not working with fonts containing a CDevProc

Details
When calling zchar_set_cache we always used the glyph name as one of the arguments,
this argument was later pushed onto the stack for use by a CDevProc if required. The 
problem is that with CIDFonts the name is always a null object and we should actually 
be supplying the CID to the procedure.

Modified the call to zchar_set_cache when we have a CIDFont to supply the CID instead 
of the name

</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-11-26T071302.012525Z"></a>
2009-11-26T07:13:02.012525Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Report enhancments as a separate category in the the weekly bug aging report.  Closes bug 690524.
</pre>
<p>[toolbin/bugsByEngineer.pl]</p>
</blockquote>

<p><strong><a name="2009-11-26T004735.579155Z"></a>
2009-11-26T00:47:35.579155Z Robin Watts</strong></p>
<blockquote>
<pre>
Fix for bug 688655: stroking of wide curves with high curvature would
previously have left strange effects under the curve, and had nasty
flattening artifacts on the outside of joins.

Here we alter the stroking logic to spot that line segments come from curves
and we render using round joins both above and below the curve.

This gives us correct rendering of tests/ps/jointest.ps for the first time.

This causes about 4000 diffs. I've generated a huge number of them locally
and they all seem to be the odd pixel changed do to rounding. Where differences
are larger I've convinced myself that the difference is correct.

</pre>
<p>[base/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2009-11-25T195911.063393Z"></a>
2009-11-25T19:59:11.063393Z Henry Stiles</strong></p>
<blockquote>
<pre>
Remove the string list implementation from the &quot;nogc&quot; allocator.  This
makes the implementation much simpler and there was little or no
performance improvement with the string lists.  Also this file has
been cleaned up of archaic comments about VMS, compiler support
comments, pragmas, etc.  No expected differences.
</pre>
<p>[base/gsnogc.c]</p>
</blockquote>

<p><strong><a name="2009-11-24T165112.328850Z"></a>
2009-11-24T16:51:12.328850Z Robin Watts</strong></p>
<blockquote>
<pre>
Fix for bug 690938. Revert revision 10294, an attempt to fix a valgrind bug,
and instead initialise the bbox of paths to the maximally invalid bbox.

As soon as any point is added to the bbox, we'll get a valid bbox. Note that
the &quot;bbox_set&quot; flag does NOT mean &quot;the bbox is valid&quot;, it instead means &quot;the
bbox has been set, as per the setbbox postscript operator&quot;.


</pre>
<p>[base/gxpath.c base/gxpath2.c base/gxpath.h]</p>
</blockquote>

<p><strong><a name="2009-11-24T123117.678731Z"></a>
2009-11-24T12:31:17.678731Z Robin Watts</strong></p>
<blockquote>
<pre>
In revision 10351 I commited a partial fix for Bug 690531 that added a new
method for stroking a path. Due to a silly mistake on my part when stroking
paths with round caps, we could occasionally fail due to a confusion over
which caps to use.

Ralph reported this issue as bug 690639. The error is fixed here, but this
doesn't solve all the rendering problems. Investigations continuing.

</pre>
<p>[base/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2009-11-24T083627.174072Z"></a>
2009-11-24T08:36:27.174072Z Lars Uebernickel</strong></p>
<blockquote>
<pre>
Don't use sed's extended regular expression syntax in configure.ac.

GNU and Mac OS X have different command line options to enable them and since
it was only used once, it's easier to simply use the standard regexp format.

</pre>
<p>[base/configure.ac]</p>
</blockquote>

<p><strong><a name="2009-11-24T013119.408746Z"></a>
2009-11-24T01:31:19.408746Z Ralph Giles</strong></p>
<blockquote>
<pre>
Implement JBIG2Decode generic regions using TPGDON.

Closes bug 690791.
</pre>
<p>[jbig2dec/jbig2_generic.c]</p>
</blockquote>

<p><strong><a name="2009-11-23T173516.098214Z"></a>
2009-11-23T17:35:16.098214Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for segfault reported in 690880 with separation devices. The is_open flag
was not being properly maintained when put_params resulted in a target device
closing due to DeviceN color state changing.

DETAILS:

The check in zputdeviceparams relied on code &gt; 0 or the width or height change
in order to determine that the device needed to be reinitialized. The put_params
forwarding needed to check if the target device closed (such as when DeviceN
parameters changed) and return code=1 to trigger the device reinitialization.

Also the forwarding of close_device needed to make sure and set is_open=false
if it called the target device procedure directly instead of using gs_closedevice
(which takes care of this detail).

</pre>
<p>[base/gdevp14.c base/gdevnfwd.c]</p>
</blockquote>

<p><strong><a name="2009-11-23T024456.504420Z"></a>
2009-11-23T02:44:56.504420Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Report pdfwrite differences separately from other differences.

</pre>
<p>[toolbin/localcluster/clustermaster.pl toolbin/localcluster/build.pl toolbin/localcluster/compare.pl]</p>
</blockquote>

<p><strong><a name="2009-11-22T234621.529560Z"></a>
2009-11-22T23:46:21.529560Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add description of the tiffsep1 device. It was mentioned in the previous update,
but the basic device characteristics were missing.
</pre>
<p>[doc/Devices.htm]</p>
</blockquote>

<p><strong><a name="2009-11-22T200944.171077Z"></a>
2009-11-22T20:09:44.171077Z Lars Uebernickel</strong></p>
<blockquote>
<pre>
Added a -sCompression parameter to all TIFF devices.

This parameter sets the compression scheme of the resulting file and can take
the values 'none', 'crle', 'g3', 'g4', 'lzw', and 'pack'.  crle, g3, and g4
only work for 1-bit devices.  For tiffsep, it sets the compression scheme of
the separation files, the composite cmyk file is always saved uncompressed.

Libtiff supports many more compression formats (e.g. jpeg, deflate).  Adding
them to this implementation is trivial.

doc/Devices.htm documents the parameter further.

</pre>
<p>[base/gdevtifs.c base/gdevtifs.h base/gdevtsep.c doc/Devices.htm base/gdevtfnx.c base/gdevtfax.c]</p>
</blockquote>

<p><strong><a name="2009-11-21T094454.242928Z"></a>
2009-11-21T09:44:54.242928Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : problems with type 3 fonts and glyphshow

Details
Bug #690738 &quot;pdfwriter garbles/omits glyphs&quot;
Bug #690836 &quot;Bug during eps to pdf conversion&quot;
Bug #690882 &quot;ps2pdf mangles type 3 fonts&quot;

Revision 9804 modified pdfwrite to try and make text in type 3 bitmap fonts, derived
from PCL input, more likely to produce a PDF file with searchable text. Part of the 
change was to try and group multiple glyphs together into a single string instead of
emitting them as single glyphs.

Unfortunately that was an optimisation too far. There is no way currently to tell the
difference between a type 3 font which has been converted into a bitmap, one which
started as a bitmap, and one where the CharProc has been captured (PostScript). We do
however store bitmap and outline glyphs in different fonts, the problem arose if we
converted a CharProc to a bitmap, and then stored a CharProc, the code did not realise
that we had switched fonts and tried to use the bitmap font for both.

This occurs because matplotlib defines all its fonts as type 3, applies an Encoding 
to them, but never uses it, instead showing all glyphs with a glyphshow operation.
This makes it difficult for pdfwrite to assemble an output type 3 font with a valid
Encoding, and PDF doesn't support glyphshow. In this case if we find that the glyphshow
uses a glyph which is not in the font's Encoding (eg /multiply) we end up producing a
bitmapped glyph instead.

Ideally we would capture the CharProc, but doing so would be very difficult in this case
for a very minor benefit. Instead I've chosen to remove this optimisation.

Previously we would emit text something like:

x y moveto
(ABC) show

Now we do:

x y moveto
(A) show
x1 y1 moveto
(B) show
x2 y2 moveto
(C) show

There seem to be no differences in the test suite with PostScript and PDF files, 
probably because no files apart from matplotlib use glyphshow in this demented fashion.
However, this does result in a large number of PCL test files exhibiting very small
differences with text, especially at low resolution, due to tiny shifts in position.

</pre>
<p>[base/gdevpdts.c]</p>
</blockquote>

<p><strong><a name="2009-11-20T200926.637666Z"></a>
2009-11-20T20:09:26.637666Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix segfaults in tiffsep and tiffsep1 -- After TIFFCleanup, need to set the tiff
structure pointer to NULL to prevent later use. Fix separation file name logic
to substitute a harmless '_' character for characters that cause file system
action ('/'. '\' and ':').

Set default compression for tiffsep output 'gray' pages to LZW and default for
tiffsep1 to G4. While not strictly backwards compatible, any competent tiff
reader will be able to handle this.

</pre>
<p>[base/gdevtsep.c]</p>
</blockquote>

<p><strong><a name="2009-11-20T181012.230365Z"></a>
2009-11-20T18:10:12.230365Z Ralph Giles</strong></p>
<blockquote>
<pre>
Skip JBIG2Decode generic regions using TPGDON.

We don't yet implement this, and discarding the data is better than
proceeding with the incorrect decoding proceedures, which generally
just produce noise. Work-around for bug 690791.</pre>
<p>[jbig2dec/jbig2_generic.c]</p>
</blockquote>

<p><strong><a name="2009-11-19T201702.559183Z"></a>
2009-11-19T20:17:02.559183Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for segfault reported in bug 690927 and two of the segfaults of bug 690880.

DETAILS:

The pdf14_compressed_encode_color (and _decode_) assumed that the device was
a pdf14_device and directly accessed the devn_params using that structure offset,
but when filling gradients the device was the target device (a gx_device_printer
subclass) so the pointer was wrong.

The primary change is in base/gxblend1.c and uses the device's ret_devn_params
procedure (if possible). If the proc is NULL, or if it returns NULL, then and
only then use the devn_params structure assuming that the device is a pdf14
variant (usually pdf14cmykspot or pdf14clistcmykspot).

A check for this is performed in DEBUG builds in case this expected invariant
is ever violated. In order for the check to be made simpler, the names of all
of the devices were changed to all start with &quot;pdf14&quot; (some were PDF14).

</pre>
<p>[base/gdevp14.c base/gxblend1.c]</p>
</blockquote>

<p><strong><a name="2009-11-19T164811.876622Z"></a>
2009-11-19T16:48:11.876622Z Robin Watts</strong></p>
<blockquote>
<pre>
Fix stupid typo: ; for , - pointed out by tor. Sorry everyone.

</pre>
<p>[base/gspath.h]</p>
</blockquote>

<p><strong><a name="2009-11-19T135618.594001Z"></a>
2009-11-19T13:56:18.594001Z Robin Watts</strong></p>
<blockquote>
<pre>
Fix for Bug 690531, excessive slowdown while rendering a complex stroked
path with anti-aliasing.

The problem is caused by the gs filling code grinding to a halt under the
weight of an extremely complex path produced by stroking an already complex
path and then filling it all at once.

This change can be seen as a workaround in that it does not change the
filling code at all (this may be considered in future after the freetype
changes have gone in), but instead adds a new mechanism for stroking that
produces (broadly) equivalent strokes which happen to fill more easily.

</pre>
<p>[base/gxpath2.c base/gxpath.h base/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2009-11-19T000915.456317Z"></a>
2009-11-19T00:09:15.456317Z Ralph Giles</strong></p>
<blockquote>
<pre>
Replace only the initial definition of the gs executable
in the script wrappers.

It is possible to change the name of the compiled gs executable; this is
generally used to distinguish multiple installed versions. In r5212 a
sed command was added to the unix build scripts to rewrite the name of
the gs executable embedded in the various wrapper scripts so that they
would call the corresponding version.

This was broken in r8107 where an extra clause was added to have the
wrapper scripts prefer the gs executable in their local directory
over any in the path. Unfortunately the sed command rewrites both
attempts to set GS_EXECUTABLE.

This commit only rewrites the specific assignment of the default name.
Thanks to Vince Dean for suggesting the fix. Bug 686863.</pre>
<p>[base/unixinst.mak]</p>
</blockquote>

<p><strong><a name="2009-11-18T044621.000840Z"></a>
2009-11-18T04:46:21.000840Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Handle optional content following the default viewing optional content
configuration dictionary. Skip invisible XObjects and render invisible
parts of content streams to nulldevice. Bug 690633, customer 1110.

</pre>
<p>[Resource/Init/pdf_ops.ps Resource/Init/pdf_main.ps Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2009-11-17T222638.187446Z"></a>
2009-11-17T22:26:38.187446Z Lars Uebernickel</strong></p>
<blockquote>
<pre>
Call libtiff's configure script when configuring ghostscript.

This also removes the (now) unnecessary tiff config files from the repository,
which fixes build problems on compilers where headers are always first searched
in the current directory.

</pre>
<p>[tiff/libtiff/tif_config.h tiff/libtiff/tiffconf.h base/configure.ac]</p>
</blockquote>

<p><strong><a name="2009-11-17T201020.126305Z"></a>
2009-11-17T20:10:20.126305Z Lars Uebernickel</strong></p>
<blockquote>
<pre>
Use TIFFCleanup instead of TIFFClose in all tiff devices, as the fd is already
closed in gp_prn_close.

</pre>
<p>[base/gdevtifs.c base/gdevtsep.c base/gdevtfax.c]</p>
</blockquote>

<p><strong><a name="2009-11-17T180122.576735Z"></a>
2009-11-17T18:01:22.576735Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Several small changes to the local cluster code:

clusterpush.pl - you can now specify what products to test via the command line. 

e.g. clusterpush.pl gs
     clusterpush.pl 'svg pcl'

By default all products ('gs','pcl','xps','svg') are tested.

compare.pl - no longer report not changed non-value return codes.

build.pl - remove all pcl tests except for 600 dpi/banded and most svg tests.
no longer randomize jobs (helps with the indeterminisms and improves load balancing).

clustermaster.pl - changes to support new clusterpush.pl options and improvement in the
load balancing algorithm.

run.pl - add support for semaphore to insure only on copy is run at a time
(currently disabled pending additional testing).


</pre>
<p>[toolbin/localcluster/clustermaster.pl toolbin/localcluster/build.pl toolbin/localcluster/clusterpush.pl toolbin/localcluster/run.pl toolbin/localcluster/compare.pl]</p>
</blockquote>

<p><strong><a name="2009-11-17T154542.467605Z"></a>
2009-11-17T15:45:42.467605Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (TT font substitution) : Incorrect Widths applied to CIDFont glyphs from PDF file

Details
Bug #690876 &quot;Spacing issues with mixed asian/roman characters&quot;

The PDF interpreter applies the /Widths array from a PDF CIDFont by applying a custom
CDevProc to alter the width of the glyph before it is cached. This procedure relies
on the CID of the glyph being correct, as this is the index into the Widths array.

This works correctly for genuine (embedded or from disk) CIDFonts. However, if we use
a disk-based TrueType font as a substitute for a missing CIDFont, the integer which gets
passed into the CDevProc routine is the TrueType glyph ID (GID). This is because the
CID from the CIDKeyed instance must be converted into a GID for us to consult the font.
Using the GID instead of the CID results in incorrect widths being applied.

This conversion happens in PostScript and the original CID is not available at the time
CDevProc is executed.

Since this only affects substitution of fonts its arguable that the CDevProc is useless
in its original intent anyway. 

This patch detects a CIDFont being replaced by a TrueType font by checking the font
type is type 11 (CIDFont with TT outlines), that the font dictionary contains a key
called /File (has been read from disk) and that the font_name and key_name strings
are different (substituted font).

In this case we ignore the CDevProc routine, and simply use the original widths from 
the TrueType font. The widths won't be the same as requested by the job, but then 
neither are the glyphs. For this job, because the widths of the TrueType glyphs are
sensible, the result is an improvement in the output.

</pre>
<p>[psi/zcharout.c]</p>
</blockquote>

<p><strong><a name="2009-11-16T170159.813716Z"></a>
2009-11-16T17:01:59.813716Z Ken Sharp</strong></p>
<blockquote>
<pre>
Details
After revision 8465 it is no longer possible for
show_state_setup in gxchar.c to alter the value of 'can_cache' but a comment in 
gx_default_text_begin still said that it may do so.

Removed the misleading comment.

</pre>
<p>[base/gxchar.c]</p>
</blockquote>

<p><strong><a name="2009-11-16T164821.437679Z"></a>
2009-11-16T16:48:21.437679Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (TT fonts) : regression with TrueType fonts

Details:
Bug #690642 &quot;conversion to PDF aborts after 800 pages&quot;
Bug #690921 &quot;Regression: /invalidaccess in --run-- starting with r9897&quot;

The patch for #690642 was an interim fix which was known to have flaws and was supposed
to be revisited to fix them. Unfortunately a file appeared which exhibited an attempt to
put a key in a read-only dictionary before this was done.

This patch resolves both issues by removing the need for a temporary key (hence we no
longer write into a read-only dictionary) and also removes some ugliness (and slight
performance penalty) by not creating a dict from the stack, patching the dict, and
loading its contents back to the stack.

</pre>
<p>[Resource/Init/pdf_font.ps Resource/Init/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2009-11-14T182052.369823Z"></a>
2009-11-14T18:20:52.369823Z Robin Watts</strong></p>
<blockquote>
<pre>
Bug fix for Bug 688604, &quot;incorrect rendering of a returning curve&quot;.

The code currently in ghostscript checks for the bbox of a beziers control
points being of zero width/height and to avoid a division by zero just chooses
not to subdivide this curve. This is wrong in some cases.

The fix here is a cheap and cheerful one; in the case where one dimension is
zero and the other isn't, we basically do the same calculation as would be
done in the two dimensional case, but just with a one dimensional distance
as input.

This causes various diff; all look good in my tests.

</pre>
<p>[base/gxpcopy.c]</p>
</blockquote>

<p><strong><a name="2009-11-13T001647.523271Z"></a>
2009-11-13T00:16:47.523271Z Robin Watts</strong></p>
<blockquote>
<pre>
This patch fixes Bug 688269, by making ghostscript use pie joins rather than
round ones when stroking in non CPSI_mode.

This produces 3000 or so bitmap diffs, but after leaving my machine running
all night generating lots of diffs for me to examine this morning, they all
look like stray pixel changes (i.e. differences caused by rounding).


</pre>
<p>[base/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2009-11-11T174222.705154Z"></a>
2009-11-11T17:42:22.705154Z Robin Watts</strong></p>
<blockquote>
<pre>
Final msvc makefile changes to make ghostPDL targets build with the new
libtiff stuff.

</pre>
<p>[/trunk/ghostpdl/svg/svg_msvc.mak base/gs.mak]</p>
</blockquote>

<p><strong><a name="2009-11-11T155028.792827Z"></a>
2009-11-11T15:50:28.792827Z Lars Uebernickel</strong></p>
<blockquote>
<pre>
Changed all tiff devices to use libtiff.

Affected Devices are tiffgray, tiff12nc, tiff24nc, tiff32nc, tiffsep, tiffsep1,
tiffcrle, tiffg3, tiffg32d, tiffg4, tifflzw, and tiffpack.  Also, two new
devices: tiff48nc and tiff64nc (16 bits per component rgb and cmyk respectively)
have been added.

Libtiff 3.9.2 is included in the source tree as tiff/.  It is possible to link
to the system's libtiff by passing --with-system-libtiff to configure.  Passing
--without-system-libtiff will force the build to use the in-source version. By
default, the newer library (based on TIFFLIB_VERSION in tiffvers.h) is used.

</pre>
<p>[tiff/libtiff/tif_predict.c tiff/contrib/addtiffo/tif_ovrcache.c tiff/html/images/bali.jpg tiff/libtiff/tif_predict.h tiff/man/tiffdither.1 tiff/contrib/addtiffo/tif_ovrcache.h tiff/libtiff/tiffconf.h tiff/libtiff/tif_apple.c tiff/html/v3.7.1.html tiff/html/v3.5.7.html tiff/test/check_tag.c tiff/man tiff/contrib/iptcutil/iptcutil.c tiff/html/addingtags.html tiff/contrib/dbs/tiff-palette.c tiff/html/man/TIFFbuffer.3tiff.html tiff/html/index.html tiff/contrib/win_dib/Tiffile.cpp base/gdevtifs.c base/gxcmap.c tiff/config/install-sh tiff/man/TIFFReadRGBATile.3tiff base/gdevtifs.h tiff/html/man/tiffsplit.1.html tiff/html/man/TIFFPrintDirectory.3tiff.html tiff/contrib/tags/xtif_dir.c tiff/contrib/stream/README tiff/contrib/acorn/SetVars tiff/contrib/mac-mpw/mactrans.c tiff/contrib/mfs/mfs_file.c tiff/test/short_tag.c tiff/tools/fax2tiff.c tiff/config/depcomp tiff/html/man/TIFFReadScanline.3tiff.html tiff/contrib/tags tiff/contrib/ras/Makefile.am tiff/libtiff/tif_aux.c tiff/libtiff/tif_packbits.c tiff/libtiff/tif_zip.c tiff/html/v3.5.4.html tiff/man/TIFFbuffer.3tiff tiff/contrib/mac-cw tiff/contrib/acorn/Makefile.am tiff/html/man/TIFFmemory.3tiff.html tiff/html/v3.5.6-beta.html tiff/m4/ltsugar.m4 tiff/tools/ycbcr.c tiff/html/man/TIFFRGBAImage.3tiff.html tiff/man/TIFFWriteRawStrip.3tiff tiff/html/v3.4beta007.html tiff/libtiff/tif_unix.c tiff/html/man/tiffinfo.1.html tiff/html/man/tiffset.1.html tiff/tools/rasterfile.h tiff/html/man/TIFFFlush.3tiff.html tiff/man/tiffdump.1 tiff/contrib/dbs/tiff-rgb.c tiff/contrib/dbs/Makefile.in tiff/html/man/fax2tiff.1.html tiff/contrib/mac-cw/mkg3_main.c tiff/contrib/win_dib/Makefile.in tiff/configure.com tiff/html/man/TIFFReadRGBAStrip.3tiff.html tiff/html/man/sgi2tiff.1.html tiff/tools/tiff2ps.c tiff/html/v3.5.1.html tiff/html/intro.html tiff/libtiff/tif_atari.c tiff/html/v3.8.0.html tiff/contrib/dbs/README tiff/config tiff/libtiff/tiffiop.h tiff/html/internals.html tiff/html/images/cover.jpg tiff/html/build.html tiff/libtiff/tiffconf.h.in tiff/html/man/TIFFWarning.3tiff.html tiff/contrib/mac-cw/metrowerks.note tiff/man/TIFFReadEncodedStrip.3tiff tiff/man/tiff2bw.1 tiff/HOWTO-RELEASE tiff/man/tiff2pdf.1 tiff/man/tiffsplit.1 tiff/html/man/TIFFcodec.3tiff.html tiff/man/bmp2tiff.1 tiff/html/v3.4beta016.html tiff/tools/fax2ps.c tiff/html/libtiff.html tiff/html/v3.4beta028.html tiff/html/man/tiffmedian.1.html tiff/html/man/TIFFWriteRawTile.3tiff.html tiff/man/TIFFError.3tiff tiff/tools/tiffmedian.c tiff/man/rgb2ycbcr.1 tiff/libtiff/uvcode.h tiff/html/images/dave.gif tiff/man/TIFFWriteEncodedStrip.3tiff tiff/html/man/Makefile.in tiff/contrib/dbs/xtiff/Makefile.am tiff/config/config.sub tiff/libtiff/Makefile.vc tiff/libtiff/tif_fax3.c tiff/man/TIFFWarning.3tiff tiff/tools/tiffgt.c tiff/man/TIFFWriteScanline.3tiff tiff/html/v3.9.2.html tiff/SConstruct tiff/contrib/tags/Makefile.am tiff/contrib/acorn/install tiff/libtiff/tif_fax3.h tiff/contrib/pds/tif_pdsdirwrite.c tiff/contrib/mac-mpw/Makefile.am tiff/man/TIFFcodec.3tiff tiff/man/tiffsv.1 tiff/html/Makefile.am tiff/contrib/mac-mpw/tools.make tiff/html/images/oxford.gif tiff/html/man/TIFFsize.3tiff.html tiff/contrib/iptcutil/Makefile.in tiff/html/man/TIFFReadEncodedTile.3tiff.html tiff/contrib/ras/tif2ras.c tiff/configure tiff/html/images/note.gif tiff/contrib/mfs/README tiff/html/man/tiff2bw.1.html tiff/config/mkinstalldirs tiff/libtiff/tif_jpeg.c psi/msvc32.mak tiff/test/Makefile.am tiff/html/man/TIFFGetField.3tiff.html tiff/m4/ltoptions.m4 tiff/html/man/TIFFReadRGBATile.3tiff.html tiff/libtiff/libtiff.def tiff/contrib/tags/listtif.c tiff/man/raw2tiff.1 tiff/html/v3.7.0beta.html tiff/tools/tiffdump.c tiff/html/man/TIFFWriteEncodedTile.3tiff.html tiff/man/ppm2tiff.1 tiff/html/v3.6.0.html tiff/contrib/addtiffo/Makefile.vc base/unix-gcc.mak tiff/man/TIFFDataWidth.3tiff tiff/contrib/mfs/Makefile.in tiff/contrib/pds/Makefile.in tiff/tools/Makefile.am tiff/contrib/dbs/tiff-bi.c tiff/contrib/iptcutil/test.iptc tiff/man/TIFFcolor.3tiff tiff/html/man/TIFFWriteScanline.3tiff.html tiff/man/tiff2rgba.1 tiff/contrib/addtiffo tiff/contrib/acorn/convert tiff/html/v3.4beta034.html tiff/tools/tiff2pdf.c tiff/port/libport.h tiff/html/man/TIFFSetDirectory.3tiff.html tiff/man/tiff2ps.1 base/devs.mak tiff/tools/bmp2tiff.c tiff/contrib/iptcutil/test.txt tiff/RELEASE-DATE tiff/contrib/iptcutil tiff/html/man/TIFFReadTile.3tiff.html tiff/test/strip.c tiff/man/libtiff.3tiff tiff/libtiff/tif_win32.c tiff/html/v3.7.2.html tiff/libtiff/tif_ojpeg.c tiff/html/contrib.html tiff/build/Makefile.am tiff/html/man/tiffcmp.1.html tiff/html/man/TIFFClose.3tiff.html tiff/html/man/TIFFquery.3tiff.html tiff/html/TIFFTechNote2.html tiff/html/images/ring.gif tiff/test tiff/libtiff/tif_config.h-vms tiff/html/v3.4beta031.html tiff/contrib/mfs tiff/contrib/win_dib/tiff2dib.c tiff/man/TIFFswab.3tiff tiff/html/images/Makefile.in tiff/contrib/mac-mpw/libtiff.make tiff/contrib/mac-cw/mac_main.c tiff/man/thumbnail.1 tiff/libtiff/tiff.h tiff/port/lfind.c tiff/libtiff/Makefile.in tiff/contrib/mac-cw/mac_main.h tiff/libtiff/tif_strip.c tiff/tools/raw2tiff.c tiff/html/v3.5.5.html tiff/TODO tiff/man/TIFFWriteTile.3tiff tiff/tools/ppm2tiff.c tiff/port/strcasecmp.c tiff/man/TIFFReadEncodedTile.3tiff tiff/html/man/tiffdither.1.html tiff/tools/sgisv.c tiff/contrib/tags/xtiffiop.h tiff/man/tiffmedian.1 tiff/libtiff/tif_config.h.in tiff/contrib/addtiffo/addtiffo.c tiff/html/images/quad.jpg tiff/html/images/warning.gif tiff/html/man/tiffsv.1.html tiff/html/images/cat.gif tiff/man/tiffcp.1 tiff/man/tiffcrop.1 tiff/man/TIFFReadRGBAStrip.3tiff tiff/libtiff/tif_version.c tiff/ChangeLog base/gdevtfnx.c tiff/test/long_tag.c tiff/port/Makefile.am tiff/man/TIFFSetField.3tiff tiff/man/Makefile.in tiff/libtiff/tif_swab.c tiff/build tiff/contrib/addtiffo/Makefile.in tiff/html/v3.5.2.html tiff/configure.ac tiff/html/man/TIFFWriteEncodedStrip.3tiff.html tiff/html/v3.8.1.html tiff/contrib/stream/Makefile.am tiff/man/TIFFmemory.3tiff tiff/man/TIFFsize.3tiff tiff/Makefile.am tiff/contrib/Makefile.am tiff/html/images tiff/autogen.sh base/winlib.mak tiff/libtiff/tif_jbig.c tiff/man/tiffinfo.1 tiff/libtiff/tif_extension.c tiff/html/images/smallliz.jpg tiff/port/strtoul.c tiff/html/man/TIFFReadEncodedStrip.3tiff.html tiff/html/man/fax2ps.1.html base/configure.ac tiff/VERSION tiff/contrib/mac-cw/Makefile.script tiff/man/TIFFWriteEncodedTile.3tiff tiff/html/v3.4beta029.html tiff/contrib/mac-cw/Makefile.in tiff/man/ras2tiff.1 tiff/libtiff/t4.h tiff/README tiff/contrib/README tiff/html/man/tiff2ps.1.html tiff/contrib/tags/maketif.c tiff/contrib/win_dib/README.tiff2dib tiff/html/man/rgb2ycbcr.1.html tiff/contrib/mac-mpw/BUILD.mpw tiff/html/man/tiffgt.1.html tiff/html/man/TIFFReadDirectory.3tiff.html base/gxdevice.h tiff/libtiff/tif_warning.c tiff/html/v3.7.0alpha.html tiff/tools/tiffcmp.c tiff/html/images/strike.gif tiff/contrib/stream/tiffstream.cpp tiff/contrib/ras/README tiff/html/man/TIFFcolor.3tiff.html tiff/tools/tiffset.c tiff/contrib/dbs/xtiff tiff/contrib/pds/tif_pdsdirread.c tiff/contrib/stream tiff/contrib/tags/xtiffio.h tiff/html/man/tiffcrop.1.html tiff/tools/tiffcrop.c tiff/port/dummy.c tiff/contrib/mac-mpw/port.make tiff/man/TIFFReadRawTile.3tiff tiff/html/man/TIFFtile.3tiff.html tiff/html/v3.6.1.html tiff/libtiff/tif_fax3sm.c tiff/html tiff/contrib/ras/Makefile.in tiff/libtiff/tif_close.c tiff/libtiff/tif_luv.c tiff/man/gif2tiff.1 tiff/html/man/libtiff.3tiff.html tiff/libtiff/tif_config.h tiff/contrib/pds/tif_imageiter.c tiff/man/TIFFPrintDirectory.3tiff tiff/contrib/dbs/Makefile.am tiff/libtiff/tif_flush.c tiff/contrib/win_dib/Makefile.am tiff/contrib/acorn/Makefile.in tiff/contrib/pds/tif_imageiter.h tiff/tools/Makefile.vc tiff/html/v3.4beta035.html tiff/contrib/stream/tiffstream.h tiff/libtiff/mkg3states.c tiff/tools/tiffinfo.c tiff/tools/tiffsplit.c tiff/contrib/pds tiff/contrib/win_dib/README.Tiffile tiff/man/TIFFReadDirectory.3tiff tiff/html/v3.9.0beta.html tiff/tools tiff/tools/rgb2ycbcr.c tiff/tools/ras2tiff.c tiff/html/images/cramps.gif tiff/m4/libtool.m4 tiff/html/v3.7.3.html tiff/html/tools.html tiff/COPYRIGHT base/libtiff.mak tiff/man/TIFFReadRGBAImage.3tiff tiff/contrib/win_dib/Makefile.w95 tiff/libtiff/tif_thunder.c tiff/html/man/TIFFReadRawStrip.3tiff.html tiff/man/fax2ps.1 tiff/libtiff/tif_lzw.c tiff/man/TIFFSetDirectory.3tiff tiff/html/man/TIFFReadRGBAImage.3tiff.html tiff/contrib/acorn/Makefile.acorn tiff/libtiff/tif_color.c tiff/m4 tiff/man/TIFFGetField.3tiff tiff/html/v3.4beta032.html tiff/libtiff/tif_win3.c tiff/html/man/TIFFWriteDirectory.3tiff.html tiff/contrib/ras tiff/libtiff/SConstruct tiff/man/sgi2tiff.1 tiff/html/man/Makefile.am tiff/contrib/iptcutil/README tiff/libtiff/tif_dirwrite.c tiff/build/README tiff/libtiff/tif_dirinfo.c tiff/libtiff/tif_write.c tiff/config/compile tiff/man/tiffgt.1 tiff/libtiff/tif_tile.c tiff/README.vms tiff/html/misc.html tiff/html/v3.7.0.html tiff/man/tiffcmp.1 tiff/libtiff/tif_open.c tiff/contrib/iptcutil/Makefile.am tiff/test/strip_rw.c tiff/contrib/dbs/xtiff/Makefile.in tiff/libtiff/tiffconf.vc.h tiff/contrib/win_dib tiff/man/tiffset.1 tiff/contrib/tags/Makefile.in tiff/libtiff/tif_config.wince.h tiff/tools/gif2tiff.c tiff/contrib/mac-mpw/Makefile.in tiff/contrib/dbs/xtiff/README tiff/libtiff/tiffio.h tiff/html/Makefile.in tiff/tools/tiff2rgba.c tiff/html/man/tiffcp.1.html tiff/contrib/mfs/Makefile.am tiff/contrib/acorn/ReadMe tiff/contrib/pds/Makefile.am tiff/man/TIFFstrip.3tiff tiff/html/man/TIFFswab.3tiff.html tiff/test/Makefile.in tiff/html/v3.5.3.html tiff/html/man/TIFFSetField.3tiff.html tiff/contrib/dbs/xtiff/patchlevel.h tiff/html/v3.8.2.html tiff/html/man/TIFFOpen.3tiff.html tiff/contrib/dbs/xtiff/xtifficon.h tiff/libtiff/tiffconf.wince.h tiff/port/getopt.c tiff/html/images/info.gif tiff/port/Makefile.vc tiff/contrib/addtiffo/tif_overview.c tiff/tools/tiffdither.c tiff/tools/pal2rgb.c tiff/html/images.html tiff/libtiff/tif_dumpmode.c tiff/html/man/TIFFWriteTile.3tiff.html tiff/aclocal.m4 tiff/config/missing tiff/html/man tiff/libtiff/tif_dir.c tiff/tools/Makefile.in tiff/Makefile.vc tiff/port tiff/html/man/tiff2pdf.1.html tiff/libtiff/tif_dir.h tiff/html/v3.4beta018.html tiff/html/man/tiff2rgba.1.html tiff/libtiff/tif_msdos.c base/gdevfax.c tiff/html/man/index.html tiff/contrib/dbs/tiff-grayscale.c tiff/contrib/dbs/xtiff/xtiff.c tiff/html/images/jim.gif base/gdevfax.h tiff/libtiff/tif_print.c tiff/tools/sgi2tiff.c tiff/man/TIFFOpen.3tiff tiff/contrib tiff tiff/contrib/mac-mpw tiff/config/ltmain.sh tiff/contrib/mac-cw/README tiff/tools/thumbnail.c tiff/libtiff/tiffio.hxx tiff/man/TIFFReadRawStrip.3tiff tiff/html/man/ppm2tiff.1.html tiff/contrib/acorn/cleanlib tiff/man/TIFFRGBAImage.3tiff tiff/html/images/back.gif tiff/libtiff/tif_read.c tiff/libtiff/tif_stream.cxx tiff/man/TIFFWriteDirectory.3tiff tiff/libtiff/tif_codec.c tiff/build/Makefile.in tiff/html/images/Makefile.am tiff/contrib/mac-cw/version.h tiff/test/ascii_tag.c tiff/libtiff/tif_pixarlog.c tiff/man/TIFFReadTile.3tiff tiff/libtiff/Makefile.am tiff/html/man/TIFFWriteRawStrip.3tiff.html tiff/contrib/tags/README tiff/libtiff/tif_error.c tiff/man/TIFFtile.3tiff tiff/nmake.opt tiff/libtiff/tif_compress.c tiff/libtiff/tiffvers.h tiff/html/man/TIFFError.3tiff.html tiff/html/man/tiffdump.1.html tiff/html/man/ras2tiff.1.html tiff/man/TIFFClose.3tiff tiff/man/TIFFquery.3tiff base/Makefile.in tiff/html/man/raw2tiff.1.html tiff/html/v3.9.1.html tiff/html/man/TIFFReadRawTile.3tiff.html tiff/m4/lt~obsolete.m4 tiff/html/man/pal2rgb.1.html tiff/libtiff/tif_dirread.c tiff/contrib/mac-mpw/top.make tiff/man/TIFFFlush.3tiff tiff/html/v3.7.0beta2.html tiff/man/TIFFWriteRawTile.3tiff tiff/html/v3.4beta024.html tiff/contrib/pds/README tiff/man/fax2tiff.1 tiff/libtiff/tif_getimage.c tiff/man/Makefile.am tiff/html/v3.4beta036.html tiff/man/TIFFReadScanline.3tiff doc/Devices.htm tiff/contrib/addtiffo/Makefile.am tiff/tools/tiffcp.c tiff/html/images/jello.jpg tiff/contrib/mac-mpw/README tiff/config/config.guess tiff/test/test_arrays.c tiff/contrib/acorn base/gs.mak tiff/man/pal2rgb.1 tiff/html/man/thumbnail.1.html tiff/libtiff/tif_acorn.c tiff/test/test_arrays.h tiff/html/man/TIFFstrip.3tiff.html tiff/html/v3.7.4.html tiff/port/Makefile.in tiff/html/bugs.html tiff/contrib/dbs base/gdevtfax.c tiff/contrib/addtiffo/README tiff/contrib/stream/Makefile.in tiff/html/man/TIFFDataWidth.3tiff.html tiff/libtiff tiff/contrib/mac-cw/Makefile.am tiff/contrib/ras/ras2tif.c tiff/libtiff/tif_next.c tiff/html/man/gif2tiff.1.html tiff/contrib/Makefile.in tiff/Makefile.in tiff/html/v3.4beta033.html tiff/html/support.html tiff/libtiff/tif_config.vc.h tiff/m4/ltversion.m4 tiff/tools/tiff2bw.c base/gdevtsep.c tiff/html/document.html tiff/m4/acinclude.m4]</p>
</blockquote>

<p><strong><a name="2009-11-11T150120.119636Z"></a>
2009-11-11T15:01:20.119636Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
silent two compiler warnings for casting from const to non-const introduced by r10313</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-11-11T145305.840060Z"></a>
2009-11-11T14:53:05.840060Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
partly reverting r8576, and other file-size improvements.

After r10313, it becomes possible to revert r8576 (which was
a work-around to bug 688992, but increases file-sizes in some cases). 
It is also found that r8576 is in fact more efficient for 
small rasters; so it is only partly reverted. In two other places where
write_image_data() is called, switching to gx_default_copy_* for single-line
images/masks is likely to work well also. 

This fixes bug 690857, where 12-07C.PS uses a lot of 1-bit images,
and shrinks the file size by a factor of 4. 

There are a total of 4 places where write_image_data() is called
(copy_mono/copy_color/fill_masks/image_write_rows) - the 4th does
not use the data_bit field, nor is it likely to be called
with small rasters; so it is left unmodified.

</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-11-11T142617.282201Z"></a>
2009-11-11T14:26:17.282201Z Till Kamppeter</strong></p>
<blockquote>
<pre>
The cups_map_cmyk() function applied density corrections to RGB values. They can only get applied to CMYK values. Fixed by applying the cupsDensity correction before converting CMYK to RGB.
</pre>
<p>[cups/gdevcups.c]</p>
</blockquote>

<p><strong><a name="2009-11-11T135323.399755Z"></a>
2009-11-11T13:53:23.399755Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
handles the case of data_bit being multiple of 8.

Try to handle the case of data_bit being multiple of 8 This fixes 690862,
and also make it possible to revert r8576 (which was a work-around to 
bug 688992, but increases file-size) to fix bug 690857 (file-size issue).

Non-multiple of 8 are not handled, but by-passed at the callers'.

</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-11-11T135223.912583Z"></a>
2009-11-11T13:52:23.912583Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Increase the size of the initial buffer in the scanner dynamic area to accept
the string of maximum valid size. Protect the buffer from overflow when the
scanner state is saved during reading of a name that exceed max name length.
Bug 690902.

</pre>
<p>[psi/iscan.c psi/int.mak psi/iscan.h]</p>
</blockquote>

<p><strong><a name="2009-11-11T133703.631859Z"></a>
2009-11-11T13:37:03.631859Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
caching SetPen/SetBrush Null calls

For some test files (the PS3 CET set), the pxlcolor/pxlmono code
emits a lot of setpen/setbrush nulls. There is no need to set it again
if the printer already got a previous setpen/brush null. So this patch
caches the null/non-null state of both pen and brush in the
driver and not re-issue set nulls if the last set was a null.

This only gives about 5% file size saving for the test file I wrote it
for. Part of the fix to bug 690857.

</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-11-11T095126.353930Z"></a>
2009-11-11T09:51:26.353930Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : correct introduced regression 

Details
Bug #690906 &quot;Regression: Several PostScript CET files hang pdfwrite&quot;
Revision 10297 failed to check the return value from next_char_glyph for composite fonts
because the fact that an error return was possible was hidden inside a macro.

Adding error return checking resolves the problem

</pre>
<p>[base/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2009-11-10T204418.431838Z"></a>
2009-11-10T20:44:18.431838Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
fix (signed 16-bit)0 problem with r10267, and separate signed/unsigned numbers.

r10267 'write signed 16-bit integers properly' contains a mistake with &quot;&gt;&quot; 
(should be &quot;&gt;=&quot;) - it puts (signed 16-bit)0 as 32768. Historically, 
the old code does 16-bit integers unsigned eventually. This current change 
also separate signed and unsigned numbers. Apologies.

</pre>
<p>[base/gdevpxut.h]</p>
</blockquote>

<p><strong><a name="2009-11-09T234111.015200Z"></a>
2009-11-09T23:41:11.015200Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
implements white on mask (and added black on mask) in copy_mono.

This adds white on mask as mask=black and (D &amp; ~S) | S . 
Black on mask is treated specially as (S &amp; D). Fixes bug 688372
(which uses white on mask) and 690830 (which uses black on mask)
and 690025 (which uses both white on mask and black on mask).

</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-11-09T205530.861525Z"></a>
2009-11-09T20:55:30.861525Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
reverting r8733, which was a faulty fix to bug 688372.

reverting most of r8733 (except the two debug statements), which was
a faulty fix to bug 688372. The faulty fix seems to be the source of
bug 690861 and 690868. The correct fix to 688372 to follow.

</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-11-09T202051.490553Z"></a>
2009-11-09T20:20:51.490553Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
purge cached palette whenever color space changes.

The current pxlmono/pxlcolor code caches colorspace and palette calls
and not re-transmitting them if it hasn't changed since the last time
they were set. Whenever the color space changes, the current palette
should be purged, and a new palette should be (re-)transmitted to
the printer the next time an indexed colored image is sent.
This fixes bug 690859.

</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-11-09T184204.818284Z"></a>
2009-11-09T18:42:04.818284Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Buffer mask data source in a reusable stream when needed for type 3 image with
separate data sources. Check all possible combinations of data source types and
fix a bunch of bugs in the code that handles cases untested before. Bug 688389.

</pre>
<p>[Resource/Init/gs_ll3.ps]</p>
</blockquote>

<p><strong><a name="2009-11-09T160458.791370Z"></a>
2009-11-09T16:04:58.791370Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : type 0 fonts with type 3 descendants could confuse pdfwrite by using
stringwidth

Details
Bug #690875 &quot;Ghostscript locks up writing PDF file&quot;
There is code in gdev_pdf_text_begin which skips caching of type 3 glyphs when using
stringwidth. This prevents glyphs becoming bitmapped and ensures that pdfwrite and
the glyph cache are coherent.

The code did not check for composite fonts using type 3 descendants. In this case if a
job used some glyphs for stringwidth, then later used at least one of those glyphs and
one glyph not previously encountered in a single string pdfwrite would enter an
endless loop.

pdfwrite would notice that a glyph was not marked as 'used' in its internal cache, and
exit pdf_text_process to run the outline for the first glyph. GS would note that the
first glyph was already cached (from the stringwidth) and move on to the next glyph.
GS would render that glyph, pdfwrite would capture it and mark that character code as
used.

On returning to pdf_text_process the first glyph should be marked as used now, but it
was not, so pdfwrite would once again exit and the loop would repeat.

Fixed by checking string using composite fonts to see if any glyph used a type 3
descendant, and disabling caching if it does.

</pre>
<p>[base/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2009-11-09T141954.384020Z"></a>
2009-11-09T14:19:54.384020Z Robin Watts</strong></p>
<blockquote>
<pre>
Adding comment as suggested by Hin-Tak to document why we need a particular
header file.

</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-11-09T141532.309537Z"></a>
2009-11-09T14:15:32.309537Z Robin Watts</strong></p>
<blockquote>
<pre>
Fix to devs.mak: PXL requires a runlength compression function from PCL, so
correctly add the dependency to the makefile.

This issue was seen when building using macosx.mak on a Snow Leopard Macbook.

Maybe in future if codesize is an issue we should pull this function out to a
separate file.

</pre>
<p>[base/devs.mak]</p>
</blockquote>

<p><strong><a name="2009-11-08T004019.198456Z"></a>
2009-11-08T00:40:19.198456Z Robin Watts</strong></p>
<blockquote>
<pre>
Fix for valgrind problem in bug 690864.

We were scaling the bbox of a path even when the bbox had never been set.
The fix is to respect the bbox_set flag.

</pre>
<p>[base/gxpath2.c]</p>
</blockquote>

<p><strong><a name="2009-11-07T173112.980350Z"></a>
2009-11-07T17:31:12.980350Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Adobe Acrobat considers the use of clip operation on new path a no-op.
Check this and don't clip when there's no path. Bug 690891.

DETAILS:
Besides the change in clipping, this patch reverts the code that preserves
current point position after fill operations and interferes with new path
detection. Reverted code predates source control and its purpose is not clear.
Perhaps, it was an attempt to avoid nocurrentpoint errors, which are now
trapped and handled.

</pre>
<p>[Resource/Init/pdf_ops.ps]</p>
</blockquote>

<p><strong><a name="2009-11-07T023137.642669Z"></a>
2009-11-07T02:31:37.642669Z Ray Johnston</strong></p>
<blockquote>
<pre>
Save and restore the graphics state around the dummy fill that was added in
rev 10284 in order to make sure that pages have at least one fill_path call.
The 'copypage' operator does not perform initgraphics so the FTS test that
expected the graphics state to be unperturbed by copypage would fail.
Bug 690894. Thanks to Alex for spotting the cause of the regression.
</pre>
<p>[base/gsdevice.c]</p>
</blockquote>

<p><strong><a name="2009-11-06T204048.453064Z"></a>
2009-11-06T20:40:48.453064Z Robin Watts</strong></p>
<blockquote>
<pre>
Fix for bug 690890. We always use the CPSI_mode version of the gs_strokepath
code (when executing strokepath or ustrokepath postscript operators). This
means we better match acrobat.

This frees us to optimise the non CPSI_mode version so as to produce simpler
stroked paths with the same outlines. This should allow us to be faster in
the non strokepath cases.

</pre>
<p>[base/gxpaint.c base/gspath.h base/gxpaint.h /trunk/ghostpdl/xps/xpspath.c base/gspaint.c base/gxstroke.c base/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2009-11-06T142340.138345Z"></a>
2009-11-06T14:23:40.138345Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Clamp coordinates when the path is scaled up for anti-alias rendering.
Leave 1000pt slack at the edge because the path drawing routines can't
handle values close to the edge of the representable space. Bug 690864.

</pre>
<p>[base/gxpath2.c]</p>
</blockquote>

<p><strong><a name="2009-11-05T233559.860092Z"></a>
2009-11-05T23:35:59.860092Z Robin Watts</strong></p>
<blockquote>
<pre>
Update htmldiff.pl to cope with svg files (and pdfwrite svg files).
Also update the invocation of .PS files to use gs_cet.ps


</pre>
<p>[toolbin/htmldiff.pl]</p>
</blockquote>

<p><strong><a name="2009-11-05T222430.858232Z"></a>
2009-11-05T22:24:30.858232Z Ray Johnston</strong></p>
<blockquote>
<pre>
This is the initial commit of the 'tiffsep1' device code that emits
separation files as 1-bit per pixel TIFF files, a separate file for
each separation. This is a CMYK plus Spot color device, and the
number of separations (spot colors) supported depends on the gdevdevn.h
setting of USE_COMPRESSED_ENCODING. By default this is true as long as
the sizeof(gx_color_index) is &gt;= 8, so up to GX_DEVICE_COLOR_MAX_COMPONENTS
layers can be generated (current default 64). Without compressed color
encoding, then only 8 total (C, M, Y, K and 4 spot colors) can be
supported.

Files are named with the separation layer in ( ), e.g. x(Black).tif if
the OutputFile is 'x.tif'. Since no composite CMYK is generated, the
base file is deleted ('x.tif' in the example).

DETAILS:

This device uses a hook of the 'fill_path' device call to collect the
threshold arrays from the imager state. In case a file does not perform
a 'fill' operations, the gsdevice.c code does a dummy fill of an empty
path to allow the 'sep1_fill_path' code to convert the 'order' into
threshold arrays.s

The 'open' and 'put_params' device functions are modified to make sure
that if the clist device is being used, the 'sep1_fill_path' proc will
be re-hooked (the clist initialization overwrites some procs including
the 'fill_path' proc). The sep1_fill_path then forwards to whatever
fill_path proc was set by the gdev_prn_open or put_params.

A later commit will move the 'thresholds_from_order' function to another
common file (probably gsht1.c) and change it to generate a threshold
array of type 'gs_threshold_halftone' with NULL transfer and closure
functions. This function is in gdevtsep.c now since it is the only
device that needs it (for now) and development was easier with all
changes more or less localized (at least non-trivial ones).

The make files are modified so that the 'tiffsep1' device is included
by default (where the tiffsep device is included).

The actual halftoning is done using 32-bit writes of the dithered line
since testing showed this to be 27% faster (although more complex).

Note that the compressed color encoding (the current default) is about
half the throughput compared to direct encoding. Users that are sensitive
to performance (who isn't) and that only need 8 or less total colors
(CMYK plus 4 spot colors) will want to turn compressed color encoding
off.
</pre>
<p>[base/gsdevice.c psi/os2.mak base/bcwin32.mak base/openvms.mak base/watcw32.mak base/Makefile.in base/gdevtsep.c base/configure.ac base/unix-gcc.mak base/unixansi.mak psi/msvc32.mak base/macos-mcp.mak base/devs.mak]</p>
</blockquote>

<p><strong><a name="2009-11-05T170101.144368Z"></a>
2009-11-05T17:01:01.144368Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Add support for only testing only langauges which were affected by a commit.

</pre>
<p>[toolbin/localcluster/splitjobs.pl toolbin/localcluster/clustermaster.pl toolbin/localcluster/readlog.pl toolbin/localcluster/build.pl toolbin/localcluster/clusterpush.pl toolbin/localcluster/run.pl toolbin/localcluster/compare.pl]</p>
</blockquote>

<p><strong><a name="2009-11-05T081447.560103Z"></a>
2009-11-05T08:14:47.560103Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
updating the internal graphic state as in the else part; 2nd half of fix to bug 690853</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-11-03T234348.930105Z"></a>
2009-11-03T23:43:48.930105Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix a const propagation warning.

Also remove some trailing whitespace.</pre>
<p>[base/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2009-11-03T234347.356550Z"></a>
2009-11-03T23:43:47.356550Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove some unused variables from the PDF 1.4 compositor device,
fixing several warnings. Also cleans up some formatting.</pre>
<p>[base/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2009-11-03T234345.299604Z"></a>
2009-11-03T23:43:45.299604Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move some static prototypes from gdevp14.h to gdevp14.c.

These two functions, internal to gdevp14.c, need forward prototypes
but where declared in the public header, causing gcc warnings when
the declarations where included in other source files.</pre>
<p>[base/gdevp14.c base/gdevp14.h]</p>
</blockquote>

<p><strong><a name="2009-11-03T175436.738828Z"></a>
2009-11-03T17:54:36.738828Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
revert to PXL 1.1 - it is possible some old printers dislike PXL 2.1 header</pre>
<p>[base/gdevpxut.c]</p>
</blockquote>

<p><strong><a name="2009-11-03T165925.556772Z"></a>
2009-11-03T16:59:25.556772Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a line split without the '\' at the end of the line. By some reason gmake
tolerates this but MSVC nmake doesn't. Bug 690886, customer 661.

</pre>
<p>[base/lib.mak]</p>
</blockquote>

<p><strong><a name="2009-11-03T143904.429643Z"></a>
2009-11-03T14:39:04.429643Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
Use SetPageScale and SetPageOrigin to work around 16-bit limit in paths.

This is a similar but more extensive change to the last (16-bit limit in 
SetCursor), which use SetpageScale to make path co-ordinates fit within 
16-bit. In so doing some paths can become inaccurate if one of the
points are not large; so SetPageOrigin is used to shift to one such point
before the scaling. This is the last part to fix bug 690858 and bug 690860 .

</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-11-03T140653.986640Z"></a>
2009-11-03T14:06:53.986640Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
Use SetPageScale to work around 16-bit limit in SetCursor.

Here SetPageScale is used so that large cursor co-ordinates can fit 
within 16-bit signed integer limit. This fixes bigpath.ps in
bug 690855, and also fixes some of the problems seen in bug 690858 and 
bug 690860. 

</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-11-03T135422.932026Z"></a>
2009-11-03T13:54:22.932026Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
new SetPageScale/Unset utility routine before the fix to bug 690858</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-11-03T135017.551314Z"></a>
2009-11-03T13:50:17.551314Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
new SetPageOrigin utility routine before the fix to bug 690858</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-11-03T134154.478161Z"></a>
2009-11-03T13:41:54.478161Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
fixes age-old typo.

This appears to be a typo - the gray conversion code is doing
out = (red + green + next_red) instead of (red + green + blue).

</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-11-03T133648.031673Z"></a>
2009-11-03T13:36:48.031673Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
write signed 16-bit integers properly.

The pxl utlity code has never been able to write negative numbers as 
signed 16-bit integers properly. This fixes bug 690863 primarily, and also 
some of the problems seen in bug 690858, file  CATX8874.pdf mentioned 
in bug 690859, and part of the problems in bug 690860.

</pre>
<p>[base/gdevpxut.h base/gdevpxut.c]</p>
</blockquote>

<p><strong><a name="2009-11-03T132030.378093Z"></a>
2009-11-03T13:20:30.378093Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
Do rounding of co-ordinates rather than clipping.

This set of change tries to calculating the co-ordinates more accurately by
doing rounding of fractional parts instead of clipping off the fractional 
parts. This is part of the fix to bug 690869. Also needs -r1200 to work 
for the intended purpose of matching with ppmraw output.

</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-11-03T131451.306299Z"></a>
2009-11-03T13:14:51.306299Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
Tightening the standard media size matching.

Drop the tolerance to 0.05 from 5/72 of an inch.
One of the test files is 36-pixels @r600 within a standard size.
Fixes bug 690866.

</pre>
<p>[base/gdevpxut.c]</p>
</blockquote>

<p><strong><a name="2009-11-03T125924.143346Z"></a>
2009-11-03T12:59:24.143346Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
flush stream data in close_device().

For a whole set of postscript files (the ps3cet set), the close_device() 
finalizer code is called before the PXL output is flushed. This causes 
the PJL job footer to be outputted in the middle of the last portion of 
PXL output, thus corrupting the PXL data. Adding a flush fixes this problem. 
Fixes one of the many problems in bug 690858.

</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-11-03T125017.079568Z"></a>
2009-11-03T12:50:17.079568Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
Removes two redundant SetBrushSource black

The two SetBrushSourcewas introduced by:

r8732: marcos - Add support to pxlcolor and pxlmono for 24 bpp images.

After r8732, whenever one tries to output an image, the brush color is reset to
black. This affects later drawings that relies on a non-black brush color being
set previously and still considered being active. Fixes bug 690853.

</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-11-03T062149.323464Z"></a>
2009-11-03T06:21:49.323464Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add missing return type and static scope to the definitions of
pdf14_push/pop_transparency_state. Fixes a gcc warning.</pre>
<p>[base/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2009-11-03T052732.955847Z"></a>
2009-11-03T05:27:32.955847Z Ralph Giles</strong></p>
<blockquote>
<pre>
Include the implicitly required headers for gxpcolor.h in gdevp14.h.

This declares dev_color_proc_save_dc and related function pointers
before use, correcting a serious gcc warning and fixing compilation
on AIX 5.3 TL 8 SP2. Bug 690883.

</pre>
<p>[base/lib.mak base/gdevp14.h]</p>
</blockquote>

<p><strong><a name="2009-11-02T173656.958032Z"></a>
2009-11-02T17:36:56.958032Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
When a stream error occurs, Ghostscript sometimes print a spurious &quot;Additional
information&quot; line containing uninitialized data as part of the error message.
Initialize error_string in s_init_state to fix this. Thanks to
Michael Constant for the patch. Bug 690874.

</pre>
<p>[base/stream.c]</p>
</blockquote>

<p><strong><a name="2009-11-02T162435.721695Z"></a>
2009-11-02T16:24:35.721695Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Add psdcmyk to regression testing (currently only at 72/75 dpi).
</pre>
<p>[toolbin/localcluster/build.pl]</p>
</blockquote>

<p><strong><a name="2009-11-02T052128.471147Z"></a>
2009-11-02T05:21:28.471147Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Quiet Ubuntu 9.10 gcc/ld warning:

./obj/gdevpsft.o: In function `T.107':
gdevpsft.c:(.text+0x992): warning: memset used with constant zero length parameter; this could be due to transposed parameters

</pre>
<p>[base/gdevpsft.c]</p>
</blockquote>

<p><strong><a name="2009-11-01T233617.798485Z"></a>
2009-11-01T23:36:17.798485Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for indeterminism from psdcmyk and any other devices that use rgb_cs_to_spotn_cm
or other gx_cm_color_map_procs that don't set all color_info-&gt;num_components elements
of the &quot;frac out[]&quot; array. Fix for Bug 690713.

DETAILS:

All of the cmap_***_direct and cmap_***_halftoned functions in gxcmap.c called into
the corresponding device's color mapping proc (supplied by the dev_proc
get_color_mapping_proc) for that color space, but it is not a requirement (invariant)
that those functions set all 'num_components' elements of the array, and some did
not (such as the rgb_cs_to_spotn_cm function mentioned above.

</pre>
<p>[base/gxcmap.c]</p>
</blockquote>

<p><strong><a name="2009-11-01T224733.338243Z"></a>
2009-11-01T22:47:33.338243Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a typo in a recently committed patch (rev. 10246) that broke a branch 
that handles Type 3 images with string data source in the image and file data
source in the mask. Bug 690451, customer 200.

</pre>
<p>[Resource/Init/gs_ll3.ps]</p>
</blockquote>

<p><strong><a name="2009-11-01T195029.144138Z"></a>
2009-11-01T19:50:29.144138Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Consider '0000000000 00000 n' as a free entry, issue a warning, and continue
processing xref table. Files with this error, generated by Quartz PDFContext
are getting increasingly common. Bug 690873.

</pre>
<p>[Resource/Init/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2009-11-01T183250.921078Z"></a>
2009-11-01T18:32:50.921078Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Implement support of large resource dictionaries. Store XObject dictionaries
that exceed 65534 elements as arrays of dictionaries. Increase default operand
stack limit to 300000 elements. Bug 690778, customers 850, 531.

</pre>
<p>[Resource/Init/gs_init.ps Resource/Init/pdf_main.ps Resource/Init/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2009-11-01T154028.684192Z"></a>
2009-11-01T15:40:28.684192Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Always allocate pcl and xps jobs to i7 and i7a along with xps jobs (splitjobs.pl).

Fix race condition when machine goes down during regression (clustermaster.pl).

Repeated timeouts on a machine now cause it to abort the run and report this (run.pl and readlog.pl).

</pre>
<p>[toolbin/localcluster/splitjobs.pl toolbin/localcluster/clustermaster.pl toolbin/localcluster/readlog.pl toolbin/localcluster/run.pl]</p>
</blockquote>

<p><strong><a name="2009-10-30T012556.717628Z"></a>
2009-10-30T01:25:56.717628Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Work around a requirement of .image3 operator to have image and mask data
sources to be of the same type. Convert the data sources to the same type
on PostScript level. Bug 690850, customer 870.

</pre>
<p>[Resource/Init/gs_ll3.ps]</p>
</blockquote>

<p><strong><a name="2009-10-29T020758.374375Z"></a>
2009-10-29T02:07:58.374375Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for clist setcolor when compressed color encoding is used which is the
default build case for the tiffsep and psdcmyk and others . Bug 690851.

DETAILS:

The compressed color encoding always uses 64 bit (sizeof(gx_color_index)).
The (num_components * 8) is not the correct depth (number of bits) for color
encoding in the clist. This patch detects (at run time) that compressed
color encoding is using by examining the 'my_encode_color' procedure since
there is no direct way to determine if compressed color encoding is being
used.

</pre>
<p>[base/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2009-10-27T181349.866447Z"></a>
2009-10-27T18:13:49.866447Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
Adding all the commit ids ever found in svn log to the AUTHORS file.

For those I don't know the real name of, the id was duplicated as the name.
This should make it easier for somebody who wants to fill in the info.

</pre>
<p>[doc/AUTHORS]</p>
</blockquote>

<p><strong><a name="2009-10-27T174451.858107Z"></a>
2009-10-27T17:44:51.858107Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
Adding my commit id&lt;-&gt;name mapping to the AUTHORS file

Apparently this file is used by split_changelog.py for
building the History files.

</pre>
<p>[doc/AUTHORS]</p>
</blockquote>

<p><strong><a name="2009-10-27T172817.755993Z"></a>
2009-10-27T17:28:17.755993Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
Declare binary communications explicitly for IJS, where the default behavior
isn't clear for non-MS-VC compilers.

This makes the IJS code works correctly when compiled by mingw or borland.
It also fixes some issue for Watcom. Watcom-compiled client
still seems to be buggy (as in not inter-operating with the others).
Closes bug 688714.

</pre>
<p>[ijs/ijs_client_example.c ijs/ijs_exec_win.c ijs/unistd_.h ijs/ijs_server.c]</p>
</blockquote>

<p><strong><a name="2009-10-27T172138.456605Z"></a>
2009-10-27T17:21:38.456605Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
Reset color space to eRGB just in case a previous fill/stroke
had set it to eGray. Fixes 688320.

</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-10-27T170259.376757Z"></a>
2009-10-27T17:02:59.376757Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
Implements DeltaRow compression as an option, plus updated user documentation.

The new compression scheme is activated by -dCompressMode=3. 
1=RLE is still the default, and under some conditions:
1-pixel-high image (which does not compress well with DeltaRow) and out
of memory conditions (noCompression can run without allocating
memory), specifying -dCompressionMode=3 will still use the current RLE code.
These are documented in comments.

</pre>
<p>[base/gdevpx.c doc/Devices.htm base/gdevpxut.c]</p>
</blockquote>

<p><strong><a name="2009-10-27T165305.423045Z"></a>
2009-10-27T16:53:05.423045Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
custom media size patch + bug fix.

This implements the CustomMediaSize as discussed; on the way I also found an
old bug with the pxl utility code which was just written but not used (until
now). See comments within. Fixes bug 690827.

</pre>
<p>[base/gdevpxut.h base/gdevpxut.c]</p>
</blockquote>

<p><strong><a name="2009-10-27T161323.571814Z"></a>
2009-10-27T16:13:23.571814Z Robin Watts</strong></p>
<blockquote>
<pre>
Fix for bug 690831.

The test file uses a radial shading, where the final circle almost contains
the initial one, with 'extension' at the end selected.

Our code incorrectly fills the final extended circle, causing us to wipe out
all the correct fading we've done to that point.

The fix is to recognise whether we are moving 'inwards' or 'outwards', and only
to fill in the 'inwards' case.

This fixes the original issue, and causes no visible regressions.

</pre>
<p>[base/gxshade1.c]</p>
</blockquote>

<p><strong><a name="2009-10-27T155405.886068Z"></a>
2009-10-27T15:54:05.886068Z Robin Watts</strong></p>
<blockquote>
<pre>
Make htmldiff.pl output resolution information in html file.

</pre>
<p>[toolbin/htmldiff.pl]</p>
</blockquote>

<p><strong><a name="2009-10-27T043104.180870Z"></a>
2009-10-27T04:31:04.180870Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fix so that the monochrome devices do not use the non-separable blending 
operations that are used for RGB devices. This was the source of an 
indeterminism in Bug 690477. Thanks to Marcos for the detailed bug 
information.
 
DIFFERENCES EXPECTED:
  
None. Apparently no other files use the non-separable luminosity 
blending.
</pre>
<p>[base/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2009-10-26T002011.207073Z"></a>
2009-10-26T00:20:11.207073Z Robin Watts</strong></p>
<blockquote>
<pre>
bmpcmp.c: Fix bounding box calculation that could cause SEGV.

</pre>
<p>[toolbin/bmpcmp.c]</p>
</blockquote>

<p><strong><a name="2009-10-26T001931.018870Z"></a>
2009-10-26T00:19:31.018870Z Robin Watts</strong></p>
<blockquote>
<pre>
Make htmldiff.pl output TITLEs for each IMG saying the source file, page,
resolution, and whether it's the candidate or reference image.

</pre>
<p>[toolbin/htmldiff.pl]</p>
</blockquote>

<p><strong><a name="2009-10-25T123953.222871Z"></a>
2009-10-25T12:39:53.222871Z Robin Watts</strong></p>
<blockquote>
<pre>
Fix for bug 687295; force transparent stroking to construct the entire path
before stroking it, thus eliminating nasty effects where edges overlap.

</pre>
<p>[base/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2009-10-23T201715.860218Z"></a>
2009-10-23T20:17:15.860218Z Robin Watts</strong></p>
<blockquote>
<pre>
Another couple of tweaks to bmpcmp.c: Avoid producing bitmaps that have no
changes in (from pages with well separated changes).
Shrink bbox of bitmaps where possible.

</pre>
<p>[toolbin/bmpcmp.c]</p>
</blockquote>

<p><strong><a name="2009-10-23T192210.011416Z"></a>
2009-10-23T19:22:10.011416Z Robin Watts</strong></p>
<blockquote>
<pre>
Tweaks to bmpcmp.c.
 * 'Small' differences are shown in green, large differences in red.
 * Don't print an error message when no differences found, as the script
   does this better (and we are only looking at a page at a time).

</pre>
<p>[toolbin/bmpcmp.c]</p>
</blockquote>

<p><strong><a name="2009-10-23T192018.949144Z"></a>
2009-10-23T19:20:18.949144Z Robin Watts</strong></p>
<blockquote>
<pre>
Tiny tweak to htmldiff.pl script; now lists files which it failed to find 
changes in at the end.

</pre>
<p>[toolbin/htmldiff.pl]</p>
</blockquote>

<p><strong><a name="2009-10-23T191336.932446Z"></a>
2009-10-23T19:13:36.932446Z Robin Watts</strong></p>
<blockquote>
<pre>
Fix bounding box adjustments that were causing rendering glitch in bug 687295.


</pre>
<p>[base/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2009-10-23T071756.276513Z"></a>
2009-10-23T07:17:56.276513Z Ralph Giles</strong></p>
<blockquote>
<pre>
Use document.domain instead of a hardwired value for the AJAX cgi 
request. This allows the dashboard page to function on both the 
ghostscript.com and the www.ghostscript.com server aliases.
</pre>
<p>[toolbin/localcluster/dashboard.html]</p>
</blockquote>

<p><strong><a name="2009-10-22T182822.955248Z"></a>
2009-10-22T18:28:22.955248Z Ralph Giles</strong></p>
<blockquote>
<pre>
Revert the changes from r10210. This was experimental code accidentally 
committed with an unrelated log message.
</pre>
<p>[base/gxfcache.h base/gxistate.h base/gsfont.c base/gsistate.c]</p>
</blockquote>

<p><strong><a name="2009-10-22T182404.424606Z"></a>
2009-10-22T18:24:04.424606Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a tranposed digit in the A4Small imageable area in
the ghostpdf ppd. Bug 690814.</pre>
<p>[lib/ghostpdf.ppd]</p>
</blockquote>

<p><strong><a name="2009-10-22T182357.528033Z"></a>
2009-10-22T18:23:57.528033Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add display of the pending 'clusterpush' job queue to the dashboard.

Runs to check commits to the central repository preempt clusterpush
jobs, but it is still useful to see the queue when several jobs are
waiting.

Because we now have more than two elements, we replace the entire
'status' div element, rather than trying to find and replace each
sub-element within the div.</pre>
<p>[base/gxfcache.h base/gxistate.h base/gsfont.c base/gsistate.c]</p>
</blockquote>

<p><strong><a name="2009-10-22T094443.697488Z"></a>
2009-10-22T09:44:43.697488Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Unchecked return value from pdf_write_spot_function

Details
Bug # 690796 &quot;Invalid Halftone objects in PDF (negative object references)&quot;

Two fixes, firstly the return value from pdf_write_spot_function() was not being
checked in pdf_write_spot_halftone. We now check the value and return an error if
required.

Secondly when unable to write a spot function because of the num_bits required we were
returning a rangecheck error. This was hidden by the failure to check the return value
noted above. The problem is that rangecheck is a special case return when called via
gdev_pdf_fill_path() and causes it to assume transparency is involved and use a
different fill method. We actually want an error so instead of returning rangecheck
we no return limitcheck instead.

</pre>
<p>[base/gdevpdfg.c]</p>
</blockquote>

<p><strong><a name="2009-10-22T070127.775454Z"></a>
2009-10-22T07:01:27.775454Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fix mistype of which procs to set to when we change the color space for a transparency group.  If we are running with a separation device with spot colors then we need to use the compressed encoding and decoding.  This fixes bug 690816.

DIFFERENCES EXPECTED:

None since it will only show up for separation devices.</pre>
<p>[base/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2009-10-21T180925.061089Z"></a>
2009-10-21T18:09:25.061089Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add display of the pending 'clusterpush' job queue to the dashboard.

Runs to check commits to the central repository preempt clusterpush
jobs, but it is still useful to see the queue when several jobs are
waiting.

Because we now have more than two elements, we replace the entire
'status' div element, rather than trying to find and replace each
sub-element within the div.</pre>
<p>[toolbin/localcluster/clustermonitor.cgi toolbin/localcluster/dashboard.html]</p>
</blockquote>

<p><strong><a name="2009-10-21T180923.409841Z"></a>
2009-10-21T18:09:23.409841Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a dashboard html page displaying the status of the local cluster.

This page retrieves the status information from the clustermonitor.cgi
script and parses it in javascript, constructing an html display. It
updates every five seconds.

This dashboard is currently installed as http://ghostscript.com/regression/</pre>
<p>[toolbin/localcluster/dashboard.html]</p>
</blockquote>

<p><strong><a name="2009-10-21T180920.856618Z"></a>
2009-10-21T18:09:20.856618Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a cgi version of the clustermonitor script.

This is a perl cgi script which returns similar information to the
clustermonitor.pl terminal-based dashboard in a json structure for
easy parsing from javascript or other remote applications.</pre>
<p>[toolbin/localcluster/clustermonitor.cgi]</p>
</blockquote>

<p><strong><a name="2009-10-21T035046.157782Z"></a>
2009-10-21T03:50:46.157782Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Reintegration of gs_extendgraphic branch into trunk.  This fixes bug690777.pdf.  The main purpose of this commit is to relay information about q and Q operations (extended graphic state push and pops) to the pdf14 compositor.  The reason this is needed is that the softmask is part of the extended graphic state.

DIFFERENCES EXPECTED:

Bug688807.pdf has a minor progression.  Bug688159.pdf and Bug689509.pdf also reported differences but I could not see any using cmpi.  Also, we may need to take a look at the XPS output.  It was unclear to me which were regressions and which were indeterministic.

DETAILS:

The following example (as well as bug690777) drove the need for this commit.

Consider a transparency group that covers an entire page and let there be a 
soft mask that is set as part of a graphic state.  Let there be 2 bands in 
this clist and let the soft mask bounding box be such that it intersects band 
1 and band 2.   Currently, there will be  a Push Transparency Soft Mask and an 
End Transparency Soft Mask compositor action added into the clist for BOTH 
bands.  Now, let there be a transparency group that is drawn only into band 
one. There will be a Push Transparency group and End Transparency group into 
band 1.  Now let there be a Q followed by a transparency group that is drawn 
only in band 2.  What should happen, is that the soft mask should no longer be 
present due to the Q operation.  Unfortunately, in the current architecture, 
there is no compositor action to let band 2 know that the soft mask is not 
valid to use.

Another example is a case were we set a graphic state with a softmask, which 
will introduce the Push Transparency Soft Mask and an End Transparency Soft 
Mask compositor actions.  Follow this by a q operation. Set another graphic 
state, with another softmask.  This introduces another Push Transparency Soft 
Mask and an End Transparency Soft Mask compositor action.  During the clist 
reader stage the maskbuffer for our pdf14 context will be the last soft mask 
that was specified. Now on the writer side do a Q and draw.  What should occur 
is that the first transparency softmask should be active.  Unfortunately, this 
information is not communicated through the clist AND the old soft mask buffer 
has been lost.

The primary issue in these examples, is that we need to detect and store in 
the clist graphic state changes that occur and have an impact on our 
transparency state.

To solve this problem, the following is proposed:

1) At the PDF interpreter level for the /q and /Q operators, check if the page 
uses transparency. If it does, then execute a .pushextendedgstate for /q and 
a .popextendedgstate for /Q.

2) Add zpushextendedgstate and zpopextendedgstate commands in the c code. 
These operations will respectively execute a gs_push_transparency_state and a 
gs_pop_transparency_state during the clist writer process.  Deep in the 
graphics library there will also be gx_push_transparency_state and 
gx_pop_transparency_state.  These are executed during the clist reader side.

4) Two new device procedures were added related to the transparency state.
(push_transparency_state and pop_transparency_state).  These were added at
the end of the device procs for backward compatibility with older devices.

4) A change to the pdf14 ctx stack such that the maskbuffers are a 
stack.   In fact, they are now reference counted since they can be multiple
copies (actually pointers to the same data buffer) in the mask buffer stack.

5) A flag xstatepending was added to the graphic state to communicate when a softmask transparency
group pop had occurred.  In that case, we need to keep track of the q and Q 
operations.  Otherwise, they are ignored early in the process to reduce the
number of compositor actions.

In addition fixes were made to the background content handling (BC) of the soft mask.
Now the softmask bounding box is the same as the parent group unless the BC value
is white which would indicate that the BC will not have any effect on areas drawn outside
the softmask group bounding box.  Changes were made in the code that computes the band range for the 
softmask group.



</pre>
<p>[base/gdevrops.c base/gxclimag.c base/gxistate.h base/gdevdflt.c base/gdevbbox.c base/gxcomp.h psi/ztrans.c base/gxclipm.c base/gsovrc.c base/gdevpdft.c /trunk/gs base/gxclip2.c base/gxdevcli.h base/gdevp14.c Resource/Init/pdf_ops.ps base/gxclist.c base/gdevp14.h base/gstrans.c base/gstrans.h base/gxclip.c]</p>
</blockquote>

<p><strong><a name="2009-10-21T011851.593536Z"></a>
2009-10-21T01:18:51.593536Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Allow for newly added regression files to produce errors (compare.pl).

Fixed missing nice on some commands (build.pl).

Fixed spurious error message when running svn commit regression  (run.pl).

Reordered code so that the user regression queue is updated even while a regression run is in progress (clustermaster.pl).

Initial check-in (clustermonitor.pl).
</pre>
<p>[toolbin/localcluster/clustermonitor.pl toolbin/localcluster/clustermaster.pl toolbin/localcluster/build.pl toolbin/localcluster/run.pl toolbin/localcluster/compare.pl]</p>
</blockquote>

<p><strong><a name="2009-10-21T011147.945166Z"></a>
2009-10-21T01:11:47.945166Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Perform rsync based on checksum, not mod-time &amp; size.
</pre>
<p>[toolbin/localcluster/clusterpush.pl]</p>
</blockquote>

<p><strong><a name="2009-10-20T231013.904636Z"></a>
2009-10-20T23:10:13.904636Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Modififed clusterpush.pl to print out the rsync status messages
(there should probably be a command line option to disable this).

</pre>
<p>[toolbin/localcluster/clusterpush.pl]</p>
</blockquote>

<p><strong><a name="2009-10-20T212846.305832Z"></a>
2009-10-20T21:28:46.305832Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Report build failures with more detail.
</pre>
<p>[toolbin/localcluster/clustermaster.pl toolbin/localcluster/readlog.pl toolbin/localcluster/build.pl toolbin/localcluster/run.pl]</p>
</blockquote>

<p><strong><a name="2009-10-20T191709.055802Z"></a>
2009-10-20T19:17:09.055802Z Hin-Tak Leung</strong></p>
<blockquote>
<pre>
Handles images rotated by 90/-90/180 degree as high level object.

This change implement rotated image as a high-level object by
emitting a PXL rotation intruction, draw the image with rotated
user co-ordinate, then the reverse PXL rotation. Fixes bug 690733. 

</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2009-10-20T165311.304991Z"></a>
2009-10-20T16:53:11.304991Z Robin Watts</strong></p>
<blockquote>
<pre>
Fix for bug 690805.

If a dash pattern exactly fits into the path to be stroked, a 0 length dash
note is emitted, with (0,0) tangents. This causes an extra cap to be put on
the path when rendering, causing stray marks.

The fix is to recognise the case when we are about to emit a dash note with
no useful information in the note (i.e. if udx and udy are 0, then don't
emit the dash note). This leaves the renderer free to make it's own decision.

Examination of the bitmaps shows that all the differences are in fact
improvements. The following files are identified by the localcluster as
being differences, but no differences are found in local testing:

tests_private/pcl/pcl5efts/fts.1140.pdf.pkmraw.600.0 pcl i7 i7
tests_private/pcl/pcl5efts/fts.1140.pdf.ppmraw.600.0 pcl i7 imac
tests_private/pcl/pcl5efts/fts.1140.pdf.ppmraw.75.0 pcl macpro macpro
tests_private/pcl/pcl5efts/fts.2380.pdf.ppmraw.600.0 pcl macpro i7
tests_private/ps/ps3cet/09-36.PS.pbmraw.300.0 gs i7 snow
tests_private/ps/ps3cet/09-36.PS.pbmraw.300.1 gs snow i7
tests_private/ps/ps3cet/09-36.PS.pdf.pkmraw.300.0 gs i7a i7
tests_private/ps/ps3cet/09-36.PS.pdf.ppmraw.300.0 gs snow i7a
tests_private/ps/ps3cet/09-36.PS.pgmraw.300.0 gs macpro i7a
tests_private/ps/ps3cet/09-36.PS.pgmraw.300.1 gs macpro snow
tests_private/ps/ps3cet/09-36.PS.pkmraw.300.0 gs i7a i7
tests_private/ps/ps3cet/09-36.PS.pkmraw.300.1 gs i7 WZIM
tests_private/ps/ps3cet/09-36.PS.ppmraw.300.0 gs macpro i7
tests_private/ps/ps3cet/09-36.PS.ppmraw.300.1 gs i7 i7a
tests_private/ps/ps3cet/11-21.PS.pbmraw.300.0 gs i7a i7
tests_private/ps/ps3cet/11-21.PS.pbmraw.300.1 gs i7 i7a
tests_private/ps/ps3cet/11-21.PS.pdf.pkmraw.300.0 gs snow snow
tests_private/ps/ps3cet/11-21.PS.pdf.ppmraw.300.0 gs i7 i7
tests_private/ps/ps3cet/11-21.PS.pgmraw.300.0 gs macpro i7a
tests_private/ps/ps3cet/11-21.PS.pgmraw.300.1 gs i7 snow
tests_private/ps/ps3cet/11-21.PS.pkmraw.300.0 gs i7 i7a
tests_private/ps/ps3cet/11-21.PS.pkmraw.300.1 gs macpro WZIM
tests_private/ps/ps3cet/11-21.PS.ppmraw.300.0 gs macpro i7a
tests_private/ps/ps3cet/11-21.PS.ppmraw.300.1 gs macpro macpro
tests_private/ps/ps3cet/11-28.PS.pbmraw.300.0 gs i7 i7a
tests_private/ps/ps3cet/11-28.PS.pbmraw.300.1 gs snow snow
tests_private/ps/ps3cet/11-28.PS.pdf.pkmraw.300.0 gs i7 macpro
tests_private/ps/ps3cet/11-28.PS.pdf.ppmraw.300.0 gs i7a snow
tests_private/ps/ps3cet/11-28.PS.pgmraw.300.0 gs i7a i7
tests_private/ps/ps3cet/11-28.PS.pgmraw.300.1 gs i7a macpro
tests_private/ps/ps3cet/11-28.PS.pkmraw.300.0 gs snow macpro
tests_private/ps/ps3cet/11-28.PS.pkmraw.300.1 gs i7 snow
tests_private/ps/ps3cet/11-28.PS.ppmraw.300.0 gs macpro i7
tests_private/ps/ps3cet/11-28.PS.ppmraw.300.1 gs macpro i7
tests_private/xps/xpsfts-a4/fts_43xx.xps.bitrgb.72.0 xps macpro imac


</pre>
<p>[base/gxpdash.c]</p>
</blockquote>

<p><strong><a name="2009-10-20T161829.688093Z"></a>
2009-10-20T16:18:29.688093Z Robin Watts</strong></p>
<blockquote>
<pre>
Simple .bmp image differ/slicer, for use with htmldiff.pl.

</pre>
<p>[toolbin/bmpcmp.c]</p>
</blockquote>

<p><strong><a name="2009-10-20T161356.684584Z"></a>
2009-10-20T16:13:56.684584Z Robin Watts</strong></p>
<blockquote>
<pre>
Simple perl script to produce html+images from regression lists as produced
by localcluster regression tests.

</pre>
<p>[toolbin/htmldiff.pl]</p>
</blockquote>

<p><strong><a name="2009-10-20T075942.576899Z"></a>
2009-10-20T07:59:42.576899Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Allow use of /Indexed colour spaces in PostScript output.

Details
Although opdfread.ps has always contained code to handle /Indexed colour spaces,
ps2write has never emitted any. This is because it is always executed with a PDF
CompatabilityLevel of 1.2, and PDF 1.2 doesn't support Indexed colour spaces.

PostScript, however, does and it seems unreasonable to deny the use of these spaces
when we are emitting PostScript.

This code checks to see if we are emitting PostScript when comparing the compatibility 
level to see if Indexed spaces are allowed, and permits /Indexed for PostScript.

This change did, however, expose a number of flaws in the opdfread code when handling
Indexed spaces. These are all due to the fact that an Indexed space can use an existing
space as its base, and this can lead to multiple attempts to resolve or flatten the 
underlying space.

FunctionToProc is altered to check it has been passed a function dictionary to convert
and to ignore the operation if not.

SubstitutePDFColorSpace allows for CIEBasedA and CIEBasedABC spaces, which may be the
result of a prior substitution.

ResolveArrayElement checks the element to see if it is passed a procedure containing
an integer followed by a procedure, before executing the procedure. This is because a
colour space which has already been resolved may have a procedural look up and 
executing that disturbs the stack.

DecodeArrays generated an incorrect Decode array for Indexed colour spaces.

</pre>
<p>[base/gdevpdfc.c Resource/Init/opdfread.ps]</p>
</blockquote>

<p><strong><a name="2009-10-19T202453.770533Z"></a>
2009-10-19T20:24:53.770533Z Ralph Giles</strong></p>
<blockquote>
<pre>
Print a warning when invoking the 'so' unix makefile targets from pmake.

Details:

The make included in freebsd 7.0 appears to have trouble matching or 
collapsing target paths of the form ./bin/../sobin/gsc as GSSOC_XENAME 
expands to in the recursive shared build make invocation. GNU make works 
fine on the same platform.

Note that we use the @ prefix to hide the command output, which may also 
be a gmake-ism, but it works on freebsd 7.0.
</pre>
<p>[base/unix-dll.mak]</p>
</blockquote>

<p><strong><a name="2009-10-17T185906.072895Z"></a>
2009-10-17T18:59:06.072895Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Finish implementation of ColorSpace extraction from JPX streams. RGB,
Gray, and ICC-based color spaces are extracted and passed to PDF interpreter.
Palette colors need no further processing in PDF interpreter because
they are expanded on C level. Bug 690207.

</pre>
<p>[Resource/ColorSpace/sGray Resource/ColorSpace/sRGB Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2009-10-16T140204.066085Z"></a>
2009-10-16T14:02:04.066085Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Problems with type 3 fonts causing errors

Details
Typo in the /NotDef function, used as a /.notdef glyph i type 3 fonts emitted by
ps2write. There was a 'o setlinewidth' which should be a '0 setlinewidth'.

</pre>
<p>[Resource/Init/opdfread.ps]</p>
</blockquote>

<p><strong><a name="2009-10-16T072224.989326Z"></a>
2009-10-16T07:22:24.989326Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Pattern colour spaces broken

Details
The CheckPattern routine in opdfread.ps insisted that a Pattern should contain a /Type
key in the pattern dicitonary and a value of /Pattern. The spec says this key is
optional and GS does not write it. This meant that all Pattern colour spaces failed
when checked by opdfread, and therefore the output of ps2write did not work.

The code now checks if a Type key is present before checking its value, and does not
fail if it is not present.

</pre>
<p>[Resource/Init/opdfread.ps]</p>
</blockquote>

<p><strong><a name="2009-10-14T091543.246903Z"></a>
2009-10-14T09:15:43.246903Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Initial checkin of script to gather performance data based on revision.
</pre>
<p>[toolbin/performance.pl]</p>
</blockquote>

<p><strong><a name="2009-10-13T071632.913558Z"></a>
2009-10-13T07:16:32.913558Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Problem with TrueType /.notdef encoding

Details
Bug #690809 &quot;ps2write problem with some TrueType fonts&quot;

When building a CharStrings dictionary, to map from glyph names to GIDs, the code would
start by correctly encoding /.notdef at GID 0. However the InverseEncoding path through
the code could then re-encode /.notdef at a different GID. This could lead to the file
failing to work.

Now check the glyph name and, if it is /.notdef, do not re-encode it.

</pre>
<p>[Resource/Init/opdfread.ps]</p>
</blockquote>

<p><strong><a name="2009-10-12T022721.732148Z"></a>
2009-10-12T02:27:21.732148Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add sRGB and a similar one-component color space for the upcoming patch
that will extract color space information from JP2 stream. Bug 690207.

</pre>
<p>[Resource/ColorSpace/sGray Resource/ColorSpace/sRGB]</p>
</blockquote>

<p><strong><a name="2009-10-08T015310.398646Z"></a>
2009-10-08T01:53:10.398646Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a long-standing bug in ps2ascii conversion that caused concatenation of
the lines within a paragraph. Bug 690806.

</pre>
<p>[lib/ps2ascii.ps]</p>
</blockquote>

<p><strong><a name="2009-10-06T114451.043694Z"></a>
2009-10-06T11:44:51.043694Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Skip non-PDF files during enumeration of embedded file streams in PDF
portfolio. Bug 690422, customer 531.

</pre>
<p>[Resource/Init/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2009-10-06T082242.843465Z"></a>
2009-10-06T08:22:42.843465Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Undo escapement of PostScript strings when writing XMP metadata for
PDF/A

Details
Bug #690471 &quot;Parantheses escaped in xmp metadata&quot;

Technically this is covered in gs/doc/ps2pdf.htm under -sDSCEncoding which states that 
the default behaviour is simply to copy the data directly to the file with no
translation.

However it seems unreasonable not to at least undo the PostScript escapement which we 
must have in order to set the PostScript string and which will cause PDF/A
verification failures if we don't.

Modified the default case (which does not convert to Unicode) to undo the escapement
only.

</pre>
<p>[base/gdevpdfe.c]</p>
</blockquote>

<p><strong><a name="2009-10-06T073333.759516Z"></a>
2009-10-06T07:33:33.759516Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : The PDFACompatibilityPolicy switch was being overwritten by PDFA on
setpagedevice

Details
Bug #690803
The PDFA switch is stored in the page device dictionary, and the device member is reset
from the stored setting on each setpagedevice. This was defeating the 
PDFACompatibilityPolicy setting which tried to disable PDF/A production when the input
could not be converted to a compliant PDF/A file.

Because the PostScript value is subject to save and restore, its all but impossible to
alter the PostScript saved value. So added a new device member 'AbortPDFAX' which can
only be set from C. This is set when non-compliant input is detected and prevents the
emission of (currently) PDF/A file (may add PDF/X in future). It does this by resetting
the device PDFA member every time the device parameters are set.

</pre>
<p>[base/gdevpdfm.c base/gdevpdfx.h base/gdevpdfp.c base/gdevpdfb.h]</p>
</blockquote>

<p><strong><a name="2009-10-05T160719.389735Z"></a>
2009-10-05T16:07:19.389735Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct typos in the MacOS X linker options. Bug 690783.</pre>
<p>[base/unix-dll.mak]</p>
</blockquote>

<p><strong><a name="2009-10-05T092744.398728Z"></a>
2009-10-05T09:27:44.398728Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : incomplete submission #10124

Details
Somehow in the confusion of IP address changes and local cluster regression tests I
managed to only commit a partial fix for issue #690767. The missing line of code is
in this patch.

</pre>
<p>[base/gdevpdtd.c]</p>
</blockquote>

<p><strong><a name="2009-10-05T071040.648039Z"></a>
2009-10-05T07:10:40.648039Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Improve symbolic font detection

Details
Bug #690767 &quot;Problems with PDFA&quot;

Revision 9944 altered the way that we detect whether a font is symbolic or not. This 
involved several changes; fixing existing broken code, adding /.notdef detection and
attempting to check encoded positions of glyphs before deciding a font was non-symbolic.

The encoding position test was incorrect for TrueType fonts, however, leading to some
fonts being needlessly declared as symbolic. This patch moves the encoding test to the
font descriptor assembly, which is the correct place to test it.

While this resolves the customer issue, it is not a complete solution. A truly symbolic
TrueType font would still be written as a symbolic font and when creating PDF/A files
there are strict limitations on the form of TrueType fonts. In particular they must only
contain a single CMAP table. Because we do not completely generate TrueType fonts for
embedding, but copy some tables, we cannot meet this restriction.

This will continue to be a potential problem until the TrueType font embedding code is
rewritten properly.

</pre>
<p>[base/gdevpdtd.c base/gdevpdtw.c base/gdevpdtd.h]</p>
</blockquote>

<p><strong><a name="2009-10-05T013752.593906Z"></a>
2009-10-05T01:37:52.593906Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix incorrect calculation of the page size in cljet5 driver that returned the
size in inches instead of points causing /rangecheck in .installpagedevice .
Bug 690799, customer 870.

</pre>
<p>[base/gdevclj.c]</p>
</blockquote>

<p><strong><a name="2009-10-04T124207.575694Z"></a>
2009-10-04T12:42:07.575694Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix SEGV caused by unknown %device% prefix. Add missing check for return code
during lib path parsing. Thanks to Piotr Strzelczyk for the patch. Bug 690800.

</pre>
<p>[psi/zfile.c]</p>
</blockquote>

<p><strong><a name="2009-10-03T164107.412223Z"></a>
2009-10-03T16:41:07.412223Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Silently ignore point displacement request when the point number is out of
valid range. This patch has been backported from FreeType2. Bug 690795.

</pre>
<p>[base/ttinterp.c]</p>
</blockquote>

<p><strong><a name="2009-10-02T235945.611838Z"></a>
2009-10-02T23:59:45.611838Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Lots of general code cleanup.
Fixed termination of long jobs on some systems.
Added explicit detection of seg faults with pdfwrite.
</pre>
<p>[toolbin/localcluster/clustermaster.pl toolbin/localcluster/readlog.pl toolbin/localcluster/build.pl toolbin/localcluster/run.pl toolbin/localcluster/compare.pl]</p>
</blockquote>

<p><strong><a name="2009-10-02T223436.678844Z"></a>
2009-10-02T22:34:36.678844Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the Adobe-CNS1 CMap resource to supplement 6.</pre>
<p>[Resource/CMap/Adobe-CNS1-6 Resource/CMap/ETHK-B5-V Resource/CMap/HKscs-B5-V Resource/CMap/UniCNS-UTF32-V Resource/CMap/ETHK-B5-H Resource/CMap/HKscs-B5-H Resource/CMap/UniCNS-UTF16-V Resource/CMap/UniCNS-UTF32-H Resource/CMap/UniCNS-UTF8-V Resource/CMap/UniCNS-UTF16-H Resource/CMap/UniCNS-UTF8-H]</p>
</blockquote>

<p><strong><a name="2009-10-01T142736.870724Z"></a>
2009-10-01T14:27:36.870724Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for segfault when peekstring requests more data than remains in a
%rom% file. Bug 690697.

DETAILS:

The EOFC was not being set correctly, so a subsequent operation would have
cursor.r values that were invalid. Refer to the invariant in the documentation
in stream.h for the stream_s structure:

     s-&gt;position represents the stream position as of the beginning of the
     buffer, so the current position is s-&gt;position + (s-&gt;srptr + 1 - s-&gt;cbuf).

Note that we must not return EOFC when reading exactly the remaining number of
bytes in a file since this will result in the stream being closed. PCL relies
on the stream remaining open after reading the number of bytes in the file.

</pre>
<p>[base/gsiorom.c]</p>
</blockquote>

<p><strong><a name="2009-10-01T032846.061833Z"></a>
2009-10-01T03:28:46.061833Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Clusterpush.pl now tests all languages.
Added error checking to builds.
Disabled pgmraw testing for xps.
</pre>
<p>[toolbin/localcluster/splitjobs.pl toolbin/localcluster/clustermaster.pl toolbin/localcluster/readlog.pl toolbin/localcluster/build.pl toolbin/localcluster/run.pl]</p>
</blockquote>

<p><strong><a name="2009-10-01T012252.434995Z"></a>
2009-10-01T01:22:52.434995Z Masaki Ushizaka</strong></p>
<blockquote>
<pre>
A quick dirty hack to enable reading of wts plane files (wts_plane_x) on 64 bit machines.  Wts plane files contain a image of little endian 32 bit specific structure with a pointer, and was preventing wtsimdi device to run on 64 bit machines.
Tested on little endian 32 and 64 bit machines.  Should not change anything on 32 bit machines with current wts plane files.  Hope to work on big endian machines but not tested.
Bug #690710.</pre>
<p>[base/gswts.c]</p>
</blockquote>

<p><strong><a name="2009-09-30T005607.061280Z"></a>
2009-09-30T00:56:07.061280Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
First cut at a working clusterpush.pl (complete with documentation!).
</pre>
<p>[toolbin/localcluster/clustermaster.pl toolbin/localcluster/clusterpush.pl toolbin/localcluster/clusterpush.txt]</p>
</blockquote>

<p><strong><a name="2009-09-29T001830.610000Z"></a>
2009-09-29T00:18:30.610000Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Force out-of-range values of color mask to the valid range by calculating
bitwise 'and' with the maximum color value. Experiments show that this is what
AR does. Earlier code mapped out-of-range values to the nearest valid value.
Bug 690786, customer 531.

</pre>
<p>[Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2009-09-28T220708.267973Z"></a>
2009-09-28T22:07:08.267973Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Draw a smooth curve through the points of Ink annotation. The algorithm Adobe
uses is unpublished but our curve is close enough to Adobe when the points
follow a smooth path. For random points the curve is different but looks
more logical than Adobe's. Bug 690758, customer 580.

</pre>
<p>[psi/int.mak Resource/Init/pdf_draw.ps psi/zpdfops.c]</p>
</blockquote>

<p><strong><a name="2009-09-28T184049.994854Z"></a>
2009-09-28T18:40:49.994854Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix some broken documentation links. Bug 690787.</pre>
<p>[doc/Develop.htm doc/Commprod.htm]</p>
</blockquote>

<p><strong><a name="2009-09-28T171624.723655Z"></a>
2009-09-28T17:16:24.723655Z Ralph Giles</strong></p>
<blockquote>
<pre>
Also set the correct media type on the documenation style sheet.
</pre>
<p>[doc/gs.css]</p>
</blockquote>

<p><strong><a name="2009-09-28T171443.100223Z"></a>
2009-09-28T17:14:43.100223Z Ralph Giles</strong></p>
<blockquote>
<pre>
Set a text/html media type on the html documentation so it can
be served directly out of svn.
</pre>
<p>[doc/History7.htm doc/Projects.htm doc/History8.htm doc/Use.htm doc/Readme.htm doc/Deprecated.htm doc/Source.htm doc/Install.htm doc/Changes.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm doc/Commprod.htm doc/Release.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm doc/Ps2ps2.htm doc/Fonts.htm doc/Develop.htm doc/Ps2pdf.htm doc/Helpers.htm doc/Psfiles.htm doc/Lib.htm doc/Hershey.htm doc/News.htm doc/Details8.htm doc/Make.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm doc/index.html doc/History3.htm doc/Ps2epsi.htm doc/History4.htm doc/Details.htm doc/History5.htm doc/History6.htm]</p>
</blockquote>

<p><strong><a name="2009-09-28T122827.246472Z"></a>
2009-09-28T12:28:27.246472Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix line endings and a corresponding file attribute in a recently added file.
</pre>
<p>[psi/zpdfops.c]</p>
</blockquote>

<p><strong><a name="2009-09-28T053056.923097Z"></a>
2009-09-28T05:30:56.923097Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Added clusterpush.pl.
</pre>
<p>[toolbin/localcluster/clustermaster.pl toolbin/localcluster/clusterpull.sh toolbin/localcluster/build.pl toolbin/localcluster/clusterpush.pl toolbin/localcluster/run.pl toolbin/localcluster/compare.pl]</p>
</blockquote>

<p><strong><a name="2009-09-26T053448.796753Z"></a>
2009-09-26T05:34:48.796753Z Ralph Giles</strong></p>
<blockquote>
<pre>
Revert the change to EOF handling in the romfs iodevice. It fixed the 
segfault, but broken compiled-in font access on PCL. Bug 690697.
</pre>
<p>[base/gsiorom.c]</p>
</blockquote>

<p><strong><a name="2009-09-25T231642.622069Z"></a>
2009-09-25T23:16:42.622069Z Ralph Giles</strong></p>
<blockquote>
<pre>
Improve EOF detection with the romfs iodevice. Fixes a segfault
loading shorter resources. Patch from Alex Cherepanov, bug 690697.

Details:

Resources are loaded using the --run-- operator, which looks into
the first 1023 bytes of the file to check for PDF, etc. It calls
.peekstring which uses s-&gt;end_status to detect the end of the file,
but s_block_read_process() didn't set it, allowing repeated reading
of the same block and the file position to run off the end of the
buffer. This was the cause of the segfault.

We now use '&gt;=' instead of '==' when checking the file position to
avoid the overrun, and raise the EOF flag when the last block of the
file is read. This can be done because the whole block is always
decompressed and copied to the stream buffer.</pre>
<p>[base/gsiorom.c]</p>
</blockquote>

<p><strong><a name="2009-09-25T145513.694603Z"></a>
2009-09-25T14:55:13.694603Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Remove limit on images in patterns when creating later versions of PDF

Details
There was a fixed limit of 64Kb on images used by Pattern colour spaces in early
versions of Acrobat (presumably using a string for storage). This limit does not apply
from Acrobat 5 onwards so the size test has been amended to also consider the version
of PDF being produced before raising an error.

</pre>
<p>[base/gdevpdfv.c]</p>
</blockquote>

<p><strong><a name="2009-09-25T141913.610976Z"></a>
2009-09-25T14:19:13.610976Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for transparency problem, caused by the alpha parameters in the ExtGState
in the PDF interpreter (dictstack) not being maintained properly.
Bug 690770 for customer #1110. Thanks to Michael Vrhel for analyzing the PDF
to find the area that the PDF interpreter was mishandling.

DETAILS:

The ExtGState is kept as values in the dictionaries on the dictstack and are
sent to the graphics library as needed using '.set***alpha' operators. The
CA and ca values were properly set to 1 in the graphics library when the Do
operator was used to execute Form or Image objects, but the corresponding
FillConstantAlpha and StrokeConstantAlpha values were not being set in the
ExtGState so any operations in a Form that set the values in the graphics
library from the ***ConstantAlpha values in the ExtGState could set them
to incorrect values.

</pre>
<p>[Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2009-09-25T091210.671327Z"></a>
2009-09-25T09:12:10.671327Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Stricter checking when converting type 4 to type 1 masked image

Details
Bug #690704 &quot;Regression: seg fault with pdfwrite&quot;

pdfwrite was performing an optimisation to convert type 4 masked images, which are only
supported in PDF 1.3 and above, into type 1 masked images which are supported in all 
versions.

However the test was faulty, assuming that a one bit per component image was always
suitable. If the image had multiple components the result was incorrect and when the
input was from PCL could lead to errors.

</pre>
<p>[base/gdevpdfi.c]</p>
</blockquote>

<p><strong><a name="2009-09-25T012907.733105Z"></a>
2009-09-25T01:29:07.733105Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the CMap resources with the new, open source versions of
the files for the Identity, Adobe-CNS1, Adobe-GB1, Adobe-Japan1,
Adobe-Japan2 and Adobe-Korea1 CMap resources.

Aside from the copyright and license header change and a bump to the
minor CMapVersion field, these versions incorporate the following
changes over our previous set of CMap resources:

     Identity-H has many new ranges,
     UniGB-UTF8-H  bumped to supplement 5,
     UniGB-UTF16-H bumped to supplement 5,
     UniGB-UTF32-H has some character updates.

These are still copyright Adobe, but now allow modification and require
attribution on binaries. Previously they were licensed only for verbatim
redistribution.</pre>
<p>[Resource/CMap/78-H Resource/CMap/Hojo-H Resource/CMap/UniHojo-UCS2-V Resource/CMap/90pv-RKSJ-H Resource/CMap/CNS2-H Resource/CMap/RKSJ-H Resource/CMap/78-V Resource/CMap/KSCpc-EUC-H Resource/CMap/Hojo-V Resource/CMap/90pv-RKSJ-V Resource/CMap/CNS2-V Resource/CMap/Hiragana Resource/CMap/GBT-EUC-H Resource/CMap/Roman Resource/CMap/RKSJ-V Resource/CMap/HKdlb-B5-H Resource/CMap/UniKS-UTF32-H Resource/CMap/KSCpc-EUC-V Resource/CMap/UniHojo-UTF8-H Resource/CMap/Adobe-Korea1-0 Resource/CMap/UniKS-UCS2-H Resource/CMap/Adobe-Korea1-1 Resource/CMap/Adobe-Korea1-2 Resource/CMap/GBT-EUC-V Resource/CMap/78-RKSJ-H Resource/CMap/UniJISX02132004-UTF32-H Resource/CMap/HKdlb-B5-V Resource/CMap/HKgccs-B5-H Resource/CMap/83pv-RKSJ-H Resource/CMap/UniKS-UTF32-V Resource/CMap/UniJIS2004-UTF16-H Resource/CMap/EUC-H Resource/CMap/UniHojo-UTF32-H Resource/CMap/UniHojo-UTF8-V Resource/CMap/UniGB-UCS2-H Resource/CMap/HKscs-B5-H Resource/CMap/HKm471-B5-H Resource/CMap/90msp-RKSJ-H Resource/CMap/UniKS-UCS2-V Resource/CMap/78-RKSJ-V Resource/CMap/HKgccs-B5-V Resource/CMap/UniJISX02132004-UTF32-V Resource/CMap/GBpc-EUC-H Resource/CMap/Add-H Resource/CMap/UniJIS2004-UTF16-V Resource/CMap/Adobe-GB1-0 Resource/CMap/B5pc-H Resource/CMap/KSC-EUC-H Resource/CMap/Adobe-GB1-1 Resource/CMap/EUC-V Resource/CMap/UniHojo-UTF32-V Resource/CMap/Adobe-GB1-2 Resource/CMap/Adobe-GB1-3 Resource/CMap/UniGB-UCS2-V Resource/CMap/HKscs-B5-V Resource/CMap/HKm471-B5-V Resource/CMap/Adobe-GB1-4 Resource/CMap/90msp-RKSJ-V Resource/CMap/Adobe-GB1-5 Resource/CMap/UniCNS-UTF32-H Resource/CMap/GBpc-EUC-V Resource/CMap/Add-V Resource/CMap/B5pc-V Resource/CMap/Ext-RKSJ-H Resource/CMap/KSC-EUC-V Resource/CMap/Hojo-EUC-H Resource/CMap/UniJISPro-UCS2-V Resource/CMap/GBT-H Resource/CMap/UniKS-UTF8-H Resource/CMap/GBK-EUC-H Resource/CMap/UniCNS-UTF32-V Resource/CMap/Ext-RKSJ-V Resource/CMap/Hojo-EUC-V Resource/CMap/UniGB-UTF8-H Resource/CMap/Adobe-Japan1-0 Resource/CMap/GBT-V Resource/CMap/UniKS-UTF8-V Resource/CMap/UniJIS2004-UTF8-H Resource/CMap/Adobe-Japan1-1 Resource/CMap/GBK-EUC-V Resource/CMap/UniKS-UTF16-H Resource/CMap/Adobe-Japan1-2 Resource/CMap/Adobe-Japan1-3 Resource/CMap/Adobe-Japan1-4 Resource/CMap/Adobe-Japan1-5 Resource/CMap/90ms-RKSJ-H Resource/CMap/Adobe-Japan1-6 Resource/CMap/UniJIS-UTF32-H Resource/CMap/GB-EUC-H Resource/CMap/H Resource/CMap/UniGB-UTF8-V Resource/CMap/B5-H Resource/CMap/UniJIS2004-UTF8-V Resource/CMap/UniKS-UTF16-V Resource/CMap/UniJIS-UCS2-H Resource/CMap/90ms-RKSJ-V Resource/CMap/UniHojo-UTF16-H Resource/CMap/V Resource/CMap/UniJIS-UTF32-V Resource/CMap/GB-EUC-V Resource/CMap/KSC-H Resource/CMap/UniJISPro-UTF8-V Resource/CMap/B5-V Resource/CMap/Katakana Resource/CMap/HKdla-B5-H Resource/CMap/UniJIS-UCS2-V Resource/CMap/Identity-H Resource/CMap/UniHojo-UTF16-V Resource/CMap/GBKp-EUC-H Resource/CMap/KSC-V Resource/CMap/GBK2K-H Resource/CMap/UniCNS-UTF16-H Resource/CMap/UniGB-UTF32-H Resource/CMap/HKdla-B5-V Resource/CMap/Identity-V Resource/CMap/UniCNS-UCS2-H Resource/CMap/GBKp-EUC-V Resource/CMap/GBK2K-V Resource/CMap/UniCNS-UTF16-V Resource/CMap/UniGB-UTF32-V Resource/CMap/Adobe-CNS1-0 Resource/CMap/UniJIS-UTF8-H Resource/CMap/Adobe-CNS1-1 Resource/CMap/Adobe-CNS1-2 Resource/CMap/Adobe-CNS1-3 Resource/CMap/UniCNS-UCS2-V Resource/CMap/Adobe-CNS1-4 Resource/CMap/GB-H Resource/CMap/Adobe-CNS1-5 Resource/CMap/Adobe-Japan2-0 Resource/CMap/KSCms-UHC-H Resource/CMap/Add-RKSJ-H Resource/CMap/UniJISX0213-UTF32-H Resource/CMap/UniJIS-UTF8-V Resource/CMap/UniJIS-UTF16-H Resource/CMap/GB-V Resource/CMap/KSCms-UHC-HW-H Resource/CMap/KSCms-UHC-V Resource/CMap/HKm314-B5-H Resource/CMap/Add-RKSJ-V Resource/CMap/UniJISX0213-UTF32-V Resource/CMap/UniJIS-UTF16-V Resource/CMap/UniCNS-UTF8-H Resource/CMap/KSCms-UHC-HW-V Resource/CMap/UniJIS-UCS2-HW-H Resource/CMap/HKm314-B5-V Resource/CMap/Hankaku Resource/CMap/ETen-B5-H Resource/CMap/ETenms-B5-H Resource/CMap/UniCNS-UTF8-V Resource/CMap/NWP-H Resource/CMap/CNS1-H Resource/CMap/WP-Symbol Resource/CMap/UniJIS-UCS2-HW-V Resource/CMap/UniGB-UTF16-H Resource/CMap/78-EUC-H Resource/CMap/ETen-B5-V Resource/CMap/ETenms-B5-V Resource/CMap/NWP-V Resource/CMap/CNS1-V Resource/CMap/UniGB-UTF16-V Resource/CMap/78-EUC-V Resource/CMap/CNS-EUC-H Resource/CMap/ETHK-B5-H Resource/CMap/Ext-H Resource/CMap/KSC-Johab-H Resource/CMap/78ms-RKSJ-H Resource/CMap/UniJIS2004-UTF32-H Resource/CMap/GBTpc-EUC-H Resource/CMap/CNS-EUC-V Resource/CMap/ETHK-B5-V Resource/CMap/Ext-V Resource/CMap/KSC-Johab-V Resource/CMap/78ms-RKSJ-V Resource/CMap/UniHojo-UCS2-H Resource/CMap/UniJIS2004-UTF32-V Resource/CMap/UniJISPro-UCS2-HW-V Resource/CMap/GBTpc-EUC-V]</p>
</blockquote>

<p><strong><a name="2009-09-23T014255.789973Z"></a>
2009-09-23T01:42:55.789973Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Implement rendering of PDF Ink annotation without appearance stream. PDF
Spec doesn't say how to connect points in the annotation. This version uses
simple lineto operation but Acrobat uses curves for smoother look. 
Bug 690758, customer 580.

DETAILS:
The drawing of the line through the given points is implemented in C as a
custom operator to facilitate further improvements.

</pre>
<p>[psi/int.mak psi/zpdfops.c Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2009-09-22T191922.702941Z"></a>
2009-09-22T19:19:22.702941Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Fixed bug in automatic speed tuning of local cluster nodes and modified build process to make use of fixed parallel makefiles.
</pre>
<p>[toolbin/localcluster/clustermaster.pl toolbin/localcluster/run.pl toolbin/localcluster/compare.pl]</p>
</blockquote>

<p><strong><a name="2009-09-22T165351.759845Z"></a>
2009-09-22T16:53:51.759845Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Local cluser regression changes:

Enabled minimal XPS and SVG testing.
Improved error reporting (errors and timeouts are now differentiated as are input errors vs. pdfwrite produced pdf file reading errors.

</pre>
<p>[toolbin/localcluster/clustermaster.pl toolbin/localcluster/readlog.pl toolbin/localcluster/build.pl toolbin/localcluster/compare.pl]</p>
</blockquote>

<p><strong><a name="2009-09-21T193830.162606Z"></a>
2009-09-21T19:38:30.162606Z Ray Johnston</strong></p>
<blockquote>
<pre>
Correct placement of declaration to allow wts devices to compile on MSVC.
</pre>
<p>[base/gdevwts.c]</p>
</blockquote>

<p><strong><a name="2009-09-21T151025.830219Z"></a>
2009-09-21T15:10:25.830219Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (type 1 parser) : Correct logical flaw in SEAC parsing

Details
Bug #690720 &quot;Regression: pdfwrite generates bad pdf files from PostScript files&quot;

The Type 1 font routine to detect SEAC (Single Encoding Accented Character) glyphs and
return the component glyphs, 'gs_type1_piece_codes' made a faulty assumption that a
SEAC glyph was purely composed of two components and that any glyph with a path
construction operation could not be a SEAC.

This restriction is, unfortunately, not documented in the spec. The Genoa test file
16-10.ps includes a font with SEAC glyphs which also contain path construction
operations. The failure to properly detect the SEAC was causing pdfwrite not to emit 
the component glyphs when subsetting fonts, resulting in PDF files containing invalid
fonts.

Fixing this then revealed that the reduced type 1/type 2 font interpreter used for
detecting SEAC glyphs did not properly handle a number of type 2 instructions. This
patch also adds support for hstemhm, vstemhm, hintmask and cntrmask. 

Because we do not have a full featured CFF parser in C yet, it was not possible to add
full support for the callgsubr operator (global subroutines are apparently not available
to the reduced interpreter). If the relevant gsubr contained the endchar for the glyph,
then this causes the interpreter to fail as we cannot process the subr.

Since SEAC operations are deprecated in type 2 fonts, and a gsubr completion of a SEAC
is extremely unlikely, I've chosen to return when a callgsubr is encountered and treat
the glyph as not being a SEAC. This may need to be revised in future.

</pre>
<p>[base/gxtype1.c]</p>
</blockquote>

<p><strong><a name="2009-09-19T171732.098742Z"></a>
2009-09-19T17:17:32.098742Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Normalize machine times so the fastest machine is 1 rather than the average machine.
</pre>
<p>[toolbin/localcluster/clustermaster.pl]</p>
</blockquote>

<p><strong><a name="2009-09-19T022231.474412Z"></a>
2009-09-19T02:22:31.474412Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Added the machine name to log output and check for matching md5sum in last N regression runs (to try to deal with indeterminisms).

</pre>
<p>[toolbin/localcluster/clustermaster.pl toolbin/localcluster/readlog.pl toolbin/localcluster/build.pl toolbin/localcluster/compare.pl]</p>
</blockquote>

<p><strong><a name="2009-09-18T230741.949391Z"></a>
2009-09-18T23:07:41.949391Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove an unncessary keyword substitution flags from the Adobe CMaps.

These files don't have an RCS/SVN version header, so the substitution
could only cause problems. In the case of the two Identity-UTF16 CMap
files which are owned by Artifex and do have version headers, I've 
reduced the substitutions to just the 'Id' keyword to match the rest of 
the source.
</pre>
<p>[Resource/CMap/78-H Resource/CMap/GB-RKSJ-H Resource/CMap/Hojo-H Resource/CMap/CNS06-RKSJ-H Resource/CMap/Adobe-Japan1-90pv-RKSJ Resource/CMap/Adobe-CNS1-UCS2 Resource/CMap/GBK-EUC-UCS2 Resource/CMap/UniHojo-UCS2-V Resource/CMap/CNS2-H Resource/CMap/90pv-RKSJ-H Resource/CMap/Adobe-Japan1-UCS2 Resource/CMap/RKSJ-H Resource/CMap/78-V Resource/CMap/Hojo-V Resource/CMap/KSCpc-EUC-H Resource/CMap/TCVN-RKSJ-H Resource/CMap/90pv-RKSJ-V Resource/CMap/CNS2-V Resource/CMap/UCS2-ETen-B5 Resource/CMap/Hiragana Resource/CMap/GBT-EUC-H Resource/CMap/Roman Resource/CMap/RKSJ-V Resource/CMap/HKdlb-B5-H Resource/CMap/KSCpc-EUC-V Resource/CMap/Adobe-Japan1-H-Host Resource/CMap/UniHojo-UTF8-H Resource/CMap/CNS05-RKSJ-H Resource/CMap/CNS15-RKSJ-H Resource/CMap/UCS2-GBK-EUC Resource/CMap/Adobe-Korea1-0 Resource/CMap/Adobe-Korea1-1 Resource/CMap/GBT-EUC-V Resource/CMap/Adobe-Korea1-2 Resource/CMap/78-RKSJ-H Resource/CMap/HKdlb-B5-V Resource/CMap/HKgccs-B5-H Resource/CMap/83pv-RKSJ-H Resource/CMap/KSC2-RKSJ-H Resource/CMap/Adobe-CNS1-H-Mac Resource/CMap/EUC-H Resource/CMap/UniHojo-UTF32-H Resource/CMap/UniHojo-UTF8-V Resource/CMap/Adobe-CNS1-B5pc Resource/CMap/UniGB-UCS2-H Resource/CMap/90msp-RKSJ-H Resource/CMap/Adobe-GB1-GBpc-EUC Resource/CMap/Adobe-Japan1-H-CID Resource/CMap/HKm471-B5-H Resource/CMap/HKscs-B5-H Resource/CMap/GBT-RKSJ-H Resource/CMap/78-RKSJ-V Resource/CMap/ETen-B5-UCS2 Resource/CMap/HKgccs-B5-V Resource/CMap/UCS2-90ms-RKSJ Resource/CMap/GBpc-EUC-H Resource/CMap/Add-H Resource/CMap/B5pc-H Resource/CMap/Adobe-GB1-0 Resource/CMap/EUC-V Resource/CMap/Adobe-GB1-1 Resource/CMap/KSC-EUC-H Resource/CMap/UniHojo-UTF32-V Resource/CMap/Adobe-GB1-2 Resource/CMap/UniGB-UCS2-V Resource/CMap/Adobe-GB1-3 Resource/CMap/HKscs-B5-V Resource/CMap/HKm471-B5-V Resource/CMap/Adobe-GB1-4 Resource/CMap/90msp-RKSJ-V Resource/CMap/90pv-RKSJ-UCS2C Resource/CMap/Adobe-GB1-5 Resource/CMap/CNS04-RKSJ-H Resource/CMap/UniCNS-UTF32-H Resource/CMap/GBpc-EUC-V Resource/CMap/KSCpc-EUC-UCS2C Resource/CMap/Add-V Resource/CMap/B5pc-V Resource/CMap/Ext-RKSJ-H Resource/CMap/KSC-EUC-V Resource/CMap/Hojo-EUC-H Resource/CMap/UCS2-GBpc-EUC Resource/CMap/GBT-H Resource/CMap/GBK-EUC-H Resource/CMap/UniCNS-UTF32-V Resource/CMap/UCS2-B5pc Resource/CMap/Adobe-GB1-H-Mac Resource/CMap/KSCms-UHC-UCS2 Resource/CMap/Ext-RKSJ-V Resource/CMap/Hojo-EUC-V Resource/CMap/UniGB-UTF8-H Resource/CMap/UCS2-90pv-RKSJ Resource/CMap/Adobe-Japan1-0 Resource/CMap/GBT-V Resource/CMap/Adobe-Japan1-1 Resource/CMap/GBK-EUC-V Resource/CMap/Adobe-Japan1-2 Resource/CMap/Adobe-GB1-H-Host Resource/CMap/Adobe-Japan1-3 Resource/CMap/CNS03-RKSJ-H Resource/CMap/Adobe-Japan1-4 Resource/CMap/Adobe-Japan1-5 Resource/CMap/90ms-RKSJ-H Resource/CMap/Adobe-Japan1-6 Resource/CMap/Adobe-Korea1-KSCms-UHC Resource/CMap/UCS2-KSCpc-EUC Resource/CMap/Adobe-Japan1-PS-H Resource/CMap/GB-EUC-H Resource/CMap/H Resource/CMap/UniGB-UTF8-V Resource/CMap/B5-H Resource/CMap/Adobe-GB1-GBK-EUC Resource/CMap/Adobe-CNS1-H-CID Resource/CMap/90ms-RKSJ-V Resource/CMap/GBpc-EUC-UCS2C Resource/CMap/UniHojo-UTF16-H Resource/CMap/B5pc-UCS2 Resource/CMap/KSC-H Resource/CMap/Adobe-Japan1-PS-V Resource/CMap/GB-EUC-V Resource/CMap/B5pc-UCS2C Resource/CMap/Adobe-CNS1-ETenms-B5 Resource/CMap/B5-V Resource/CMap/Katakana Resource/CMap/HKdla-B5-H Resource/CMap/Identity-H Resource/CMap/UniHojo-UTF16-V Resource/CMap/CNS02-RKSJ-H Resource/CMap/GBKp-EUC-H Resource/CMap/KSC-V Resource/CMap/GBK2K-H Resource/CMap/UniCNS-UTF16-H Resource/CMap/HKdla-B5-V Resource/CMap/UniGB-UTF32-H Resource/CMap/Adobe-GB1-UCS2 Resource/CMap/Identity-V Resource/CMap/UniCNS-UCS2-H Resource/CMap/GBKp-EUC-V Resource/CMap/GBK2K-V Resource/CMap/Adobe-GB1-H-CID Resource/CMap/UniCNS-UTF16-V Resource/CMap/UniGB-UTF32-V Resource/CMap/Adobe-CNS1-0 Resource/CMap/Adobe-CNS1-1 Resource/CMap/Adobe-CNS1-2 Resource/CMap/Adobe-CNS1-H-Host Resource/CMap/Adobe-CNS1-3 Resource/CMap/UniCNS-UCS2-V Resource/CMap/GB-H Resource/CMap/Adobe-CNS1-4 Resource/CMap/Adobe-CNS1-5 Resource/CMap/CNS01-RKSJ-H Resource/CMap/Adobe-Japan2-0 Resource/CMap/KSCms-UHC-H Resource/CMap/Add-RKSJ-H Resource/CMap/GB-V Resource/CMap/KSCms-UHC-HW-H Resource/CMap/HKm314-B5-H Resource/CMap/KSCms-UHC-V Resource/CMap/Add-RKSJ-V Resource/CMap/UniCNS-UTF8-H Resource/CMap/KSCms-UHC-HW-V Resource/CMap/Adobe-Korea1-H-Mac Resource/CMap/HKm314-B5-V Resource/CMap/90pv-RKSJ-UCS2 Resource/CMap/Hankaku Resource/CMap/ETenms-B5-H Resource/CMap/ETen-B5-H Resource/CMap/UniCNS-UTF8-V Resource/CMap/KSCpc-EUC-UCS2 Resource/CMap/CNS1-H Resource/CMap/NWP-H Resource/CMap/Hojo-RKSJ-H Resource/CMap/UniGB-UTF16-H Resource/CMap/78-EUC-H Resource/CMap/ETenms-B5-V Resource/CMap/ETen-B5-V Resource/CMap/Adobe-Korea1-UCS2 Resource/CMap/Adobe-Korea1-KSCpc-EUC Resource/CMap/CNS1-V Resource/CMap/NWP-V Resource/CMap/90ms-RKSJ-UCS2 Resource/CMap/UniGB-UTF16-V Resource/CMap/78-EUC-V Resource/CMap/KSC-RKSJ-H Resource/CMap/Adobe-Japan1-90ms-RKSJ Resource/CMap/CNS-EUC-H Resource/CMap/ETHK-B5-H Resource/CMap/Ext-H Resource/CMap/CNS07-RKSJ-H Resource/CMap/KSC-Johab-H Resource/CMap/Adobe-Korea1-H-Host Resource/CMap/78ms-RKSJ-H Resource/CMap/GBTpc-EUC-H Resource/CMap/HK-RKSJ-H Resource/CMap/GBpc-EUC-UCS2 Resource/CMap/CNS-EUC-V Resource/CMap/ETHK-B5-V Resource/CMap/Ext-V Resource/CMap/KSC-Johab-V Resource/CMap/Adobe-Japan1-H-Mac Resource/CMap/UCS2-KSCms-UHC Resource/CMap/78ms-RKSJ-V Resource/CMap/UniHojo-UCS2-H Resource/CMap/GBTpc-EUC-V Resource/CMap/Adobe-Korea1-H-CID]</p>
</blockquote>

<p><strong><a name="2009-09-18T230107.032292Z"></a>
2009-09-18T23:01:07.032292Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove spurious executable bits on Adobe CMap files.
</pre>
<p>[Resource/CMap/Adobe-GB1-4 Resource/CMap/Adobe-Japan1-4 Resource/CMap/Adobe-Korea1-2 Resource/CMap/Adobe-CNS1-3]</p>
</blockquote>

<p><strong><a name="2009-09-17T162500.274251Z"></a>
2009-09-17T16:25:00.274251Z Henry Stiles</strong></p>
<blockquote>
<pre>
Fixes 690719 and many other unreported issues associated with the
wtsimdi device.  The default strip_copy_rop musn't be used, the clist
code will constant fold raster operations before determining if a
contone buffer is needed to render the band, the same optimizations
must be used when the clist is being played back and rendered, the
default strip_copy_rop does not (by design) have these optimizations.
I don't know the intent of the cryptic comment above the section where
the procedure override occurred.  

There are too many problems with the wtsimdi device to enumerate code
test file differences of the change, preliminary visual testing of the
wtsimdi device output is needed first.
</pre>
<p>[base/gdevwts.c]</p>
</blockquote>

<p><strong><a name="2009-09-17T023644.475667Z"></a>
2009-09-17T02:36:44.475667Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Added a very quick and dirty hack to look for the link.icc and wts_plane_[0..3] files in /usr/local/lib/ghostscript if they cannot be found in the current directory.

</pre>
<p>[base/gdevwts.c]</p>
</blockquote>

<p><strong><a name="2009-09-14T200732.166692Z"></a>
2009-09-14T20:07:32.166692Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a botched pointer comparison which fails if the pointer difference
overflows the signed integer range. Patch from Mark Davies with
changes. Bug 689711.

</pre>
<p>[base/gscencs.c]</p>
</blockquote>

<p><strong><a name="2009-09-12T170010.219852Z"></a>
2009-09-12T17:00:10.219852Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Fixed typo in comment that was generating groff warning.

</pre>
<p>[psi/zfunc.c]</p>
</blockquote>

<p><strong><a name="2009-09-10T174110.637172Z"></a>
2009-09-10T17:41:10.637172Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add gc enumeration to the two string members of the svgwrite device
structure. Fixes a segfault with large input sets. Bug 690757.

Note that this requires a new suffix enumerator macro, since the
two strings case wasn't previously covered.</pre>
<p>[base/gsstruct.h base/gdevsvg.c]</p>
</blockquote>

<p><strong><a name="2009-09-10T011348.915848Z"></a>
2009-09-10T01:13:48.915848Z Ralph Giles</strong></p>
<blockquote>
<pre>
Call paperinit() and paperdone() when using the libpaper api calls
as apparently required by the API. However, these calls do nothing
in the current libpaper implementation (version 1.1.23).

Also, return the name given by defaultpapername() if systempapername()
does not return a result. This is an indicated path in the libpaper
documentation and example code, although again, the the 1.1.23
implementation calls defaultpapername() from systempapername() as
the fallback.

</pre>
<p>[base/gp_upapr.c]</p>
</blockquote>

<p><strong><a name="2009-09-09T221751.567693Z"></a>
2009-09-09T22:17:51.567693Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fix for bug 690534.  

DETAILS:

We now handle the softmask BC entry properly.  This background color is to be composited with the drawings into the softmask.  We now properly initialize the softmask buffer to have this compositing occur.  If we are outside the softmask bounding box then the luminance of the background color is used as the softmask value.  This fixes several rendering issues.

DIFFERENCES EXPECTED:

Bug690027.pdf  PROGRESSION
Bug688807.pdf  PROGRESSION
Bug690170a.pdf PROGRESSION
Bug690170.pdf  PROGRESSION

Bug690022.pdf  I would like a second opion on this one.  It looks like there may be a minor regression.  I am doing the commit anyway due to the large number of progressions with this fix.

</pre>
<p>[base/gdevp14.c base/gxblend1.c]</p>
</blockquote>

<p><strong><a name="2009-09-09T062102.373936Z"></a>
2009-09-09T06:21:02.373936Z Michael Vrhel</strong></p>
<blockquote>
<pre>
A fix for the rendering issue that occurred with bug 689581 after fixing the rangecheck error.  This should fix 689581.

DETAILS:

The rendering problem is evident when rendering the simplified file in 689581.   When going to a sep device, the softmask gray scale image is encoded using the compressed encoding function defined for the pdf14_CMYKspot_procs pdf14 device.  The decoder for the CMYKspot device is set to cmykspot_pdf14_procs.  Unfortunately, when the color procs are set for the softmask decode (based upon the softmask CMYK color space) the decoder was set to cmyk_pdf14_procs which resulted in an improper decode of the color values for the softmask.  The fix is to detect the presence of the separation case and make sure that the decoding procs are assigned appropriately.

DIFFERENCES EXPECTED:

None in the normal regression tests.  There could be some differences with sep devices when processing softmasks.</pre>
<p>[base/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2009-09-09T012559.649343Z"></a>
2009-09-09T01:25:59.649343Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Skip everything before 'begincodespacerange' in regulat CMap stream to avoid
PostScript errors in CMap headers. PDF interpreter doesn't need any data from
the header. See rev. 9240 for the bug 689842 that did the same for ToUnicode
CMap files. Bug 690737, customer 580.

</pre>
<p>[Resource/Init/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2009-09-08T225410.281044Z"></a>
2009-09-08T22:54:10.281044Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Change to avoid having a rangecheck error occur when the softmask group colorspace is a pattern.   This keeps us from having the error occur with bug 689581 however there is still a rendering issue when we go to a sep device.  I have that narrowed down and hopefully will have fixed soon. 

DIFFERENCES EXPECTED   

None on the regression files.</pre>
<p>[base/gstrans.c]</p>
</blockquote>

<p><strong><a name="2009-09-08T175820.444720Z"></a>
2009-09-08T17:58:20.444720Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Removal of line that had the custom pdf14 prototype device used as the initial device for the CMYKSpot pdf14 device.

DIFERENCES EXPECTED:

None.</pre>
<p>[base/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2009-09-07T202511.850252Z"></a>
2009-09-07T20:25:11.850252Z Ralph Giles</strong></p>
<blockquote>
<pre>
Restore -dynamiclib to the MacOS framework build line.

I though the LDFLAGS_SO in unix-dll.mak would provide this in the
previous commit, but they do not.

Also rationalize the use use of SOPREF in macos-fw.mak.
</pre>
<p>[base/macos-fw.mak]</p>
</blockquote>

<p><strong><a name="2009-09-07T201046.938357Z"></a>
2009-09-07T20:10:46.938357Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move the value passed to -install_name for the framework build
into unix-dll.mak to avoid also passing it when trying to link
the client where it conflicts.
</pre>
<p>[base/macos-fw.mak base/unix-dll.mak]</p>
</blockquote>

<p><strong><a name="2009-09-07T195120.071990Z"></a>
2009-09-07T19:51:20.071990Z Ralph Giles</strong></p>
<blockquote>
<pre>
Also update header source directories in the framework build.
</pre>
<p>[base/macos-fw.mak]</p>
</blockquote>

<p><strong><a name="2009-09-07T191321.625118Z"></a>
2009-09-07T19:13:21.625118Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the path to dxmain.c in the MacOS framework build.

This was omitted during the source tree split, when dxmain.c moved
into psi/. Bug 690394.
</pre>
<p>[base/macos-fw.mak]</p>
</blockquote>

<p><strong><a name="2009-09-03T180006.616356Z"></a>
2009-09-03T18:00:06.616356Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Initial checkin of the local cluster scripts.
</pre>
<p>[toolbin/localcluster/setupcluster toolbin/localcluster/splitjobs.pl toolbin/localcluster/clustermaster.pl toolbin/localcluster/clusterpull.sh toolbin/localcluster/readlog.pl toolbin/localcluster/build.pl toolbin/localcluster/readme toolbin/localcluster/run.pl toolbin/localcluster toolbin/localcluster/compare.pl]</p>
</blockquote>

<p><strong><a name="2009-09-02T161807.841097Z"></a>
2009-09-02T16:18:07.841097Z Henry Stiles</strong></p>
<blockquote>
<pre>
The static initialization for memory structure types was not complete,
in some cases, failing to initialize the procedure data.  I suspect
this is harmless but didn't take the time to track down each use of
the faulty macros.
</pre>
<p>[base/gsstruct.h]</p>
</blockquote>

<p><strong><a name="2009-09-01T185555.532790Z"></a>
2009-09-01T18:55:55.532790Z Ralph Giles</strong></p>
<blockquote>
<pre>
Set a mime-type property on the new pdf documentation file so svn 
doesn't attempt to generate textual diffs for it.
</pre>
<p>[doc/Color_Architecture.pdf]</p>
</blockquote>

<p><strong><a name="2009-09-01T181002.037482Z"></a>
2009-09-01T18:10:02.037482Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Changes to color architecture document based upon comments from Miles.</pre>
<p>[doc/Color_Architecture.tex doc/figures/Overview.eps doc/Color_Architecture.pdf]</p>
</blockquote>

<p><strong><a name="2009-09-01T165940.570903Z"></a>
2009-09-01T16:59:40.570903Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Addition of color architecture document (PDF) and its latex source and eps figures to document folder.</pre>
<p>[doc/Color_Architecture.tex doc/figures/XPS_Integer_Gray_RGB_Image.eps doc/figures/Overview.eps doc/figures/XPS_DeviceN.eps doc/figures/PDF_Render.eps doc/figures/XPS_Render.eps doc/figures doc/figures/XPS_Vector_Color.eps doc/figures/XPS_RGB_Image_Float.eps doc/figures/PS_Spec.eps doc/Color_Architecture.pdf doc/figures/PS_Render.eps doc/figures/PDF_Spec.eps doc/figures/Ghost.eps]</p>
</blockquote>

<p><strong><a name="2009-09-01T140938.072790Z"></a>
2009-09-01T14:09:38.072790Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : quiet a compiler warning

Details
Cast a long int to an unsigned int to prevent a compiler warning on a debug print 
operation.

</pre>
<p>[base/gdevpdtc.c]</p>
</blockquote>

<p><strong><a name="2009-09-01T140226.307800Z"></a>
2009-09-01T14:02:26.307800Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Remove some unused variables

Details
Flagged by the gcc compiler as unused, removed two variables.

</pre>
<p>[base/gdevpdfd.c]</p>
</blockquote>

<p><strong><a name="2009-09-01T133115.405830Z"></a>
2009-09-01T13:31:15.405830Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Minor compiler warning

Details
remove_table was not declared static, leading to a 'missing prototype' warning from the
compiler.

</pre>
<p>[base/gdevpsft.c]</p>
</blockquote>

<p><strong><a name="2009-09-01T132934.736595Z"></a>
2009-09-01T13:29:34.736595Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix : Minor compiler warnings

Details
subst_CID_on_WMode_enum_ptrs was not declared static leading to (benign) prototype
warnings. Also subst_CID_on_WMode_finalize was declared as returning an int, but
finalize procedures must be void.

</pre>
<p>[base/gsfcid.c]</p>
</blockquote>

<p><strong><a name="2009-09-01T074238.080497Z"></a>
2009-09-01T07:42:38.080497Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Silence Coverity warning

Details
The result of sscanf was not checked to see if at least one match was found. This is
benign because the data was initialised to 0 anyway. However it allows us an opportunity
to note the invalid annotation, which we now do.

</pre>
<p>[base/gdevpdfm.c]</p>
</blockquote>

<p><strong><a name="2009-08-31T170013.229845Z"></a>
2009-08-31T17:00:13.229845Z Ralph Giles</strong></p>
<blockquote>
<pre>
Pass the full CFLAGS to CCAUX in the autoconf build, instead of just
GCFLAGS. This propagates target-defining options which are typically
set in XCFLAGS to build utilities so that, for example, -m32 results
in the correct sizes in arch.h.

Note that this may complicate cross-compiles. In theory CCAUX has
separate, simpler flags because of this, but there are also several
examples in the documentation of using XCFLAGS this way, so this
seems to the the safer approach at this time.

The dynamic flags for the separate x11 devices module are also
passed through XCFLAGS but they do not harm other than cluttering
the command line.</pre>
<p>[base/Makefile.in]</p>
</blockquote>

<p><strong><a name="2009-08-28T172250.739244Z"></a>
2009-08-28T17:22:50.739244Z Henry Stiles</strong></p>
<blockquote>
<pre>
New attributes required to fix 690736, the actual fix will be in the
next commit to PCL XL.  We can't update the trees simultaneously.

</pre>
<p>[base/gdevpxat.h]</p>
</blockquote>

<p><strong><a name="2009-08-26T200331.773651Z"></a>
2009-08-26T20:03:31.773651Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Work around a bug in PDF generated by &quot;PdfWrapper v1.00&quot; that sometimes
writes &quot;.&quot; instead of &quot;0.&quot; in content stream. Bug 690730.

</pre>
<p>[Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2009-08-25T081802.437396Z"></a>
2009-08-25T08:18:02.437396Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Write ToUnicode CMaps with 2-byte code space ranges and keys

Details
Bug #690722 &quot;Problem with the font embedding logic&quot;

The existing ToUnicode CMap code wrote a ToUnicode CMap the same as a regular CMap, so
the code space ranges and keys could be arbitrary lengths depending on the number
of codes and their values. This appeared to be correct per the PDF Reference and the
CMap specification.

However, buried in technical note 5411, the 'ToUnicode Mapping File Tutorial' is a 
single reference:

&quot;the following “codespacerange” definition, without exception, shall always be
used: 1 begincodespacerange  &lt;0000&gt; &lt;FFFF&gt;endcodespacerange&quot;

This means that ToUnicode CMaps must be treated specially to ensure that they always
have 2 byte code space ranges and keys.

Modified the single allocation of ToUnicode CMaps so that it always specifies a 2
byte range.

</pre>
<p>[base/gdevpdte.c]</p>
</blockquote>

<p><strong><a name="2009-08-21T194048.371802Z"></a>
2009-08-21T19:40:48.371802Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add check for NOTRANSPARENCY in patternusestransparency since this is also used
by resolvepattern in pdf_draw.ps. If this flag is set, but the pdf14 device is
not active, &quot;unregistered&quot; error occurs. Bug 690727 for customer 531.

</pre>
<p>[Resource/Init/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2009-08-21T051949.329915Z"></a>
2009-08-21T05:19:49.329915Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Ghostscript caches pattern instances in the pattern dictionary. This patch
doesn't cache anything in the null pattern dictionary because it's read-only.
Bug 690725.

</pre>
<p>[Resource/Init/pdf_ops.ps]</p>
</blockquote>

<p><strong><a name="2009-08-19T162208.241617Z"></a>
2009-08-19T16:22:08.241617Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Process embedded files as a portable collection only when /Collection
attribute is defined in the document root. Bug 690709.

DETAILS:
Collection atribute is marked in the spec as optional because a PDF file
need not to be a portable collection but every collection has /Collection
attribute.

</pre>
<p>[Resource/Init/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2009-08-19T060451.856837Z"></a>
2009-08-19T06:04:51.856837Z Ray Johnston</strong></p>
<blockquote>
<pre>
Simplify / reduce the ht rendering logic to remove the special cases where
the cache had 1 level per tile (which should now be the usual case) and the
case where there is only one tile (which means that the tile is 1Mb).

The special case handling of these cases does not result in any performance
improvement with the modern (1Mb) cache size and thus this is a code
simplification.

</pre>
<p>[base/gxht.c]</p>
</blockquote>

<p><strong><a name="2009-08-19T060039.095541Z"></a>
2009-08-19T06:00:39.095541Z Ray Johnston</strong></p>
<blockquote>
<pre>
Adjust ht cache allocation to a size that will actually be used by the
cache logic. The changes allow for replicating tiles along the width axis
up to a ulong multiple that optimizes tile blitting in the mem device
logic. Addresses bug 690693 by reducing the memory used from &gt; 1Gb to
&lt; 200 Mb. As noted in the comments to that bug, there still may be some
optimizations remaining.

DETAILS:
Reduces the allocation from over 1Gb for Special Test C1 of 09-40.PS to less
than 200Mb by reducing the ht cache size to what will actually be used. The
code in gxht.c initializes the cache limits the 'rep_count' to 8*sizeof(ulong)
so any more than that per tile (1+width*height) will not be used.

Debug code in gxht.c (gx_ht_init_cache) to check:

   if ( rep_count != (8 * sizeof(ulong)) )
       dprintf(&quot;non_optimal ht cache size\n&quot;);

never detected a different value, so the ht cache size should be optimal
with this patch -- neither too much nor too little allowed for the most
efficient width repetition. This was tested at a variety of resolutions from
72 to 1600 with several files that defined screens and also checked with
'stocht.ps' that the maximum ht cache size was chosen to fit. Also the cluster
regression shows no differences (I'd have been surprised if it did).

Note that the above test is _not_ part of the patch since it was only used for
evaluation.

Also see rev 8526.

</pre>
<p>[base/gsht.c]</p>
</blockquote>

<p><strong><a name="2009-08-18T204117.764580Z"></a>
2009-08-18T20:41:17.764580Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add 'used' and 'max_used' information to the -Za output. This is handy for
investigating memory usage and only affects a debug build when -Za (or -ZA)
is used.
</pre>
<p>[base/gsmalloc.c]</p>
</blockquote>

<p><strong><a name="2009-08-17T221301.172961Z"></a>
2009-08-17T22:13:01.172961Z Henry Stiles</strong></p>
<blockquote>
<pre>
Improve diagnostics for detecting problems with virtual memory spaces
(see bug #688333).  The vm space id was not initilialized for all
allocations.  This change reduce the list from hundreds down to tens of
entries for a very simple postscript job.
</pre>
<p>[base/gsalloc.c]</p>
</blockquote>

<p><strong><a name="2009-08-15T030203.213076Z"></a>
2009-08-15T03:02:03.213076Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix rendering artifacts in interpolated images caused by intermediate bit 
buffer not reset when data get flushed to output buffer. Bug 689566.

</pre>
<p>[base/gsbitops.h]</p>
</blockquote>

<p><strong><a name="2009-08-14T041258.692182Z"></a>
2009-08-14T04:12:58.692182Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Remove code that tries to pause at the end of the .PFB binary data in an
attempt to keep from reading beyond the end of the encrypted data, sometimes
misidentifying the end of the actual data, and stopping early. Bug 465936.

DETAILS:
Since the eexec operator specifies that one never reads more than 256 bytes
ahead, and since the pad bytes are given in the text portion of a .PFB file,
in hexadecimal, there is no need to go to extra lengths to avoid reading
(too far) past the end of the eexec data. Thanks to Paul Vojta and Ray
Johnston for the path.

</pre>
<p>[base/seexec.c base/sfilter.h psi/zmisc1.c]</p>
</blockquote>

<p><strong><a name="2009-08-14T003311.113850Z"></a>
2009-08-14T00:33:11.113850Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change literal /FontBBox array into executable one for better compatibility
with legacy software. QuarkXPress 3.31, idraw, and some versions of dvips
assume that /FontBBox is executable. Bugs 690683, 687120, customer 460.

</pre>
<p>[Resource/Font/URWPalladioL-BoldItal Resource/Font/NimbusSanL-Bold Resource/Font/NimbusRomNo9L-Medi Resource/Font/URWChanceryL-MediItal Resource/Font/CenturySchL-Roma Resource/Font/NimbusMonL-Bold Resource/Font/NimbusSanL-BoldItal Resource/Font/NimbusRomNo9L-MediItal Resource/Font/URWGothicL-Demi Resource/Font/URWBookmanL-DemiBold Resource/Font/NimbusRomNo9L-Regu Resource/Font/URWGothicL-Book Resource/Font/NimbusSanL-ReguCond Resource/Font/URWBookmanL-Ligh Resource/Font/CenturySchL-Bold Resource/Font/NimbusRomNo9L-ReguItal Resource/Font/URWBookmanL-DemiBoldItal Resource/Font/NimbusMonL-ReguObli Resource/Font/NimbusSanL-ReguCondItal Resource/Font/CenturySchL-Ital Resource/Font/URWPalladioL-Roma Resource/Font/CenturySchL-BoldItal Resource/Font/URWBookmanL-LighItal Resource/Font/NimbusSanL-BoldCond Resource/Font/NimbusSanL-BoldCondItal Resource/Font/NimbusMonL-BoldObli Resource/Font/URWGothicL-DemiObli Resource/Font/NimbusSanL-Regu Resource/Font/URWPalladioL-Bold Resource/Font/NimbusMonL-Regu Resource/Font/URWGothicL-BookObli Resource/Font/NimbusSanL-ReguItal Resource/Font/URWPalladioL-Ital]</p>
</blockquote>

<p><strong><a name="2009-08-13T190434.663531Z"></a>
2009-08-13T19:04:34.663531Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
In hex form of eexec stream, break out of reading loop and try to interpret
the accumulated data when a whitespace character is encountered. Skip whitespace
characters when the control returns to /eexecDecode filter. Bug 689577.

DETAILS:
Normally, eexec stream is followed by a large number of 0's to compensate
for read-ahead effects. The code fragment that Adobe Acrobat uses to prevent
re-distilling of the file has no trailing 0's at all. This patch tries to guess
the end of eexec stream after every whitespace character.

</pre>
<p>[base/sstring.c base/seexec.c base/sfilter.h base/strimpl.h]</p>
</blockquote>

<p><strong><a name="2009-08-13T145804.684321Z"></a>
2009-08-13T14:58:04.684321Z Ken Sharp</strong></p>
<blockquote>
<pre>
(empty)</pre>
<p>[base/gdevpdfm.c base/gdevpdfc.c base/gdevpdft.c base/gdevpdfu.c base/gdevpdfv.c base/gdevpdfg.c base/gdevpdfi.c]</p>
</blockquote>

<p><strong><a name="2009-08-13T075702.889637Z"></a>
2009-08-13T07:57:02.889637Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Check pointer before dereferencing

Details
Bug #690704 &quot;Regression: seg fault with pdfwrite&quot;

The pdfwrite mask image handling assumed that if certain conditions were met then an
image related to text, and attempted to use a stored text enumerator. It did not,
however, check the stored pointer before dereferencing it.

Added a check to see the pointer is non-NULL before deciding that the image refers to
text.

</pre>
<p>[base/gdevpdfb.c]</p>
</blockquote>

<p><strong><a name="2009-08-12T070940.485630Z"></a>
2009-08-12T07:09:40.485630Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Writing invalid numbers for linecap and linejoin parameters

Details:
bug #690691: &quot;setlinecap&quot;

pdfwrite was emitting the linecap and linejoin values directly from the graphics
state to the output PDF file. However the GS graphics state also supports the
additional PCL linecap and linejoin values, which are not supported in PDF. This
resulted in PDF files with illegal values.

Modified the code to replace tringle linecaps with round linecaps, triangle line
joins with miter joins and none joins with bevel joins. These are not correct but
are reasonable solutions for now. We should degenerate 'none' joins into a 
sequence of discrete paths.

Also added future protection by converting unknown values of linecap into butt
line caps and unknown values of linejoin into miter line joins. In both cases
a debug warning is emitted.

</pre>
<p>[base/gdevpsdu.c]</p>
</blockquote>

<p><strong><a name="2009-08-11T154712.926634Z"></a>
2009-08-11T15:47:12.926634Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Stop processing of embedded Type 1 font as soon as operator eexec returns.
Skip the trailer that may be truncated or corrupted. Bug 690701, customer 780.

</pre>
<p>[Resource/Init/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2009-08-11T151057.046923Z"></a>
2009-08-11T15:10:57.046923Z Henry Stiles</strong></p>
<blockquote>
<pre>
The debugging code to dump an allocator crashed when printing
references, also add a convenience function so it can be easily called
from the debugger and a reminder in ilocate.  All debugging changes,
no expected differences.

</pre>
<p>[base/gxalloc.h psi/ilocate.c base/gsalloc.c]</p>
</blockquote>

<p><strong><a name="2009-08-11T041132.968611Z"></a>
2009-08-11T04:11:32.968611Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Reorder a logical expression in bbox device to avoid evaluation of
uninitialized part. Fix a Purify warning.

</pre>
<p>[base/gdevbbox.c]</p>
</blockquote>

<p><strong><a name="2009-08-10T232924.006231Z"></a>
2009-08-10T23:29:24.006231Z Henry Stiles</strong></p>
<blockquote>
<pre>
Adds a new memory device constructor
(gs_make_mem_device_with_copydevice) to replace gs_make_mem_device and
fixes several device reference counting problems (leaks) which
affected all the the client languages.  No expected visual
differences.

</pre>
<p>[base/gdevdrop.c base/gxpcmap.c base/gxdevmem.h base/gdevmem.c]</p>
</blockquote>

<p><strong><a name="2009-08-10T185221.508883Z"></a>
2009-08-10T18:52:21.508883Z Henry Stiles</strong></p>
<blockquote>
<pre>
Add a new memory device constructor which uses copydevice.
</pre>
<p>[base/lib.mak base/gxdevmem.h base/gdevmem.c]</p>
</blockquote>

<p><strong><a name="2009-08-07T182905.729614Z"></a>
2009-08-07T18:29:05.729614Z Ralph Giles</strong></p>
<blockquote>
<pre>
Propagate LDFLAGS to the shared library gs client link command lines
in the the autoconf build. Bug 690695.</pre>
<p>[base/unix-dll.mak]</p>
</blockquote>

<p><strong><a name="2009-08-07T140857.827147Z"></a>
2009-08-07T14:08:57.827147Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix a benign type cast warning from MSVC 2008 by explicitly casting the glyph name.
</pre>
<p>[base/gdevpdtd.c]</p>
</blockquote>

<p><strong><a name="2009-08-07T135404.799461Z"></a>
2009-08-07T13:54:04.799461Z Ken Sharp</strong></p>
<blockquote>
<pre>
Inadvertently left a line commented out (with a C++ style comment!) which should have
been removed. Apologies all round.
</pre>
<p>[base/gdevpdtd.c]</p>
</blockquote>

<p><strong><a name="2009-08-07T134658.208375Z"></a>
2009-08-07T13:46:58.208375Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Embedded TrueType fonts not correctly flagged as Symbolic

Details
Bug #690688 &quot;-dSubsetFonts=false produces incorrect PDF file&quot;

The method Acrobat uses to select glyphs from TrueType fonts is arcane and dependent
on the setting of the Symbolic/non-symbolic flags. When we subset a font the encoding
is always created incompatible with StandardEncoding, and so we mark the font as
Symbolic.

However, if we embed the entire font, we try to decide if its symbolic or not. To do
this we check the names of all the used glyphs to see if they are in StandardEncoding
and if they all are we start by assuming the font is *not* symbolic (there are other
checks).

However, there were a number of problems with this check. Firstly the reverse encoding 
which is used to do the work does not contain the .notdef glyph, which *should* have
meant that all fonts were incorrectly marked as symbolic. The only reason it didn't
is because the return value from the routine gs_c_decode was checked against 
gs_no_glyph to see if it failed to match. But gs_c_decode actually returns GS_NO_CHAR
in this case.

So the test was incorrect, and never correctly detected that a glyph was not in 
StandardEncoding.

The test is also insufficient, in addition to being present in the font, the glyph must
also be encoded at the correct position in StandardEncoding, the font in this job 
contains glyphs whose names are all in StandardEncoding, but they are not encoded at the
normal positions, so the font *should* be marked symbolic.

This patch skips the test for the .notdef glyph, correctly checks the return value
from gs_c_decode, and adds the test against the encoding position.

</pre>
<p>[base/gdevpdtd.c]</p>
</blockquote>

<p><strong><a name="2009-08-06T171410.510938Z"></a>
2009-08-06T17:14:10.510938Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fix for bug 690670.  Softmask color space was incorrectly getting set to DeviceN when the color space was undefined for the group and the output device was a separation device.

DETAILS:

For a transparency group, this method is OK as we blend the individual channels as defined in the PDF spec.  For a mask, this is not OK, since we have to map to luminosity and the mapping from the process + spot colors to luminosity is not defined.  Solution is to use the concrete space of the current space of the imager state for the softmask for this situation.  

DIFFERENCES EXPECTED:

None

</pre>
<p>[base/gstrans.c]</p>
</blockquote>

<p><strong><a name="2009-08-05T221258.428110Z"></a>
2009-08-05T22:12:58.428110Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Reverts r8510, r8511, r8513, r8597.  

Details

This is a fix for bug 690396; a customer bug involving a clipping path
combined with a shading fill.  The original changes were a minor (20%)
optimization that was a non customer performance enhancement.

</pre>
<p>[base/gsptype2.c base/gsptype2.h base/gximask.c base/gxfill.c]</p>
</blockquote>

<p><strong><a name="2009-08-04T013250.525295Z"></a>
2009-08-04T01:32:50.525295Z Henry Stiles</strong></p>
<blockquote>
<pre>
Fixes a regression with revision 5219, the log for this revision says:

  &quot;Valid memory pointer used create a tile_clip device instead of
  NULL&quot;

Unfortunately the tile clip device is created on the c stack and
should not get a non null memory pointer.  Later in gxcht.c this same
device memory pointer is used to get a gs id, maybe this was the real
motivation for the change.  We now use the device halftone memory
pointer and the device is initialized with a NULL memory pointer as
expected.
</pre>
<p>[base/gxcht.c base/gxp1fill.c]</p>
</blockquote>

<p><strong><a name="2009-08-03T030950.293548Z"></a>
2009-08-03T03:09:50.293548Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add missing initialization of the path rule member during setting up
the stack-allocated clipping path structure. Fix a Purify warning.

</pre>
<p>[base/gxcpath.c]</p>
</blockquote>

<p><strong><a name="2009-08-02T235526.536287Z"></a>
2009-08-02T23:55:26.536287Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Remove a line that has no effect other than causing frequent Purify warning
and puzzling the reader.

</pre>
<p>[base/ttfmain.c]</p>
</blockquote>

<p><strong><a name="2009-08-02T235002.458497Z"></a>
2009-08-02T23:50:02.458497Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fully initialize CFD stream state. Fix a Purify warning in 23-12B.PS and
stop printing wild core instead of error messages.

</pre>
<p>[base/scfx.h]</p>
</blockquote>

<p><strong><a name="2009-08-02T231626.642637Z"></a>
2009-08-02T23:16:26.642637Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix all remaining MSVC warning other than C4018 or C4244 that have little
value and should be suppressed. Bug 690660.

</pre>
<p>[base/gdevp14.c psi/zcid.c base/gdevpdti.h base/gxacpath.c base/gxpcolor.h libpng/pngwio.c]</p>
</blockquote>

<p><strong><a name="2009-08-01T031453.314562Z"></a>
2009-08-01T03:14:53.314562Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a common Purify warning; skip calculations with uninitialized values
during processing an empty glyph, such as /space .

</pre>
<p>[base/gxhintn.c]</p>
</blockquote>

<p><strong><a name="2009-08-01T030247.627968Z"></a>
2009-08-01T03:02:47.627968Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Swap transposed code fragments in image interpolation logic. Old code missed
some optimizations and could cause wrong rendering. Clear a Purify warning
about uninitialized memory access running 148-11.ps.

</pre>
<p>[base/gxiscale.c]</p>
</blockquote>

<p><strong><a name="2009-08-01T024633.092104Z"></a>
2009-08-01T02:46:33.092104Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix yet another case of missing dereference of indirect objects. Bug 690675.

</pre>
<p>[Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2009-08-01T024103.067359Z"></a>
2009-08-01T02:41:03.067359Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix processing of -dUseCropBox that was broken by the rev. 9805.
Old code messed up the operand stack when -dUseCropBox was requested but no
/CropBox attribute was in the PDF file. Bug 690676, customer 330.

</pre>
<p>[Resource/Init/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2009-08-01T003106.505318Z"></a>
2009-08-01T00:31:06.505318Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove a reference to the obsolete AFPL license text.</pre>
<p>[doc/Release.htm]</p>
</blockquote>

<p><strong><a name="2009-08-01T003104.401366Z"></a>
2009-08-01T00:31:04.401366Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove an unnecessary header file.</pre>
<p>[psi/int.mak psi/igc.c]</p>
</blockquote>

<p><strong><a name="2009-08-01T002725.216685Z"></a>
2009-08-01T00:27:25.216685Z Ralph Giles</strong></p>
<blockquote>
<pre>
Bump version after the 8.70 release.
</pre>
<p>[base/gscdef.c base/version.mak Resource/Init/gs_init.ps doc/News.htm]</p>
</blockquote>

<p><strong><a name="2009-07-31T180612.135189Z"></a>
2009-07-31T18:06:12.135189Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update changelogs and open bug numbers for 8.70 final.
</pre>
<p>[doc/History8.htm doc/News.htm doc/Details8.htm]</p>
</blockquote>



<h2><a name="Version8.70"></a>Version 8.70 (2009-07-31)</h2>

<p>
This is the first release in a new stable series of Ghostscript
releases.
The GhostPDL release number has been set to 8.70 as well, to make it 
easier to identify corresponding releases.

<p>
This release fixes a large number of issues with transparency, 
especially as it interacts with color space conversion, mask contexts 
and patterns. There have also been a number of significant fixes to font 
handling, especially when generating PDF. And there are numerous 
robustness, correctness and performance improvements.

<p>
New generic Esc/Page devices, eplmono and eplcolor were added to the 
contrib directory. A new cdnj500 device was added to support the HP 
DesignJet 500.

<p>
The licensing of the Free version of the core Ghostscript code has been
changed to GPLv3 or later. Previously, the core code was GPLv2 only.
Ghostscript can now be used with GPLv3 applications, and can no longer
be used with applications that are GPLv2-only.

<p>
This release also includes security fixes addressing CVE-2009-0583 and 
CVE-2009-0792.

<p> The following <a href="http://bugs.ghostscript.com/">bugs</a> were
open at the time of release: <blockquote>
226943, 430175, 465936, 493348, 535932, 567421, 578865, 614298, 626295, 
686853, 686865, 687084, 687095, 687146, 687193, 687257, 687271, 687280, 
687295, 687297, 687327, 687375, 687414, 687475, 687492, 687514, 687520, 
687536, 687561, 687593, 687608, 687630, 687650, 687666, 687674, 687677, 
687695, 687697, 687702, 687715, 687721, 687728, 687731, 687775, 687780, 
687782, 687793, 687796, 687805, 687887, 687903, 687904, 687915, 687931, 
687950, 687981, 687983, 688007, 688022, 688024, 688026, 688036, 688042, 
688064, 688081, 688130, 688166, 688184, 688187, 688204, 688210, 688215, 
688227, 688267, 688269, 688280, 688288, 688312, 688318, 688320, 688333, 
688361, 688363, 688372, 688386, 688387, 688389, 688395, 688413, 688436, 
688437, 688440, 688448, 688475, 688483, 688495, 688528, 688533, 688539, 
688540, 688542, 688557, 688565, 688580, 688581, 688604, 688605, 688616, 
688617, 688627, 688636, 688638, 688647, 688651, 688655, 688673, 688699, 
688709, 688710, 688714, 688731, 688757, 688777, 688797, 688818, 688829, 
688843, 688845, 688846, 688871, 688872, 688926, 688933, 688942, 688949, 
688969, 688978, 688990, 688994, 688999, 689003, 689011, 689013, 689025, 
689031, 689032, 689040, 689044, 689046, 689048, 689057, 689076, 689077, 
689078, 689093, 689094, 689098, 689133, 689137, 689145, 689150, 689153, 
689161, 689167, 689184, 689188, 689195, 689199, 689222, 689224, 689236, 
689247, 689248, 689252, 689253, 689278, 689279, 689283, 689289, 689290, 
689308, 689331, 689335, 689340, 689341, 689376, 689378, 689392, 689396, 
689418, 689419, 689421, 689423, 689439, 689450, 689451, 689456, 689460, 
689484, 689487, 689489, 689490, 689498, 689500, 689502, 689506, 689507, 
689512, 689518, 689522, 689546, 689549, 689554, 689557, 689560, 689566, 
689577, 689581, 689584, 689585, 689591, 689592, 689595, 689598, 689601, 
689606, 689616, 689625, 689627, 689636, 689641, 689653, 689658, 689663, 
689670, 689674, 689681, 689682, 689684, 689689, 689690, 689691, 689697, 
689698, 689704, 689705, 689709, 689710, 689711, 689715, 689721, 689725, 
689726, 689734, 689737, 689741, 689756, 689759, 689761, 689767, 689772, 
689775, 689778, 689781, 689786, 689792, 689793, 689794, 689799, 689801, 
689805, 689808, 689823, 689836, 689840, 689853, 689856, 689858, 689859, 
689860, 689861, 689862, 689868, 689869, 689870, 689871, 689878, 689883, 
689885, 689910, 689915, 689916, 689917, 689928, 689930, 689933, 689937, 
689938, 689939, 689940, 689941, 689942, 689943, 689947, 689950, 689951, 
689957, 689969, 689972, 689974, 689980, 689986, 689991, 689996, 689997, 
690003, 690005, 690007, 690009, 690020, 690024, 690025, 690026, 690029, 
690033, 690036, 690043, 690053, 690054, 690061, 690066, 690068, 690069, 
690073, 690083, 690084, 690085, 690093, 690094, 690098, 690110, 690119, 
690125, 690126, 690131, 690132, 690137, 690143, 690146, 690160, 690162, 
690171, 690176, 690180, 690182, 690191, 690192, 690199, 690200, 690207, 
690208, 690212, 690214, 690216, 690224, 690226, 690229, 690235, 690241, 
690246, 690249, 690250, 690251, 690253, 690261, 690262, 690265, 690268, 
690275, 690278, 690281, 690282, 690285, 690290, 690293, 690294, 690296, 
690297, 690299, 690320, 690322, 690324, 690325, 690328, 690329, 690333, 
690339, 690340, 690345, 690346, 690351, 690356, 690360, 690366, 690369, 
690375, 690384, 690392, 690393, 690394, 690396, 690398, 690406, 690409, 
690412, 690413, 690415, 690417, 690419, 690428, 690429, 690435, 690436, 
690441, 690442, 690444, 690445, 690446, 690448, 690451, 690453, 690455, 
690462, 690466, 690468, 690469, 690470, 690471, 690473, 690476, 690477, 
690479, 690482, 690485, 690486, 690487, 690490, 690496, 690497, 690499, 
690504, 690506, 690508, 690519, 690524, 690526, 690530, 690531, 690534, 
690535, 690536, 690537, 690538, 690541, 690543, 690544, 690545, 690549, 
690551, 690552, 690553, 690554, 690556, 690557, 690559, 690560, 690561, 
690562, 690563, 690564, 690565, 690566, 690567, 690568, 690569, 690570, 
690571, 690572, 690573, 690575, 690578, 690580, 690581, 690585, 690594, 
690595, 690596, 690598, 690600, 690601, 690602, 690603, 690604, 690605, 
690606, 690607, 690610, 690612, 690615, 690617, 690620, 690621, 690622, 
690626, 690627, 690630, 690631, 690633, 690636, 690638, 690639, 690641, 
690642, 690643, 690646, 690649, 690650, 690651, 690652, 690653, 690658, 
690661, 690664, 690665, 690667, 690668, 690669, 690670, 690671, 690673, 
690674, 690675, 690676.
</blockquote>

<h3><a name="8.70_Incompatible_changes"></a>Incompatible changes</h3>

<p>
The size of PostScript integers has been limited to 32 bits. Previously 
they used the C long type resulting in 64 bits of precision on LP64 
systems (like Linux on x86_64). As of this release all platforms match 
the recommended implementation limits in the specification.

<h3><a name="8.70_changelog"></a>Changelog</h3>

<p><strong><a name="2009-07-31T175600.606748Z"></a>
2009-07-31T17:56:00.606748Z Ralph Giles</strong></p>
<blockquote>
<pre>
Bump release date for the final 8.70.
</pre>
<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Fonts.htm doc/Ps2ps2.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp man/font2c.1 man/gsnd.1 base/version.mak man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]</p>
</blockquote>

<p><strong><a name="2009-07-30T223302.933395Z"></a>
2009-07-30T22:33:02.933395Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the release notes for the licensing change.
</pre>
<p>[doc/History8.htm doc/News.htm doc/Details8.htm]</p>
</blockquote>

<p><strong><a name="2009-07-30T223107.319480Z"></a>
2009-07-30T22:31:07.319480Z Ralph Giles</strong></p>
<blockquote>
<pre>
Relicense GPL Ghostscript under the GPLv3 or later.
</pre>
<p>[doc/COPYING LICENSE]</p>
</blockquote>

<p><strong><a name="2009-07-28T194652.330831Z"></a>
2009-07-28T19:46:52.330831Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update change logs for 8.70rc1.
</pre>
<p>[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]</p>
</blockquote>

<p><strong><a name="2009-07-28T193506.647161Z"></a>
2009-07-28T19:35:06.647161Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update release version and date for 8.70rc1.
</pre>
<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 base/gscdef.c man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Fonts.htm doc/Ps2ps2.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp man/font2c.1 man/gsnd.1 man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]</p>
</blockquote>

<p><strong><a name="2009-07-28T193052.619540Z"></a>
2009-07-28T19:30:52.619540Z Ralph Giles</strong></p>
<blockquote>
<pre>
Document the cat.ps utility.
</pre>
<p>[doc/Psfiles.htm]</p>
</blockquote>

<p><strong><a name="2009-07-28T191113.726309Z"></a>
2009-07-28T19:11:13.726309Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add release notes for 8.70rc1.
</pre>
<p>[doc/News.htm]</p>
</blockquote>

<p><strong><a name="2009-07-28T182058.792176Z"></a>
2009-07-28T18:20:58.792176Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change the operand types of encode_binary_token() to match the
the type of PostScript integers in the ref structure. Bug 690660.

</pre>
<p>[psi/iscanbin.c psi/btoken.h]</p>
</blockquote>

<p><strong><a name="2009-07-28T171643.839663Z"></a>
2009-07-28T17:16:43.839663Z Ralph Giles</strong></p>
<blockquote>
<pre>
Bump the release number to 8.70.

The numerous transparency and smask fixes justify a new minor number.
</pre>
<p>[base/version.mak Resource/Init/gs_init.ps doc/News.htm]</p>
</blockquote>

<p><strong><a name="2009-07-28T165534.923668Z"></a>
2009-07-28T16:55:34.923668Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix incorrect right shift on 64-bit platforms. PLRM defines bitshift operator
as a logical shift. On 64-bit platform, the integer operand was promoted to
64-bit long value, shifted, and assigned back to 32-bit int, effectively
emulating the sign extension.

</pre>
<p>[psi/zrelbit.c]</p>
</blockquote>

<p><strong><a name="2009-07-28T164926.940894Z"></a>
2009-07-28T16:49:26.940894Z Ralph Giles</strong></p>
<blockquote>
<pre>
Work around problems with XInitImage and large rasters.

Patch from Russ Cox, fixes Bugs 689547 and 689561.

Details:

The patch sets bitmap_pad, and passes 0 for bytes_per_line in
cases were current xorg can correctly generate a value. Russ writes:

I have tracked down the problem, and it appears to be a bad interaction
between
gs and recent sanity checking in the X library.

In particular, sometimes x_copy_image in gdevx.c gets called with wide
widths but narrow raster values.  Even though the raster is apparently
wrong, the X graphics operations would work okay with that value.  But
new versions of X11 have various checks in XInitImage, one of which is
that the raster is greater than or equal to the width of the image times
the depth.

To see that this diagnosis is correct, replacing the call to XInitImage
with a call to _XInitImageFuncPtrs (which is just XInitImage without the
sanity checking) makes gs start working.  But of course
_XInitImageFuncPtrs is not a public interface function and thus probably
not the best fix.  Replacing the &quot;bytes_per_line = raster&quot; with
&quot;bytes_per_line = 0&quot; (which makes X compute the value from width and
depth) works fine in the zoom levels that would otherwise crash but
causes the previously-working zoom levels to shear the image (or worse),
presumably because the &quot;obvious&quot; raster is not the right one at those
levels.

Also, the new XInitImage also requires bitmap_pad be set always.

The patch below also fixes the problem -- I can run &quot;gv pprof.ps&quot; at all
zoom levels, and I can also zoom into regular documents.

Perhaps it is not the right fix -- perhaps the actual bug is that
x_copy_image is being called with a bad raster value in the first place.
But it does work.</pre>
<p>[base/gdevx.c]</p>
</blockquote>

<p><strong><a name="2009-07-28T162051.749226Z"></a>
2009-07-28T16:20:51.749226Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Excessive redefinitions of CIDFonts causing memory exhaustion

Details:
bug #690642: &quot;conversion to PDF aborts after 800 pages&quot;

When instantiating a CIDFont with TrueType outlines, the TrueType interpretation code
tries to name the font using the name table from the TrueType font. If there is no name
table (as is the case for CIDFonts with TT outlines) it instead uses the XUID as the
name.

The XUID is incremented on every use, this means that each time the font is instantiated
(up to once per page when the job is PDF) we create a new CIDFont with a new name.
pdfwrite is unable to determine that these are all in fact the same original font, and
creates many fonts in the output file, eventually leading to memory exhaustion.

This change creates a new key in the current dictionary '/PDFCIDFontName', while
processing a CIDFont with TrueType outlines for a PDF file, which is the same as the
CIDFont BaseFont name. Since PDF can only have one descendant font per CIDFont this
should not cause name collisions. To avoid interference with PostScript the key is
removed from the current dictionary after use.

In the TrueType interpreter, if we are handling a CIDRFont then after loading the TT
tables we check to see if /PDFCIDFontName is defined. If it is we use it to replace the
/FontName and /CIFontName values. This means we only ever create the font with a single
name, which avoids the confusion with pdfwrite.

With this change pdfwrite only emits a single font and, usefully, it has the same name
as the font in the original PDF file. 

</pre>
<p>[Resource/Init/pdf_font.ps Resource/Init/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2009-07-28T074819.388013Z"></a>
2009-07-28T07:48:19.388013Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add bounds checking to various icclib functions.

Based on a set of patches by Jan Lieskovsky at Red Hat,
addressing CVE-2009-0583 and CVE-2009-0792.

Details:

Various _get_size and _write methods in icclib 2.01 were vulnerable to
integer overflow from corrupt or malicious profile data. This commit
makes a number of changes to address this.

First, it enforces bounds checking on array indicies generated through
tag data lookup or floating point calculations, either throwing an error
or clamping, depending on the context.

Second, it converts a number of malloc(nelement*size) calls into
calloc(nelements, size), passing responsibility for overflow control
to the standard library. This works on recent glibc, MacOS 10.4 (at
least) and MSVC 2005 (at least; I believe MSVC 6 doesn't check for
overflow). Systems which overcommit memory allocations generally also
lazily zero pages, so the performance implications of an overflow in
calloc() resulting in a huge allocation (or the same happening at the
request of corrupt or malicious ICC profile data) are not as bad as
might appear relative to the original malloc(). From the other side,
multi-processing systems must often zero pages delivered to malloc
anyway to prevent information leakage.

On top of Jan's patches, this commit uses a fallback for SIZE_MAX, a
stdint.h define which isn't available on all platforms (notably MSVC),
and changes a number error message to match the malloc-&gt;calloc changes.

It fixes a serious bug where the new error checking code incorrectly
rejected valid profiles with an MLUT but no black point tag.
icc_get_luobj() always tried to load the black point tag, and if it
wasn't found, icc_read_tag() would set an error flag, which was later
picked up in icmLut_read() by the check added for the results of
icmLut_get_size(). Since the black point tag is optional, and icclib
already substitutes a default (0,0,0) black point if none is contained
in the profile, we just reset the error condition within
icc_get_luobj(). vtm2k.pdf is a good testfile for this issue.

Likewise, the length of lookup tables was limited to 100 points, as a 
resource consumption constraint, but the spec allows LUTs with up
to 255 points. Bug690495.pdf from the regression suite triggered
this problem.

Thanks to Michael Vrhel for these last two fixes.

</pre>
<p>[icclib/icc.c]</p>
</blockquote>

<p><strong><a name="2009-07-27T165950.188520Z"></a>
2009-07-27T16:59:50.188520Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Update of the Esc/Page laser printer drivers from Epson and Avasys, new output devices &quot;eplmono&quot; and &quot;eplcolor&quot;, and new media types.
</pre>
<p>[contrib/contrib.mak contrib/eplaser/gdevescv.h base/configure.ac contrib/eplaser/gdevescv.c]</p>
</blockquote>

<p><strong><a name="2009-07-27T003035.025070Z"></a>
2009-07-27T00:30:35.025070Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
The fill adjustment change in r9882 was too great; this rev changes it to 0.3 (from the original 0.25).
</pre>
<p>[base/gsstate.c]</p>
</blockquote>

<p><strong><a name="2009-07-24T190305.883160Z"></a>
2009-07-24T19:03:05.883160Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add some debug that can be handy in tracing memory usage with the chunk manager.
This code has not effect on non-debug builds.
</pre>
<p>[base/gsmchunk.c]</p>
</blockquote>

<p><strong><a name="2009-07-24T142119.243209Z"></a>
2009-07-24T14:21:19.243209Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Incorrect table in /Unicode /Decoding Resource

Details
Bug #690648 &quot;many incorrectly encoded Latin Extended-A characters&quot;

The job in this issue contains a subset incrementally downloaded TrueType font where
the Encoding is such that the first glyph encountered is encoded at character
position 1, the second at position two and so on. In addition there is no
GlyphNames2Unicode dictionary.

pdfwrite tries, whenever possible, to write a ToUnicode CMap into the output PDF file
which allows Acrobat and other consumers to copy and paste text using Unicode values.
Since there is no Unicode information in the file, and the Encoding is distinctly 
non-standard, we fall all the way back to using the glyph names as a last ditch
attempt to generate the Unicode information.

This relies on the /Unicode /decoding resource, it seems that many glyphs in this
resource were (and possibly still may be) encoded at the wrong Unicode code points. 
This patch fixes the glyphs raised in the bug report, there may be others.

</pre>
<p>[Resource/Decoding/Unicode]</p>
</blockquote>

<p><strong><a name="2009-07-23T173417.505092Z"></a>
2009-07-23T17:34:17.505092Z Henry Stiles</strong></p>
<blockquote>
<pre>
Temporarily address bug #690646 with a fatter fill adjustment default.
This will only affect tests with resolutions less than 150 dpi.  The
change makes superfluous code in gs_init.ps which initializes the
default fill adjust to .5 iff the resolution is greater than or equal
to 150 dpi.
</pre>
<p>[base/gsstate.c]</p>
</blockquote>

<p><strong><a name="2009-07-22T210942.692668Z"></a>
2009-07-22T21:09:42.692668Z Michael Vrhel</strong></p>
<blockquote>
<pre>
The commits provides proper transparency support for fills with patterns that contain transparency. This is a merge of the pattern_trans branch into the trunk. 

DETAILS:

When a pattern contains a transparency, it should be blended with the underlying objects according to the current extended graphic state settings (e.g. knockout, blend mode etc).  Prior to this commit, patterns with transparency behaved always as knockout fills.  This fixes Bug 690467 and fixes issues for files that contain transparency patterns in the regression suite when using the pbm output device.
When a transparency is present in a pattern, a pdf14 device is pushed.  Pattern accumulation will then occur in the transparency buffer.  When the accumulation completes, the buffer that is created is no longer passed to the pattern tile object gx_pattern_trans_t through pdf14_put_image, but instead the buffer and various details about the buffer are placed in the existing planar form into a new member of gx_pattern_trans_t called ttrans.  
When a  path is to be filled with the pattern, we will be in pdf14_fill_path.  If the color to fill with is of type pattern1_color, then we will do a call to pdf14_tile_pattern_fill which pushes a transparency group the size of the path that we are filling, in the base color space of the tile.  We decompose the path to a rectangle list which is then filled using gx_trans_pattern_fill_rect.  If the fill is simple, i.e. if the tile step size and tile size are the same, then a straight forward non-overlapping fill of the rectangle occurs.  Otherwise a more complex filling occurs where the tiles may overlap.  If the tiles overlap, then blending will need to occur.  Optimizations were implemented to avoid blending if it is not required.  In addition, memcpy was used for the inner loop filling (rows) when dealing with the non overlapped case.  Going from planar data in the tile buffer to planar data in the transparency group that we are filling is much more efficient then switching between planar to chunky and back to planar like we would have had to do if we had used pdf14_put_image and stored the tile data in the buffer that is used for the nontransparency case.  Once the fill completes, the transparency group is popped, which will perform the appropriate blending with the parent group in the proper color space.
Currently it is not allowed to have the transparency tile stored as a clist.  Instead the tile is always stored in the ttrans object.  It would probably be worthwhile to fix this at some point.  When we are doing clist processing, code was added to write  (gx_dc_pattern_trans_write_raster) and read (gx_dc_pattern_read_trans_buff) the ttrans object to and from the clist.  

DIFFERENCES EXPECTED:

tests_private/comparefiles/Bug688631.pdf (pbmraw 600dpi) tests_private/comparefiles/Bug688728a.pdf (pbmraw 600dpi) tests_private/comparefiles/Bug688728b.pdf (pbmraw 600dpi)
tests_private/comparefiles/Bug689422.pdf (ppmraw 600dpi)
tests_private/comparefiles/Bug689422.pdf (pkmraw 600dpi)
tests_private/comparefiles/Bug688728.pdf (pbmraw 600dpi)
</pre>
<p>[psi/zpcolor.c base/gdevp14.c base/gsptype1.c base/lib.mak base/gdevp14.h base/gxpcmap.c base/gsptype1.h psi/int.mak base/gxpcolor.h base/gxcolor2.h /trunk/gs base/gxp1fill.c]</p>
</blockquote>

<p><strong><a name="2009-07-21T134327.037336Z"></a>
2009-07-21T13:43:27.037336Z Ken Sharp</strong></p>
<blockquote>
<pre>
Enhancement (pdfwrite) : Add a new switch 'PDFACompatibilityPolicy to control PDF/A
creation when encountering invalid content.

Details
Bug #690500 &quot;gs 8.63. Option dPDFA generating no pdf/a compliant files because of F
key.&quot; 

In the reported issue the input PDF file contains a Link annotation with no /F (Flags)
key defined. PDF/A states that only annotations with the 'Print' bit of the Flags field
are permitted. pdfwrite was emitting the annotation, thus creating an invalid PDF/A
file.

The new switch PDFCompatibilityPolicy allows the user to select the behaviour for these
kinds of events. The value defaults to 0, where the behaviour matches Acrobat, the file
is created, but is not PDF/A compliant, a warning to this effect is given. When set to
1, the content will be omitted, resulting in a compliant PDF/A file, a warning is
given for each piece of omitted content. Values other than 0 or 1 are treated as 0 and
a warning is given that the value is not understood.

Currently only implemented for annotations, it is expected this will be extended over
time.

</pre>
<p>[base/gdevpdfm.c base/gdevpdfx.h base/gdevpdfp.c doc/Ps2pdf.htm base/gdevpdfb.h]</p>
</blockquote>

<p><strong><a name="2009-07-21T045001.508924Z"></a>
2009-07-21T04:50:01.508924Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add output buffer alignment code to one of the image handling branches
where it was omitted. Fix a SEGV on Sparc platform that cannot access
misaligned data. Bug 690613.

</pre>
<p>[base/gxiscale.c]</p>
</blockquote>

<p><strong><a name="2009-07-20T051046.340795Z"></a>
2009-07-20T05:10:46.340795Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Unobfuscate image scaling code: remove dead code, expand macros and typedefs.
All changes are algorithmically equivalent.

</pre>
<p>[base/siscale.c]</p>
</blockquote>

<p><strong><a name="2009-07-19T035854.979499Z"></a>
2009-07-19T03:58:54.979499Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a typo in compile time flag that prevented GNU libiconv to emulate
system libiconv and caused link errors on the systems that use GNU headers
but system libraries. Bug 690123.

</pre>
<p>[contrib/opvp/gdevopvp.c]</p>
</blockquote>

<p><strong><a name="2009-07-17T151924.111289Z"></a>
2009-07-17T15:19:24.111289Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Initialize bit accumulator in LZW encoder to clear a Purify warning about
using an uninitialised value in an expression. The value itself is unimportant
because all bits that may affect the result are shifted out.

</pre>
<p>[base/slzwe.c]</p>
</blockquote>

<p><strong><a name="2009-07-17T140035.203729Z"></a>
2009-07-17T14:00:35.203729Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix processiong of numeric entry in /W2 array. Bug 690635.

</pre>
<p>[Resource/Init/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2009-07-15T130748.754703Z"></a>
2009-07-15T13:07:48.754703Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Crash with font errors.

Details:
bug #690505: &quot;Regression: More issues with pdfwrite and various nightly regression
files&quot;

The font 'encode_char' method can return a 0 error code, but set the returned glyph
name to 'gs_no_glyph' to indicate that a glyph could nto be found in a valid font.

pdfwrite was then trying to get the glyph information for the 'gs_no_glyph' glyph, which
caused a crash in dict_index. Fixed by detecting the gs_no_glyph and returning an error.

</pre>
<p>[base/gdevpdte.c]</p>
</blockquote>

<p><strong><a name="2009-07-14T033522.419126Z"></a>
2009-07-14T03:35:22.419126Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Switch the order of an assignment and condition to fix (harmless) reading of
uninitialized memory. Clear a Purify warning.

</pre>
<p>[base/gxhintn.c]</p>
</blockquote>

<p><strong><a name="2009-07-13T015006.521945Z"></a>
2009-07-13T01:50:06.521945Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add a couple of utilities for extracting Fonts and ICC Profiles from a
PDF. I had these laying around and the need for these comes up from 
time to time. See the top of each PostScript file for usage.

DETAILS:

It is the responsibility of creators of PDF's to not embed fonts that
are identified as not to be embedded. Ghostscript (as of rev 8603)
respects the TrueType FSType FontInfo.

The copyright and license of fonts and ICC profiles in a PDF will
still be in force. Any knowledgeable user can use Ghostscript
(or many other tools) to extract this information. We provide this
utility mostly to provide the 'source' for GPL'ed fonts as required
by fonts. Fonts are programs and distribution requires distribution
of 'source', so this lets users get the source and (using a font
editor) modify the font. See bug 690533 (if you must).

</pre>
<p>[toolbin/extractICCprofiles.ps toolbin/extractFonts.ps]</p>
</blockquote>

<p><strong><a name="2009-07-11T174945.436921Z"></a>
2009-07-11T17:49:45.436921Z Ralph Giles</strong></p>
<blockquote>
<pre>
Change the GPL Ghostscript license to GPLv2 or later, instead of GPLv2-only.
</pre>
<p>[LICENSE]</p>
</blockquote>

<p><strong><a name="2009-07-09T130911.914398Z"></a>
2009-07-09T13:09:11.914398Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Don't take empty string for an answer when searching 'name' table in TrueType
font because some MS fonts have empty strings for platform IDs MS doesn't
use. Bug 690611, customer 0.

</pre>
<p>[Resource/Init/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2009-07-09T055944.622957Z"></a>
2009-07-09T05:59:44.622957Z Henry Stiles</strong></p>
<blockquote>
<pre>
Remove ad hoc code to draw thin rectangles.  It appears this code is
obsolete with respect to the current fill code.  Many fills adjusted
with this code will actually render without enlargement.  Differences
noted in the following files were insignificant or improvements.

comparefiles/012-05.ps
comparefiles/013-05.ps
comparefiles/067a_unc-stroke.pdf
comparefiles/298-09.ps
comparefiles/321-09.ps
comparefiles/86554321.pdf
comparefiles/Bug687603.ps
comparefiles/Bug687724.pdf
comparefiles/Bug687840.pdf
comparefiles/Bug687901.ps
comparefiles/Bug688485.pdf
comparefiles/Bug688631.pdf
comparefiles/Bug688807.pdf
comparefiles/Bug689083.pdf
comparefiles/Bug689516.pdf
comparefiles/Bug689842.pdf
comparefiles/Bug689918.pdf
comparefiles/Bug689978.pdf
comparefiles/Bug690115.pdf
comparefiles/Bug690206.pdf
comparefiles/Bug690395.pdf
comparefiles/Clarke-Tate-Manns-Chinese.ai
comparefiles/H00216q.pdf
comparefiles/LMG-40-7161-RU-DUC-01.pdf
comparefiles/Testform.v1.0.2.pdf
comparefiles/WD0010L0.pdf
comparefiles/annots.pdf
comparefiles/bug_687457.pdf
comparefiles/bulletin.pdf
comparefiles/knight.pdf
comparefiles/messenger.pdf
comparefiles/messenger16.pdf
comparefiles/p2b-100.pdf
comparefiles/z400454b01d4-1.pdf
pdf/PDFIA1.7_SUBSET/CATX2140.pdf
pdf/PDFIA1.7_SUBSET/CATX5233.pdf
pdf/PDFIA1.7_SUBSET/CATX9004.pdf
pdf/PDFIA1.7_SUBSET/CATX9214.pdf
pdf/PDFIA1.7_SUBSET/CATX9558.pdf
pdf/PDFIA1.7_SUBSET/IA3Z0005.pdf
pdf/PDFIA1.7_SUBSET/IA3Z0302.pdf
pdf/PDFIA1.7_SUBSET/IA3Z1351.pdf
pdf/PDFIA1.7_SUBSET/IA3Z3225.pdf
pdf/PDFIA1.7_SUBSET/IA3Z3356.pdf
pdf/PDFIA1.7_SUBSET/IA3Z3359.pdf
pdf/PDFIA1.7_SUBSET/IA3Z3519.pdf
pdf/PDFIA1.7_SUBSET/IA3Z3778.pdf
pdf/PDFIA1.7_SUBSET/IA3Z4373.pdf
pdf/PDFIA1.7_SUBSET/IA3Z4663.pdf
ps/ps3cet/11-01.PS
ps/ps3cet/11-26C.PS
ps/ps3cet/12-05.PS
ps/ps3cet/13-01.PS
ps/ps3cet/13-02.PS
ps/ps3cet/13-03.PS
ps/ps3cet/13-10.PS
ps/ps3cet/13-12.PS
ps/ps3cet/13-13.PS
ps/ps3cet/13-15.PS
ps/ps3cet/13-16.PS
ps/ps3cet/13-17.PS
ps/ps3cet/13-18.PS
ps/ps3cet/13-19.PS
ps/ps3cet/13-20.PS
ps/ps3cet/13-22.PS
ps/ps3cet/13-26.PS
ps/ps3cet/13-27.PS
ps/ps3cet/13-28.PS
ps/ps3cet/13-29.PS
ps/ps3cet/14-08.PS
ps/ps3cet/23-25.PS
ps/ps3cet/29-03.PS


</pre>
<p>[base/gxpaint.c base/gxcpath.c base/gxttfb.c base/gdevtrac.c base/gxacpath.c base/gxpaint.h base/gdevbbox.c base/gdevpdfd.c base/gxshade.c base/gxfill.c base/gxstroke.c base/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2009-07-09T002802.323867Z"></a>
2009-07-09T00:28:02.323867Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Set default color and colorspace for colored pattern stream that relies on
default values; keep the color unset as required for uncolored pattern.
Bug 690609, customer 531.

</pre>
<p>[Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2009-07-08T141843.038306Z"></a>
2009-07-08T14:18:43.038306Z Henry Stiles</strong></p>
<blockquote>
<pre>
This patch is a continuation of revision 9842, to derive the fill
adjustment parameter from the graphics state and not assume the value
is 1/2.  Interestingly, the patch seems to result in improvements for
postscript in several regression test files.  For example cet file
13-13.ps page 3 appears to improve the clipping of the large (W)
character.  Previously the (W) character obscured the line on the top
border of the page, now the line is visible.  Unfortunately the non
banded result is still wrong and with the fix does not match the
banded output.  Analysis of this issue is incomplete and ongoing.
</pre>
<p>[base/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2009-07-08T135615.311074Z"></a>
2009-07-08T13:56:15.311074Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (CID fonts): The fallback when totally failing to find a character code in a CMap
sets the CID to 0 (/.notdef) but failed to select a descendant font.

Details:
bug #690372 &quot;Error: /undefined in %Type0BuildGlyph&quot;

The PDF file is fundamentally flawed, the font uses the /Identity-H CMap for a font, but
the font uses single bytes for each character code, where the CMap expects 2 bytes for
every character code.

The font code falls back to using CID 0 (the /.notdef equivalent), but failed to select
a descendant font before returning. Because no descendant was selected GS was attempting
to extract the glyph from the type 0 font, which has no glyphs, and therefore failed 
with an undefined error.

The code has been modified to select a descendant font before continuing under these 
conditions.

</pre>
<p>[base/gschar0.c]</p>
</blockquote>

<p><strong><a name="2009-07-08T060240.134274Z"></a>
2009-07-08T06:02:40.134274Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for segfault caused by dereference of a stale pointer (pgs-&gt;dev_color).
Bug 690519 detected with pkmraw during regression testing.

DETAILS:

If a GC was run during a pattern accum in the PS interpreter, the pgs-&gt;dev_color
structure could be moved. This was not tracked, probably because the dev_color
was assumed to be &quot;dynamic&quot;. The fix performs gx_unset_dev_color during the
pattern_paint_cleanup (in zpcolor.c). This minimal change is all that is needed
since only the PS interpreter runs a &quot;real&quot; GC that moves structures.

</pre>
<p>[psi/zpcolor.c]</p>
</blockquote>

<p><strong><a name="2009-07-06T172039.998539Z"></a>
2009-07-06T17:20:39.998539Z Henry Stiles</strong></p>
<blockquote>
<pre>
The fill adjustment associated with the clipping path should be
derived from the graphics state, not set to the constant 1/2.  This
change results in many improvement for pcl which uses center of pixel
(fill adjust == 0) rendering.  It should result in no change for
postscript or pdf at high resolution, but we do expect many difference
at lower resolutions, where fill adjust is set to 1/4.  In the latter
case postscript and pdf paint with fill adjust set to 1/4 while
clipping paths are created with a fill adjustment of 1/2 which is
incorrect.

</pre>
<p>[base/lib.mak base/gxacpath.c]</p>
</blockquote>

<p><strong><a name="2009-07-06T085130.498667Z"></a>
2009-07-06T08:51:30.498667Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (graphics library) : Conversion to base colour space of an /Indexed colour space was
not catering for spaces with a string lookup instead of a procedural lookup.

Details
Bug #690587 &quot;setcolorspace + currentgray crashes GS 8.64&quot;

The conversion from a colour in an indexed space to its alternate assumed a procedural
lookup and failed badly if the space had a string lookup.

</pre>
<p>[psi/zcolor.c]</p>
</blockquote>

<p><strong><a name="2009-07-04T224506.512463Z"></a>
2009-07-04T22:45:06.512463Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add a check for a null value of SMask attribute in ExtGState. This also works
for invalid SMask reference, which is already converted to null.
Bug 690597, customer 870.

</pre>
<p>[Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2009-07-03T215949.616755Z"></a>
2009-07-03T21:59:49.616755Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for crash when tiles are outside printable areas seen with bug 690558.

DETAILS:

The 'fit_copy' macro adjusts the x, y, w, and h values, but since this is
a procedural macro and the 'FOR_RUNS' macro (also procedural) declares
local variables, for 'C' the 'FOR_RUNS ... END_RUNS' needs to be in
a block. The only real changes are the additions of 'fit_copy()'.

</pre>
<p>[base/gxclip2.c]</p>
</blockquote>

<p><strong><a name="2009-07-03T092702.706358Z"></a>
2009-07-03T09:27:02.706358Z Ken Sharp</strong></p>
<blockquote>
<pre>
Enhancement (TrueType fonts): Add support for Adobe's use of Identity CMap in PDF files,
when substituting a TrueType font, mapped as a CIDFont from disk, for a missing CIDFont.

Details:
bug #688515 &quot;Need method to map CIDFonts to TrueType fonts when Ordering is Identity&quot;
This issue also covers issues #689499, #688813, #689623 and #690483. 

When using a native TrueType font from disk as a replacement for a CIDFont, GS needs a
way to convert the character code used in the input file (either PostScript or PDF) into
a TrueType glyph ID (GID). 

When the TrueType font is declared (in cidfmap), the CSI entry contains an Ordering, this is concatenated with the CMAP declared in the actual TrueType font. This
information is used to create a CIDDecoding resource, certain  combinations (defined in
.CMapChooser) create CIDDecoding resources 'on the fly'.

A CIDDecoding resource simply maps a character code directly to a GID. Normally this
resource, when automatically created, is manufactured by converting the character code
to an internal code (using the declared CMap from cidfmap) and then converting the 
internal code to a GID using the TrueType CMAP table. Most often the internal code
is a Unicode code point.

The investigation in 688515 makes it clear that when we have an Identity CMap in a
PDF file the character code should be treated as the GID. This makes it very easy for 
us to construct a CIDDecoding resource, its a simple one-to-one. Unfortunately the 
existing machinery relies upon a CMap, and there is already a mapping for 
Identity.Symbol (An Identity CMap with a font whose CMAP table is a Symbol table).
We don't want to break this existing functionality, so the new code adds an entry
in .CMapChooser for Identity.Unicode (only to avoid errors) and then in the 
function which actually loads the TT font (load_sfnts in gs_cidtt.ps) we check
specifically for an Identity.Unicode Decoding. If we find one then we call a new
routine to create an Identity mapping (CIDMap) from character code to GID.

</pre>
<p>[psi/zcid.c psi/icid.h Resource/Init/gs_ciddc.ps Resource/Init/gs_cidtt.ps psi/zfcid1.c]</p>
</blockquote>

<p><strong><a name="2009-07-02T003801.021625Z"></a>
2009-07-02T00:38:01.021625Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Use &quot;Perceptual&quot; as render intent for the presentation quality setting in the &quot;cdnj500&quot; (HP DesignJet) driver.
</pre>
<p>[contrib/gdevcd8.c]</p>
</blockquote>

<p><strong><a name="2009-06-30T000633.029648Z"></a>
2009-06-30T00:06:33.029648Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Extract all documents from PDF collection to temporary files and process them
in the order they are listed in the /Names array. Bug 690422, customer 531.

</pre>
<p>[Resource/Init/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2009-06-29T123328.939766Z"></a>
2009-06-29T12:33:28.939766Z Ken Sharp</strong></p>
<blockquote>
<pre>
gs_ciddc.ps is now in Resource/Init, not in lib as was stated in the documentation.
</pre>
<p>[doc/Language.htm]</p>
</blockquote>

<p><strong><a name="2009-06-29T093350.558685Z"></a>
2009-06-29T09:33:50.558685Z Ken Sharp</strong></p>
<blockquote>
<pre>
Enhancement (pdfwrite &amp; ps2write) : Optionally convert Separation and DeviceN spaces to their alternate space.

Detalis:
bug #690582 &quot;Disabel /Separation and /DeviceN colour space preservation&quot;

When creating a colour space for output, allow the user to insist that Separation and
DeviceN spaces be converted to their alternate space.
</pre>
<p>[base/gdevpdfx.h base/gdevpdfp.c doc/Ps2pdf.htm base/gdevpdfc.c base/gdevpdfb.h]</p>
</blockquote>

<p><strong><a name="2009-06-26T124229.607606Z"></a>
2009-06-26T12:42:29.607606Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Look into JPX stream to get color space and color depth when it is omitted
from the image dictionary. Bug 690518, customer 850.

DETAILS:
This is a minimal implementation that intentionally uses device dependent
color spaces instead of device-independent ones for full backward
compatibility. 

</pre>
<p>[Resource/Init/pdf_base.ps Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2009-06-23T222457.094170Z"></a>
2009-06-23T22:24:57.094170Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fix for bug690546.  Problem was caused by double application of opacity for knockout fills.  The opacity was being applied in the alpha value and in the opacity value.  The alpha value is the product of the shape and opacity and can be used directly.

</pre>
<p>[base/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2009-06-23T072450.757746Z"></a>
2009-06-23T07:24:50.757746Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Update 'where_used' in case object is used across pages

Details
Bug #690056 &quot;Error with embedded image in generated PDF: XObject not found&quot;

Pdfwrite tries to detect reuse of objects, and only emit a single copy when this occurs.
However on return from pdf_substitute_resource several places do not set the
'where_used' field. If the object is used on a different page to the one where it is 
defined, this causes it not to be listed in the page Resources.

Update two of the places where this occurs to resolve the problem.

</pre>
<p>[base/gdevpdft.c]</p>
</blockquote>

<p><strong><a name="2009-06-22T112248.383638Z"></a>
2009-06-22T11:22:48.383638Z Russell Lang</strong></p>
<blockquote>
<pre>
Add the Windows installer manifest when building with Visual Studio 2008.
</pre>
<p>[psi/msvc32.mak]</p>
</blockquote>

<p><strong><a name="2009-06-22T074134.716284Z"></a>
2009-06-22T07:41:34.716284Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix a technically uninitialised variable (Coverity warning).
</pre>
<p>[base/gdevpdti.c]</p>
</blockquote>

<p><strong><a name="2009-06-22T074101.524464Z"></a>
2009-06-22T07:41:01.524464Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix a minor Coverity warning about implicit function declarations.
</pre>
<p>[base/gdevpdfb.c]</p>
</blockquote>

<p><strong><a name="2009-06-21T212233.385661Z"></a>
2009-06-21T21:22:33.385661Z Russell Lang</strong></p>
<blockquote>
<pre>
Add manifest files to the Windows setup and uninstall programs,
to force Windows Vista to run them as Administrator.
Bug 690510.
</pre>
<p>[psi/dwsetup_x64.manifest psi/dwuninst_x64.manifest psi/dwsetup_x86.manifest psi/dwuninst_x86.manifest]</p>
</blockquote>

<p><strong><a name="2009-06-21T043847.415879Z"></a>
2009-06-21T04:38:47.415879Z Russell Lang</strong></p>
<blockquote>
<pre>
Remove support for cross compiling of Win64 ghostscript on
Windows 32-bit using Visual Studio .NET 2003 with a 
Win64 compatible DDK.
Ghostscript for Win64 must now be built on 64-bit Windows,
to assist with compiled resources. 
Visual Studio 2005 and 2008 are currently supported for 64-bit.
</pre>
<p>[doc/Make.htm base/msvccmd.mak psi/msvc32.mak]</p>
</blockquote>

<p><strong><a name="2009-06-21T042305.005351Z"></a>
2009-06-21T04:23:05.005351Z Russell Lang</strong></p>
<blockquote>
<pre>
Add manifest files to the Windows setup and uninstall programs,
to force Windows Vista to run them as Administrator.
</pre>
<p>[doc/Develop.htm psi/msvc32.mak]</p>
</blockquote>

<p><strong><a name="2009-06-20T172939.375319Z"></a>
2009-06-20T17:29:39.375319Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add TrimBox support and a corresponding -dUseTrimBox option. Bug 690547.

</pre>
<p>[Resource/Init/pdf_main.ps doc/Use.htm]</p>
</blockquote>

<p><strong><a name="2009-06-19T121420.778442Z"></a>
2009-06-19T12:14:20.778442Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Make type 3 bitmap font text-searchable if possible

Details
Bug #690430 &quot;PCL to PDF creates non-searchable text with incorrect font bbox&quot;

There were several changes which needed to be made here, in particular

1) Prevent the PDF text routines updating the text state when using type 3 bitmap
   fonts, as this caused each glyph to be emitted individually.

2) Change the way bitmap glyphs are recorded and drawn, previously each glyph origin
   was the top of the glyph, which meant that different height glyphs had effectively
   differing baselines. The need to shift y position caused glyphs to appear on 
   different PDF 'lines', which prevented searching

3) Hone some internal heuristics which prevented large kerning values and caused glyphs 
   to be placed individually.

</pre>
<p>[base/gdevpdti.h base/gdevpdfx.h base/gdevpdts.c base/gdevpdfb.c base/gdevpdt.h base/gdevpdti.c]</p>
</blockquote>

<p><strong><a name="2009-06-19T105311.324517Z"></a>
2009-06-19T10:53:11.324517Z Ken Sharp</strong></p>
<blockquote>
<pre>
Add a couple of missing initialisers to the PDF device structure. Spotted this problem while working on another issue.
</pre>
<p>[base/gdevpdfb.h]</p>
</blockquote>

<p><strong><a name="2009-06-18T220641.250732Z"></a>
2009-06-18T22:06:41.250732Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>

Add A5 to the list of PCL output paper sizes.  Thanks to peter.berndts@oce.com for the patch.

Fixes bug 690532.

</pre>
<p>[base/gdevpcl.h base/gdevpcl.c]</p>
</blockquote>

<p><strong><a name="2009-06-18T051648.708579Z"></a>
2009-06-18T05:16:48.708579Z Ralph Giles</strong></p>
<blockquote>
<pre>
Handle 4-bit grayscale JPXDecode images.

This is a minimal patch to fix bug 690174.

The file has a JPXDecode stream with 4 bits per component. The image
dictionary has the correct matching /BitsPerComponent and /ColorSpace
keys, but the stream filter was returning the pixel data as the low
nibble in 8 bit pixels.

This is a minimal fix: if the first component of the data is 4 bpc,
divide the stride in half, then in copy_row_gray, pack two pixels
per byte when returning the data.

</pre>
<p>[base/sjpx.c]</p>
</blockquote>

<p><strong><a name="2009-06-17T032525.702690Z"></a>
2009-06-17T03:25:25.702690Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix memory corruption caused by long names. The length of name in the scanner
buffer may exceed the maximum name size and should be checked. Bug 690523.

</pre>
<p>[psi/iscan.c]</p>
</blockquote>

<p><strong><a name="2009-06-17T021749.344749Z"></a>
2009-06-17T02:17:49.344749Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix detection of extra Q operators in the page contents stream, which never
worked before. Remove some level 1 rudiments and comment the code.
Bug 690540, customer 750.

</pre>
<p>[Resource/Init/pdf_ops.ps]</p>
</blockquote>

<p><strong><a name="2009-06-16T220541.362092Z"></a>
2009-06-16T22:05:41.362092Z Henry Stiles</strong></p>
<blockquote>
<pre>
Add a graphics library rom file system variable.  For now this will be
used to hold the icc and wts files associated with the wtsimdi device.
No expected differences.
</pre>
<p>[base/lib.mak]</p>
</blockquote>

<p><strong><a name="2009-06-14T225722.467309Z"></a>
2009-06-14T22:57:22.467309Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fix for access violation that can occur when processing PS files with spot colors into a sep device.

DIFFERENCES EXPECTED:
None

DETAILS:
Number of separations was being obtained from page_spot_colors but should be obtained from separations.num_separations.  This was causing the elements of map_comp_to_sep[comp_num] to not be properly initialized for later use in tiffsep_print_page.</pre>
<p>[base/gdevtsep.c]</p>
</blockquote>

<p><strong><a name="2009-06-13T143318.520606Z"></a>
2009-06-13T14:33:18.520606Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Export t1_glyph_equivalence table, which provides alternative glyph names.
Modify pf2afm.ps to disable glyph aliasing and generate AFM files that
match the font. Bug 689014.

</pre>
<p>[Resource/Init/gs_type1.ps lib/pf2afm.ps]</p>
</blockquote>

<p><strong><a name="2009-06-13T012000.314754Z"></a>
2009-06-13T01:20:00.314754Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Add yet another _NMAKE_VER check (9.00.30729.01) to msvc32.mak to
detect MSVC_VERSION 9 (there has be a better way of doing this).
This surpresses a couple of warnings for each cl invocation but
shouldn't effect the build.

</pre>
<p>[psi/msvc32.mak]</p>
</blockquote>

<p><strong><a name="2009-06-10T131031.212563Z"></a>
2009-06-10T13:10:31.212563Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Bug in pdfmark processing

Details
Bug #690525 &quot;hyperlinks in pdf off by one page since revision 9779&quot;

Revision 9779 fixed a problem when a DOCVIEW pdfmark did not specify a /Page or View to
open the file on. This caused an extra page reference to be created, which caused an
invalid xref to be created.

This was fixed by altering the page count, but this caused real DEST pdfmarks not to
work properly under some conditions.

Restored the page count, and used the presence of either a /Page or /View pdfmark to
generate a page number, if neither is present no page number is created. This fixes
both issues.

</pre>
<p>[base/gdevpdfm.c]</p>
</blockquote>

<p><strong><a name="2009-06-09T033201.703357Z"></a>
2009-06-09T03:32:01.703357Z Henry Stiles</strong></p>
<blockquote>
<pre>
Changed to use memset when filling white and black lines of a
rectangle.  This provides about a 10% speedup over copying a byte at a
time when printing long jobs where a significant amount of time is
spent whitening the page, this improvement was observed on a 2.53 GHz
Intel Core 2 Duo (Mac OS X) and we expect similar results on other
platforms.  No expected changes, the code is functionally equivalent.
</pre>
<p>[base/gdevwts.c]</p>
</blockquote>

<p><strong><a name="2009-06-08T181629.884697Z"></a>
2009-06-08T18:16:29.884697Z Ray Johnston</strong></p>
<blockquote>
<pre>
Provide for filling zero width areas to prevent dropout in some strange stroked
characters. This seems to be the intent of the code, and definitely conforms to
the PS PLRM, but the PDF Reference Manual says zero width fills may or may not
be filled (although Adobe Acrobat does). This is not (yet) enabled by default,
but is provided to simplify regression analysis and for customer 531, bug 690466.

DETAILS:

The original code in gxfill.c seems quite strange in that usually it will fill
horizontal areas sue to the 'adjust_above' and 'adjust_below', but depending
on the coordinate, this would sometimes NOT include the horizontal segment.

The change to gxfilltr.h adds vertical segments when PSEUDO_RASTERIZATION
is in the 'template' (as before) as well as when FILL_ADJUST is in the
'template' and the 'adjust' left and right values are &gt; 0.

</pre>
<p>[base/gxfilltr.h base/gxfill.c]</p>
</blockquote>

<p><strong><a name="2009-06-08T031040.894198Z"></a>
2009-06-08T03:10:40.894198Z Henry Stiles</strong></p>
<blockquote>
<pre>
Previously we identified a banding device by checking if its
get_bits_rectangle procedure was the same as the procedure used in the
constant procedure declarations gs_clist_device_procs.  This
conditional has not been correct since the multi-threaded code, the
get_bits_rectangle() procedure is overridden with a new procedure
get_bits_rectangle_mt() and all devices were detected as non-banding.
We change the procedure checked to be open_device and don't expect
this to be overridden, but the code is still somewhat awkward.

The broken conditional resulted in non deterministic behavior in the
wtsimdi device, indirectly causing the complexity array to be
uninitialized.
</pre>
<p>[base/gdevprn.c]</p>
</blockquote>

<p><strong><a name="2009-06-05T125253.651342Z"></a>
2009-06-05T12:52:53.651342Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Bug with DOCVIEW pdfmark handling

Details
bug #690514 &quot;PageMode DOCVIEW pdfmarks result in broken PDF file&quot;

Using the the /PageMode DOCVIEW pdfmark without using another DOCVIEW pdfmark
which directly references a page (eg specifying the page to open on via /Page)
results in a spurious extra entry in the xref table, referencing the first page
object.

This is caused by the pdfwrite routine 'pdfmark_make_dest' which calls
'pdfmark_page_number'. If there is no specified /Page in the pdfmark, then a new
page reference for the 'next' page is allocated in the xref table, using the
location of the current page. This is the source of the spurious entry.

Note that the DOCVIEW code seems to assume that there be at most one /Page or /View
pdfmark in the array.

Fixed by decrementing the page count in pdfmark_page_number if the string being
parsed for a page number is empty.

</pre>
<p>[base/gdevpdfm.c]</p>
</blockquote>

<p><strong><a name="2009-06-05T055554.211001Z"></a>
2009-06-05T05:55:54.211001Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Switch to 32-bit PostScript integers on 64 bit platform. Bug 690474.

</pre>
<p>[psi/iparam.c psi/zfile.c psi/zfunc4.c psi/zcontrol.c psi/ibnum.c psi/ztype.c psi/zdict.c psi/iscannum.c psi/idparam.c psi/zfcid0.c psi/ibnum.h psi/zdps.c psi/zmath.c psi/iscanbin.c psi/iutil.c psi/iref.h psi/iscan.c psi/idebug.c psi/zstack.c psi/ziodev.c psi/zarith.c base/gsalloc.c psi/zgeneric.c]</p>
</blockquote>

<p><strong><a name="2009-06-05T042551.460104Z"></a>
2009-06-05T04:25:51.460104Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Validate /Border attribute of annotations. Following AR, use invisible border
when /Border value is incorrect. Bug 690509.

</pre>
<p>[Resource/Init/pdf_main.ps Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2009-05-31T025009.248528Z"></a>
2009-05-31T02:50:09.248528Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Current PDF font loader fails when Type 1 font executes 'restore' at the end
of the file and discards all the collected data. The patch breaks the check
for /UniqueID in the font to force a branch without 'restore'. Bug 690502.

</pre>
<p>[Resource/Init/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2009-05-30T002220.429756Z"></a>
2009-05-30T00:22:20.429756Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix the file stream opening logic so that when the open failed, it did not leave
buffers and other structures up to the GC for collection. This only affected PS
and PDF, but happened on files that needed fonts that were not immediately in the
Fontmap. This resulted in up to on the files from bug 690422.

DETAILS:

Since the file streams were allocated in 'system' VM, and the 'limit' was not
set when the vmthreshold was set, this &quot;leak&quot; could result in excessive GC
colletion operations.

</pre>
<p>[base/sfxcommon.c base/stream.c]</p>
</blockquote>

<p><strong><a name="2009-05-29T140204.750188Z"></a>
2009-05-29T14:02:04.750188Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (Graphics library) : Inappropriate testing of shading co-ordinates

Details
The Gouraud free-form mesh shading code was testing to see if the Xmin and Xmax
co-ordinates of the Decode array were the same, and flagging an error if so. The spec
does not say this is an error and Acrobat happily displays the PDF. In addition there
was no test against Ymin and Ymax, so the test has been removed

</pre>
<p>[base/gsshade.c]</p>
</blockquote>

<p><strong><a name="2009-05-29T064844.622628Z"></a>
2009-05-29T06:48:44.622628Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the included copy of jbig2dec with the 0.10 release.

This merges changed made to the version of the gs tree with upstream
fixes, including the buffer overrun fix for CVE-2009-0196. See
CHANGES for a more complete summary.

</pre>
<p>[jbig2dec/aclocal.m4 jbig2dec/config_win32.h jbig2dec/sha1.c jbig2dec/jbig2_metadata.c jbig2dec/jbig2_image_pbm.c jbig2dec/install-sh jbig2dec/jbig2.c jbig2dec/jbig2_generic.h jbig2dec/jbig2_image.c jbig2dec/configure jbig2dec/Makefile.in jbig2dec/jbig2_metadata.h jbig2dec/jbig2.h jbig2dec/jbig2_priv.h jbig2dec/jbig2_image_png.c jbig2dec/jbig2_image.h jbig2dec/depcomp jbig2dec/compile jbig2dec/jbig2dec.c jbig2dec/os_types.h jbig2dec/config.h jbig2dec/configure.ac jbig2dec/jbig2_arith.c jbig2dec/jbig2_symbol_dict.c jbig2dec/jbig2_arith.h jbig2dec/jbig2_page.c jbig2dec/jbig2_symbol_dict.h jbig2dec/jbig2_arith_int.c jbig2dec/jbig2_hufftab.h jbig2dec/jbig2_huffman.c jbig2dec/jbig2_text.c jbig2dec/jbig2_arith_int.h jbig2dec/jbig2_text.h jbig2dec/jbig2_huffman.h jbig2dec/jbig2_mmr.c jbig2dec/jbig2_refinement.c jbig2dec/jbig2_arith_iaid.c jbig2dec/jbig2_mmr.h jbig2dec/memcmp.c jbig2dec/test_jbig2dec.py jbig2dec/jbig2_arith_iaid.h jbig2dec/config.h.in jbig2dec/jbig2_segment.c jbig2dec/Makefile.am jbig2dec/missing jbig2dec/jbig2_generic.c]</p>
</blockquote>

<p><strong><a name="2009-05-25T133800.787533Z"></a>
2009-05-25T13:38:00.787533Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (colour handling): improper handling of ICCBased space with a /Alternate ICCBased
    space

Details:
bug #690495 &quot;Error: /typecheck in --@0x1007f6f0--&quot;

It is technically possible (apparently) for a PDF file to contain an ICCBased space
which has an /Alternate space which is also an ICCBased space. The existing
validation code assumed this would not be the case and reused a reference if the
latter space had no /Alternate in order to select an appropriate final Alternate.

This led to the latter ICCBased space being replaced by the selected default space,
which meant we had fewer spaces than expected when actually setting the space.

Fixed by inserting the selected appropriate default space into the ICC dictionary as
an /Alternate and revalidating the modified space.

</pre>
<p>[psi/zcolor.c]</p>
</blockquote>

<p><strong><a name="2009-05-24T101657.483100Z"></a>
2009-05-24T10:16:57.483100Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix an uninitialized variable warning in FAPI_do_char.

Details:

Previously the local variable 'code' was used for incidental return 
value checks, but *also* to set cr.is_glyph_index in in the CID font 
case. This is because cid_to_TT_charcode() returns 1 on success, but
if it can't find a character code for the given cid, it sets the
character code to zero and returns zero itself to indicate failure.

Zero makes more sense as a glyph id (.notdef) than as a character
code, so in this case it's appropriate to set is_glyph_index based
on this. The other paths which set 'code' all deal with truetype
fonts, so the default success value of zero is also correct.

However, there were in theory code paths where code was never set,
and so is_glyph_index was being set from an unitialized value; thus
the gcc warning. And the double-use of the variable 'code' was hard
to read. This commit adds a separate boolean to track whether we've
found a character code or not and sets cr.is_glyph_index based on
that.

</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-05-23T191137.254849Z"></a>
2009-05-23T19:11:37.254849Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove an unnecessary duplicate typedef. Coverity issue 4183.
</pre>
<p>[base/gdevp14.h]</p>
</blockquote>

<p><strong><a name="2009-05-23T190208.125913Z"></a>
2009-05-23T19:02:08.125913Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove an unnecessary header include.

Coverity issue 2497.
</pre>
<p>[base/lib.mak base/sjpx.c]</p>
</blockquote>

<p><strong><a name="2009-05-23T183721.743759Z"></a>
2009-05-23T18:37:21.743759Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove some unused variables.

I've left one, the subarray_index, since it may be intended for future 
development. The others were all trivial.
</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-05-23T165958.327296Z"></a>
2009-05-23T16:59:58.327296Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a cut-and-paste error in r9742.

The blend values array logic for multiple master fonts was writing
integer element values with a floating point specifier. These are
normally floats, which is probably why the error wasn't noticed in
testing. Flagged by Coverity as issue 4326.
</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-05-23T153633.756259Z"></a>
2009-05-23T15:36:33.756259Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Trap /ioerror and load the font by name when embedded font stream is
unreadable. Bug 690492.

</pre>
<p>[Resource/Init/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2009-05-22T091126.614602Z"></a>
2009-05-22T09:11:26.614602Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove a duplicate gs_memory_t structure member from the trace device.

In r8803 the image_enum memory pointer was moved from the various
subclasses into the common portion of the structure (the superclass).
In oversight, that change was not make to gdevtrac.c, breaking
compilation because of the now-duplicate member name. This went
unnoticed until now because the trace device isn't part of any
standard build.

Note that I've only fixed the compile error. I have not verified
that the trace device still functions properly.
</pre>
<p>[base/gdevtrac.c]</p>
</blockquote>

<p><strong><a name="2009-05-22T090335.793845Z"></a>
2009-05-22T09:03:35.793845Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a typo in the unused gsparam2.c.

This was broken in r2849, but went unnoticed because the parameter
api rewrite was never developed further. This file isn't part of
any standard build.
</pre>
<p>[base/gsparam2.c]</p>
</blockquote>

<p><strong><a name="2009-05-21T234645.296083Z"></a>
2009-05-21T23:46:45.296083Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>

Minor changes for Luratech decoders command line options.

</pre>
<p>[base/Makefile.in]</p>
</blockquote>

<p><strong><a name="2009-05-21T191625.645959Z"></a>
2009-05-21T19:16:25.645959Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update documentation with the new location for dmmain.
</pre>
<p>[doc/Develop.htm]</p>
</blockquote>

<p><strong><a name="2009-05-21T191336.537944Z"></a>
2009-05-21T19:13:36.537944Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move the Classic MacOS gsapi client example code to psi, where it more 
properly belongs.
</pre>
<p>[base/dmmain.r base/dmmain.c psi/dmmain.r psi/dmmain.c]</p>
</blockquote>

<p><strong><a name="2009-05-21T191113.444391Z"></a>
2009-05-21T19:11:13.444391Z Ralph Giles</strong></p>
<blockquote>
<pre>
Comment improvement in the font api implementation.
</pre>
<p>[psi/zfapi.c base/gxfapiu.c base/gxfapiu.h]</p>
</blockquote>

<p><strong><a name="2009-05-21T124007.902153Z"></a>
2009-05-21T12:40:07.902153Z Till Kamppeter</strong></p>
<blockquote>
<pre>
The &quot;ps2write&quot; output device produces PostScript which is not DSC-conforming, so do not advertize it as DSC-conforming with a &quot;%!PS-Adobe-...&quot; magic string. Use &quot;%!&quot; instead. Otherwise the &quot;pstops&quot; CUPS filter cannot handle this output (Ubuntu bug #377011).
</pre>
<p>[base/gdevpdfu.c]</p>
</blockquote>

<p><strong><a name="2009-05-20T223312.105223Z"></a>
2009-05-20T22:33:12.105223Z Till Kamppeter</strong></p>
<blockquote>
<pre>
pstoraster did not work when called with an input file name as the 6th command line argument.
</pre>
<p>[cups/pstoraster.in]</p>
</blockquote>

<p><strong><a name="2009-05-20T223048.432212Z"></a>
2009-05-20T22:30:48.432212Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Fixed recognition of page size via /cupsPageSizeName. All page sizes were considered custom sizes if /cupsPageSizeName was not set.
</pre>
<p>[cups/gdevcups.c]</p>
</blockquote>

<p><strong><a name="2009-05-20T121722.906937Z"></a>
2009-05-20T12:17:22.906937Z Tor Andersson</strong></p>
<blockquote>
<pre>
Reformat code to improve readability and fix messed up tab/space indentation. Also removed the m_ prefix on struct fields.</pre>
<p>[psi/fapi_ft.c]</p>
</blockquote>

<p><strong><a name="2009-05-19T225704.259848Z"></a>
2009-05-19T22:57:04.259848Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
When /Length attribute is incorrect, PDF interpreter removes it from the
stream dictionary. Add support of missing /Length attribute to the pattern
handling code. Bug 690488.

</pre>
<p>[Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2009-05-16T152935.814286Z"></a>
2009-05-16T15:29:35.814286Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Bind all procedures in ps2ai.ps to prevent errors caused by redefined
operators, such as redefinition of 'length' as a number in
examples/colorcir.ps. Bug 690484.
</pre>
<p>[lib/ps2ai.ps]</p>
</blockquote>

<p><strong><a name="2009-05-15T121325.677962Z"></a>
2009-05-15T12:13:25.677962Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI) : FAPI doesn't support Multiple Master fonts

Details
The FAPI code manufactures a stream containing font data for the benefit of FreeType.
However, when manufacturing a type 1 font stream it did not account for the possibility
of a Multiple Master font (or instance of a MM font). This caused FreeType to generate
an error when trying to process glyphs using MM operations.

Extended the existing code to manufacture the WeightVector array, &#36;Blend procedure,
BlendDesignMap array, BlendDesignPositions array and BlendAxisTypes array if present
in the original font.

</pre>
<p>[psi/zfapi.c psi/ifapi.h psi/write_t1.c]</p>
</blockquote>

<p><strong><a name="2009-05-13T233728.142726Z"></a>
2009-05-13T23:37:28.142726Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Consider PDF files that has /StmF attribute but no /CF attribute as having
ARC4 encryption. Bug 690478.
</pre>
<p>[Resource/Init/pdf_sec.ps]</p>
</blockquote>

<p><strong><a name="2009-05-12T202211.794604Z"></a>
2009-05-12T20:22:11.794604Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Removed reference to obsolete file (lwf_jp2_geo.h) that has been merged into lwf_jp2.h.
</pre>
<p>[base/lwf_jp2.mak]</p>
</blockquote>

<p><strong><a name="2009-05-12T101053.385307Z"></a>
2009-05-12T10:10:53.385307Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Crash caused when converting large shading to image.

DETAILS :

Bug 690475 &quot;ps2write&quot; segfaults on PDF file of CUPS test suite&quot;.

When converting a shading to an image for PostScript output, and the resulting image is
large (&gt; 512Kb), the code attempts to select an appropriate compression filter. As part
of doign this it probes the colour space in an attempt to determine what kind of space
it is. However this doesn't work when we have created the image ourselves, as tehre is
no associated imager state to probe the colour space resulting in a crash.

Modified the compression selection code to not probe the space if there is no imager
state.

</pre>
<p>[base/gdevpsdi.c]</p>
</blockquote>

<p><strong><a name="2009-05-11T151946.521973Z"></a>
2009-05-11T15:19:46.521973Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI) : Type 2 fonts with local Subrs fail

Details
Type 2 (CFF) fonts may have both local and global subroutines. Normally fonts will only
contain a global set, while FontSet fonts may contain both a global set, and a local set
per font.

The FAPI code, when converting an internal GS representation back into a CFF stream,
incorrectly conflated the local and global Subrs into a single GSubrs (global subrs)
dict. Additionally it pushed the local subrs first. The result of this is that glyphs
using a callgsubr operator retrieved the subroutine, and glyphs using a callsubr would
fail because no local Subrs were defined.

Extended the FAPI code to retrieve the local and global subrs separately, to write a
local /Subrs dict if required, and to correctly calculate the /Subrs offset and store
it in the font Private dict when a /Subrs dict is present.

</pre>
<p>[psi/zfapi.c psi/ifapi.h psi/write_t2.c]</p>
</blockquote>

<p><strong><a name="2009-05-10T205612.436440Z"></a>
2009-05-10T20:56:12.436440Z Henry Stiles</strong></p>
<blockquote>
<pre>
Fill in omitted paper sizes as part of fixing bug #689677.  Thanks to
Jeffrey Vance for providing several of these paper dimensions.  No
regression differences are expected.
</pre>
<p>[base/gdevpxen.h]</p>
</blockquote>

<p><strong><a name="2009-05-10T164400.640518Z"></a>
2009-05-10T16:44:00.640518Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Use 32 bits for fixed coordinates even on 64 bit cpus.

Details:

The fixed coordinate system used to be dependent on the size of a long.
On x86_64 and other 64 bit systems this was 8 bytes but 4 bytes on other
systems. 

Fixes Bug 690434.


</pre>
<p>[base/gxfixed.h]</p>
</blockquote>

<p><strong><a name="2009-05-10T025901.912309Z"></a>
2009-05-10T02:59:01.912309Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix regression caused by the changes to make PCL work. Bug 690463.

DETAILS:

The primary culprit was that the 'iblock' calculation didn't work if the
entire 'cbuf' wasn't empty. The token scanner sometimes refilled when there
was still data in the buffer. The 's_block_read_seek' also needed to make
sure that the cursor.r ptr and limit (srptr and srlimit) is set correctly
before loading the block at the new position. Tested with PCL and PS on
the cluster (and of coures on my Windows machine).
</pre>
<p>[base/gsiorom.c]</p>
</blockquote>

<p><strong><a name="2009-05-08T131326.891026Z"></a>
2009-05-08T13:13:26.891026Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix : Windows drag&amp;drop has a fixed path limit of 80 characters.

Details
Bug #690461 &quot;ghostscript can't handle files with long name-paths&quot;

The real issue is that the drag-and-drop interface had a fixed buffer of 80
characters, and was unable to process files beyond that limit.

It looks like the original code was from some boiler plate sample. Updated the code
to use the DragQeryFiles API call to find the length of the full path specification
and then malloc a buffer to hold it. Although we would never normally use the system
malloc call, this should not be a problem in the Windows-specific code.

</pre>
<p>[psi/dwtext.c psi/dwimg.c]</p>
</blockquote>

<p><strong><a name="2009-05-07T154558.755801Z"></a>
2009-05-07T15:45:58.755801Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix PostScript interpreter : ICC colour space could cause crash

Details
Bug 690472 &quot;ghostscript crashes on pdf file&quot;

The code to parse the /Range from an ICC profile stores the data in an array of floats.
However, when the Range data was present, the values were incorrectly stored at array
locations twice the proper index.

This could lead to buffer overflow which in this case corrupted the ICC dictionary being
used, causing a crash.

Surprisingly this did not come up in testing.

</pre>
<p>[psi/zcolor.c]</p>
</blockquote>

<p><strong><a name="2009-05-07T130610.554451Z"></a>
2009-05-07T13:06:10.554451Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI) : FAPI doesn't handle Encoding arrays of type mixed_array

Details
It seems that fonts can sometimes have a 't_mixedarray' Encoding array, odd but true.
The FAPI code assumed that Encodings would either be t_array or t_shortarray. Altered
the code to allow for t_mixedarray as well.

</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-05-07T124625.039496Z"></a>
2009-05-07T12:46:25.039496Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI) : FAPI fails when FontBBox is missing

Details
(see also rev 9692) The FAPI code attempts to modify the FontBBox in the font
dictionary after rebuilding a font with a non-GS font renderer. If the FontBBox is
missing this creates an error condition. This is generally correct, FontBBox is a 
mandatory entry in a font dictionary.

However, the code can be called to define a (PDF) type1C font, a CFF font, and it is
possible (Bug689740.pdf) that the top DICT does not contain a FontBBox. In this case
we should inherit the FontBBox from the FontDescriptor in the PDF file, but we don't
have a mechanism to do that. 

Since PDF isn't a programming language the scope for using the FontBBox is pretty
limited, so for now I've chosen to ignore the error.

</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-05-05T104010.582721Z"></a>
2009-05-05T10:40:10.582721Z Ken Sharp</strong></p>
<blockquote>
<pre>
The revision 9699 to quiet a Coverity warning incorrectly tested a char * instead of a
char ** for NULL.</pre>
<p>[base/gdevpdtc.c]</p>
</blockquote>

<p><strong><a name="2009-05-05T102848.253152Z"></a>
2009-05-05T10:28:48.253152Z Ken Sharp</strong></p>
<blockquote>
<pre>
revision 9714 reformatted a test in a way which left dead code behind. Put the test
back as it was, there was no functional difference anyway, this was just done for
investigative purposes.
</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-05-04T105918.106139Z"></a>
2009-05-04T10:59:18.106139Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Removed &quot;cupsEvenDuplex&quot; PPD keyword handling from the &quot;cups&quot; output device again. This keyword is already handled by the pstops and pdftopdf CUPS filters.
</pre>
<p>[cups/gdevcups.c]</p>
</blockquote>

<p><strong><a name="2009-05-02T031255.350064Z"></a>
2009-05-02T03:12:55.350064Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Commit .h file missed by the previous revision. Bug 690318, customer 631.
</pre>
<p>[base/gdevtifs.h]</p>
</blockquote>

<p><strong><a name="2009-05-02T003813.087492Z"></a>
2009-05-02T00:38:13.087492Z Ray Johnston</strong></p>
<blockquote>
<pre>
Supprt -dBigEndian=[true | false] so that the TIFF can be optimized for a
target host on a machine of another 'endian' byte orientation. This is a
mostly worthless change since the raster data doesn't change (only 16 or
32-bit values have endian issues). Thanks to wendyst2 at gmail.com for
this fix. Bug #690318.
</pre>
<p>[base/gdevtifs.c base/gdevtsep.c base/gdevtfnx.c base/gdevtfax.c]</p>
</blockquote>

<p><strong><a name="2009-05-02T000315.297730Z"></a>
2009-05-02T00:03:15.297730Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add an 'IODevice' aware layer for filesystem enumeration 'gs_enumerate_*'
which needs to be used whenever the file is not known to be on the default
iodev (%os% by default). Use this in the PDL parser to open fonts so that
COMPILE_INITS=1 does not need the fonts on the disk.

The default PXL/PCL builds now use COMPILE_INITS=1.

Fixes bug #690367.

DETAILS:

The %rom%ttfonts/ path is placed BEFORE the built-in paths in pjparse.c,
but NOTE: the PCLFONTSOURCE environment variable will still supersede
the internal paths including %rom%ttfonts.

</pre>
<p>[base/gxiodev.h base/gsiorom.c base/gsiodev.c]</p>
</blockquote>

<p><strong><a name="2009-05-01T033924.695161Z"></a>
2009-05-01T03:39:24.695161Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Check for unbalanced q/Q operators in content streams of PDF forms.
Add missing Q when needed and issue a warning. Bug 690449, customer 870.

</pre>
<p>[Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2009-04-30T183449.698412Z"></a>
2009-04-30T18:34:49.698412Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fix for case when blending color space of soft mask is not specified.

DETAILS:

When the blending color space for the soft mask is not specified, the blending color space is set to UNKNOWN.  This is later resolved when the compositor action is handled.  In this case, the parents color space or the device color space is used for blending.  The code was in place 
to do this for a transparency group that did not have a defined color space but not for a soft mask. This caused bug 690457 with gxps which should now be resolved.

</pre>
<p>[base/gdevp14.c base/gstrans.c]</p>
</blockquote>

<p><strong><a name="2009-04-30T131410.674985Z"></a>
2009-04-30T13:14:10.674985Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI): Incremental Type 42 font with GlyphDirectory &amp; missing glyphs fails

Details
The FAPI code assumed that the routine to extract glyph data from sfnts would always
work when a GlyphDirectory is present, and used glyf + loca if this routine failed, 
assuming that this meant there was no GlyphDirectory. However, the test file
Bug687845.ps contains a type 42 incrementally downloaded font which uses a
GlyphDirectory and also attempts to access glyphs which aren't defined in the
GlyphDirectory.

This caused the code to try and use the loca and glyf tables, which aren't present,
which caused an error.

Modified the FAPI code to return a glyph length of 0 when we have a GlyphDirectory but
no defined glyph. This causes GS to render nothing, which matches the regular result as
well as the action of Acrobat.

</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-04-30T111504.348733Z"></a>
2009-04-30T11:15:04.348733Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Adde support for the &quot;*APDuplexRequiresFlippedMargin:&quot; PPD keyword to the &quot;cups&quot; output device, fixed also the margin handling for custom paper sizes.
</pre>
<p>[cups/gdevcups.c]</p>
</blockquote>

<p><strong><a name="2009-04-30T104148.084860Z"></a>
2009-04-30T10:41:48.084860Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Fixed unprintable margin handling of the &quot;cups&quot; output device.
</pre>
<p>[cups/gdevcups.c]</p>
</blockquote>

<p><strong><a name="2009-04-29T180250.832175Z"></a>
2009-04-29T18:02:50.832175Z Ralph Giles</strong></p>
<blockquote>
<pre>
Whitespace, line length and C-style improvements to gscolorbuffer.[ch].

These files tend to use 8 spaces instead of tabs; I haven't corrected
many of these.</pre>
<p>[base/gscolorbuffer.c base/gscolorbuffer.h]</p>
</blockquote>

<p><strong><a name="2009-04-29T170243.113835Z"></a>
2009-04-29T17:02:43.113835Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove a documentation reference to the gsindent script, which was
removed in r8455.
</pre>
<p>[doc/C-style.htm]</p>
</blockquote>

<p><strong><a name="2009-04-29T165602.841961Z"></a>
2009-04-29T16:56:02.841961Z Ralph Giles</strong></p>
<blockquote>
<pre>
Always initialize the color_remap function pointer.

Details:

NULL here means a straight memcpy, and the first case statement set
that explicitly as a fallback. However, the second did not, so it
was possible to reach the check on line 204 without initializing
color_remap.

</pre>
<p>[base/gscolorbuffer.c]</p>
</blockquote>

<p><strong><a name="2009-04-29T163958.702496Z"></a>
2009-04-29T16:39:58.702496Z Ralph Giles</strong></p>
<blockquote>
<pre>
Set native line endings and keyword substitution on gscolorbuffer.[ch].
</pre>
<p>[base/gscolorbuffer.c base/gscolorbuffer.h]</p>
</blockquote>

<p><strong><a name="2009-04-29T112738.521368Z"></a>
2009-04-29T11:27:38.521368Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Fixed compiler warning about /* within comment.
</pre>
<p>[base/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2009-04-28T221103.867873Z"></a>
2009-04-28T22:11:03.867873Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the unused including of gxlum.h in the inferno device.

The luminance weighting contants aren't used in the inferno driver.</pre>
<p>[base/gdevifno.c base/contrib.mak]</p>
</blockquote>

<p><strong><a name="2009-04-28T220604.042908Z"></a>
2009-04-28T22:06:04.042908Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the stdlib.h include from the inferno device.

This is no longer needed since the malloc/free calls were replaced
with gs allocator calls in r9687.</pre>
<p>[base/gdevifno.c]</p>
</blockquote>

<p><strong><a name="2009-04-28T184143.426030Z"></a>
2009-04-28T18:41:43.426030Z Till Kamppeter</strong></p>
<blockquote>
<pre>
&quot;cups&quot; output device: Added support for &quot;cupsEvenDuplex&quot; PPD keyword.
</pre>
<p>[cups/gdevcups.c]</p>
</blockquote>

<p><strong><a name="2009-04-28T164409.981559Z"></a>
2009-04-28T16:44:09.981559Z Till Kamppeter</strong></p>
<blockquote>
<pre>
&quot;cups&quot; output device: Added support for the new &quot;*cupsBackSide:&quot; PPD keyword, fixed &quot;*cupsFlipDuplex:&quot; for landscape documents.
</pre>
<p>[cups/gdevcups.c]</p>
</blockquote>

<p><strong><a name="2009-04-28T151049.837556Z"></a>
2009-04-28T15:10:49.837556Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Take measures against Type 1 fonts that do 'systemdict begin' and
bypass all our font loading tricks. Bug 690450, customer 870.

</pre>
<p>[Resource/Init/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2009-04-28T133102.272975Z"></a>
2009-04-28T13:31:02.272975Z Ken Sharp</strong></p>
<blockquote>
<pre>
Ensure the pointer to standard cmap names is properly initialised before dereferencing
it. This is only to silence Coverity, the pointer is initialised to a static array and so
should never be invalid.

</pre>
<p>[base/gdevpdtc.c]</p>
</blockquote>

<p><strong><a name="2009-04-28T132346.582627Z"></a>
2009-04-28T13:23:46.582627Z Ken Sharp</strong></p>
<blockquote>
<pre>
Correct a potential buffer overrun. This looks like an oversight, the maximum size is
properly calculated taking the buffer length and data size into account, and used to
copy the data, but the trailing 0x00 (C string terminator) was written using the data
size without checking for a buffer overrun.

Warning from Coverity.
</pre>
<p>[base/gstype42.c]</p>
</blockquote>

<p><strong><a name="2009-04-28T131617.700417Z"></a>
2009-04-28T13:16:17.700417Z Ken Sharp</strong></p>
<blockquote>
<pre>
Check return value from cos_dict_put_key when writing document metadata. Warning from Coverity.
</pre>
<p>[base/gdevpdfe.c]</p>
</blockquote>

<p><strong><a name="2009-04-28T090410.426584Z"></a>
2009-04-28T09:04:10.426584Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Enlarge the hardcoded threshold for subsetting True Type fonts.

DETAILS :
Patch and log supplied by Leonardo.

Bug 689236 &quot;pdfwrite disregards -dSubsetFont= with TrueType&quot;. 

This fixes the valid part of the bug, which is related
to not-subsetting True Type fonts. The supplied example
exceeds the hardcoded constant of 500 glyphs,
so the font was always subset. Here we enlarge
the threshold to a more reasonable value. Note it doesn't
affect regular runs with &quot;standard&quot; distiller parameters.

ref# leo2079.

</pre>
<p>[base/gdevpdtb.c]</p>
</blockquote>

<p><strong><a name="2009-04-27T162433.581172Z"></a>
2009-04-27T16:24:33.581172Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (FAPI) : FAPI fails when FontBBox is a packed array

Details
The FPAI code attempts to modify the FontBBox in the font dictionary after rebuilding a
font with a non-GS font renderer. However it assumed that the FontBBox would always be a regular array, capable of handling real numbers.

Some fonts have FontBBox arrays which only contain small integers, and which are 
therefore stored as packed arrays (t_shortarray in GS). This was cuasing the FAPI code
to throw an error.

Modified the code to replace the packed array with a full array before filling in the
new values, if the original array was packed.

</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-04-27T160210.792862Z"></a>
2009-04-27T16:02:10.792862Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Let &quot;cups&quot; output device take into account page size names.

The &quot;cups&quot; output device has selected the page size for determining
the margins only by the size and not by the name. So it was not
possible to have different page size entries with the same size and
different margins in the PPD, for example for fullbleed. This is fixed
now.

Fix done after a report from the HPLIP team on the OpenPrinting Summit
2009.

</pre>
<p>[cups/gdevcups.c]</p>
</blockquote>

<p><strong><a name="2009-04-27T062519.306977Z"></a>
2009-04-27T06:25:19.306977Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix 2 oversights in AES decryption code: (1) add enumeration of ctx member in
AES state. Unmovable blocks are still garbage collected and need enumeration;
(2) use correct names to access /CFM attribute in PDF file.
Bug 688958, customers 870, 850, 531.

</pre>
<p>[base/saes.h Resource/Init/pdf_sec.ps]</p>
</blockquote>

<p><strong><a name="2009-04-24T173956.201358Z"></a>
2009-04-24T17:39:56.201358Z Ralph Giles</strong></p>
<blockquote>
<pre>
Replace malloc with gs_alloc_bytes in the inferno device.

Details:

The inferno device allocates an image writer struct in initwriteimage,
and later frees it when a null buffer is passed to writeimageblock.

We prefer to use gs_alloc_bytes instead of calling system malloc
because it respects memory contraints requested by the client. Note
however that the w pointer is local to inferno_print_page and not
traceable. This is fine and the structure doesn't have a lifetime
outside that function. If it did, it would need to be stored and
enumerated in inferno_device.

Note that this requires modifying the two utility functions to take
a memory pool pointer.</pre>
<p>[base/gdevifno.c]</p>
</blockquote>

<p><strong><a name="2009-04-24T173954.075505Z"></a>
2009-04-24T17:39:54.075505Z Ralph Giles</strong></p>
<blockquote>
<pre>
Dynamically allocate the inferno line buffer.

Previously, the scanline buffer was a 16k stack allocation. We still
reject bitmaps larger than that because of format limitations (so large
jobs above 300 dpi often fail with the inferno device) but now we
only allocate as much storage as needed, and on the heap instead of
the stack.</pre>
<p>[base/gdevifno.c]</p>
</blockquote>

<p><strong><a name="2009-04-24T141048.907852Z"></a>
2009-04-24T14:10:48.907852Z Ken Sharp</strong></p>
<blockquote>
<pre>
Enahncement (FAPI) : Allow FAPI to work with pdfwrite.

DETAILS :

FreeType could not be used with pdfwrite for any purpose, even to render
fonts for bitmap fallback. This seems overly pessimistic. 

This patch allows FAPI font rendering engines to work with pdfwrite, this 
will mean the FAPI interface is used for the selected types of font (see 
FAPI for documentation) including CharString decoding and especially 
rendering to bitmaps for type 3 font fallback.

In general pdfwrite uses its own routines to write and convert font types as
required, but it does not render any kind of font data, so if it is unable
to handle a font type it relies on the graphics library to render the glyph
to a bitmap, which is then stored in a type 3 font.

The FAPI code checks the device parameters to see if 'EmbedFontObjects' is 
true, and does not attempt to use the FAPI for fonts if it is. So firstly we
alter the device parameters in pdfwrite to set this to false.

The FAPI code was assuming that the text enumerator it received would always
be a 'show' enumerator, and extracted a pointer to the graphics state from it.
Of course if the device is pdfwrite then the text enumerator will instead be 
a pdf_text_enum. Modified the code to check the object type of the enumerator
and use the pointer to the imager state (checking it is a st_gs_state type)
if this is not a show enumerator. Also only update the 'cc' fields in the 
enumerator if this is a show enumerator.

Note that because the CharString and font validation is handled by the font
rendering engine, it may differ from the GS engine regarding the validity
of fonts.

</pre>
<p>[psi/zfapi.c base/gdevpdfp.c]</p>
</blockquote>

<p><strong><a name="2009-04-24T010632.141706Z"></a>
2009-04-24T01:06:32.141706Z Ralph Giles</strong></p>
<blockquote>
<pre>
Allocate the inferno device's color cube dynamically.

DETAILS:

The inferno device generates a color cube on device open, ostensibly
to speed up the palette mapping. Previously this was stored in a
global array, adding 16 or 32 KB to the constant memory footprint
of ghostscript.

Instead, this commit allocates the color cube dynamically, storing
a pointer to it in the inferno_device structure. A custom structure
descriptor is added, and propagated through the new prn_device
construction macros, so it can be traced by the garbage collector.

In this way, the memory is only used when the inferno device is active.</pre>
<p>[base/gdevifno.c]</p>
</blockquote>

<p><strong><a name="2009-04-24T010630.215529Z"></a>
2009-04-24T01:06:30.215529Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a new prn_device_stype_body() construction macro.

Previously, all the printer device structures assumed there were no
additional pointer members in any subclass, and always installed the
st_device_printer structure descriptor. This may account for why so
few devices bother with point enumeration. Or perhaps it's the other
way around.

In any case, this commit adds two new construction macros for
filling in device structure templates: prn_device_stype_body and
prn_device_margins_stype_body. These take an additional argument,
the address of the subclass structure descriptor, after the device
name, and propagate it to the std_device_full_body_type macros.</pre>
<p>[base/gdevprn.h]</p>
</blockquote>

<p><strong><a name="2009-04-24T010628.058835Z"></a>
2009-04-24T01:06:28.058835Z Ralph Giles</strong></p>
<blockquote>
<pre>
Comment out the prototype for a commented out function in the inferno driver.

Fixes a gcc warning.</pre>
<p>[base/gdevifno.c]</p>
</blockquote>

<p><strong><a name="2009-04-24T010625.015250Z"></a>
2009-04-24T01:06:25.015250Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a prototype for init_p9color() in the inferno driver.

Fixes a warning on gcc.</pre>
<p>[base/gdevifno.c]</p>
</blockquote>

<p><strong><a name="2009-04-24T010622.357332Z"></a>
2009-04-24T01:06:22.357332Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove trailing whitespace in the inferno driver.</pre>
<p>[base/gdevifno.c]</p>
</blockquote>

<p><strong><a name="2009-04-22T195130.624349Z"></a>
2009-04-22T19:51:30.624349Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Allow inline images in pdfwrite.

DETAILS:  

This had been disabled during the softmask branch work.  With the fix that Ray did to avoid having softmask images to be processed outside the 3X code with an extra softmask group, we can re-enable this.  From a test that Ken did we need the ability to do in-line to avoid creating large files in certain cases with pdfwrite.</pre>
<p>[base/gdevpdfi.c]</p>
</blockquote>

<p><strong><a name="2009-04-21T150101.102780Z"></a>
2009-04-21T15:01:01.102780Z Ken Sharp</strong></p>
<blockquote>
<pre>
Initialise a couple of structure members to avoid a Coverity warning.
</pre>
<p>[base/gdevpdfg.c]</p>
</blockquote>

<p><strong><a name="2009-04-21T075530.518210Z"></a>
2009-04-21T07:55:30.518210Z Ken Sharp</strong></p>
<blockquote>
<pre>
Add a check for a NULL pointer before using it. In fact this should not be possible
but it silences another Coverity warning.
</pre>
<p>[base/gdevpdtc.c]</p>
</blockquote>

<p><strong><a name="2009-04-20T193515.102625Z"></a>
2009-04-20T19:35:15.102625Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Add missing gscolorbuffer.c and gscolorbuffer.h that should have been in soft mask branch merge.  See previous commit message for differences and details.</pre>
<p>[base/gscolorbuffer.c base/gscolorbuffer.h]</p>
</blockquote>

<p><strong><a name="2009-04-20T191624.907829Z"></a>
2009-04-20T19:16:24.907829Z Michael Vrhel</strong></p>
<blockquote>
<pre>
This is a merge of the smask_work branch into the trunk.  The merge fixes issues related to missing soft masks, improperly rendered soft masks and transparency group color spaces.  It addresses a number of bugs including 688728 689422 689512 689931 688601 689968 690958 690115 690157 and 690170.    

DETAILS:
This commit is a compilation of changes that occurred in the smask_work SVN branch.  That branch was created with rev 9134 on Oct 8 2008.  The final commit to that branch was with rev.  9665.  For extreme details on the changes in this commit, you can review the commit messages within that branch.
Soft masks:  The basic architecture for the soft mask remains in place; where by the soft mask is composed with the popping of the transparency group.  In performing soft mask operations, the current code pushes a soft mask, which creates a new buffer.  This buffer is then rendered into.  Once the soft mask drawing is completed, the soft mask is popped.  This operation moves the soft mask buffer into the mask buffer of the parent transparency group.  When that transparency group is popped, it should be composed with its parent layer, while being adjusted with the soft mask buffer values.  If there was never a transparency group that was popped following the soft mask, then the soft mask would not be applied.  The solution to this issue involved changes in pdfdraw.ps that forced the creation of a transparency group when one had not yet been created if a soft mask push was to occur.  When this extra group is popped, the soft mask will then be applied.  The PDF interpreter knows that a SMask exists in the ExtGstate when 'SoftMask' is not null. Since the ExtGState elements are part of the top dict, the 'begin' .. 'end'  part of the 'q' and 'Q' operators, respectively, take care of keeping the SoftMask current.  When a transparency group is executed, the SoftMask is set to null since the SMask saved in the pdf14 'maskbuf' element will be applied during the blending when the transparency group is popped.
Soft masks are now drawn in the specified group color space.  Previously, the soft mask was drawn in the target device color space and then the K channel for the CMYK case or the R channel for the RGB case were used as the soft mask luminance channel.   Now the mapping from the DeviceRGB or DeviceCMYK to a luminance component is performed as specified by the PDF specification.  If the color space is CIE based, the base device space is used.  This CIE case does not follow the PDF specification but does follow what occurs with Acrobat Reader.    Previously the code carried around the soft mask buffer as an RGB or CMYK buffer.  It is now represented by a gray buffer.
Transparency groups: Color space changes for transparency groups are now followed.  Previously, the target device color space was always used for blending.  Now the proper color space is used, with the exception of ICC and other CIE based spaces.  For those spaces the base device color space is used.  The ICC and CIE based spaces will be addressed when the ICC branch is merged.  Changing the current code to do forward and backward mappings with the ICC color spaces is beyond the work scope of the smask_work branch.    In the presence of nested transparency groups, the parent color space can be different than the child color space.  When the child is popped, its contents are now converted from the child’s color space to the parent’s color space.  Note that if the output device is a separation device, the transparency group color space is ignored and the blending is performed amongst the channels, which can be numerous if there are many spot colors.  Also note that for soft mask groups, the alternate tint transform is always used for spot colors.
To achieve these fixes, a number of changes besides those already mentioned above were required.  These include:
A dynamic update of the pdf14 device colorinfo value based upon the color space of the current transparency group.  This information is used often in deciding how to encode and decode the color data.  In the case of the clist writer and reader, the code often ends up forwarding certain operations to the target device in which case we no longer would have the colorinfo of the pdf14 device.  The solutions to this problem required the addition of a clist_color_info member value to the clist writer device.  This value is updated in the same manner that the pdf14 device will be updated during the clist reader phase thereby ensuring the proper color information is written and read.  Also required was the addition of a trans_device item to the imager state.  This was needed due to the fact that the clist writer forwards its fill path command to the target device.  In the shading code, if we have a DeviceN color space we eventually get back to pdf14_cmap functions, assuming we have a RGB or CMYK target device.  These cmap functions should make use of the clist device to map to the proper blending color space NOT the target device color space.  In the current code, the cmap functions can only see the target device and the imager state hence the solution to add trans_device to the imager state.  This is only used during clist writing and assigned during the clist writers PDF14 fill path at which point it is assigned the address of the clist writer device.  During the PDF14 cmap functions, if the trans_device is not NULL in the imager state we use that device's color mapping procs instead of the target device color mapping procs.  In this approach, we maintain access to the transparency group color space and its procedures through the imager state.  Finally, shading fills should NOT occur in the device color space when we are within a transparency group with a different color space.  To avoid this issue a boolean named has_transparency was added to the imager state.  Now if we find that we are in a transparency group during the shading fills, then the is_linear_color_applicable operation will return a false and the target color space is not used for blending.
To maintain the changing pdf14 color space information in the presence of nested groups, parent_color_info_procs was added to the already nested pdf14_buf_s where the new pdf14_parent_color_t contains the information related to the parent’s color space.   This handles the nesting of color information for the clist reader.  For the clist writer, pdf14buf is always NULL.  For this case, a pointer to a pdf14_parent_t was added to pdf14_device_s.  A stack was created and the color information is pushed on and popped off the stack as the transparency groups are pushed and popped during the clist writer phase.  
Changes were also required in pdfdraw.ps to handle the case when a transparency group does NOT define a color space.  In this case, the parent’s group color space (or the target device color space if we are at the first level) should be used.
In the presence of a monochrome target device, the previous code PDF14 device was still pushing an RGB buffer initially.  This is now changed and a monochrome buffer is created. 
There was much confusion in the code relating to the number of colors, separations, spot colors, and process colors.  This became clear when looking at a file that had over 100 colorants. GX_DEVICE_COLOR_MAX_COMPONENTS defines the max number of different colors that we currently encode.  This should include both the process colors and the spot colors.  Many parts of the code looked at these colors differently. Some portions of the code treated the number of spot colors and/or separations as having a range to GX_DEVICE_COLOR_MAX_COMPONENTS, while other parts include the process color AND the spot colors in that range.   The changes here ensure that GX_DEVICE_COLOR_MAX_COMPONENTS defines the max number for all process and spot colors.  
The current code did not recognize patterns with transparency in PDF.  Now, the presence of transparency in a pattern is detected.  If a transparency component is found, the pdf14 compositor is installed.    
Finally, pdf_draw.ps was modified so that when an image is encountered with a softmask (/doimagesmask) AND the output device is pdfwrite then we do avoid the DoImage that is used to fill the softmask buffer for the pdf14 device.  The pdfwrite device will obtain the maskdata as part of image3x.  Previously, the mask image was at times being placed in-line for the pdfwrite device during the DoImage that is associated with storing the softmask buffer in the pdf14device.  In the old flow, the SMask image was effectively being processed twice.
    
</pre>
<p>[psi/zcolor.c base/gxclimag.c base/gxpcmap.c base/gdevdevn.c psi/ztrans.c base/gsovrc.c base/gdevpdft.c base/gxblend1.c base/gxcie.h /trunk/gs base/gxshade6.c base/gxclpath.c base/gsptype1.c base/gsccolor.h base/gsptype1.h base/gsistate.c base/gximag3x.c base/gscspace.c base/gxclutil.c base/lib.mak base/gxistate.h base/gscspace.h Resource/Init/pdf_main.ps psi/int.mak Resource/Init/pdf_draw.ps psi/zpcolor.c base/gxdevcli.h Resource/Init/pdf_ops.ps base/gdevp14.c base/gxclrect.c base/gxclist.c base/gdevp14.h base/gdevtsep.c base/gxdcolor.c base/gstrans.c base/gxclist.h base/gstparam.h base/gxblend.c base/gstrans.h base/gdevpdfi.c base/gxblend.h]</p>
</blockquote>

<p><strong><a name="2009-04-20T174420.115590Z"></a>
2009-04-20T17:44:20.115590Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Added &quot;cdnj500&quot; device to support HP DesignJet 500 (patch from Timur Maximov).
</pre>
<p>[contrib/gdevcd8.c contrib/contrib.mak base/configure.ac]</p>
</blockquote>

<p><strong><a name="2009-04-20T155907.741446Z"></a>
2009-04-20T15:59:07.741446Z Ken Sharp</strong></p>
<blockquote>
<pre>
Update revision 9658 to silence a second Coverity warning and potential dereference of
a NULL pointer. Should still be impossible and is definitely an error condition.
</pre>
<p>[base/gdevpdtc.c]</p>
</blockquote>

<p><strong><a name="2009-04-20T155438.325839Z"></a>
2009-04-20T15:54:38.325839Z Ken Sharp</strong></p>
<blockquote>
<pre>
Add a check to ensure a font pointer is valid before dereferencing it. This should 
always be the case, but its worth checking to avoid a crash and should silence a Coverity
warning.</pre>
<p>[base/gdevpdtc.c]</p>
</blockquote>

<p><strong><a name="2009-04-20T154356.142408Z"></a>
2009-04-20T15:43:56.142408Z Ken Sharp</strong></p>
<blockquote>
<pre>
initialise first_visit in the gs_cpath_enum structure with a dummy value. This will be
overwritten when the enumerator actually starts, this is only to silence a warning
from Coverity.
</pre>
<p>[base/gxcpath.c]</p>
</blockquote>

<p><strong><a name="2009-04-20T145933.677002Z"></a>
2009-04-20T14:59:33.677002Z Ken Sharp</strong></p>
<blockquote>
<pre>
Initialise a member of a struct to silence a Coverity warning. The warning about use of
an uninitialised variable is actually bogus, the value is copied, but not otherwise used.
</pre>
<p>[base/gdevpdfg.c]</p>
</blockquote>

<p><strong><a name="2009-04-20T143115.938087Z"></a>
2009-04-20T14:31:15.938087Z Ken Sharp</strong></p>
<blockquote>
<pre>
Check the length of the 'binary mode' file access string before strcat'ing it, to 
prevent a potential (but not actual) buffer overflow. Silences a Coverity warning.
</pre>
<p>[base/gdevpdf.c]</p>
</blockquote>

<p><strong><a name="2009-04-20T142728.365570Z"></a>
2009-04-20T14:27:28.365570Z Ken Sharp</strong></p>
<blockquote>
<pre>
Reformat a conditional sprintf to silence a Coverity warning.
</pre>
<p>[base/gdevpdfu.c]</p>
</blockquote>

<p><strong><a name="2009-04-20T123851.604664Z"></a>
2009-04-20T12:38:51.604664Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (colour) : Ensure /UseCIEColor sets for initial space correctly.

Details
bug #690432 &quot;/UseCIEColor not working with default colour space&quot;

The change to process colour and colour space in C instead of in PostScript overlooked 
code in gs_setpd.ps  which interacts badly with an optimisation.

The optimisation skips changing colour space if its the same as the current space. But
if /UseCIEColor has changed value we must not skip the change. This was achieved 
previously by only skipping the change if UseCIEColor was false, and setting the space
to something other than DeviceGray in gs_setpd.ps.

We take advantage of the same trickery by always setting the space to something other
than DeviceGray in gs_setpd.ps, in the knowledge that initgraphics will switch the 
current space back to DeviceGray. Because the spaces don't match we will process the
change, getting the correct result for UseCIEColor.

</pre>
<p>[Resource/Init/gs_setpd.ps]</p>
</blockquote>

<p><strong><a name="2009-04-20T120728.372687Z"></a>
2009-04-20T12:07:28.372687Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Some broken TrueType 1 fonts may declare more tables than they actualy have.
Use .peekstring instead of for readstring for resding the font directory to
avoid positioning non-seekable input stream past the 1st table data.
Bug 690423, customer 580.

</pre>
<p>[Resource/Init/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2009-04-20T065610.039816Z"></a>
2009-04-20T06:56:10.039816Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Work aroung wrong numGlyphs.

DETAILS :
Patch and log supplied by Leonardo.

Bug 690047 &quot;Incorrect cmap generated by pdfwrite&quot;.

If a source True Type font defines numGlyphs lesser then
the actually defined number of glyphs,
the old code writes an incorrect True Type header with
wrong offsets to subtables.

Since in nowadays the number of glyphs may be increased
due to font merging, we decided to write the extended subtables
with a bigger number of glyphs. See comments in code.
See enlarged_numGlyphs and related code portions.
The original numGlyphs is kept unchanged for easier debugging.

For an easier debugging added checks into psf_write_truetype_data
for comparing actual subtable offsets with ones written
into the True Type header. The new structure subtable_positions
works for that.

Also improved a printing in gs_type42_font_init.
The old code can print occasional garbage beyond the font name end.
 
ref# leo2077.

</pre>
<p>[base/gstype42.c base/gdevpsft.c]</p>
</blockquote>

<p><strong><a name="2009-04-18T220742.659183Z"></a>
2009-04-18T22:07:42.659183Z Ray Johnston</strong></p>
<blockquote>
<pre>
Improve the documentation related to the %rom% file system, searching when the
executable is built with COMPILE_INITS=1 (the current default on most platforms)
and the (mostly deprecated) older methods for compiling Type 1 fonts and Halftone
into threshold arrays.
</pre>
<p>[doc/Use.htm doc/Make.htm]</p>
</blockquote>

<p><strong><a name="2009-04-17T081645.715059Z"></a>
2009-04-17T08:16:45.715059Z Ken Sharp</strong></p>
<blockquote>
<pre>
Change #include of stdlib.h to use angle bracket form to avoid local path searches.
</pre>
<p>[base/gdevpdfj.c]</p>
</blockquote>

<p><strong><a name="2009-04-17T003226.343700Z"></a>
2009-04-17T00:32:26.343700Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove unnecessary includes of gserrors.h in the jpeg stream module.

Fixes two coverity warnings.</pre>
<p>[base/lib.mak base/sjpegd.c base/sjpege.c]</p>
</blockquote>

<p><strong><a name="2009-04-16T160034.882286Z"></a>
2009-04-16T16:00:34.882286Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Ignore missing side bearing/width in type 1 fonts.

Details:
Bug #689573: &quot;glyphs with no (h)sbw cause error with pdfwrite&quot;.

Fonts which contain glyphs that do not begin with a sbw or hsbw operator are
technically invalid, but Acrobat Distiller, and other PostScript rips, ignore
the error and render the glyph with a side bearing and width of 0.

Modified the type 1 font code and the type 1 to type 2 (CFF) conversion code
to assume that such glyphs have a width and side bearing of 0 and are not a
cause for error.

</pre>
<p>[base/gstype1.c base/gxtype1.c base/gdevpsfx.c]</p>
</blockquote>

<p><strong><a name="2009-04-15T200827.661663Z"></a>
2009-04-15T20:08:27.661663Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Some broken Type 1 fonts define some of the attributes in the external scope
instead of defining them in the font dictionary. The patch tries to pick
the keys from the external scope and put them back to the font dictionary.
Bug 690418, customer 1110.

</pre>
<p>[Resource/Init/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2009-04-15T191847.976886Z"></a>
2009-04-15T19:18:47.976886Z Henry Stiles</strong></p>
<blockquote>
<pre>
On modern processors the c library's memset is usually faster than our
custom inline coding.  At least, using memset on recent windows, mac,
and linux platforms is appreciably faster for very long simple jobs
where erasing the page is significant relative to total job time.
Using the library's memcpy needs more investigation, it does not seem
to have significant impact on performance and also results in many
regressions which we haven't checked.
</pre>
<p>[base/gdevm24.c]</p>
</blockquote>

<p><strong><a name="2009-04-15T065051.933830Z"></a>
2009-04-15T06:50:51.933830Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Detect /Pages node without /Kids and bail out early. The code that tries
to determine the number of pages in the document takes such node as a /Page
node, which causes very long search for the last page. Bug 690389.

</pre>
<p>[Resource/Init/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2009-04-14T045606.103942Z"></a>
2009-04-14T04:56:06.103942Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Write color to the clip list even when it has no variable data, as in
[/Separation/None ...]. Fix a bug introduced by r. 8770 that causes rendering
of invisible objects with the last visible color. Bug 690395, customer 330.

</pre>
<p>[base/gxclpath.c]</p>
</blockquote>

<p><strong><a name="2009-04-13T073920.206752Z"></a>
2009-04-13T07:39:20.206752Z Ken Sharp</strong></p>
<blockquote>
<pre>
Silence some Coverity warnings (reasonable warnings, but not actually problems).</pre>
<p>[base/gdevpdfj.c base/gdevpdtb.c base/gdevpdfe.c]</p>
</blockquote>

<p><strong><a name="2009-04-13T073125.084782Z"></a>
2009-04-13T07:31:25.084782Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix a typo in a comment.</pre>
<p>[base/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2009-04-11T122022.013355Z"></a>
2009-04-11T12:20:22.013355Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Repair broken PDF files created by &quot;OKI HotKey&quot; that misspell &quot;endobj&quot;
as &quot;enbobj&quot;. Bug 690397.

</pre>
<p>[Resource/Init/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2009-04-11T045950.073474Z"></a>
2009-04-11T04:59:50.073474Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for crash on 18-02B in clist code. The clist cbuf (on the stack) would
write past the end of the buffer are polluting the next varaible on the
stack (data_bits). Fixes 690399.

DETAILS:

This problem was introduced with r8712 (leonardo). The return value for
gx_dc_pattern_read_raster should be the number of bytes consumed, but in some
(rare) cases it would return 0, causing a later contamination of a byte past the
end of a buffer on the stack, polluting another value. The effect would be
dependent on the 'endian-ness' since only one byte was overwritten.

Also 'protection' for this condition was added in top_up_cbuf to prevent
future problems.
</pre>
<p>[base/gsptype1.c base/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2009-04-10T173604.582061Z"></a>
2009-04-10T17:36:04.582061Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the reference to needing to compile in pdfwrite, which is 
confusing to casual users. The pdfwrite device is part of all the
default builds.
</pre>
<p>[doc/Ps2pdf.htm]</p>
</blockquote>

<p><strong><a name="2009-04-09T135724.013138Z"></a>
2009-04-09T13:57:24.013138Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Omitted to write CIDToGIDMap when it was Identity, even if writing PDFA

Details
When writing CIDFontType2 fonts we should emit a CIDToGIDMap entry, which we do. However
if the map is the identity then we are permitted to omit it. Unless, of course, we are
writing a PDF/A compliant file, in which case we must write /Identity.

</pre>
<p>[base/gdevpdtw.c]</p>
</blockquote>

<p><strong><a name="2009-04-09T084423.319707Z"></a>
2009-04-09T08:44:23.319707Z Ken Sharp</strong></p>
<blockquote>
<pre>
Accidentally removed the prototype for pdf_document_metadata. Restored.</pre>
<p>[base/gdevpdfg.h]</p>
</blockquote>

<p><strong><a name="2009-04-09T083755.568580Z"></a>
2009-04-09T08:37:55.568580Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): remove unused code for Font metadata.

Details:
Bug #690391: &quot;PDF/A support generates invalid object references to font metadata&quot;.

The code for writing font metadata in PDF/A output was temporarily disabled
to fix problems with PDF/A output. 

It seems Acrobat cannot be persuaded to validate any file containing font
Metadata as PDF/A compliant, and Distiller cannot be persuaded to create
a PDF file containing font metadata.

The code has now been permanently removed.

</pre>
<p>[base/gdevpdfg.h base/gdevpdtb.c base/gdevpdfe.c]</p>
</blockquote>

<p><strong><a name="2009-04-08T211118.174166Z"></a>
2009-04-08T21:11:18.174166Z Ray Johnston</strong></p>
<blockquote>
<pre>
The massive 'DeviceN' commit (r2925) broke this. The correct b_w w_b
palette should not rely on color_info.polarity, but instead needs to
be determined from the value of color black. Inverted if black is not
0. Bug 690314 for customer #661.

DETAILS:

In page buffer mode, the 'palette' was set up during the first ht painting
operation from gdevmr1.c. This code was only used in clist mode when making
the 'buffer device' for the band.
</pre>
<p>[base/gdevmem.c]</p>
</blockquote>

<p><strong><a name="2009-04-07T160722.605043Z"></a>
2009-04-07T16:07:22.605043Z Ken Sharp</strong></p>
<blockquote>
<pre>
Removed the function pdf_color_space, which simply called pdf_color_space_named, with
two additional fixed parameters, NULL and 0.

Because these two function called each other Coverity seemed unable to deal with the
recursion and logged numerous STACK_USE errors. Also, its much easier to follow a single
function when debugging.

</pre>
<p>[base/gdevpdfk.c base/gdevpdfg.h base/gdevpdfb.c base/gdevpdfc.c base/gdevpdft.c base/gdevpdfv.c base/gdevpdfg.c base/gdevpdfi.c]</p>
</blockquote>

<p><strong><a name="2009-04-07T102002.752832Z"></a>
2009-04-07T10:20:02.752832Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (ps2epsi): rounding problems calculating bbox.

Details:
Bug #688500 &quot;ps2epsi produces too-narrow bounding box (2)&quot;.

Text and linework rendered at low resolution can differ by a few pixels from
that rendered at higher resolution because of serifs, miters etc. The ps2epsi 
script rendered the job at low resolution and used that both to calculate the 
bounding box, as well as for the epsi preview. This could lead to small errors 
if the job was re-rendered at a higher resolution

The new approach is to use the bbox device in Ghostscript to calculate a more
accurate bounding box. This has meant altering the scripts for all the
operating systems.

Also, the ps2epsi.bat file did not work correctly under Windows Vista. A
new 'cat.ps' file has been added to gs/lib. This uses the %infile% and
%outfile% environment variables and concatenates the two files together.
This only affects the Windows batch file.

</pre>
<p>[lib/ps2epsi lib/ps2epsi.ps lib/ps2epsi.cmd lib/cat.ps lib/ps2epsi.bat]</p>
</blockquote>

<p><strong><a name="2009-04-06T153047.928660Z"></a>
2009-04-06T15:30:47.928660Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Incorrect handling of short images with subsampling.

Details:
bug #690350 &quot;Conversion to pdf of a color pcl file generated by pjxl300 
gsview 4.9 driver&quot;

The PCL file consists of a single large image covering the page. However,
the PCL interpreter calls 'process_zero_rows' (rtraster.c) which has the
side effect (sometimes at least) of closing the image and restarting it.

Pdfwrite already has code to handle a short image like this, it replaces
the image dictionary /Height value with the number of rows of data
actually received. However, if subsampling is enabled, this can be
incorrect, some of the rows of received data may have been discarded.

Altered pdf_end_image_binary to check if subsampling is taking place and
if it is to calculate the subsample factor and divide the number of rows
of data received by the subsample factor before storing as the new /Height.

</pre>
<p>[base/gdevpdfj.c]</p>
</blockquote>

<p><strong><a name="2009-04-06T134844.630941Z"></a>
2009-04-06T13:48:44.630941Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Skip Identity /TR function in soft mask dictionary on PostScript level instead
of passing {} to .begintransparencymaskgroup because ref_function() only
accepts function made of data and operator %execfunction. Bug 690379.

</pre>
<p>[Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2009-04-04T163615.613476Z"></a>
2009-04-04T16:36:15.613476Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Revert initial /PolicyNotFount to 1. The previous value, 7, introduced by ESP
Ghostscript merger (rev. 8026) was non-standard and handled by Ghostscript
like 0. Fix '/undefined in --setpagedevice--' error in CUPS mode
(-dNOMEDIAATTRS) when setpagedevice request has unsupported keys. Bug 690376.
</pre>
<p>[Resource/Init/gs_setpd.ps]</p>
</blockquote>

<p><strong><a name="2009-04-04T101056.584771Z"></a>
2009-04-04T10:10:56.584771Z Ken Sharp</strong></p>
<blockquote>
<pre>
Enhancement (pdfwrite) : Allow pdfwrite to produce multiple copies of pages. New flag
        'DoNumCopies' added.

Details
Bug #690355 : &quot;pdfwrite ignores the &quot;#copies&quot; setting in PostScript input&quot;

The pdfwrite device follows the behaviour of Acrobat Distiller and ignores the /#copies
and /NumCopies settings in PostScript. This is at least partly because these can't be
expected to work properly with Destination annotations specifying a page as the
destination (eg Link or Outline annotations).

However CUPS (and potentially other PDF workflow applications) may have no way of
determining that application-produced PostScript requires multiple copies to be 
printed, after the file has been converted to PDF.

For the benefit of such applications a new flag 'DoNumCopies' has been added, if 
present then pdfwrite will duplicate each page in the output as many times as the 
/#copies or /NumCopies current setting.

There is currently no provision for reordering the pages, the duplicates follow the 
original immediately in page order.

</pre>
<p>[base/gdevpdfx.h base/gdevpdf.c base/gdevpdfp.c doc/Ps2pdf.htm base/gdevpdfu.c]</p>
</blockquote>

<p><strong><a name="2009-03-31T152150.984238Z"></a>
2009-03-31T15:21:50.984238Z Ken Sharp</strong></p>
<blockquote>
<pre>
Another case of the return value from pdf_attached_font_resource not being checked.</pre>
<p>[base/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2009-03-31T151752.100598Z"></a>
2009-03-31T15:17:52.100598Z Ken Sharp</strong></p>
<blockquote>
<pre>
Revision 9604 left an uninitialised variable being used. Moved usage beyond initialisation.</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-03-31T145918.448263Z"></a>
2009-03-31T14:59:18.448263Z Ken Sharp</strong></p>
<blockquote>
<pre>
Check the return value from pdf_attached_font_resource to silence a Coverity warning.
</pre>
<p>[base/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2009-03-31T145209.178132Z"></a>
2009-03-31T14:52:09.178132Z Ken Sharp</strong></p>
<blockquote>
<pre>
Check the return value from pdf_open_docuemnt to fix a Coverity warning.</pre>
<p>[base/gdevpdfu.c]</p>
</blockquote>

<p><strong><a name="2009-03-31T144129.436551Z"></a>
2009-03-31T14:41:29.436551Z Ken Sharp</strong></p>
<blockquote>
<pre>
Remove some unused code relating to embedding font metadata in PDF files.</pre>
<p>[base/gdevpdfe.c]</p>
</blockquote>

<p><strong><a name="2009-03-31T143347.297209Z"></a>
2009-03-31T14:33:47.297209Z Ken Sharp</strong></p>
<blockquote>
<pre>
Remove unused variable 'glyph_index' from FAPI_do_char (gcc warning)</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-03-31T143014.712906Z"></a>
2009-03-31T14:30:14.712906Z Ken Sharp</strong></p>
<blockquote>
<pre>
Remove a bunch of unused headers to silence Coverity warnings.</pre>
<p>[base/gdevpdfj.c psi/zfapi.c base/gdevpdfm.c base/gdevpdfo.c base/gdevpdtb.c base/gdevpdfp.c base/gdevpdtc.c base/gdevpdfr.c base/gdevpdte.c base/gdevpdtf.c base/gdevpdfu.c base/gdevpdti.c base/gdevpsfm.c base/gdevpdf.c base/gdevpsf2.c base/gdevps.c]</p>
</blockquote>

<p><strong><a name="2009-03-31T140120.321673Z"></a>
2009-03-31T14:01:20.321673Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Incorrect handling of type 1 counter control hints.

Details:
bug #690349 &quot;corrupt PDF is generated out of PostScript-file with asian fonts&quot;

When converting type 1 outlines to type 2 outlines, we were not catering for
OtherSubrs 12 or 13 (counter control hints) in the first pass over the font.
These operators take a large number of arguments, and these were being left 
on the font operand stack. This quickly resulted in a stack overflow and an 
invalidfont error. We now remove the operands from the stack when we encounter 
them.

In addition, the code for writing CIDFontType0 fonts which called the conversion
routine was not checking the return value, and carried on trying to embed the font
anyway.

</pre>
<p>[base/gdevpsf2.c base/gdevpsfx.c]</p>
</blockquote>

<p><strong><a name="2009-03-30T162653.447317Z"></a>
2009-03-30T16:26:53.447317Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (fonts): Potential dereference of NULL pointer.

Details
Flagged by Coverity, the FAPI code used op_show_find to get the text enumerator, but
did not check the return value, which can be NULL for a failure. Later the enumerator
is dereferenced, potentially causing a crash. This is actually almost certainly
impossible since this is a finish routine and the enumerator is known to have existed
previously, but its good to be safe.

</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-03-28T234738.237280Z"></a>
2009-03-28T23:47:38.237280Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Recognize composite fonts and process descendant fonts according to
-dShowEmbeddedFonts flag. Bug 690363.
</pre>
<p>[toolbin/pdf_info.ps]</p>
</blockquote>

<p><strong><a name="2009-03-28T210325.515606Z"></a>
2009-03-28T21:03:25.515606Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Accept a string (instead of a name) as a possible /FontName value in
FontDescriptor. Recover broken PDF file generated by &quot;MapForm&quot;. Bug 690365.

</pre>
<p>[Resource/Init/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2009-03-28T193204.398772Z"></a>
2009-03-28T19:32:04.398772Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Ignore /XObject attribute if it's not a dictionary. Recover broken
PDF file generated by &quot;Allegro Design Publisher&quot;. Bug 690364, customer 870.

</pre>
<p>[Resource/Init/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2009-03-26T134629.711009Z"></a>
2009-03-26T13:46:29.711009Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : NeverEmbed/AlwaysEmbed not working properly.

DETAILS :

Patch and Log supplied by Leonardo.

Bug 689610 &quot;Possible /NeverEmbed vs /AlwaysEmbed problem&quot;
The root of the problem is that (1) empty arrays did not work,
and (2) existing values of the parameters (before setdistillerparams)
were not properly accounted for in setdistillerparams.
 

In the old code, PS and C parts of &quot;embed&quot; parameters implementation
are inconsistent each to another and to the documentation. Replacing both with the
right logic defined in the Adobe Distiller Parameters specification.
The comment in gdevpsdp.c line 81 is kept as the basic interface definition.

Note: in the old code param_read_embed_array could not distinguish empty array from
no array,  but it is important for the Adobe logic.
Also psdf_put_embed_param parameters did not correspond  to the documentation in
gdevpsdp.c ln 81.

ref# leo2073.

</pre>
<p>[Resource/Init/gs_pdfwr.ps base/gdevpsdp.c]</p>
</blockquote>

<p><strong><a name="2009-03-25T130006.154261Z"></a>
2009-03-25T13:00:06.154261Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Fixes in the &quot;cups&quot; (CUPS Raster) output device driver:

Fixed segmentation fault due to missing definition of get_color_comp_index() function. Used dummy function gx_error_get_color_comp_index() now (bug 690338).

Updated some (currently not used) functions to the current internal API of Ghostscript.

Made pre-initialization of device data structure complete.

</pre>
<p>[cups/gdevcups.c]</p>
</blockquote>

<p><strong><a name="2009-03-25T051439.001280Z"></a>
2009-03-25T05:14:39.001280Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Don't apply mapped transfer function to the uninitialised buffer. Old code
had no effect other than causing Valgrind warnings. Bug 688908.

</pre>
<p>[base/gsht1.c]</p>
</blockquote>

<p><strong><a name="2009-03-25T050111.445938Z"></a>
2009-03-25T05:01:11.445938Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
When CCITTEncode'd stream is not properly terminated and used as an embedded
image, the filter may consume 'E' from 'EI'. Change PDF interpreter to accept
'I' as a synonym to 'EI'. Bug 690300, customer 353.

</pre>
<p>[Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2009-03-24T170750.052635Z"></a>
2009-03-24T17:07:50.052635Z Ken Sharp</strong></p>
<blockquote>
<pre>
Remove some #ifdef code and some C++ style comments from the FreeType bridge code.

</pre>
<p>[psi/fapi_ft.c]</p>
</blockquote>

<p><strong><a name="2009-03-24T155525.161400Z"></a>
2009-03-24T15:55:25.161400Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (fonts) : Sheared/rotated text incorrect with FreeType bridge

Details
The FreeType code uses a different order for the transformation matrix elements, we
were sending the matrix in PostScript order, resulting in incorrect transformations.

</pre>
<p>[psi/fapi_ft.c]</p>
</blockquote>

<p><strong><a name="2009-03-23T151913.060013Z"></a>
2009-03-23T15:19:13.060013Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Wrong page orientation with italic font.

DETAILS :

Patch and log message submitted by Leonardo.

Bug 689574 &quot;italic/oblique fonts produce incorrect page orientation&quot;. 

Replacing text orientation recognition trick with a right math.

ref# leo2072.

</pre>
<p>[base/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2009-03-23T141438.656422Z"></a>
2009-03-23T14:14:38.656422Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (fonts) : Coverity warning

Details:
Move a NULL pointer check so that it is performed before dereferencing the pointer.
Warning flagged by Coverity.

</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-03-23T134849.969966Z"></a>
2009-03-23T13:48:49.969966Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Skip OpenType tables EBDT, EBLC, EBSC.

DETAILS :

Patch and log message submitted by Leonardo.

This fixes the large size of the PDF output reported in
Bug 689209 &quot;ps2pdf doesn't subset embedded bitmaps&quot;.
The patch skips Open Type tables that are not required by
the PDF specification.

A better fix would be subsetting EBDT, EBLC, EBSC
(probably what the user wants), but we have not enough
examples for testing all possible formats of those tables.
Also it will be necessary to compact the glyph index space
and re-index subglyphs, otherwise the subclassed EBLC
is still too big. In general subsetting TrueType fonts is still
a future goal.
 

</pre>
<p>[base/gdevpsft.c]</p>
</blockquote>

<p><strong><a name="2009-03-23T094003.808902Z"></a>
2009-03-23T09:40:03.808902Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (fonts): Allow copying TT descandants of CIDFonts with no name table.

Details:
bug #690348 &quot;Error &quot;/invalidfont&quot; when generating PDF&quot;

The PDF file for this contains an embedded TrueType font, configured as a CIDFont, and
the TT name table is empty (not missing, but empty). This is probably technically
illegal.

However, we don't actually require the name table, or other font information, when
copying these fonts for pdfwrite, so we simply ignore this error in this case.

</pre>
<p>[base/gxfcopy.c]</p>
</blockquote>

<p><strong><a name="2009-03-22T044307.001485Z"></a>
2009-03-22T04:43:07.001485Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Initialize Jbig2TextRegionParams.sbrat even when it is not used in
calculations because it's included in error messages causing Valgrind
warnings.

</pre>
<p>[jbig2dec/jbig2_text.c]</p>
</blockquote>

<p><strong><a name="2009-03-20T082650.704630Z"></a>
2009-03-20T08:26:50.704630Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pswrite) : extra '%' output in DSC comment

Details:
bug #690347 &quot;pswrite device generates %%%%BeginPageSetup&quot;

Revision 9396 moved the emission of the %%PageBoundingBox comment, but due to an
oversight caused the %%BeginPageSetup comment to be emitted with too may '%' characters.

</pre>
<p>[base/gdevpsu.c]</p>
</blockquote>

<p><strong><a name="2009-03-19T211931.945883Z"></a>
2009-03-19T21:19:31.945883Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Allocate a file name string returned by .tempfile independently of the
file object. Don't free the file name string when the file is closed.
Fix a Valgrind warning and potential SEGV.

</pre>
<p>[psi/zfile.c]</p>
</blockquote>

<p><strong><a name="2009-03-19T170134.362845Z"></a>
2009-03-19T17:01:34.362845Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (fonts): Uninitialised variables in FreeType bridge.

Details:
bug #690344 &quot;FreeType bridge produces lots of 'clipping glyph' warnings&quot;

The FreeType bridge code failed to initialise some member variables of a structure when
retrieving glyph metrics, leading to spurious warnings.

</pre>
<p>[psi/fapi_ft.c]</p>
</blockquote>

<p><strong><a name="2009-03-19T164012.949694Z"></a>
2009-03-19T16:40:12.949694Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (fonts): PaintType 2 fonts not working.

Details:
bug #689826 &quot;FT_BRIDGE crashes with CID fonts&quot;

The initial problem is that a required table, TT_cmap, was NULL, and was not tested
by the CID decoding module before attempting to use it.

Further investigation revealed a fair number of problems surrounding this are. The 
problems stem from the use of a native TrueType font on disk to replace a CIDFont (not 
from an actual CIDFont as the summary suggests). When using a CIDFont the character
code is mapped to a CID using the CMap and the CID is directly used to extract the 
glyph program from the font's CharStrings dictionary.

With a TrueType font that is not sufficient, TrueType fonts use Glyph IDs (GID) and
have a completely different method of mapping the encodings. We attempt to handle this
by converting the CID to a Unicode value, and then use the TT Unicode CMAP subtable to
convert the Unicode value to a GID.

With GS' own font handling this works, because we extract the CMAP subtable and carry
it around in the font. WHen using FreeType this is not done, and so the conversion
fails.

Modified the FAPI interface to create a new method 'check_cmap_for_glyph' which will
allow us to interrogate the TT CMAP subtable from the FAPI server. Copied sections of
CID decoding from zcid.c to zfapi.c in order to perform the same checks as our own 
code and use the correct Unicode value.

</pre>
<p>[psi/fapi_ft.c psi/zfapi.c psi/ifapi.h psi/fapiufst.c]</p>
</blockquote>

<p><strong><a name="2009-03-19T161019.044766Z"></a>
2009-03-19T16:10:19.044766Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (fonts): PaintType 2 fonts not working.

Details:
bug #690343 &quot;Fonts with PaintType 2 (outline) not working with FreeType bridge&quot;

The FAPI code seems to assume that it will always get an 'e_limitcheck' error when no
raster is available. This seems to be true for glyphs too large to cache, but is not
the case when the font is intended to be an outline. In this case there is no raster, 
but the error return is not e_limitcheck.

Rather than rely on an error value, modified the code so that if the font has a 
non-zero PainType, we assume that we only have an outline.

</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-03-19T155950.732428Z"></a>
2009-03-19T15:59:50.732428Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (fonts): Crash caused by missing tests.

Details:
bug #690342 &quot;GPF/segment violation using FreeType bridge&quot;

When using a TrueType font to substitute for a CIDFont, there is no BuildCHar, and so
trying to resolve the name will fail, resulting in a GPF. Fixed by testing the name
objects before attempting to resolve them.

</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-03-19T014802.632278Z"></a>
2009-03-19T01:48:02.632278Z Henry Stiles</strong></p>
<blockquote>
<pre>
Fix 689822, the previous code did not free the palette associated with
an indexed color space to remain backward compatible wih pcl and
pclxl.  The previous setup, before 8928, allowed the clients to manage
the table for memory.  The commented out code in this module was a
workaround until we fixed the pcl clients.
</pre>
<p>[base/gscolor2.c]</p>
</blockquote>

<p><strong><a name="2009-03-18T225818.105967Z"></a>
2009-03-18T22:58:18.105967Z Ralph Giles</strong></p>
<blockquote>
<pre>
Backslash-escape nested parentheses in ps strings.

This isn't necessary with the gs scanner, but is considered good practice.
Thanks to Ray Johnston for raising the issue.</pre>
<p>[Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2009-03-18T215818.821466Z"></a>
2009-03-18T21:58:18.821466Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct diction in unbalanced q/Q warnings.</pre>
<p>[Resource/Init/pdf_ops.ps Resource/Init/pdf_main.ps Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2009-03-15T224253.413236Z"></a>
2009-03-15T22:42:53.413236Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add hagaki (Japanese postcard) paper size to the list of known paper sizes
because this format is widely used in Japan and popular PAPERSIZE option
takes a paper name. Bug 690213.

</pre>
<p>[doc/Use.htm Resource/Init/gs_statd.ps]</p>
</blockquote>

<p><strong><a name="2009-03-14T054400.168304Z"></a>
2009-03-14T05:44:00.168304Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix chunk_resize_object to retain the old data and add gs_debug['A'] debug
printing.
</pre>
<p>[base/gsmchunk.c]</p>
</blockquote>

<p><strong><a name="2009-03-13T001917.919125Z"></a>
2009-03-13T00:19:17.919125Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct some comment typos in the icclib wrapper.

Also removes trailing whitespace.
</pre>
<p>[base/gsicc.c]</p>
</blockquote>

<p><strong><a name="2009-03-12T194329.615649Z"></a>
2009-03-12T19:43:29.615649Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix Segfault in the 'resize_object' of the chunk memory wrapper.

DETAILS:

A typical (unfortunately) instance of using (part of) an object after
it has been freed.
</pre>
<p>[base/gsmchunk.c]</p>
</blockquote>

<p><strong><a name="2009-03-12T133223.551227Z"></a>
2009-03-12T13:32:23.551227Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Remove code that has no effect other than moving uninitialized data around
and causing Coverity warning.

</pre>
<p>[psi/iutil2.c]</p>
</blockquote>

<p><strong><a name="2009-03-12T001803.727459Z"></a>
2009-03-12T00:18:03.727459Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Fixed typo introduced in r9545.
</pre>
<p>[base/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2009-03-11T220055.007444Z"></a>
2009-03-11T22:00:55.007444Z Ray Johnston</strong></p>
<blockquote>
<pre>
Set the log_op (ROP) to a straightforward value when doing the pdf14 put_image
ignoring the input imager state log_op. Bug 690321.

DETAILS:

The rev 8170 alludes to doing something to prevent a similar problem (bug
689186: see DETAILS comment #2 in the log message), but this was NOT the
correct solution. When writing the transparency buffer to the target device
in the pdf14 POP_DEVICE using the &quot;put_image&quot; proc, we really need to use
a ROP that simply allows us to copy the image in 'normal' mode i.e. use
rop3_default.

The state of the low bits of the clist_playback_band imager_state.log_op is
rather arbitrary at the end of the band and not relevant to the put_image
operation.
</pre>
<p>[base/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2009-03-11T134633.591266Z"></a>
2009-03-11T13:46:33.591266Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Move a variable declaration to the outer block to prevent out-of-scope access
and a corresponding Coverity warning.

</pre>
<p>[psi/idict.c]</p>
</blockquote>

<p><strong><a name="2009-03-11T125121.059563Z"></a>
2009-03-11T12:51:21.059563Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Propagate error code from gs_path_enum_next() upstream in operator
.getpath . Fix a Coverity warning.

</pre>
<p>[psi/zupath.c]</p>
</blockquote>

<p><strong><a name="2009-03-10T000703.756709Z"></a>
2009-03-10T00:07:03.756709Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add the soclean and debugclean targets to distclean. Bug 690263.
</pre>
<p>[base/Makefile.in]</p>
</blockquote>

<p><strong><a name="2009-03-07T225915.942227Z"></a>
2009-03-07T22:59:15.942227Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Increase operand stack to 100000 elements and change stack overflow handling.

DETAILS:
Following Adobe implementation, copy only a few top elements of the stack
to the corresponding element of the &#36;error dictionary when the stack
overflows. Adobe copies up to 500 top elements, we copy up to 65535. This
feature enables Ghostscript to have maximum stack sizes larger than 65535.
The maximum operand stack size is set to 100000 to match Adobe interpreters.
The large stack size is needed for some PDF files that construct large
dictionaries using &lt;&lt; ... &gt;&gt; operators. Bug 690307, customer 850.

</pre>
<p>[Resource/Init/gs_init.ps psi/interp.c]</p>
</blockquote>

<p><strong><a name="2009-03-07T214616.367445Z"></a>
2009-03-07T21:46:16.367445Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Let pdftoraster CUPS filter not be build with CUPS &lt; 1.2 and allow suppressing build of pdftoraster via command line option (needed for Mac OS X).
</pre>
<p>[cups/cups.mak base/Makefile.in base/configure.ac]</p>
</blockquote>

<p><strong><a name="2009-03-05T095607.987614Z"></a>
2009-03-05T09:56:07.987614Z Ralph Giles</strong></p>
<blockquote>
<pre>
Look for the 'cmap' table in the font dictionary and use it when mapping
a cid to a character code when using the FAPI bridge.

This replaces a segfault with an invalid font error. Bug 689826.

Details:

This clause in FAPI_do_char() was explicitly calling
cid_to_TT_charcode() with a NULL TT_cmap argument, which that function
dereferenced, causing a segfault. As far as Ken and I can tell, that
function can't do anything useful without the cmap table from the
underlying font, so it makes the most sense the resolve the segfault
this way.

However, the ps library code doesn't set this key in the font
dictionary, so for now this just replaces the segfault with an
/invalidfont in --.FAPIBuildGlyph-- error. We could continue
silently by ignoring the mapping if the cmap isn't available down
in TT_char_code_from_CID_no_subst() in which case that font just
would not render as part of the document. We expect to fix this on
the postscript side, so I felt this was a better course for now.</pre>
<p>[psi/zfapi.c]</p>
</blockquote>

<p><strong><a name="2009-03-04T132707.376818Z"></a>
2009-03-04T13:27:07.376818Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix the FreeType bridge code for outlines (result of charpath). 

The previous code assumed that co-ordinates returned by FT were in a 16.16 fixed
precision format, whereas they are actually in a 26.6 form. Rescale the 26.6 to 16.16
before returning to FAPI so that the conversion into GS co-ordinates works correctly.

</pre>
<p>[psi/fapi_ft.c]</p>
</blockquote>

<p><strong><a name="2009-03-03T162324.892806Z"></a>
2009-03-03T16:23:24.892806Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (colour): Faulty error handling

Details:
bug #690312 &quot;gs stalls, never returns on attached figure&quot;

The job causes the 'base' (Gray, RGB, CMYK) colour code to be executed with a completely
full stack, which causes a stackoverflow because this routine needs to push the colour
space name onto the operand stack.

However, the operand stack wasn't being checked until after the continuation procedure 
had been pushed onto the execution stack, so after the error handling, we returned to
the continuation procedure, but without an appropriate operand stack. This caused a
loop to run without bounds.

Fixed by checking the operand stack beforesetting up the execution stack for the
continuation and aborting if it is full. Desk checking revealed another potential case
of the same problem, fixed in the same patch.

</pre>
<p>[psi/zcolor.c]</p>
</blockquote>

<p><strong><a name="2009-03-02T195401.945423Z"></a>
2009-03-02T19:54:01.945423Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add mention of 'vewrgb.ps'. See the source for usage.
</pre>
<p>[doc/Psfiles.htm]</p>
</blockquote>

<p><strong><a name="2009-03-02T194728.992085Z"></a>
2009-03-02T19:47:28.992085Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update copyright header and file metadata for viewrgb.ps.
</pre>
<p>[lib/viewrgb.ps]</p>
</blockquote>

<p><strong><a name="2009-03-02T184532.781041Z"></a>
2009-03-02T18:45:32.781041Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add support for BITS=2, remove left over debugging messages. Note that
this has only been tested for BITS=1, BITS=2, BITS=8. BITS=4 is not
supported (Indexed color space is limited to palette of 4096 colors).
</pre>
<p>[lib/viewrgb.ps]</p>
</blockquote>

<p><strong><a name="2009-03-02T174422.371407Z"></a>
2009-03-02T17:44:22.371407Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add a utility to view bitrgb files (derived from viewcmyk.ps)
</pre>
<p>[lib/viewrgb.ps]</p>
</blockquote>

<p><strong><a name="2009-03-02T061302.641888Z"></a>
2009-03-02T06:13:02.641888Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
When /JBIG2Decode filter takes /.jbig2globalctx parameter and retains a
pointer to it, the filter must not be allocated in global memory if the
parameter is local. Bug 690308.

</pre>
<p>[psi/zfjbig2.c]</p>
</blockquote>

<p><strong><a name="2009-02-28T000341.220730Z"></a>
2009-02-28T00:03:41.220730Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove a continued line in a makefile variable.

Solaris 'make' doesn't like this. Bug 690311.</pre>
<p>[psi/psromfs.mak]</p>
</blockquote>

<p><strong><a name="2009-02-26T040756.132242Z"></a>
2009-02-26T04:07:56.132242Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for access to potentially uninitialized memory in gx_hld_get_gstate_ptr
when called with an imager_state that is on the stack (as it is when this
is called from the clist). Valgrind spotted this. See coment #5 in Bug
690299.

DETAILS:

The previous method of checking the object type depended on access BEFORE
the pointer. This was (margnially) OK for allocated objects, but NOT OK
when the structure is stack based.
</pre>
<p>[base/gsstate.c base/gxclist.c base/gxistate.h base/gdevvec.c base/gxhldevc.c]</p>
</blockquote>

<p><strong><a name="2009-02-26T035158.114906Z"></a>
2009-02-26T03:51:58.114906Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add some documentation on a useful debugging PS operator and it's C code hook.
</pre>
<p>[doc/Language.htm]</p>
</blockquote>

<p><strong><a name="2009-02-23T191744.665816Z"></a>
2009-02-23T19:17:44.665816Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>

Change the maxval value for pkm and pkmraw files from 1 to 255.

Details:

Some programs (notably Adobe Photoshop through at least CS4) do not
correctly read PPM files that have a maxval!=255, displaying them
as all black (technically not entirely black, but with pixels set
to 0 or 1).  

This change causes Ghostscript to set maxval to 255 and scale the
output bitmap to 0..255.  Because PBM doesn't pack pixels in the
PPM raw format the output file size will not change; PPM files will
up to double in size (previously each pixel used 6 bytes, &quot;1 1 1 &quot;,
now each pixel uses up to 12 bytes, &quot;255 255 255 &quot;).

</pre>
<p>[base/gdevpbm.c]</p>
</blockquote>

<p><strong><a name="2009-02-23T113526.753646Z"></a>
2009-02-23T11:35:26.753646Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (ps2write)

Details
The Debug flag for the new 'center pages' switch was incorrectly spelled as PDFR_DEBUG1 instead of PDFR_DEBUG.

</pre>
<p>[Resource/Init/opdfread.ps]</p>
</blockquote>

<p><strong><a name="2009-02-21T205934.903436Z"></a>
2009-02-21T20:59:34.903436Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the msvc build of the freetype bridge for the new link scheme.

This commmit fixes some errors in the earlier untested update. In addition, the earlier FT_LIB (singular) makefile variable is resurrected for the msvc build only. It is necessary because the freetype project file embeds the release number of build variant in the library filename. If FT_LIB is not set it defaults to the multi-threaded debug build of the 2.3.8 release. Obviously this should be changed when building a binary for release, or against a different version of the freetype library.</pre>
<p>[base/winlib.mak doc/Make.htm]</p>
</blockquote>

<p><strong><a name="2009-02-20T231714.675067Z"></a>
2009-02-20T23:17:14.675067Z Ralph Giles</strong></p>
<blockquote>
<pre>
Replace the hardcoded reference to the FreeType library subpaths with a
more direct specification of compile and link flags.

The msvc build is untested.

Details:

Previously, the top level makefile was supposed to define a path to the
freetype source directory, along with the platform-specific library
filename extension. From this the ft bridge makefile section generated
specific references for include paths and the library. This only worked
with a specific version of the library.

This commit removes the variable for passing the library extension,
and relies on the top-level makefile to provide the link commands,
passed in the FT_LIBS variable. Such link commands are generally
platform-specific anyway, so FT_LIB_EXT was redundant. Likewise,
the include path specifiers must be part of the FT_CFLAGS variable.

Previously, FT_LIBS was called FT_LIB. We generally use _LIB for a
single library name. Having the plural LIBS is more common for an
actual link command, which may include flags and other libraries
which are dependencies. This variable is used in the second way.

The build documentation is also updated to reflect the new scheme,
and mention the incremental font support, which seems to be disabled
in most builds.
</pre>
<p>[base/winlib.mak doc/Make.htm psi/int.mak]</p>
</blockquote>

<p><strong><a name="2009-02-20T231710.859552Z"></a>
2009-02-20T23:17:10.859552Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add some missing dependencies to the interpreter makefile.

Strangely, these don't help ensure arch.h is built before write_t2.c.
</pre>
<p>[psi/int.mak]</p>
</blockquote>

<p><strong><a name="2009-02-20T231708.595733Z"></a>
2009-02-20T23:17:08.595733Z Ralph Giles</strong></p>
<blockquote>
<pre>
Replace 'Free Type' with 'FreeType' in the build documentation.
</pre>
<p>[doc/Make.htm]</p>
</blockquote>

<p><strong><a name="2009-02-20T231705.547619Z"></a>
2009-02-20T23:17:05.547619Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update freetype includes to the currently recommended scheme.

Details:

In freetype2, the recommended method of including the headers is to
include &lt;ft2build.h&gt;, depending on a -I line on the compiler's command
line to select the particular location for this, usually something like
&#36;(INCLUDE_DIR)/freetype/

This header defines macros which expand to includes for particular
features, depending on how the particular freetype instance being
built is configured.

This means that we can't have explicit dependencies on the headers we
use, so those references are also removed. This has a side effect of
making it much easier to link with a system version of freetype.

However, the fapi_ft bridge requires freetype's incremental fonts
feature, which seems not to be enabled by default.
</pre>
<p>[psi/fapi_ft.c psi/int.mak]</p>
</blockquote>

<p><strong><a name="2009-02-20T191004.104225Z"></a>
2009-02-20T19:10:04.104225Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Check that gs_init.ps can be found at &#36;(GenericResourceDir)Init/gs_init.ps
Issue a warning if this file cannot be found. Bug 690289.

</pre>
<p>[Resource/Init/gs_res.ps]</p>
</blockquote>

<p><strong><a name="2009-02-19T185321.845051Z"></a>
2009-02-19T18:53:21.845051Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update our internal copy of the libpng source to the 1.2.35 release.
</pre>
<p>[libpng]</p>
</blockquote>

<p><strong><a name="2009-02-19T185224.164375Z"></a>
2009-02-19T18:52:24.164375Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move the libpng source out of the way for an upgrade.
</pre>
<p>[libpng]</p>
</blockquote>

<p><strong><a name="2009-02-19T171336.155519Z"></a>
2009-02-19T17:13:36.155519Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for segfault reported as bug 690051 caused by the assumption that the architecture
had 32-bit integers. Thanks to Wendy for the patch.
</pre>
<p>[base/gdevsgi.h base/gdevsgi.c]</p>
</blockquote>

<p><strong><a name="2009-02-17T204038.935981Z"></a>
2009-02-17T20:40:38.935981Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Remove obsolete information from Use.htm. Ghostscript now accepts PDF from
standard input and, since rev. 610 flushpage occurs even with -dNOPROMPT .

</pre>
<p>[doc/Use.htm]</p>
</blockquote>

<p><strong><a name="2009-02-16T200017.223054Z"></a>
2009-02-16T20:00:17.223054Z Ralph Giles</strong></p>
<blockquote>
<pre>
Set native eol-style on the jasper library source. Bug 690292.
</pre>
<p>[jasper/src/libjasper/include/jasper/jas_types.h jasper/src/libjasper/jpc/jpc_cs.c jasper/src/libjasper/mif/mif_cod.h jasper/src/libjasper/pgx/pgx_enc.c jasper/src/libjasper/bmp/bmp_cod.c jasper/src/libjasper/jpc/jpc_cs.h jasper/src/libjasper/ras/ras_dec.c jasper/src/libjasper/pgx/pgx_enc.h jasper/src/libjasper/bmp/bmp_cod.h jasper/src/libjasper/base/jas_version.c jasper/src/libjasper/jpc/jpc_qmfb.c jasper/src/libjasper/ras/ras_cod.c jasper/src/libjasper/base/jas_iccdata.c jasper/src/libjasper/base/jas_seq.c jasper/src/libjasper/jpg/jpg_val.c jasper/src/libjasper/jpc/jpc_qmfb.h jasper/src/libjasper/jpc/jpc_fix.h jasper/src/libjasper/jpc/jpc_tagtree.c jasper/src/libjasper/ras/ras_cod.h jasper/src/libjasper/pgx/pgx_dec.c jasper/src/libjasper/jpc/jpc_tagtree.h jasper/src/libjasper/base/jas_getopt.c jasper/src/libjasper/jpc/jpc_mqenc.c jasper/src/libjasper/include/jasper/jas_getopt.h jasper/src/libjasper/jpg/jpg_dummy.c jasper/src/libjasper/jpc/jpc_bs.c jasper/src/libjasper/include/jasper/jas_init.h jasper/src/libjasper/jpc/jpc_enc.c jasper/src/libjasper/base/jas_string.c jasper/src/libjasper/base/jas_malloc.c jasper/src/libjasper/include/jasper/jas_string.h jasper/src/libjasper/include/jasper/jas_malloc.h jasper/src/libjasper/jpc/jpc_mqenc.h jasper/src/libjasper/pgx/pgx_cod.c jasper/src/libjasper/jpc/jpc_bs.h jasper/src/libjasper/jpc/jpc_t1enc.c jasper/src/libjasper/jpc/jpc_enc.h jasper/src/libjasper/jpg/jpg_enc.c jasper/src/libjasper/pgx/pgx_cod.h jasper/src/libjasper/jpc/jpc_t1enc.h jasper/src/libjasper/jpg/jpg_enc.h jasper/src/libjasper/include/jasper/jas_version.h jasper/src/libjasper/include/jasper/jas_seq.h jasper/src/libjasper/jpc/jpc_mqdec.c jasper/src/libjasper/include/jasper/jas_math.h jasper/src/libjasper/base/jas_stream.c jasper/src/libjasper/jpc/jpc_flt.h jasper/src/libjasper/jpc/jpc_dec.c jasper/src/libjasper/include/jasper/jas_stream.h jasper/src/libjasper/base/jas_icc.c jasper/src/libjasper/jpc/jpc_mqdec.h jasper/src/libjasper/jpc/jpc_t1dec.c jasper/src/libjasper/jpc/jpc_dec.h jasper/src/libjasper/pnm/pnm_enc.c jasper/src/libjasper/jpg/jpg_dec.c jasper/src/libjasper/jp2/jp2_enc.c jasper/src/libjasper/jpc/jpc_mqcod.c jasper/src/libjasper/jpc/jpc_t1dec.h jasper/src/libjasper/pnm/pnm_enc.h jasper/src/libjasper/base/jas_tvp.c jasper/src/libjasper/jpc/jpc_mqcod.h jasper/src/libjasper/jpc/jpc_t1cod.c jasper/src/libjasper/jpc/jpc_cod.h jasper/src/libjasper/jpc/jpc_t2enc.c jasper/src/libjasper/jpc/jpc_util.c jasper/src/libjasper/jpc/jpc_t1cod.h jasper/src/libjasper/jpc/jpc_t2enc.h jasper/src/libjasper/jpc/jpc_util.h jasper/src/libjasper/jpg/jpg_cod.h jasper/src/libjasper/jpc/jpc_mct.c jasper/src/libjasper/include/jasper/jas_image.h jasper/src/libjasper/include/jasper/jas_debug.h jasper/src/libjasper/pnm/pnm_dec.c jasper/src/libjasper/jpc/jpc_mct.h jasper/src/libjasper/include/jasper/jas_config_win32.h jasper/src/libjasper/jpc/jpc_math.c jasper/src/libjasper/jp2/jp2_dec.c jasper/src/libjasper/jpg/jpg_jpeglib.h jasper/src/libjasper/jpc/jpc_math.h jasper/src/libjasper/jp2/jp2_dec.h jasper/src/libjasper/base/jas_cm.c jasper/src/libjasper/include/jasper/jas_icc.h jasper/src/libjasper/include/jasper/jas_cm.h jasper/src/libjasper/jpc/jpc_t2dec.c jasper/src/libjasper/pnm/pnm_cod.c jasper/src/libjasper/base/jas_init.c jasper/src/libjasper/jp2/jp2_cod.c jasper/src/libjasper/include/jasper/jas_config.h jasper/src/libjasper/jpc/jpc_t2dec.h jasper/src/libjasper/pnm/pnm_cod.h jasper/src/libjasper/jp2/jp2_cod.h jasper/src/libjasper/bmp/bmp_enc.c jasper/src/libjasper/include/jasper/jas_tvp.h jasper/src/libjasper/jpc/jpc_t2cod.c jasper/src/libjasper/bmp/bmp_enc.h jasper/src/libjasper/jpc/jpc_t2cod.h jasper/src/libjasper/base/jas_image.c jasper/src/libjasper/base/jas_debug.c jasper/src/libjasper/include/jasper/jas_fix.h jasper/src/libjasper/ras/ras_enc.c jasper/src/libjasper/include/jasper/jasper.h jasper/src/libjasper/ras/ras_enc.h jasper/src/libjasper/jpc/jpc_tsfb.c jasper/src/libjasper/bmp/bmp_dec.c jasper/src/libjasper/jpc/jpc_tsfb.h jasper/src/libjasper/mif/mif_cod.c]</p>
</blockquote>

<p><strong><a name="2009-02-16T195809.175955Z"></a>
2009-02-16T19:58:09.175955Z Ralph Giles</strong></p>
<blockquote>
<pre>
Convert a jasper source file to unix line endings. Bug 690292.
</pre>
<p>[jasper/src/libjasper/jpc/jpc_qmfb.c]</p>
</blockquote>

<p><strong><a name="2009-02-14T004658.521562Z"></a>
2009-02-14T00:46:58.521562Z Ralph Giles</strong></p>
<blockquote>
<pre>
Don't strip dynamic driver modules when linking them.

This is better done at the install or packaging stages if space is a 
concern.

Also, propagate LDFLAGS to the link command line. This may or may not be 
what you want, but is more likely to help helpful than not.

After a patch by Kevin Pyle. Bug 690288. Originally Gentoo bug 215913.
</pre>
<p>[base/devs.mak]</p>
</blockquote>

<p><strong><a name="2009-02-13T092234.492616Z"></a>
2009-02-13T09:22:34.492616Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (TrueType interpreter): Ignore a 'faulty font' condition

Details:
bug #689760 &quot;Missing characters: Failed to interpret TT instructions&quot;

The font in question is technically invalid. The problem occurs in function 1 of the
FPGM table:

	00069: PUSHB[2]              0    21 
	00072: JMPR       
	00073: ABS        
	00074: DUP        
	00075: ROLL       
	00076: RCVT       
	00077: DUP        
	00078: ROLL       
	00079: SUB        
	00080: ABS        
	00081: PUSHB[1]             50 
	00083: LT         
	00084: IF         
	00085: SWAP       
	00086: EIF        
	00087: POP        
	00088: ROUND[Black] 
	00089: PUSHB[1]             64 
	00091: MAX        
	00092: ENDF       

The JMPR (jump relative) instruction is intended to resume execution at the ENDF
instruction, but the number of bytes is miscounted, falling of the end of the function.
I suspect some TT interpreters catch this by spotting the fact that the IP is past the
end of the function.

We don't seem to be able to check if we've fallen off a function, because we don't store
function lengths, so this code works around the problem by checking the opcode after we
apply the JMPR but befopre resuming execution. If the opcode is *not* ENDF, but the 
preceding opcode was, assume that we have a counting problem, and move the IP back one
instruction.

Also applied the same work around to JROT and JROF instructions.

</pre>
<p>[base/ttinterp.c]</p>
</blockquote>

<p><strong><a name="2009-02-12T210753.759360Z"></a>
2009-02-12T21:07:53.759360Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Limit the length of a buffer string for CCITTFaxEncode compression in
Type 32 font to 65535. Old code used worst case estimation (5x expansion)
that exceeded maximum string size for large glyphs. Bug 690286.

</pre>
<p>[Resource/Init/gs_typ32.ps]</p>
</blockquote>

<p><strong><a name="2009-02-11T203513.542448Z"></a>
2009-02-11T20:35:13.542448Z Henry Stiles</strong></p>
<blockquote>
<pre>
Revert the last change which was completely wrong.  The system does
not support depth 3 as Ray pointed out.  As it turns out the depth is
corrected so there is no difference in output between the two
configurations.
</pre>
<p>[base/gdevbit.c]</p>
</blockquote>

<p><strong><a name="2009-02-11T193742.026795Z"></a>
2009-02-11T19:37:42.026795Z Henry Stiles</strong></p>
<blockquote>
<pre>
The default bitrgb device prototype specified a depth of 4 instead of
3.  This change will break all regression tests that use bitrgb
(hopefully).
</pre>
<p>[base/gdevbit.c]</p>
</blockquote>

<p><strong><a name="2009-02-11T154125.950909Z"></a>
2009-02-11T15:41:25.950909Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (TrueType interpreter): Ignore a 'faulty font' error

Details:
bug #689471 &quot;Error in Processing Type42 Charstrings&quot;

The font in question is missing a glyph in the GLYF table, which is used 
as a component by a composite glyph. A later instruction then tries to access 
a non-existent point (probably defined in the missing component), which causes
an error.

FreeType 1 and 2 both ignore this error unless pedantic_hinting is set, other
TrueType interpreters behave similarly.

Modified the code in Ins_MIAP to ignore errors of this type, and continue.

</pre>
<p>[base/ttinterp.c]</p>
</blockquote>

<p><strong><a name="2009-02-10T195540.527955Z"></a>
2009-02-10T19:55:40.527955Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move some components of the freetype bridge to the interpreter source 
directory.

These should have been put there in the source tree reorganization.
</pre>
<p>[base/write_t1.c base/wrfont.c base/write_t2.c psi/write_t1.c psi/wrfont.c psi/write_t2.c base/write_t1.h base/wrfont.h base/write_t2.h psi/write_t1.h psi/wrfont.h psi/write_t2.h]</p>
</blockquote>

<p><strong><a name="2009-02-10T173802.642910Z"></a>
2009-02-10T17:38:02.642910Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Make the font cache determinstic.

Details:

Previously the font cache order was based on the value of the pair
pointer.  On some (most?) computers this resulted in the cache being
filled in a deterministic way but not on the the cluster used for
regression testing.  The cache fill order is important because it
affects which entries are removed when the cache is full which
matters because re-rendered glyphs can differ from the cached
rendering (a separate bug, 690281, has been opened for this issue).

Fixes bugs 690232 and 690233.

</pre>
<p>[base/gxfcache.h base/gsfont.c base/gxccman.c]</p>
</blockquote>

<p><strong><a name="2009-02-10T115630.899368Z"></a>
2009-02-10T11:56:30.899368Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (graphics library): Rotated/skewed text not anti-aliased

Details:
bug #688032 &quot;Rotated text is not antialiased.&quot;

A specific test in 'show_set_scale' disabled oversampling of text if it was
rotated or skewed. Testing indicates that anti-aliasing does provide some improvement 
in text, even when it is rotated or skewed, so this test has been removed.

Also removed the compile-time option to not cache rotated glyphs by removing the
#define CACHE_ROTATED_CHARS and the test against it in show_state_setup. This allowed
the removal of the routine 'is_matrix_good_for_caching'.

</pre>
<p>[base/gxchar.c]</p>
</blockquote>

<p><strong><a name="2009-02-10T021730.702347Z"></a>
2009-02-10T02:17:30.702347Z Ralph Giles</strong></p>
<blockquote>
<pre>
Propagate LDFLAGS when linking the pdftoraster utility. Bug 690279.

Also, move the cups link libraries to the end of the command line
for tools that require dependency order.
</pre>
<p>[cups/cups.mak]</p>
</blockquote>

<p><strong><a name="2009-02-09T221820.864249Z"></a>
2009-02-09T22:18:20.864249Z Ralph Giles</strong></p>
<blockquote>
<pre>
Protect some printf-like calls in the pcl3 output device from spurious
format specifiers. This eliminates a security-related gcc warning.

Details:

I believe the previous code was actually safe. However, this approach is
more robust. If any of the string buffers passed to errprintf() happened
to contain a format specifier (like %d) an out of bounds stack reference
could result.

This allows the default build to complete with -Werror=format-security,
which the Mandriva linux distribution is reported to be using.
</pre>
<p>[contrib/pcl3/eprn/gdeveprn.c contrib/pcl3/src/gdevpcl3.c]</p>
</blockquote>

<p><strong><a name="2009-02-09T221818.594295Z"></a>
2009-02-09T22:18:18.594295Z Ralph Giles</strong></p>
<blockquote>
<pre>
Have gs_throw_code() print the corresponding error string literally to
avoid interpretation of spurious format specifiers. This removes a
security-related gcc warning.

Details:

The previous code was safe. gs_(re)throw_code() called gs_errstr() to
convert the code to a printable string, and these contain no format
specifiers. However, the new method is more robust, and allows
compilation with -Werror=format-security which Madriva is reportedly
using by default.
</pre>
<p>[base/gserror.h]</p>
</blockquote>

<p><strong><a name="2009-02-09T003235.099915Z"></a>
2009-02-09T00:32:35.099915Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add a reference to doc/Use.htm#CIDFontSubstitution to the message about
CIDFont substitution based on registery and ordering data. Bug 690102.

</pre>
<p>[Resource/Init/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2009-02-08T060554.380114Z"></a>
2009-02-08T06:05:54.380114Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Correct handling of the operand stack overflow requires one more element than
the normal case. The maximum operand stack size has been reduced by 1 element
relatively to the size set by rev. 6889 for the bug 688764. Bug 690209.

</pre>
<p>[Resource/Init/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2009-02-06T191754.834304Z"></a>
2009-02-06T19:17:54.834304Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for 0 length files from the bit*** devices when -dLastLine was not set.
The LastLine now defaults to the last line of the page (height-1). Bug 690217.
Thanks to Piotr Strzelczyk for spotting this.

DETAILS:

Note that this prevents output of a single line at the top (line 0), but this
was mostly just for testing to emulate custom devices that only call 'get_bits'
on less than all of the lines which had the potential to confuse the thread
lookahead prediction logic in the multi-threaded rendering case.
</pre>
<p>[base/gdevbit.c]</p>
</blockquote>

<p><strong><a name="2009-02-05T132910.275517Z"></a>
2009-02-05T13:29:10.275517Z Ken Sharp</strong></p>
<blockquote>
<pre>
New feature (pswrite): Center pages on output, new switch -dCenterPages

Details:
bug #690100 &quot;Enhancement request: create centered output when reading PDF&quot;

Added a new switch to the collection of media handling controls supported by ps2write. The new CenterPages switch will center the output image on the media, regardless of the size of the media (if the output is larger than the media it will be truncated, but the image will still be centered on the media).

This switch is compatible with the RotatePages control, but not with SetPageSize or FitPages. Like the other switches it can be set as an argument to ps2write when creating a PostScript file (which fixes the result) or it can be supplied to the consuming interpreter in some fashion.

Updated ps2ps2.htm with the new details.

</pre>
<p>[doc/Ps2ps2.htm base/gdevpdfx.h base/gdevpdfp.c Resource/Init/opdfread.ps base/gdevpdfu.c]</p>
</blockquote>

<p><strong><a name="2009-02-04T084521.899308Z"></a>
2009-02-04T08:45:21.899308Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Limit on CIDFont size too low

Details:
bug #688736 &quot;ps2pdf does not work on these files&quot;

The 'remaining' issue in these files is the 'error -15' problem. This is caused when writing out a subset CIDFont, and the subset grows to be a large font in its own right.

The way that CFF fonts are written, there is interaction between certain parts. The offset of various tables depends on the size of the Top Dict, but the Top Dict contains the offsets of the CharStrings and the CharSet, so its size is partially dependent on those offsets....

The code in psf_write_cid0_font() initially assigns large values (0x7fffff) to the offsets, then iterates over the data quickly converging on a suitable size of offset, which allows calculation of the Top Dict. 

The problem was that 0x7fffff was too small for the offset of the Font Dict, (which comes after the CharStrings) if the CharStrings table was very large (~8MB). While this is probably adequate in 'real life', because its unlikely a real job would contain so many different glyphs, it is simple to solve by increasing the original 'guess' from 0x7fffff to 0x1ffffff (~32MB), which should be enough for any font.

</pre>
<p>[base/gdevpsf2.c]</p>
</blockquote>

<p><strong><a name="2009-02-04T084440.067265Z"></a>
2009-02-04T08:44:40.067265Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pswrite): Incorrect A3 page size

Details:
bug #690259 &quot;A3 pagesize pointsize definition wrong in gdevpsu.c&quot;

The definition of the A3 paper size was 842 by 1190 in psw_write_page_header(). The definitions elsewhere in GS have a height of 1191 (which is closer to the ISO metric paper size).

Modified the page height to be 1191, also modified the media matching code so that it allows +/- 5 points when matching media.

Thanks to Roland Friedwagner for debugging the problem and supplying a patch, and to Alex Cherepanov for suggesting the media matching.

</pre>
<p>[base/gdevpsu.c]</p>
</blockquote>

<p><strong><a name="2009-02-04T033935.058845Z"></a>
2009-02-04T03:39:35.058845Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Keep reading the data sources until all of them reach EOF instead of bailing
out when the first one reaches EOF. Different data sources can use different
compression techniques and buffer sizes. The mask in masked images also has
different length than other streams.
Bug 690237, customer 850.

</pre>
<p>[psi/zimage.c]</p>
</blockquote>

<p><strong><a name="2009-02-03T235630.290105Z"></a>
2009-02-03T23:56:30.290105Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add one more header type to the list of possible CFF headers.
Bug 690256, customer 210.

</pre>
<p>[Resource/Init/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2009-02-03T192342.937693Z"></a>
2009-02-03T19:23:42.937693Z Ralph Giles</strong></p>
<blockquote>
<pre>
Bump version number and product name after the 8.64 release.
</pre>
<p>[base/gscdef.c base/version.mak Resource/Init/gs_init.ps doc/News.htm]</p>
</blockquote>

<p><strong><a name="2009-02-03T170341.696119Z"></a>
2009-02-03T17:03:41.696119Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update release date and change logs for the 8.64 release.
</pre>
<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 base/gscdef.c man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Fonts.htm doc/Ps2ps2.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp man/font2c.1 man/gsnd.1 base/version.mak man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]</p>
</blockquote>

<p><strong><a name="2009-02-02T191301.319812Z"></a>
2009-02-02T19:13:01.319812Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update change logs and release date for 8.64rc3.
</pre>
<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/Changes.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Ps2ps2.htm doc/Fonts.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp man/font2c.1 man/gsnd.1 base/version.mak man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Details.htm doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]</p>
</blockquote>

<p><strong><a name="2009-02-02T085811.805173Z"></a>
2009-02-02T08:58:11.805173Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix broken bbox device caused by the 'fillpage' commit of rev 9288. This
resolves bug 690260 and other cases where the bbox was all 0's.

DETAILS:

When the 'RECT_IS_PAGE' check was removed, the BBOX_INIT_BOX function was
invoked unconditionally MUCH too often, leading to an empty bbox (0's)
which also caused the x11 device to not update many areas from the under-
lying image24 buffer to the screen. The 'BBOX_INIT_BOX' should only be
needed when the params change the geometry or when 'fillpage' is done.
</pre>
<p>[base/gdevbbox.c]</p>
</blockquote>

<hr>

<h2><a name="Version8.64"></a>Version 8.64 (2009-02-02)</h2>

<p>
This is the fifth scheduled release in the stable Ghostscript 8.6x 
series. 

<p>
Approximately 100 bugs have been fixed since the 8.63 release.

<p>
Of particular note in this release are improvements to overprint and 
spot color support in documents with transparency, improvements to PDF 
and PS output, proper handling of PDF-specific text rendering modes and 
support for reading AES-encrypted PDF documents.

<p>
Also improved is handling of CJK text, especially in vertical writing 
modes, memory footprint processing some files at high resolution and 
support for using the system's default paper size on unix.

<p>
The interpreter's handling of color spaces has been moved from 
PostScript code to C.

<p>
A number of the included printer drivers and cups wrappers have been 
updated to support a PDF-based workflow. Also fixed are several 
long-standing bugs in the pcl drivers with respect to duplex, resolution 
and paper tray selection.

<p> The following <a href="http://bugs.ghostscript.com/">bugs</a> were
open at the time of the last release: <blockquote>
226943,
430175,
465936,
493348,
535932,
578865,
614298,
626295,
686853,
686865,
687011,
687084,
687095,
687146,
687193,
687257,
687271,
687280,
687295,
687297,
687303,
687327,
687375,
687414,
687475,
687492,
687514,
687520,
687536,
687561,
687593,
687608,
687630,
687650,
687666,
687674,
687677,
687695,
687697,
687702,
687715,
687721,
687728,
687731,
687775,
687780,
687782,
687793,
687796,
687805,
687850,
687887,
687903,
687904,
687915,
687931,
687950,
687981,
687983,
688007,
688022,
688024,
688026,
688032,
688036,
688042,
688061,
688064,
688081,
688130,
688166,
688184,
688187,
688204,
688210,
688215,
688227,
688267,
688269,
688280,
688288,
688312,
688318,
688320,
688333,
688342,
688361,
688363,
688372,
688386,
688387,
688389,
688395,
688413,
688436,
688437,
688440,
688448,
688473,
688475,
688483,
688495,
688500,
688515,
688528,
688533,
688539,
688540,
688542,
688557,
688565,
688580,
688581,
688601,
688604,
688605,
688607,
688616,
688617,
688627,
688636,
688638,
688647,
688651,
688655,
688673,
688699,
688708,
688709,
688710,
688714,
688728,
688731,
688736,
688757,
688777,
688797,
688818,
688829,
688843,
688846,
688871,
688872,
688908,
688918,
688919,
688926,
688933,
688942,
688949,
688958,
688969,
688978,
688990,
688994,
688999,
689003,
689011,
689013,
689025,
689028,
689031,
689032,
689040,
689044,
689046,
689048,
689057,
689060,
689070,
689076,
689077,
689078,
689081,
689093,
689094,
689098,
689133,
689137,
689145,
689150,
689153,
689161,
689167,
689174,
689184,
689188,
689195,
689198,
689199,
689209,
689222,
689224,
689236,
689247,
689248,
689252,
689253,
689278,
689279,
689280,
689283,
689289,
689290,
689295,
689308,
689331,
689335,
689340,
689341,
689361,
689370,
689376,
689378,
689392,
689396,
689418,
689419,
689421,
689422,
689423,
689438,
689439,
689450,
689451,
689456,
689460,
689471,
689484,
689487,
689489,
689490,
689498,
689500,
689502,
689506,
689507,
689512,
689518,
689522,
689546,
689547,
689549,
689554,
689557,
689560,
689561,
689563,
689566,
689571,
689573,
689574,
689581,
689584,
689585,
689591,
689592,
689595,
689598,
689601,
689606,
689610,
689616,
689623,
689625,
689627,
689632,
689636,
689641,
689653,
689657,
689658,
689663,
689670,
689674,
689681,
689682,
689684,
689689,
689690,
689691,
689697,
689698,
689704,
689705,
689709,
689710,
689711,
689715,
689721,
689725,
689726,
689727,
689734,
689737,
689741,
689747,
689752,
689756,
689759,
689760,
689761,
689767,
689769,
689772,
689775,
689778,
689781,
689786,
689792,
689793,
689794,
689799,
689801,
689805,
689808,
689817,
689822,
689823,
689826,
689835,
689836,
689840,
689853,
689856,
689858,
689859,
689860,
689861,
689862,
689868,
689869,
689870,
689871,
689878,
689883,
689885,
689910,
689915,
689916,
689917,
689928,
689929,
689930,
689931,
689933,
689937,
689938,
689939,
689940,
689941,
689942,
689943,
689947,
689950,
689951,
689952,
689957,
689968,
689969,
689972,
689974,
689980,
689986,
689991,
689996,
689997,
690003,
690005,
690006,
690007,
690009,
690020,
690022,
690024,
690025,
690026,
690029,
690033,
690036,
690043,
690047,
690051,
690053,
690054,
690056,
690057,
690058,
690061,
690066,
690068,
690069,
690073,
690083,
690084,
690085,
690093,
690094,
690098,
690100,
690102,
690110,
690115,
690119,
690123,
690125,
690126,
690131,
690132,
690137,
690143,
690146,
690157,
690160,
690162,
690170,
690171,
690174,
690176,
690180,
690182,
690183,
690184,
690185,
690189,
690191,
690192,
690199,
690200,
690203,
690207,
690208,
690209,
690212,
690213,
690214,
690216,
690218,
690224,
690225,
690226,
690229,
690230,
690232,
690233,
690234,
690235,
690237,
690238,
690239,
690241,
690246,
690247,
690248,
690249,
690250,
690251,
690253,
690256,
690259,
690261,
690262,
690263,
690264.
</blockquote>

<h3><a name="8.64_Incompatible_changes"></a>Incompatible changes</h3>

<p>
In this release the C source files have been split into two new 
directories. Interpreter source files are now in <tt>psi</tt> and the 
graphics library and output devices are now in <tt>base</tt>. Previously 
everything was in <tt>src</tt>. This may cause problems with existing 
references in external build files or when applying patches generated 
against an older version.

<p>
The compiled in font set in Resource/Fonts has been updated to the 
version from the 8.11 release. This is the same set which was 
recommended prior to the 8.63.

<h3><a name="8.64_changelog"></a>Changelog</h3>

<p><strong><a name="2009-02-02T085811.805173Z"></a>
2009-02-02T08:58:11.805173Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix broken bbox device caused by the 'fillpage' commit of rev 9288. This
resolves bug 690260 and other cases where the bbox was all 0's.

DETAILS:

When the 'RECT_IS_PAGE' check was removed, the BBOX_INIT_BOX function was
invoked unconditionally MUCH too often, leading to an empty bbox (0's)
which also caused the x11 device to not update many areas from the under-
lying image24 buffer to the screen. The 'BBOX_INIT_BOX' should only be
needed when the params change the geometry or when 'fillpage' is done.
</pre>
<p>[base/gdevbbox.c]</p>
</blockquote>

<p><strong><a name="2009-02-02T085201.582216Z"></a>
2009-02-02T08:52:01.582216Z Ray Johnston</strong></p>
<blockquote>
<pre>
Revert the patch of 9314 that caused a problem with the Ubuntu bug 160203
(https://bugs.launchpad.net/ubuntu/+source/ghostscript/+bug/160203). This
patch appears to be a fix for a much older (~2004) version of gs and should
not be needed as of rev 8161 that resolved segfaults when there is a NULL
get_color_mapping_procs pointer. The mapping of 'black' and 'white' is
needed to properly allow for non-white painting in the bbox device to
avoid 0 0 0 0 BoundingBox.
</pre>
<p>[base/gdevbbox.c]</p>
</blockquote>

<p><strong><a name="2009-01-30T211055.690493Z"></a>
2009-01-30T21:10:55.690493Z Russell Lang</strong></p>
<blockquote>
<pre>
Add the default papersize module to the OS/2 build.
</pre>
<p>[psi/os2.mak]</p>
</blockquote>

<p><strong><a name="2009-01-27T230437.869301Z"></a>
2009-01-27T23:04:37.869301Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the directory listing the license for the source code
reorganization.
</pre>
<p>[LICENSE]</p>
</blockquote>

<p><strong><a name="2009-01-27T224023.384111Z"></a>
2009-01-27T22:40:23.384111Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update internal copyright string.
</pre>
<p>[base/gscdef.c]</p>
</blockquote>

<p><strong><a name="2009-01-27T210023.120021Z"></a>
2009-01-27T21:00:23.120021Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update changelogs and release dates for 8.64rc2.
</pre>
<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/Changes.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Ps2ps2.htm doc/Fonts.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp man/font2c.1 man/gsnd.1 base/version.mak man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Details.htm doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]</p>
</blockquote>

<p><strong><a name="2009-01-27T205054.789641Z"></a>
2009-01-27T20:50:54.789641Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the release notes for 8.64rc2.

The x11alpha issue has been worked around.

Add some comments from Till Kamppeter.
</pre>
<p>[doc/News.htm]</p>
</blockquote>

<p><strong><a name="2009-01-27T204339.460217Z"></a>
2009-01-27T20:43:39.460217Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix fillpage in the x11alpha device.

This reverts an incorrect code change which prevented the fillpage
method of the x11alpha device from clearing the buffer. Bug 690255.

Details:

In r9288, a new fillpage method was added. This is a stub in printer
devices, but is overridden to detect page flushes in some high
level devices. That commit included incomplete changes to gdevxini.c
which didn't compile. Alex suggested a fix in 690202, which was
committed as r9294 after approval from the author of 9288. This was
what broke page clearing in the x11alpha device.

This commit removes the changes both commits made to the x11 devices and
restores gdevxini.c to its state prior as of r9287.
</pre>
<p>[base/gdevxini.c]</p>
</blockquote>

<p><strong><a name="2009-01-27T204337.567128Z"></a>
2009-01-27T20:43:37.567128Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update documentation on the COMPILE_INITS makefile variable.
In particular, it's normally no longer 0.

Thanks to Ken Sharp for pointing this out.
</pre>
<p>[base/gs.mak]</p>
</blockquote>

<p><strong><a name="2009-01-27T204333.967975Z"></a>
2009-01-27T20:43:33.967975Z Ralph Giles</strong></p>
<blockquote>
<pre>
Escape significant characters when generating html changelog entries.
</pre>
<p>[toolbin/split_changelog.py]</p>
</blockquote>

<p><strong><a name="2009-01-27T001829.136711Z"></a>
2009-01-27T00:18:29.136711Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove &#36;(GS_LIB)\Resource directory from the search path in the msvc 
build to shadowing the compiled in version.

GS_LIB is set in the Windows registery by the installer, but it does not 
currently install a duplicate copy of the Resource tree in the 
filesystem. Having this directory in the search path caused Ghostscript 
to use it for Resource lookup to the exclusion of the %rom% version, and 
since the files weren't installed there, Ghostscript would error out in 
the initialization phase.

Files like cidfmap and available fonts can still be overridden by 
putting them in &#36;(GS_LIB)\lib and &#36;(GS_LIB)\fonts.

Patch from Russell Lang.
</pre>
<p>[psi/dwsetup.cpp]</p>
</blockquote>

<p><strong><a name="2009-01-26T192528.295228Z"></a>
2009-01-26T19:25:28.295228Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update changelogs for 8.64rc1.
</pre>
<p>[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]</p>
</blockquote>

<p><strong><a name="2009-01-26T185939.072673Z"></a>
2009-01-26T18:59:39.072673Z Ralph Giles</strong></p>
<blockquote>
<pre>
Release notes for 8.64rc1.
</pre>
<p>[doc/News.htm]</p>
</blockquote>

<p><strong><a name="2009-01-26T180553.102397Z"></a>
2009-01-26T18:05:53.102397Z Ralph Giles</strong></p>
<blockquote>
<pre>
Propagate release number and date to the documentation.
</pre>
<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Fonts.htm doc/Ps2ps2.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp man/font2c.1 man/gsnd.1 man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]</p>
</blockquote>

<p><strong><a name="2009-01-26T180416.208144Z"></a>
2009-01-26T18:04:16.208144Z Ralph Giles</strong></p>
<blockquote>
<pre>
Bump release numbers and copyright dates for 8.64rc1.
</pre>
<p>[base/gscdef.c base/version.mak doc/News.htm psi/dwsetup.rc psi/winint.mak doc/Release.htm]</p>
</blockquote>

<p><strong><a name="2009-01-26T180243.525231Z"></a>
2009-01-26T18:02:43.525231Z Ralph Giles</strong></p>
<blockquote>
<pre>
Work around an issue with comment parsing in the pre.tcl release script.

My tclsh seems to be broken.
</pre>
<p>[toolbin/pre.tcl]</p>
</blockquote>

<p><strong><a name="2009-01-26T180241.107170Z"></a>
2009-01-26T18:02:41.107170Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the pre.tcl release script for the new source locations.
</pre>
<p>[toolbin/pre.tcl]</p>
</blockquote>

<p><strong><a name="2009-01-26T180237.633990Z"></a>
2009-01-26T18:02:37.633990Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the pre.tcl release script for the new gs_init.ps location.

The essential ps library files were moved from lib to Resource/Init for
clarity and simpler behavior with compile-inits.
</pre>
<p>[toolbin/pre.tcl]</p>
</blockquote>

<p><strong><a name="2009-01-26T173336.155851Z"></a>
2009-01-26T17:33:36.155851Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pswrite): Incorrect PageBoundingBox comment location

Details:
The new %%PageBoundingBox comment was being emitted between a %%BeginPageSetup and %%EndPageSetup comment pair, which was causing it to be ignored by CUPS.

Moved the bounding box in front of the page setup comment

</pre>
<p>[base/gdevpsu.c]</p>
</blockquote>

<p><strong><a name="2009-01-26T171647.546837Z"></a>
2009-01-26T17:16:47.546837Z Ken Sharp</strong></p>
<blockquote>
<pre>
Yet more tidying up in the batch file. Adds release builds to the solution, better directory handling, a usage comment in the batch file and, if invoked without parameters, a usage printout for the user.</pre>
<p>[toolbin/msvcxml.bat]</p>
</blockquote>

<p><strong><a name="2009-01-25T065945.428302Z"></a>
2009-01-25T06:59:45.428302Z Ralph Giles</strong></p>
<blockquote>
<pre>
Make the GS_SPLIT_LIBS configure function only recognize -l at the start 
of an argument, to avoid false positives from hyphens inside linker 
arguments. Bug 690254.
</pre>
<p>[base/configure.ac]</p>
</blockquote>

<p><strong><a name="2009-01-24T093146.808669Z"></a>
2009-01-24T09:31:46.808669Z Ken Sharp</strong></p>
<blockquote>
<pre>
This batch file, to generate a MSVC solution for building GS, was invalidated by the source re-organisation, and the inclusion of the resources in a ROM file system.

Fixed various aspects so that it now works again, basically.</pre>
<p>[toolbin/msvcxml.bat]</p>
</blockquote>

<p><strong><a name="2009-01-24T090550.373013Z"></a>
2009-01-24T09:05:50.373013Z Ken Sharp</strong></p>
<blockquote>
<pre>
Add a check when comparing clip paths to see if both are NULL. Silences a Coverity warning and one day might conceivably prevent a crash.</pre>
<p>[base/gdevpdfd.c]</p>
</blockquote>

<p><strong><a name="2009-01-23T225302.093705Z"></a>
2009-01-23T22:53:02.093705Z Ralph Giles</strong></p>
<blockquote>
<pre>
Convert 24 bit RGB data to grayscale when printing in monochrome with
eplaser device. Previously the RGB data was sent as is, resulting in
a stretched and truncated page image.

Patch from Olaf Meeuwissen. Bug 690252.
</pre>
<p>[contrib/eplaser/gdevescv.c]</p>
</blockquote>

<p><strong><a name="2009-01-23T190440.484432Z"></a>
2009-01-23T19:04:40.484432Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Continue the the fix from rev. 9384, plug 2 more ways that caused multiple
inclusion of page objects into the linearized file. Bug 690140, customer 932.

</pre>
<p>[lib/pdfopt.ps]</p>
</blockquote>

<p><strong><a name="2009-01-23T031005.467096Z"></a>
2009-01-23T03:10:05.467096Z Ralph Giles</strong></p>
<blockquote>
<pre>
Use the page parameters set on the X11 device when called by Ghostview.

This patch allows gv to control the output page parameters, overriding
document and gs default settings. Since it has been tested in the
Debian distribution and is contingent on being wrapped by the viewer,
I consider it low risk.

Original patch by William Bader. Bug 688943.
</pre>
<p>[base/gdevxini.c]</p>
</blockquote>

<p><strong><a name="2009-01-22T135318.843673Z"></a>
2009-01-22T13:53:18.843673Z Ken Sharp</strong></p>
<blockquote>
<pre>
Initialise two uninitialised variables. Not thought to be a real problem, but worth making certain. Flagged by Coverity.</pre>
<p>[base/gdevpsf1.c base/gdevpsfx.c]</p>
</blockquote>

<p><strong><a name="2009-01-22T131507.920292Z"></a>
2009-01-22T13:15:07.920292Z Ken Sharp</strong></p>
<blockquote>
<pre>
Check the return value of gdev_prepare_stroke. Another warning from Coverity.
</pre>
<p>[base/gdevps.c]</p>
</blockquote>

<p><strong><a name="2009-01-22T025301.653019Z"></a>
2009-01-22T02:53:01.653019Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix multiple inclusion of page objects referenced from beads array.
Bug 690140, customer 932.

</pre>
<p>[lib/pdfopt.ps]</p>
</blockquote>

<p><strong><a name="2009-01-22T014831.483983Z"></a>
2009-01-22T01:48:31.483983Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for Segfault with tiffsep devics when a file has more than 64 spot colors
and uses transparency. Clean up indentations to C-style. Problem seen with
Bug 690157.

DETAILS:

The number of channels needed in the pdf14 device is one greater than the
number of separations, to allow for the alpha channel (gxblend.h) and the
'comps' variable needs to be at a gx_color_index size to avoid truncation.

Note that the output from tiffsep and psdcmyk is still incorrect -- there
is a gray background in the black channel that is not expected. Also, the
color swatches defined as Alternate colors do not appear in the output,
only the Separations and the device (process) colors.

Also note that this does not address comment #5 from bug 690157 since the
default behavior when the maximum number of separations is reached is to
silently use the Alternate color.

This patch is primarily designed to cure the segfault (buffer OOB) issue.
</pre>
<p>[base/gdevp14.c base/gxblend.h]</p>
</blockquote>

<p><strong><a name="2009-01-22T011735.554315Z"></a>
2009-01-22T01:17:35.554315Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Check for and skip null objects (and other junk) in the /Anots array.
Bug 690244.

</pre>
<p>[Resource/Init/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2009-01-21T153455.892148Z"></a>
2009-01-21T15:34:55.892148Z Ken Sharp</strong></p>
<blockquote>
<pre>
Add a couple of error return checks which were missing. Picked up by Coverity.</pre>
<p>[psi/zcolor.c psi/zicc.c]</p>
</blockquote>

<p><strong><a name="2009-01-19T111305.930829Z"></a>
2009-01-19T11:13:05.930829Z Ken Sharp</strong></p>
<blockquote>
<pre>
Revision 8951 missed an important part of the fix for pswrite, emitting a %%PageBoundingBox for each
page of the output.</pre>
<p>[base/gdevpsu.c]</p>
</blockquote>

<p><strong><a name="2009-01-19T094756.340575Z"></a>
2009-01-19T09:47:56.340575Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pswrite): %%BoundingBox comment geenration
   (ps2write): media selection and %%BoundingBox generation

Details:
bug #690236 &quot;Ghostscript is not able to convert PDF to PostScript 
maintaining the input document's page sizes&quot;

The pswrite bug is actually in the consuming applications, which are unable to 
process the media selection requests in the pswrite output and instead use DSC
comments to select the media. pswrite attempts to use the bbox deice to generate a
%%BoundingBox comment, but because this is a high-level device, no marks are made, so 
the BoundingBox is 0 0 0 0. 

Fixed by using the media size instead if this case is detected.


ps2write did not generate a %%BoundingBox, or any other DSC comment at all, because it
does not produce DSC PostScript (there is a request to address this already #690064).
Also the media selection in the ps2write output is disabled by default, forcing users
to find some means to set particular keys in userdict on the target device.

Fixed by emitting a %%BoundingBox equal to the media size of the first page (NB as
this is not DSC, other pages will be selected incorrectly if this is all the
application uses). Also allow the use of the /SetPageSize, /RotatePages and /FitPages
keys during ps2write processing to emit a PostScript file with these keys already
set, thus allowing media selection to take place without further user intervention.

</pre>
<p>[doc/Ps2ps2.htm base/gdevpdfx.h base/gdevpsu.c base/gdevpdfp.c base/gdevpdfu.c base/gdevpdfb.h]</p>
</blockquote>

<p><strong><a name="2009-01-18T195758.223740Z"></a>
2009-01-18T19:57:58.223740Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix SEGV in 'inferno' device caused by insufficient memory allocation. Pass
correct device type to prn_device_body() macro. thanks to Wendy for the patch.

</pre>
<p>[base/gdevifno.c]</p>
</blockquote>

<p><strong><a name="2009-01-16T183848.474888Z"></a>
2009-01-16T18:38:48.474888Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Invalid metadata for PDF/A output

Details:
bug #690046 &quot;Ghostscript doesn't produce valid PDF/A-1B files&quot;

Now that we have an example file, the remaining issues are resolved:

1) The recommended tags for font metadata in the ISO spec are not present in the XMP schema, resulting in Acrobat preflight complaining. Distiller does not (and never has, apparently) write font metadata for PDF/A files, and the spec says only that files 'should' contain metadata. For now we disable writing font metadata to match Distiller.

2) When converting TrueType fonts into CIDFonts, for PDF/A compatability, we must also write a CIDSet resource. The code was creating and initialising a table containing an explicit 256 entries, but the CIDSet resource was writing as many entries as there are glyphs in the base font. If this was larger we wrote uninitialised data to the CIDSet. Altererd to create and initialise a table the size of the number of glyphs in the base font.

</pre>
<p>[base/gdevpdtd.c base/gdevpdfe.c]</p>
</blockquote>

<p><strong><a name="2009-01-16T050344.102465Z"></a>
2009-01-16T05:03:44.102465Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move the font api bridge implementations to the psi directory.

Bug 690231, fixes the language switch build with ufst.

These are referenced from int.mak and depend on interpreter-level 
headers. So while the font api should be part of the graphics library, 
these files actually belong in the interpreter.
</pre>
<p>[psi/fapi_ft.c base/fapiufst.c psi/fapiufst.c base/fapi_ft.c]</p>
</blockquote>

<p><strong><a name="2009-01-15T152239.193218Z"></a>
2009-01-15T15:22:39.193218Z Ken Sharp</strong></p>
<blockquote>
<pre>
Update a comment to say why the minimum file size is 4KB</pre>
<p>[lib/pdfopt.ps]</p>
</blockquote>

<p><strong><a name="2009-01-15T152015.993430Z"></a>
2009-01-15T15:20:15.993430Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfopt): Minimum optimised file size changed in Acrobat 9

Details:
bug #690210 &quot;Inconsistent &quot;fast web view' results&quot;

It seems Acrobat 9 will decide that any file less than 4Kb in size is not optimised for fast web view, regardless of content. Previous versions of Acrobat insisted on a minimum of 1Kb.

</pre>
<p>[lib/pdfopt.ps]</p>
</blockquote>

<p><strong><a name="2009-01-15T091600.166572Z"></a>
2009-01-15T09:16:00.166572Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite)

Details:
revision 9346 sets the about member of the XMP metadata to empty (&quot;&quot;) unconditionally, this should only be done when writing PDF/A files.

</pre>
<p>[base/gdevpdfe.c]</p>
</blockquote>

<p><strong><a name="2009-01-15T075213.786371Z"></a>
2009-01-15T07:52:13.786371Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix compilation on Windows NT, which doesn't define LOCALE_IPAPERSIZE.

</pre>
<p>[base/gp_wpapr.c]</p>
</blockquote>

<p><strong><a name="2009-01-14T225856.327548Z"></a>
2009-01-14T22:58:56.327548Z Ralph Giles</strong></p>
<blockquote>
<pre>
Check for a null target_info in bbox_image_end_image before
trying to free it. Fixes bug 680019.
</pre>
<p>[base/gdevbbox.c]</p>
</blockquote>

<p><strong><a name="2009-01-14T111524.692365Z"></a>
2009-01-14T11:15:24.692365Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Redundant patterns in clist (continued 7).

DETAILS :

Bug 690228 &quot;pcl6 regression&quot;.

Don't write a pattern in the short form (just tile id)
to the &quot;all bands&quot; list if some bands don't store same tile id.
Otherwise those bands would be confused and try to call pattern_load,
which is not supported while a clist playback. 

</pre>
<p>[base/gxclpath.c]</p>
</blockquote>

<p><strong><a name="2009-01-13T221721.104569Z"></a>
2009-01-13T22:17:21.104569Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Return 0 when accessing Type1C font table out of range or the table is too
short and display a warning if possible. Bug 690050, customer 353.

DETAILS:
Old code smashed the stack when operator read was unsuccessful and failed
shortly afterwards. New code tolerates PDF files produced by 'Exstream
Dialogue', which have Type1C fonts with overlapping tables, which Ghostscript
shortens to non-overlapping length. Thanks to Ray for the origimal patch.

</pre>
<p>[Resource/Init/gs_cff.ps]</p>
</blockquote>

<p><strong><a name="2009-01-13T183837.869412Z"></a>
2009-01-13T18:38:37.869412Z Ray Johnston</strong></p>
<blockquote>
<pre>
Revert .outputattrkeys to the list prior to rev 8026 to fix problems with
Duplex introduced with that change. Bug 690041.

</pre>
<p>[Resource/Init/gs_setpd.ps]</p>
</blockquote>

<p><strong><a name="2009-01-12T193358.722824Z"></a>
2009-01-12T19:33:58.722824Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix a gcc warning in gxshade6.c.

When VD_TRACE is not defined, vdtrace.h defines most of its operations
as DO_NOTHING, but with was not done for vd_restore and vd_disable,
causing compiler warnings in gxshade6.c, where vd_disable is called
as the sole body of an if() statement.

Bug 690204.
</pre>
<p>[base/vdtrace.h]</p>
</blockquote>

<p><strong><a name="2009-01-12T165159.689070Z"></a>
2009-01-12T16:51:59.689070Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Invalid metadata for PDF/A output

Details:
bug #690046 &quot;Ghostscript doesn't produce valid PDF/A-1B files&quot;

This does not, unfortunately, address some of the issues raised in the bug report,
without a sample PostScript file to work from these cannot currently be addressed.

However, there were significant problems with the XMP metadata being written:
1) The rdf attribute 'about' has changed, it is no longer recommended to use a UUID,
it should be left empty or formatted as a URI. Altered to empty.
2) The Adobe parser does not like mix and match of attributes and properties, if we
are setting properties, we can't use (at least some) attributes.
3) The preferred schema namespace prefix for the XMP basic schema is now 'xmp' not
'xap'.
4) Date syntax was incorrect for GMT. XMP specifies *either* 'Z' *or* +/-hh:mm. We
were writing 'Z00:00' (that is, both alternatives).

Also added support for the /Subject and /Keywords elements of the Document Info
dictionary, if these are present, as per the patch from Florian Haenel.

</pre>
<p>[base/gdevpdfe.c]</p>
</blockquote>

<p><strong><a name="2009-01-10T221118.954264Z"></a>
2009-01-10T22:11:18.954264Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Add &quot;-sstdout=%stderr&quot; to scripts that call gs so that they don't corrupt their own output when outputing to stdout (Thanks to Dan Sheridan (djs at adelard dot com), Ubuntu bug #314439).

</pre>
<p>[lib/eps2eps lib/ps2pdfwr lib/ps2ps lib/ps2ps2 lib/dvipdf]</p>
</blockquote>

<p><strong><a name="2009-01-09T085340.554994Z"></a>
2009-01-09T08:53:40.554994Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Added support for GNU Hurd (patch from Debian package).
</pre>
<p>[base/configure.ac]</p>
</blockquote>

<p><strong><a name="2009-01-09T002818.396434Z"></a>
2009-01-09T00:28:18.396434Z Ray Johnston</strong></p>
<blockquote>
<pre>
Correct very minor typo.
</pre>
<p>[Resource/Init/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2009-01-08T212855.852108Z"></a>
2009-01-08T21:28:55.852108Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Small correction on ./configure magic for libpaper.
</pre>
<p>[base/configure.ac]</p>
</blockquote>

<p><strong><a name="2009-01-08T125135.348058Z"></a>
2009-01-08T12:51:35.348058Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Added auto-detection for libpaper to the configure script
</pre>
<p>[base/configure.ac]</p>
</blockquote>

<p><strong><a name="2009-01-08T124328.851914Z"></a>
2009-01-08T12:43:28.851914Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT font handler) : Wrong glyph posiitions with vertical writing mode (continued).

DETAILS :

Bug 689304 &quot;improper handling of vertical japanese text&quot;.

This is fourth partial patch for the bug 689304.
It adds a code for processing CoverageFormat2,
which is used by IPAfont00203.

Besides that, in the old CoverageFormat1 code
subst.GlyphCount was used instead cov.GlyphCount . 
It didn't cause a problem because (we guess)
normally they are equal.

The field CoverageFormat2::RangeRecord is renamed into 
RangeArray to avoid possible conflict with same name for
a structure type. Rather it is a correct C,
we're not sure that all compilers accept it with no warning.

</pre>
<p>[base/gstype42.c]</p>
</blockquote>

<p><strong><a name="2009-01-08T091718.162362Z"></a>
2009-01-08T09:17:18.162362Z Russell Lang</strong></p>
<blockquote>
<pre>
Automatically select the default paper size from the locale
on the Windows platform, and make provision for doing this
on Linux.

DETAILS:
This adds a new platform function gp_defaultpapersize and a new 
operator .defaultpapersize.
In order of priority, the paper size is set from PAPERSIZE,
DEFAULTPAPERSIZE, .defaultpapersize, or the compiled in
device paper size.

It has been tested on Windows 98, XP and Vista.
</pre>
<p>[base/openvms.mmk base/lib.mak base/gp_paper.c doc/Use.htm doc/Develop.htm base/unix-aux.mak base/macos-mcp.mak psi/zmisc.c psi/os2.mak base/winlib.mak base/watclib.mak base/gp.h Resource/Init/gs_init.ps base/openvms.mak base/gp_upapr.c base/gp_wpapr.c doc/Language.htm]</p>
</blockquote>

<p><strong><a name="2009-01-08T080441.159684Z"></a>
2009-01-08T08:04:41.159684Z Russell Lang</strong></p>
<blockquote>
<pre>
Fix stackunderflow when specified PAPERSIZE is unknown.
Ghostscript will now use the device default page size when
PAPERSIZE is unknown.
</pre>
<p>[Resource/Init/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2009-01-07T173655.528046Z"></a>
2009-01-07T17:36:55.528046Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fix for overprinting with transparency.  This fixes bugs related to the lack of overprint support when there is transparency present in the file. 

DETAILS: Previously if a sep device is used when processing a file that contains both transparency and overprinting, the overprinted colors would blow away the other sep colors.  In this commit, there was one fix to improper geometry in pfd14_cmykspot_put_image.  The remaining changes involved 1) passing overprint compositor actions to the pdf14 device, which occurs during the clist reading phase (in pdf14_create_compositor)  2) adding over_print and overprint mode to the pdf14 clist parameters (this follows the same process that is currently done for text knockout, blend mode etc) and 3) adding the actual fill support in pdf14_mark_fill_rectangle. 

EXPECTED DIFFERENCES:  In the regression tests Bug688631.pdf and Bug690206.pdf will have slight differences due to the blending of spot colors when the color space is subtractive. This matches what is seen in AR.</pre>
<p>[base/gdevp14.c base/gdevp14.h base/gstrans.h]</p>
</blockquote>

<p><strong><a name="2009-01-07T083314.825057Z"></a>
2009-01-07T08:33:14.825057Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (PDF Interpreter): Default Unicode decoding clashing with ToUnicode CMap

Details:
bug #690190 &quot;Problem with -dProvideUnicode&quot;

The ProvideUnicode switch creates a (read only) default Unicode decoding resource, presumably to use as a default ToUnicode Cmap when creating PDF files.

This interferes with PDF files which contain a real ToUnicode CMap, as the resource is read only and so cannot be updated with the content of the ToUnicode CMap.

Fixed by checking to see if the GlyphNamesToUnicode dictionary is writeable, and if it is not, creating a new one, when processing a ToUnicode CMap.

</pre>
<p>[Resource/Init/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2009-01-06T143801.194845Z"></a>
2009-01-06T14:38:01.194845Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Missing glyphs in CIDFont causing errors.

Details:
Bug #690139: &quot;Regression: Error writing PDF file: Missing glyph CID=0 in Bug689614.pdf&quot;.

When we find that a string in a PDF file uses a glyph which is not present in the current CIDFont we substitute the .notdef glyph (CID=0). However, if we do not have a width for the .notdef (this is the first missing glyph) we proceed to get one, and then attempt to run the CDevProc for the font.

This, unfortunately, attempts to use the original (missing) glyph, and so fails with a rangecheck error. Added a check to catch this condition and skip the CDevProc and caching.

Also improved the error message slightly.

</pre>
<p>[base/gdevpdtc.c]</p>
</blockquote>

<p><strong><a name="2009-01-06T141130.802229Z"></a>
2009-01-06T14:11:30.802229Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : A more explanatory message when a CID font is missing.

DETAILS :

Bug 688770 &quot;/undefinedresource in --findresource--&quot;.

The patch prints which CID font is missing,
and a better explanation about CID font substitution and
about the related exit with error.  

</pre>
<p>[Resource/Init/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2009-01-05T171701.015629Z"></a>
2009-01-05T17:17:01.015629Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Removed old code that failed in 2009.
</pre>
<p>[toolbin/bugsByEngineer.pl]</p>
</blockquote>

<p><strong><a name="2009-01-05T140204.227069Z"></a>
2009-01-05T14:02:04.227069Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Added examples of PostScript files with CJK text
</pre>
<p>[examples/cjk examples/cjk/all_ag1.ps examples/cjk/iso2022.ps examples/cjk/all_aj1.ps examples/cjk/all_aj2.ps examples/cjk/all_ak1.ps examples/cjk/gscjk_ac.ps examples/cjk/iso2022v.ps examples/cjk/gscjk_ag.ps examples/cjk/gscjk_aj.ps examples/cjk/all_ac1.ps examples/cjk/article9.ps examples/cjk/gscjk_ak.ps]</p>
</blockquote>

<p><strong><a name="2009-01-05T103413.766328Z"></a>
2009-01-05T10:34:13.766328Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Accidentally committed an obsolete patch. Reverted.
</pre>
<p>[base/gdevxini.c]</p>
</blockquote>

<p><strong><a name="2009-01-04T202047.824575Z"></a>
2009-01-04T20:20:47.824575Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Fix sigbus/segfaults on sparc, hppa, etc. Debian bug 453903.

See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=453903 for details.

</pre>
<p>[psi/store.h]</p>
</blockquote>

<p><strong><a name="2009-01-04T201519.267170Z"></a>
2009-01-04T20:15:19.267170Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Improved man pages of ps2pdf.
</pre>
<p>[man/ps2pdf.1 man/de/ps2pdf.1]</p>
</blockquote>

<p><strong><a name="2009-01-04T201328.072664Z"></a>
2009-01-04T20:13:28.072664Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Fixed syntax error in gs.css.
</pre>
<p>[doc/gs.css]</p>
</blockquote>

<p><strong><a name="2009-01-04T201157.725211Z"></a>
2009-01-04T20:11:57.725211Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Assorted script fixes.
</pre>
<p>[lib/ps2epsi lib/dumphint lib/dvipdf]</p>
</blockquote>

<p><strong><a name="2009-01-04T200704.350954Z"></a>
2009-01-04T20:07:04.350954Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Fix insecure script in toolbin.
</pre>
<p>[toolbin/pre.tcl]</p>
</blockquote>

<p><strong><a name="2009-01-04T200541.434499Z"></a>
2009-01-04T20:05:41.434499Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Typo fixes in &quot;gs&quot; man page.
</pre>
<p>[man/gs.1]</p>
</blockquote>

<p><strong><a name="2009-01-04T200338.607601Z"></a>
2009-01-04T20:03:38.607601Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Fix segfault in X device when page size changes.
</pre>
<p>[base/gdevxini.c]</p>
</blockquote>

<p><strong><a name="2009-01-04T200110.696570Z"></a>
2009-01-04T20:01:10.696570Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Adjust the margins for Epson dot matrix printer drivers
</pre>
<p>[base/gdevepsn.c]</p>
</blockquote>

<p><strong><a name="2009-01-04T195854.777417Z"></a>
2009-01-04T19:58:54.777417Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Fix a problem with Brother 7x0 GDI, contributed to Debian by B. Janssen.
</pre>
<p>[base/gdevhl7x.c]</p>
</blockquote>

<p><strong><a name="2009-01-04T195707.064594Z"></a>
2009-01-04T19:57:07.064594Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Fix segmentation fault on -sDEVICE=bbox, contributed to Debian by Yaroslav Halchenko.

Original issue reported in
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=250290 and
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=254877
</pre>
<p>[base/gdevbbox.c]</p>
</blockquote>

<p><strong><a name="2009-01-03T224550.335886Z"></a>
2009-01-03T22:45:50.335886Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Debug raw dumping code that I have found useful in my debug of transparency and overprint issues.  

DETAILS : Open images with Photoshop in the raw format with the dimensions given in the file name.

EXPECTED DIFFERENCES :  None



</pre>
<p>[base/gxblend.c base/gxblend.h]</p>
</blockquote>

<p><strong><a name="2009-01-03T195108.451624Z"></a>
2009-01-03T19:51:08.451624Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Incorrect bounds for clipping list.

DETAILS :

Bug 690060 &quot;Regression: ball not round in Altona_Visual_1v2a_x3.pdf&quot;

The bug persists since the repository was created. 
The revision 8020 brought an attempt to fix it,
but really it just replaced one wrong code with another wrong one.
Coding the right formula now.

</pre>
<p>[base/gxcpath.c]</p>
</blockquote>

<p><strong><a name="2009-01-01T053409.090806Z"></a>
2009-01-01T05:34:09.090806Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Continue to access the stream while reading a string (sgets()) until the
string is filled, EOF is reached, or an error occurs. Don't return after
first partial read. Bug 690152.

DETAILS:
Old code did this only for 1-byte reads, which commonly occur during
reading stdin one byte at a time. Repeated reading is now extended to
reads of any size.

</pre>
<p>[base/stream.c]</p>
</blockquote>

<p><strong><a name="2008-12-30T185817.371540Z"></a>
2008-12-30T18:58:17.371540Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (garbager) : Wrong object marks when the object is freed by a garbager callback.

DETAILS :

Debugged on Vista x64 with running a 32 bits debug build of revision 9299 
with this command line :

..\..\gs-hd\bin\gswin32c.exe -IF:\AFPL\gs-hd\Resource\Init;f:\afpl\fonts -Z&#36;?@ -r300 
       -dMaxBitmap=1000000  -dNOOUTERSAVE -sDEVICE=ppmraw -sOutputFile=out.ppm -dBATCH 
       -dNOPAUSE &quot;H:\AuxFiles\CompareFiles\084-01.ps&quot;  

1. The main change (gsalloc.c) :

The bug persists since the repository was created. 
When an object is freed after the garbager marking phase and before the
relocation phase, the heap consistency check misrecognizes it
as a free object pointed from an useful object. It happens because
the smark field was left unchanged (&quot;marked&quot;) but the object status 
changed to 'freed', which must be unmarked.

In the test case such thing happens when a names subtable is freed
with this stack :
    i_free_object()  Line 721
    name_free_sub()  Line 541
    name_scan_sub()  Line 582
    names_trace_finish()  Line 416
    gs_gc_reclaim()  Line 371 

The patch resets the mark whenever i_free_object is called,
so that any freed object automatically becomes unmarked.
We could do it more delicate with checking whether a garbager
is on stack with a new special flag in gs_ref_memory_t,
but we don't see enough reasons for such complex check.

2. Minor change (igc.c) : 

Provide a right operand when gs_abort is called from  
gc_objects_set_reloc. The old code crashed due to dereferencing NULL.

</pre>
<p>[psi/igc.c base/gsalloc.c]</p>
</blockquote>

<p><strong><a name="2008-12-29T182508.338456Z"></a>
2008-12-29T18:25:08.338456Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Script to print out open customer/P1/regression bugs by engineer.

Usage:  bugsByEngineer.pl &gt;report.txt

</pre>
<p>[toolbin/bugsByEngineer.pl]</p>
</blockquote>

<p><strong><a name="2008-12-29T064342.727931Z"></a>
2008-12-29T06:43:42.727931Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fix for Bug 689895.  gx_put_blended_image_cmykspot was improperly inverting the alpha channel.   
</pre>
<p>[base/gxblend1.c]</p>
</blockquote>

<p><strong><a name="2008-12-28T160329.366807Z"></a>
2008-12-28T16:03:29.366807Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use a proper destructor to free a file stream when access to the file is not
permitted in the safe mode, not just close the file and drop the rest of the
file structure. Bug 689975.

</pre>
<p>[psi/zfile.c]</p>
</blockquote>

<p><strong><a name="2008-12-26T072531.122671Z"></a>
2008-12-26T07:25:31.122671Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix 3 last cases of missing prototypes in MS Windows build.
</pre>
<p>[base/lib.mak psi/int.mak psi/zfcid1.c base/gxblend1.c base/gdevddrw.c]</p>
</blockquote>

<p><strong><a name="2008-12-26T044820.570500Z"></a>
2008-12-26T04:48:20.570500Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Remove the last 2 unused variables from Ghostscript code base.
</pre>
<p>[psi/dwtrace.c base/gdevdjet.c]</p>
</blockquote>

<p><strong><a name="2008-12-24T203322.470682Z"></a>
2008-12-24T20:33:22.470682Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a buffer overflow in base font writer module of pdfwrite defice.
Allocate sufficient buffer for the worst case. Bug 690211.

</pre>
<p>[base/gdevpdtb.c]</p>
</blockquote>

<p><strong><a name="2008-12-24T153640.083208Z"></a>
2008-12-24T15:36:40.083208Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Image with SMask fails when inside transparency group.

Details:
Bug #690139: &quot;Regression: pdfwrite creates empty file&quot;.

The PDF Interpreter internally surrounds SMask images with an extra transparency group definition. If emitted to PDF this is invalid and causes Acrobat to complain. This was fixed in revision 6878 (bug 688767) by adding an extra parameter  'Image_with_SMask' to the dictionary.

The pdfwrite code checks for the existence of this in the group, and if present (and true) skips the transparency group begin. It also sets a flag in the device, to skip the end of the group as well.

However, the flag is only reset when a new transparency group is begun. If the SMask was nested inside a group then the flag remained set, causing the 'end' for all enclosing groups to be skipped as well. This caused empty output or, in extreme cases, a 'rangecheck' error in discardtransparencygroup, because we overflowed an internal stack.

We now set the device flag to false after we have skipped an end group.

</pre>
<p>[base/gdevpdft.c]</p>
</blockquote>

<p><strong><a name="2008-12-23T090530.676239Z"></a>
2008-12-23T09:05:30.676239Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): DSC comments interfering with Page Tree Orientation.

Details:
Bug #689922 &quot;Rotation issues with pdfwrite and multiple operations&quot;.

When writing out a PDF file, pdfwrite adds /Rotate keys to individual pages, and if the document is gnerally rotated (eg landscape) will set a /Rotate key in the pages treee. This causes all pages which do not have their own value to inherit this as a default.

Unfortunately, the page tree code uses the same logic as the individual page, whch honours DSC '%%Orientation' and '%%ViewingOrientation' comments. If the last file processed contained one of these, this would become the default for all pages, regardless of their actual orientation. This would cause pages to be inappropriately rotated.

Fixed by clearing the DSC information before writing the orientation for the page tree, by this time all the pages that require it have already been written with their own value.

</pre>
<p>[base/gdevpdf.c]</p>
</blockquote>

<p><strong><a name="2008-12-21T143429.309508Z"></a>
2008-12-21T14:34:29.309508Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PS interpreter) : The operator 'gstate' leaked memory.

DETAILS :

Bug 689849 &quot;gstate leaks memory&quot;

The old code of gsave executes 'ref_save' without a clear reason. 
The patch disables it with #if 0.
For a while we keep the old code for an easier
understanding of an unexpected behavior difference, if any.
 
</pre>
<p>[psi/zdps1.c]</p>
</blockquote>

<p><strong><a name="2008-12-21T074652.896538Z"></a>
2008-12-21T07:46:52.896538Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Implement Algorithm 8.1 from PDF 1.6 Reference. Map /BBox of the appearance
stream transformed by /Matrix onto the annotation rectangle.
Bug 690195, customer 770.

</pre>
<p>[psi/zmatrix.c psi/int.mak Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2008-12-19T165041.185072Z"></a>
2008-12-19T16:50:41.185072Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix: Problem with /DeviceN [/All].

Details:
Bug #690177 &quot;Separation names become operator names.&quot;.

/DeviceN [/All] is technically illegal, but is allowed by Acrobat. We convert this to a /Separation /All colour space for compatibility. An error in the processing of this kind of space led to a string object being used in place of a name object to create the named space.

This led to 'peculiar' plate names instead of 'All', which caused no problems when rendering to CMYK (the alternate is used and sets all inks). However if rendering to a device with additional spot plates not alll plates would be marked as they should be for a /All space. Also pdfwrite produced incorrectly named plates in the output PDF file.

</pre>
<p>[psi/zcolor.c]</p>
</blockquote>

<p><strong><a name="2008-12-19T015318.887063Z"></a>
2008-12-19T01:53:18.887063Z Ralph Giles</strong></p>
<blockquote>
<pre>
Warn when the JPX ColorSpace key workaround is activated.

Details:

We don't use pdfformaterror because this is our failing, not the files.
But we call stderrprint to generate the output so it doesn't mangle
device output on stdout.

Suggested by Ray Johnston.
</pre>
<p>[Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2008-12-19T015317.038875Z"></a>
2008-12-19T01:53:17.038875Z Ralph Giles</strong></p>
<blockquote>
<pre>
Assume unlabled JPXDecode streams are 8 bit DeviceRGB.

This is a work-around for bugs 688159, 689058 and 689509.

Details:

The PDF spec allows the ColorSpace and BitsPerComponent keys of a
JPXDecode filtered image dictionary to be left out, in which case
the interpreter is expected to obtain this information by examining
the stream.

This change does not implement that, but in most cases the image
is RGB, and 8 bits per component; assuming this format allows
correct rendering of all wild files we've seen of this type.
</pre>
<p>[Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2008-12-18T233732.655756Z"></a>
2008-12-18T23:37:32.655756Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change accessors to cmap data to support cmap subtables exceeding 64K-1 bytes.
Bug 690206, customer 870.

</pre>
<p>[Resource/Init/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2008-12-16T183555.343539Z"></a>
2008-12-16T18:35:55.343539Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix a typo in commit r9288 which broke the X11 device build. Bug 690202.

Patch by Alex Cherepanov.
</pre>
<p>[base/gdevxini.c]</p>
</blockquote>

<p><strong><a name="2008-12-16T175213.417519Z"></a>
2008-12-16T17:52:13.417519Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add the CVS directory to the romfs exclusion list. Bug 690205.

Details:

Currently the mkromfs script just includes the entire file tree under
Resource/ but the presence of any extraneous directories there confuses
the enumeration machinery. We have a exclusion for the .svn directory
so builds out of svn work, but apparently some people have a CVS mirror?

Anyway, it isn't difficult to add an additional exclusion for CVS
metadata. This isn't an issue for git, darcs or mercurial because they
keep all their repository data in the top-level directory.
</pre>
<p>[base/lib.mak]</p>
</blockquote>

<p><strong><a name="2008-12-15T171506.646171Z"></a>
2008-12-15T17:15:06.646171Z Ken Sharp</strong></p>
<blockquote>
<pre>
Enhancement (pdfwrite): Add support for the fillpage method.

Details:
The new fillpage device method can be used to detect occurences of erasepage more reliably (and probably more cheaply in performance terms) than the previous checks in the fill_rectangle methods. 

Removed the old code which checked the rectangle size against the page size, the colour against white, and the transparency stack depth, from the fill_rectangle methods. Added a new routine gdev_pdf_fillpage to implement the new fillpage device method.

</pre>
<p>[base/gdevpdfx.h base/gdevpdfd.c base/gdevpdfb.h]</p>
</blockquote>

<p><strong><a name="2008-12-13T200537.951803Z"></a>
2008-12-13T20:05:37.951803Z Igor Melichev</strong></p>
<blockquote>
<pre>
Enhancement (graphics) : Implement new device virtual method 'fillpage'.

DETAILS :

The new method improves the handling of 'erasepage' and 'fillpage'
for high level devices, bbox device. Also it is a preparation for
optimizing 'erasepage' for printer devices as for bug 690131.

When erasing a page, the old code passes fill_rectangle through
the device interface. However some devises need to recognize it
as a special high level operation and distinguish from an usual
rectangle filling. The old code implemented some trics for that.
This patch replaces the tricks with a strong logic for bbox device.
The pdfwrite device to be improved separately.

The old function gx_fillpage is now splitted into two parts,
one of which works before the device interface, and another one
after it. The second one looks as a default implementation
for the 'fillpage' device virtual method. Forwarding devices
implement new function gx_forward_fillpage.


</pre>
<p>[base/gdevrops.c base/gdevdflt.c base/gdevbbox.c base/gxcldev.h base/gxclipm.c base/gsovrc.c base/gxdevice.h base/gdevnfwd.c base/gspaint.c base/gdevddrw.c base/gxclip2.c base/gdevprn.h base/gdevp14.c base/gxdevcli.h base/gxclrect.c base/gdevxini.c base/gxclist.c base/gxclist.h base/gxclip.c base/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2008-12-13T165417.751950Z"></a>
2008-12-13T16:54:17.751950Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Redundant patterns in clist (continued 6).

DETAILS :

This is a further improvement for the bug 690133
&quot;Regression: Ghostscript takes up all disk space when rendering eog or GIMP PDF output in 1200 dpi&quot;.
Also it is a preparation for a partial fix for the bug 690131 &quot;Optimize consecutive setpagedevice&quot;. 

The last partch appears syntactically incorrect, now fixing.

</pre>
<p>[base/gxclpath.c]</p>
</blockquote>

<p><strong><a name="2008-12-13T125514.082194Z"></a>
2008-12-13T12:55:14.082194Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Redundant patterns in clist (continued 5).

DETAILS :

This is a further improvement for the bug 690133
&quot;Regression: Ghostscript takes up all disk space when rendering eog or GIMP PDF output in 1200 dpi&quot;.
Also it is a preparation for a partial fix for the bug 690131 &quot;Optimize consecutive setpagedevice&quot;. 

The last partch wrongly distributed the saved pattern id for all bands
when writing a non-pattern color to all bands.
We believe it never happens the current revision with reasonable banding settings,
but fix fix it for code consistency and for avoiding problems
with further revisions.

</pre>
<p>[base/gxclpath.c]</p>
</blockquote>

<p><strong><a name="2008-12-13T111454.029422Z"></a>
2008-12-13T11:14:54.029422Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Redundant patterns in clist (continued 4).

DETAILS :

This is a further improvement for the bug 690133
&quot;Regression: Ghostscript takes up all disk space when rendering eog or GIMP PDF output in 1200 dpi&quot;.
Also it is a preparation for a partial fix for the bug 690131 &quot;Optimize consecutive setpagedevice&quot;. 

This patch passes the coverage rectangle of a graphic element
for a better computation in cmd_put_drawing_color of the size 
would be consumed while serializing a color to clist
with copying to all covered bands.
When we need to force writing to all bands,
we pass a NULL instead the coverage rectangle.

</pre>
<p>[base/gxclpath.c base/gxclimag.c base/gxclrect.c base/gxclpath.h base/gxcldev.h]</p>
</blockquote>

<p><strong><a name="2008-12-13T101802.260144Z"></a>
2008-12-13T10:18:02.260144Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Fonts with unusual FontMatrix generating incorrect FontBBox.

Details:
bug #689879 &quot;wrong FontBBox in PDF file&quot;

Fonts other than type 3 may not have a FontMatrix in PDF, these fonts are assumed to be on a 1000x1000 design grid. Most fonts already are, and embedded TrueType fonts are already catered for, but some unusual fonts have a non-standard (not [0.001 0 0 0.001 0 0]) FontMatrix. The matrix is accounted for when scaling the font, so the Tf operator is correct in the page content stream, but the FontBBox was calculated using the unscaled glyph outline.

We now scale the font outline into a 1000x1000 design grid before calculating the bounding box, so that the FontBBox entry will be correct.

</pre>
<p>[base/gdevpdtd.c]</p>
</blockquote>

<p><strong><a name="2008-12-13T101347.692668Z"></a>
2008-12-13T10:13:47.692668Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Tidy up code.

Details:
Tidy up some code for bug #690118; When writing TrueType hmtx/vmtx, define a new function put_short which is functionally identical to put_ushort but doesn't truncate the sign bit. Use this instead of put_ushort when the value to be written may be negative. Add 0.5 to the floating point calculations and floor() the result so that we get the nearest approximation to the float when writing out the short.

A small number of files exhibit a number of single pixel differences in position or rendering of glyphs with this change. In all cases comparing the rendered result of the new PDF file with the rendered result of the original file shows no differences, so I consider these to be progressions.

</pre>
<p>[base/gdevpsft.c]</p>
</blockquote>

<p><strong><a name="2008-12-10T191043.669416Z"></a>
2008-12-10T19:10:43.669416Z Ralph Giles</strong></p>
<blockquote>
<pre>
Set standard properties on pdf_main.ps. Bug 690198.
</pre>
<p>[Resource/Init/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2008-12-10T072939.713832Z"></a>
2008-12-10T07:29:39.713832Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : Avoid extra erasepage, part 1.

DETAILS :

This is the first partial fix for the 
bug 690131 &quot;Optimize consecutive setpagedevice&quot;.

The PDF interpreter calls extra setpagedevice for initializing the number of spot colors.
First it happens in pdfshowpage_setpage, and we merge that call
with another one that sets other multiple page parameters. 
Second in pdfshowpage_finish we replace it with .setpagedevice, 
which doesn't call .postinstall that calls erasepage.

</pre>
<p>[Resource/Init/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2008-12-09T173040.898715Z"></a>
2008-12-09T17:30:40.898715Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>

Fix for weird math issue under AIX that cause problems in glpyh spacing when
writing type42 fonts for ps2write and pdfwrite.

This fixes bug 690118.

Details:

For reasons that I don't undertand under AIX (ushort) (double * double)
produces a 0 if the first double is &gt; -1 and &lt; 0 (and the sum is &lt; -1).
Presumably the cast happens before the multiplication, but this isn't
reasonable and doesn't occur on other operating systems, even running
the same version of gcc.  Temporarily assigning the sum to a float and
then casting to a ushort resolves the problem.

The temporary assignment should be removed by the optimizer, so there
shouldn't be a performance hit (I did check, the optimized code is still
correct under AIX).


</pre>
<p>[base/gdevpsft.c]</p>
</blockquote>

<p><strong><a name="2008-12-09T084520.654566Z"></a>
2008-12-09T08:45:20.654566Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): regression with type 3 fonts using show charpath stroke combinations.

Details:
bug #690196 &quot;regression: file for bug 689687&quot;

The recent changes for text rendering modes caused a regression with Quark's type 3 font for special text effects, when optimising a show followed by charpath stroke into a single 'Tj' with a text rendering mode of 2 in the resulting PDF file.

Fixed by ceasing to treat type 3 fonts specially and applying the same optimisation as for other font types. A couple of other Quark files exhibit very small differences, comparing these to the rendered output of the original files the new result seems closer to the original. (ie a progression)

Also resolved a compiler warning.

</pre>
<p>[base/gdevpdtc.c base/gdevpdfd.c]</p>
</blockquote>

<p><strong><a name="2008-12-09T080143.121661Z"></a>
2008-12-09T08:01:43.121661Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Redundant patterns in clist (continued 3).

DETAILS :

Bug 690133 &quot;Regression: Ghostscript takes up all disk space when rendering eog or GIMP PDF output in 1200 dpi&quot;.

When filling a path with a pattern, the old code
stores the pattern to all bands that are covered with the path.
If the pattern is represented with a long clist, 
it consumes too big memory for the page clist.

If the pattern is big, the new code writes it 
to the &quot;all bands&quot; list instead replicating it to bands. 
Therefore the overall memory is smaller.

The decision about storing a pattern to &quot;all bands&quot;
should also depend on the number of bands.
This patch doesn't account that because current data flows
don't pass the number of bands to the point where
the decision must be taken. It may need a further improvement.

The threshold for &quot;big&quot; pattern is arbitrary set to 1Mb.
It may need an improvement also. It's another threshold 
than one for representing a pattern as a raster or a clist.

</pre>
<p>[base/gxclpath.c base/gxclutil.c base/gxcldev.h]</p>
</blockquote>

<p><strong><a name="2008-12-09T075855.697280Z"></a>
2008-12-09T07:58:55.697280Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Redundant patterns in clist (continued 2).

DETAILS :

This patch is important for the bug Bug 690133 
&quot;Regression: Ghostscript takes up all disk space when rendering eog or GIMP PDF output in 1200 dpi&quot;,
but it is not restricted with its case.

When writing a pattern color to a band,
the old code uses the &quot;saved color&quot; structure
for remembering which color has been stored for the band.
In the case of pattern it stores the client's pattern id.
However it doesn't provide enough resolution because
a client's pattern may be instantiated with various CTMs.
The new code uses the pattern tile id to distinguish the pattern instances.

We're not sure why saved color structure stores the client's pattern id only.
It should be so for pdfwrite, but need to check whether other
cases are possible. Therefore the current change is kind of hackish.
See comment in code.

</pre>
<p>[base/gxclpath.c]</p>
</blockquote>

<p><strong><a name="2008-12-08T081755.714566Z"></a>
2008-12-08T08:17:55.714566Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Large type 1 or 2 fonts caused errors with text.

Details:
bug #690144 &quot;Files render properly with gs, but are misformatted in ps2pdf&quot;

Revision 8235 added support to pdfwrite for type 0 fonts with type 1 or type 2 (CFF) descendant fonts, emitting these as subsets of the original instead of rendering the glyphs and embedding type 3 fonts with bitmap images. This results in better quality and smaller files.

However type 1 or 2 fonts which are too large for an arbitrary Ghostscript limit (&gt; 65537 glyphs) can not be copied. This 'should' have fallen back to the old mechanism, but some data had been altered which led to this failing.

The fix for this comprises 3 parts:

1) Mmodified scan_cmap_text to save the data we modify for subsetting, and restore it if pdf_obtain_font_resource_unencoded fails, which then falls back to the 'default' type 3 mechanism (in case of future problems in this area). 

2) Increased the limit of glyphs (for type 1 or 2 fonts) in gs_copy_font. Added a new parameter 'max_reserved_glyphs'. If this is -1 then we reserve enough space for the number of glyphs in the original font. Otherwise we reserve space for the specified maximum. This limit only applies to font type 1 or 2, and is used by pdfwrite to avoid making excessively large font copies.

3) Modified pdf_base_alloc so that if the font is large (and is not one of the standard 13 fonts), we don't allocate a complete copy for our 'subset', we only allocate as many glyphs as will fit in a standard Encoding, 256, plus  one for the required .notdef making 257 in total. We also avoid making a second 'complete' copy of the font, because we will never write the complete font.

</pre>
<p>[base/gdevpdtb.c base/gxfcopy.c base/gdevpdtc.c base/gxfcopy.h]</p>
</blockquote>

<p><strong><a name="2008-12-05T073906.671710Z"></a>
2008-12-05T07:39:06.671710Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Check the whole Decode array to detect special cases of identity and inverse
decoding. Previous test analyzed every channel separately and misidentified
decoding arrays like [0 1 1 0 0 1]. Bug 690178.

</pre>
<p>[base/gxipixel.c]</p>
</blockquote>

<p><strong><a name="2008-12-05T044451.989860Z"></a>
2008-12-05T04:44:51.989860Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Adds special, tolerant to singular matrix processing, to the case when
ImageMatrix is differs from the CTM by the translation vector only, which
happens in cached character rendering. The patch clears PostScript errors
during text rendering with singular CTM. Bug 690179, customer 870.

</pre>
<p>[base/gxipixel.c base/gsimage.c base/gxccache.c]</p>
</blockquote>

<p><strong><a name="2008-11-29T143326.712726Z"></a>
2008-11-29T14:33:26.712726Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Ignore /ToUnicode attribute when it points to an object other then a stream.
Bug 680138.

</pre>
<p>[Resource/Init/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2008-11-29T122704.428583Z"></a>
2008-11-29T12:27:04.428583Z Till Kamppeter</strong></p>
<blockquote>
<pre>
The pstopxl CUPS filter did not remove its temporary file.
</pre>
<p>[cups/pstopxl.in]</p>
</blockquote>

<p><strong><a name="2008-11-27T150537.010932Z"></a>
2008-11-27T15:05:37.010932Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): more issues with PDF Text rendering modes.

Details:
Bug #689692 Colour and linewidth is not set correct for text with rendermode STROKE
and FILLSTROKE
Bug #Bug690025 pxlmono driver prints some glyphs as squares when the input is PostScript generated by Ghostscript

This follows on from revision 9196 and further addresses problems with PDF text rendering modes. Fundamentally the problem is that the PDF text matrix (Tm) should not affect the stroke width. However PostScript only has one transformation matrix, so when we get a Tm, the PDF interpreter modifies the CTM accordingly. This alters the (effective) stroke width, resulting in incorrect output.

This patch modifies the CTM before executing a stroke in modes 2 &amp; 6, and for mode 1 modifies the stroke width by calculating what it would have been if the CTM were the identity at the time the text block began. Since pdfwrite emits text in an identity CTM, this corrects the problem.

The pdfwrite code for combining show/charpath/stroke operations into a single text rendering mode has been modified to expect the CTM to be correct, and to utilise it, when emitting the combined operation.


</pre>
<p>[Resource/Init/pdf_ops.ps base/gdevpdts.c base/gdevpdfd.c base/gdevpdts.h base/gdevpdfg.c]</p>
</blockquote>

<p><strong><a name="2008-11-27T052005.725774Z"></a>
2008-11-27T05:20:05.725774Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use the same name (/PDFType3Untitled) for all Type 3 fonts without /FontName
attribute. PDF interpreter doesn't need unique names and the previous attempt
to generate unique names didn't work. Bug 689358.

</pre>
<p>[Resource/Init/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2008-11-27T015854.354925Z"></a>
2008-11-27T01:58:54.354925Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Restore language level after loading pdfwrite.ps for consistency and
compatibility with PS utilities. Also pick a few nits that may cause errors
if some of start-up files ever loaded in level 1 mode. Thanks to SaGS
for the patch. Bug 688151.

</pre>
<p>[lib/pdfwrite.ps Resource/Init/gs_dpnxt.ps Resource/Init/gs_cff.ps]</p>
</blockquote>

<p><strong><a name="2008-11-25T171923.759068Z"></a>
2008-11-25T17:19:23.759068Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Fixed paper tray selection for the PCL 4/5/5e drivers (bug 690182). Works fine now with &quot;-dMediaPosition=...&quot; and for all possible trays. Needs review to see whether it does not break anything else.
</pre>
<p>[base/gdevdjet.c]</p>
</blockquote>

<p><strong><a name="2008-11-24T230421.969628Z"></a>
2008-11-24T23:04:21.969628Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Skip everything before 'begincodespacerange' in ToUnicode CMap stream
to avoid PostScript errors in CMap headers. PDF interpreter doesn't
need any data from the header. Bug 689842, customer 870.

</pre>
<p>[Resource/Init/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2008-11-24T191504.507271Z"></a>
2008-11-24T19:15:04.507271Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Fixed input tray selection support in the PCL-XL drivers (&quot;pxlmono&quot;/&quot;pxlcolor&quot;), fixes on CUPS filter and PPDs to make input tray selection actually work.
</pre>
<p>[base/gdevpx.c cups/pstopxl.in cups/pxlmono.ppd cups/pxlcolor.ppd]</p>
</blockquote>

<p><strong><a name="2008-11-24T110142.358113Z"></a>
2008-11-24T11:01:42.358113Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Made the CUPS filters and PPDs for PCL-XL also work with PDF as input data format
</pre>
<p>[cups/pstopxl.in cups/pxlmono.ppd cups/pxlcolor.ppd]</p>
</blockquote>

<p><strong><a name="2008-11-23T203612.040586Z"></a>
2008-11-23T20:36:12.040586Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (CID font emulation) : CID from another writing mode rendered a wrong glyph (continued)

DETAILS :

This improve3s the second partial fix for Bug 689304  
&quot;improper handling of vertical japanese text&quot;, related to Comment #30, #31. 

The revision 9213 appears buggy.
When a SubstCID resource is not available,
the stack balance is broken.

</pre>
<p>[Resource/Init/gs_cidtt.ps]</p>
</blockquote>

<p><strong><a name="2008-11-21T142421.693040Z"></a>
2008-11-21T14:24:21.693040Z Till Kamppeter</strong></p>
<blockquote>
<pre>
The &quot;cups&quot; output device was logging way to much in CUPS' debug logging mode. Moved some logging to debug2.
</pre>
<p>[cups/gdevcups.c]</p>
</blockquote>

<p><strong><a name="2008-11-21T053110.447898Z"></a>
2008-11-21T05:31:10.447898Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add a check for bogus '&gt;&gt;' after 'endstream' to recover files generated 
by 'Kroll Background Screening'. Bug 690161.

</pre>
<p>[Resource/Init/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2008-11-20T211109.954526Z"></a>
2008-11-20T21:11:09.954526Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Move validation of the page tree after installation of the decryption handler
because access to encrypted xref streams needs decryption. Fix regression
introduced by the rev. 8933. Bug 690175.

</pre>
<p>[Resource/Init/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2008-11-20T193136.700423Z"></a>
2008-11-20T19:31:36.700423Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add AES support to the pdf interpreter.

This commit adds convenience wrappers around the aes stream
implementation to pdf_sec.ps, and calls them when appropriate,
based on the crypt filter methods defined in the file Trailer's
Encrypt dictionary. Bug 688958.

It also includes comment and whitespace cleanup.
</pre>
<p>[Resource/Init/pdf_sec.ps]</p>
</blockquote>

<p><strong><a name="2008-11-17T194347.727833Z"></a>
2008-11-17T19:43:47.727833Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add missing initialization of read_id field in reusable streams.

DETAILS:
This error was detected by Valgrind. I don't have any samples where this fix
affects the output.


</pre>
<p>[psi/zfrsd.c]</p>
</blockquote>

<p><strong><a name="2008-11-17T104113.803460Z"></a>
2008-11-17T10:41:13.803460Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Not considering all glyphs in a string when noting first/last character

Details:
Bug 690166: extra space after apostrophe when distilled
Revision 8235 added support for type 0 fotns with type 1 or 2 descendants, this required using pdf_adjust_first_last_char so that we correctly noted the used glyphs, and stored their widths.

An oversight in calling the function resulted in only the first glyph in the string being considered.

</pre>
<p>[base/gdevpdtc.c]</p>
</blockquote>

<p><strong><a name="2008-11-16T144749.851717Z"></a>
2008-11-16T14:47:49.851717Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PS interpreter) : Eliminate unuseful transfer of left side bearing to type42_finish.

DETAILS :

This change is algorithmically equivalent.

type42_finish never uses lsb data that could be passed to it via
operand stack from some clients. This patch removes those data
and related arguments of some C functions.

</pre>
<p>[psi/zchar42.c psi/zchar42.h psi/zchar.c]</p>
</blockquote>

<p><strong><a name="2008-11-16T121546.619814Z"></a>
2008-11-16T12:15:46.619814Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT font handler) : Wrong glyph posiitions with vertical vcriting mode.

DETAILS :

Bug 689304 &quot;improper handling of vertical japanese text&quot;.

This is third partial patch for the bug 689304.
The old formulas were obtained impirically and don't
give the right result. The new ones are coded with a better understanding
of the problem. See comments in code for more details. 

Rather the patch closes the bug, we want to do some additional
equivalent changes for cleaning the code. Another patch coming soon.

</pre>
<p>[psi/zchar42.c]</p>
</blockquote>

<p><strong><a name="2008-11-15T140727.807825Z"></a>
2008-11-15T14:07:27.807825Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix PS interpreter: issues with ICCBased spaces

Details:
Bug #690169 Regression: seg fault reading  Bug689830.pdf, Bug689831.pdf, and annots.pdf

The 9218 revision to restore the 'optional' nature of the Alternate in ICCBased colour spaces was unfortunately incomplete. This led to us trying to set a 'null' colour space when a PDF file had a damaged and unusable ICC specification.

We now use the technique specified in the PDF Reference, take the value of 'N' from the space and use that to select an appropriate alternate, when one is not specified.

</pre>
<p>[psi/zcolor.c]</p>
</blockquote>

<p><strong><a name="2008-11-13T142305.749468Z"></a>
2008-11-13T14:23:05.749468Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Skip null entries in /Annots array. Bug 690161.

</pre>
<p>[Resource/Init/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2008-11-13T020249.620374Z"></a>
2008-11-13T02:02:49.620374Z Ray Johnston</strong></p>
<blockquote>
<pre>
Revert 8.63 behavior where the /Alternate key/value pair in ICCBased param dictionaries
is optional. Bug 690165 for customer 850.

DETAILS:

This allows:

[ /ICCBased &lt;&lt; /N 3 /DataSource (srgb.icc) (r) file &gt;&gt; ] setcolorspace

to work, where srgb.icc is the path to an 'input' ICC color profile.

Until Ghostscript has support for ICC profiles throughout, this is useful to
allow for setting the Resource/ColorSpace/Default*** colorspaces (or
defining the ColorSpace resources) using ICC profiles.
</pre>
<p>[psi/zcolor.c]</p>
</blockquote>

<p><strong><a name="2008-11-10T190157.531817Z"></a>
2008-11-10T19:01:57.531817Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist writer) : A crash when transparent object appears over the page top.

DETAILS :

Bug 690149 &quot;PDF-file can not be converted&quot;.

The transparency compositor cropping caused an attempt to
Write to a non-existing band over the page top.
This patch skips writing such compositor commands. 


</pre>
<p>[base/gxclimag.c]</p>
</blockquote>

<p><strong><a name="2008-11-09T203808.817663Z"></a>
2008-11-09T20:38:08.817663Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (CID font emulation) : CID from another writing mode rendered a wrong glyph (part 2).

DETAILS :

This change fixes the previous change's commitment error.
This log message describes the union of the 2 changes.

This is a second partial fix for Bug 689304
&quot;improper handling of vertical japanese text&quot;, related to Comment #30, #31.

When emulating a CID font with an Open Type font, a CID is first
mapped to an OpenType encoding and then to a glyph index.
However OpenType provides same character codes for glyph variants,
which render differently depending on writing mode.
The glyph '(' is an example.

This patch works for OpenType fonts only, which provide a GSUB for vertical 
writing mode.
It is not working for True Type collections with no GSUB.
They need a further improvement.

The patch assumes that all interpreters initialize a Type 42 font with 
zeroing all its fields.
Postscript interpreter does so since a long ago, but we're not sure about 
others.
They may need an improvement.

1. Define a new resource category SubstCID (Resource/Init/gs_ciddc.ps).

2. Provide a tool for generating resources for that category 
(toolbin/GenSubstCID).

3. Provide resources for various orderings (Resource/SubstCID/CNS1-WMode,
Resource/SubstCID/GB1-WMode, Resource/SubstCID/Japan1-WMode, 
Resource/SubstCID/Korea1-WMode).

4. When loading a TrueType or OpenType font for a CID font emulation, 
associate an
appropriate SubstCID resource to it (Resource/Init\gs_cidtt.ps).
(We do associate the resource with TrueType hoping that some
True Type fonts may provide GSUB).

5. Define a new structure gs_subst_CID_on_WMode_s for storing that 
information
for the graphics library (base\gxfcid.h), and its garbager descriptor 
(base/gsfcid.c).
Since it may duplicate for several fonts, it is shared and 
reference-counted.

6. The new function get_subst_CID_on_WMode loads the resource data for the 
graphics library
in psi\zfcid1.c . Note it is implemented for PS interpreter only.

7. Generalized gs_type42_substitute_glyph_index_vertical with providing a 
CID in base/gstype42.c
and made it be a virtual function of gs_font_type42 (base/gxfont42.c).
We're not sure how other interpreters initialize the font, so
we're checking it for NULL for safety and use 
gs_type42_substitute_glyph_index_vertical
as a default implementation.

8. font11_substitute_glyph_index_vertical is another implementation of that 
function, which
accounts gs_subst_CID_on_WMode_s data for providing a right glyph depending 
on WMode.
Rather a SubstCID resource provides a substitution, currently
we only use the fact that a CID is substituted, and never use
the substituting CID. Nevertheless we prefer to define and store the 
resource
in the complete form for possible improvements in future (zfcid1.c).

9. release_subst_CID_on_WMode automatically releases the resource data
when all fonts (that use it) are released.

10. Added SubstCID to the ROM file system in psi/psromfs.mak .

11. Minor unrelated fix : propagate errors from gs_font_notify_register for 
(7) in base/gstype42.c .

</pre>
<p>[psi/zchar42.c Resource/Init/gs_ciddc.ps Resource/Init/gs_cidtt.ps psi/int.mak psi/zfcid1.c psi/zfont42.c]</p>
</blockquote>

<p><strong><a name="2008-11-09T190930.285684Z"></a>
2008-11-09T19:09:30.285684Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (CID font emulation) : CID from another writing mode rendered a wrong 
glyph (part 1).
This revision is incomplete due to a commitment error. Please use next 
revision.

DETAILS :

This is a second partial fix for Bug 689304
&quot;improper handling of vertical japanese text&quot;, related to Comment #30, #31.

When emulating a CID font with an Open Type font, a CID is first
mapped to an OpenType encoding and then to a glyph index.
However OpenType provides same character codes for glyph variants,
which render differently depending on writing mode.
The glyph '(' is an example.

This patch works for OpenType fonts only, which provide a GSUB for vertical 
writing mode.
It is not working for True Type collections with no GSUB.
They need a further improvement.

The patch assumes that all interpreters initialize a Type 42 font with 
zeroing all its fields.
Postscript interpreter does so since a long ago, but we're not sure about 
others.
They may need an improvement.

1. Define a new resource category SubstCID (Resource/Init/gs_ciddc.ps).

2. Provide a tool for generating resources for that category 
(toolbin/GenSubstCID).

3. Provide resources for various orderings (Resource/SubstCID/CNS1-WMode,
Resource/SubstCID/GB1-WMode, Resource/SubstCID/Japan1-WMode, 
Resource/SubstCID/Korea1-WMode).

4. When loading a TrueType or OpenType font for a CID font emulation, 
associate an
appropriate SubstCID resource to it (Resource/Init\gs_cidtt.ps).
(We do associate the resource with TrueType hoping that some
True Type fonts may provide GSUB).

5. Define a new structure gs_subst_CID_on_WMode_s for storing that 
information
for the graphics library (base\gxfcid.h), and its garbager descriptor 
(base/gsfcid.c).
Since it may duplicate for several fonts, it is shared and 
reference-counted.

6. The new function get_subst_CID_on_WMode loads the resource data for the 
graphics library
in psi\zfcid1.c . Note it is implemented for PS interpreter only.

7. Generalized gs_type42_substitute_glyph_index_vertical with providing a 
CID in base/gstype42.c
and made it be a virtual function of gs_font_type42 (base/gxfont42.c).
We're not sure how other interpreters initialize the font, so
we're checking it for NULL for safety and use 
gs_type42_substitute_glyph_index_vertical
as a default implementation.

8. font11_substitute_glyph_index_vertical is another implementation of that 
function, which
accounts gs_subst_CID_on_WMode_s data for providing a right glyph depending 
on WMode.
Rather a SubstCID resource provides a substitution, currently
we only use the fact that a CID is substituted, and never use
the substituting CID. Nevertheless we prefer to define and store the 
resource
in the complete form for possible improvements in future (zfcid1.c).

9. release_subst_CID_on_WMode automatically releases the resource data
when all fonts (that use it) are released.

10. Added SubstCID to the ROM file system in psi/psromfs.mak .

11. Minor unrelated fix : propagate errors from gs_font_notify_register for 
(7) in base/gstype42.c .

</pre>
<p>[Resource/SubstCID/CNS1-WMode base/gxfcid.h Resource/SubstCID base/lib.mak Resource/SubstCID/GB1-WMode Resource/SubstCID/Japan1-WMode base/gsfcid.c base/gxfont42.h psi/psromfs.mak base/gstype42.c toolbin/GenSubstCID.ps Resource/SubstCID/Korea1-WMode]</p>
</blockquote>

<p><strong><a name="2008-11-07T184934.403723Z"></a>
2008-11-07T18:49:34.403723Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove a duplicate typedef for stream_arcfour_state.

Details:

The duplicate (opaque pointer) typedef in gdevpdfx.h was
redundant and any users that dereferenced members or allocated
the struct on the stack already included sarc4.h.

I believe the idea here was just to hide the structure details
from some hypothetical user of the pdf_crypt api. However, the
stream state structure should either be opaque, with only the
typedef in sarc4.h or it should be public and using it requires
sarc4.h. The duplication isn't justified in either case.

Since stream state structures generally are public so they can
be stack-allocated, we decided to remove the duplicate typedef.

Also adds a missing dependency to the makefile.

Issue originally reported by the coverity hfa checker.
</pre>
<p>[base/gdevpdfx.h base/devs.mak]</p>
</blockquote>

<p><strong><a name="2008-11-06T235127.600449Z"></a>
2008-11-06T23:51:27.600449Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Updates to nightly regressions to allow them to run under Mac OS X.  

Details:

Change uname parameters from '-m -o' to '-m -s'
Don't appened &quot;.db&quot; to filename when opening database.
Replace sendmail python function with call to /usr/bin/sendmail.
Archive daily rasters.
Change location of gscdef.c from src to base.
Call time from /usr/local/bin (/usr/bin/time doesn't take -f option).

Note that some of these changes are not compatible with peeves.
</pre>
<p>[toolbin/tests/make_baselinedb.py toolbin/tests/gscheck_raster.py toolbin/tests/testdiff.py toolbin/tests/compare_checksums.py toolbin/tests/gscheck_pdfwrite.py toolbin/tests/build_revision.py toolbin/tests/check_dirs.py toolbin/tests/compare_checksumdb.py toolbin/tests/gsconf.py toolbin/tests/get_baseline_log.py toolbin/tests/run_nightly.py toolbin/tests/gstestgs.py toolbin/tests/run_regression.py toolbin/tests/update_baseline.py]</p>
</blockquote>

<p><strong><a name="2008-11-06T233055.150402Z"></a>
2008-11-06T23:30:55.150402Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Stopped generating 600 dpi raster files when running make_missing since they were never being tested.
</pre>
<p>[toolbin/tests/gsparamsets.py]</p>
</blockquote>

<p><strong><a name="2008-11-06T232754.191464Z"></a>
2008-11-06T23:27:54.191464Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Made some messages prettier.
</pre>
<p>[toolbin/tests/testdiff.py]</p>
</blockquote>

<p><strong><a name="2008-11-06T232502.686517Z"></a>
2008-11-06T23:25:02.686517Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Fixed typo.
</pre>
<p>[toolbin/tests/update_baseline.py]</p>
</blockquote>

<p><strong><a name="2008-11-06T201319.335714Z"></a>
2008-11-06T20:13:19.335714Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : A missed dependency in makefile.

</pre>
<p>[base/lib.mak]</p>
</blockquote>

<p><strong><a name="2008-11-06T200426.632073Z"></a>
2008-11-06T20:04:26.632073Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist interpreter) : A faster procesing without a preliminary clearing of the band buffer.

DETAILS :

The preliminary cleaning of the buffer appears unuseful because erasepage
in the clist code performs same function.

</pre>
<p>[base/gxclread.c]</p>
</blockquote>

<p><strong><a name="2008-11-06T190939.284217Z"></a>
2008-11-06T19:09:39.284217Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove an unused variable.
</pre>
<p>[base/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2008-11-06T190937.330669Z"></a>
2008-11-06T19:09:37.330669Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a missing include for pdf_prepare_stroke().
</pre>
<p>[base/gdevpdts.c base/devs.mak]</p>
</blockquote>

<p><strong><a name="2008-11-05T204122.951927Z"></a>
2008-11-05T20:41:22.951927Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove psromfs.mak from ugcclib.mak.

This makefile is ostensibly for the graphics library only.
</pre>
<p>[base/ugcclib.mak]</p>
</blockquote>

<p><strong><a name="2008-11-05T204106.620266Z"></a>
2008-11-05T20:41:06.620266Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add -lpthread to ugcclib.mak. It is now required by sync=posync.
</pre>
<p>[base/ugcclib.mak]</p>
</blockquote>

<p><strong><a name="2008-11-05T082619.980667Z"></a>
2008-11-05T08:26:19.980667Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): several issues with PaintType 2 (stroked fonts) and PDF Text rendering modes.

Details:
Bug #690136 Differences in character stroke width
Bug #689970 major artefacts in pdfwriter output
Bug #688267 Ghostscript need native PDF graphic state
Bug #689654 pdfwrite ignores font /PaintType 1
Bug #689692 Colour and linewidth is not set correct for text with rendermode STROKE
and FILLSTROKE

The current implementation of text rendering modes has some problems. I've been able to address most of these in this patch by:

1) Making the charpath detection slightly less picky. This picks up more instances of filled text followed by 'charpath stroke', combining correctly into a PDF text  rendering mode.

2) Relaxing the criteria for detecting a Tr mode involving stroking.

3) Removing some spurious scaling, and applying a better scale factor when using stroked fonts (Paint Type 2).

There are still problems with this code, and they are insuperable in the current architecture of pdfwrite/PDF interpreter. Specifically; Text render mode 6 (fill, stroke and clip) doe snot work properly, text which is stroked using a linewidth set  outside the text block, and with a non-identity CTM and non-identity text matrix  results in incorrect stroke widths.

This will need to be addressed further under bug #688267, which is an enhancement. In the meantime this patch significantly improves the current implementation. Note; bug #689692 is still slightly incorrect with this patch, though improved. Bug #690025 is unchanged (still incorrect).

</pre>
<p>[base/gdevpdts.c base/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2008-11-04T050732.360011Z"></a>
2008-11-04T05:07:32.360011Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add support for indirect objects in /W and /W2 entries in the CIDFont
dictionary. Bug 690151.

</pre>
<p>[Resource/Init/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2008-11-04T033352.379523Z"></a>
2008-11-04T03:33:52.379523Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Export (i.e. don't undefine) runpdfpagerange procedure for the benefit
of PDF manipulation utilities. Bug 690153.
</pre>
<p>[Resource/Init/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2008-11-03T062632.640021Z"></a>
2008-11-03T06:26:32.640021Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a bug in object stream handling that sometimes dropped incremental
updates. Bug 690141.

DETAILS:
An incremental update can replace only some of the objects in the
object stream. Old code didn't check xref tables and resolfed all 
unresolved objects from the stream. Once resolved, an object is no
longer accessed through xref.

</pre>
<p>[Resource/Init/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2008-11-03T042851.792909Z"></a>
2008-11-03T04:28:51.792909Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix Floating Point excpetion caused by improper initializer of a private device
structure subclassed (in the klunky C ghostscript fashion) from the gx_device_printers_s
structure. Restructure a macro in base/gdevprn.h to help prevent similar bit rot in the
future.  Bug 690122.

DETAILS:

The problem was with devices that use the contrib/lips4/gdevlprn.h header
files. The lp_duplex_device_body_rest_ and lp_device_body_rest_ macros that
initialized the prn_device structure 'common' elements were out of date with
respect to the revision in the gx_device_printer_s structure made for the
multi-threaded rendering. The num_render_threads_requested integer was added.

I restructured the prn_device_body_rest2_ in base/gdevprn.h so that the
contrib/lips4/gdevlprn.h initialization macro could use this to minimize the
likelihood of bit rot in the future.

I did a search for other devices that might have the same problem and did not
find them (although I may have missed them).
</pre>
<p>[base/gdevprn.h contrib/lips4/gdevlprn.h]</p>
</blockquote>

<p><strong><a name="2008-10-28T031552.084170Z"></a>
2008-10-28T03:15:52.084170Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Don't assume that the top of the dictionary stack is writable or can be made
writable by allocating a new PDF graphic state. The latter cannot be done in
pdfinflt.ps and similar clients. This patch replaces my previous fix (r. 9124)
for the bug 690088. Bug 690134.

</pre>
<p>[Resource/Init/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2008-10-28T004349.468966Z"></a>
2008-10-28T00:43:49.468966Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Ignore named encodings for known symbolic fonts. Bug 690135, customer 580.

DETAILS:
Acrobat reader appears to know that /WinAnsiEncoding is not compatible with
Wingdings2. The patch looks up the font name in a table to determine whether
the font is symbolic because corresponding /Flags attribute is unreliable.

</pre>
<p>[Resource/Init/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2008-10-27T215317.877952Z"></a>
2008-10-27T21:53:17.877952Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the documentation reference to psromfs.mak.

This file moved from base to psi in r9126.
</pre>
<p>[doc/Develop.htm]</p>
</blockquote>

<p><strong><a name="2008-10-25T043430.742669Z"></a>
2008-10-25T04:34:30.742669Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fix for bug 690103.  This issue was introduced with r8868 where spatial interpolation in the source color space was introduced.  The part that was missing in that commit was to handle the case where we had 8 bit image data that was non CIE based and NOT encoded with [0 1] .

DETAILS:

This patch was tested with forced interpolation on a set of files that are known to have issues with interpolation. It performed properly on those and on the customer's bug file. 

The part that was missing in the old code was the case where we have encoded
(not [0 1]) nonindexed 8 bit image data that is not CIE based.	For this case,
it was not getting properly decoded prior to interpolation.  

</pre>
<p>[base/lib.mak base/gscspace.h base/gxiscale.c base/gscspace.c]</p>
</blockquote>

<p><strong><a name="2008-10-24T145144.819826Z"></a>
2008-10-24T14:51:44.819826Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT font handler) : Properly process a broken TTC header.

DETAILS :

Bug 690105 &quot;seg fault reading pcl file&quot;

1. Check for TTC version header and print error if it is unknown.
2. Fixing the formatting according to C-style.htm .

</pre>
<p>[base/gstype42.c]</p>
</blockquote>

<p><strong><a name="2008-10-23T043329.326096Z"></a>
2008-10-23T04:33:29.326096Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Make gx_sort_ht_order() deterministic.

DETAILS:

The gx_sort_ht_order() routine sorts the halftone mask values.
These values are often the same and qsort() does not guarantee the
order of equal elements.  However, the order appears to be significant
for the output (differences in the nightly regression are seen on
different computers).  And it's also possible that this indeterminism
is part of the cluster regression problem.

This revision sorts equal masks by index value.

DIFFERENCES EXPECTED:

Some of the pbmraw or pkmraw nightly regressions may have minor
differences in the dithering pattern.

</pre>
<p>[base/gsht.c]</p>
</blockquote>

<p><strong><a name="2008-10-23T042842.566180Z"></a>
2008-10-23T04:28:42.566180Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Changed decleration of det from float to double in gs_matrix_invert().  

DETAILS:

On peeves the results of gs_matrix_invert() change depending on
whether or not compiler optimization is enabled if det is declared
as a float.  I believe this is due to the optimized code never
storing the det value so it never get shortened to a float; by
declaring it as a double the unoptimized code should act the same.

</pre>
<p>[base/gsmatrix.c]</p>
</blockquote>

<p><strong><a name="2008-10-21T180959.854984Z"></a>
2008-10-21T18:09:59.854984Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix a makefile dependency which should have been added in r8872.
</pre>
<p>[base/lib.mak]</p>
</blockquote>

<p><strong><a name="2008-10-21T162609.248809Z"></a>
2008-10-21T16:26:09.248809Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PS intetreter) : Crash in garbager when resetting marks in names table.

DETAILS :

Bug 690129 &quot;MSVC8 x64 debug build crashes in names_trace_finish&quot;

1. The real bug : the old code sometimes removes an element from nt-&gt;sub table with name_scan_sub,
and then resets marks in the element that has same table index. 
If the removed element is the last one,
it tryes to process an uninitialised element and crashes indeterministically.
The new variable save_count works for that.
The bug persisted since the repository was created.

2. Minor change : an optimization : The old code checked twice
for the loop exit condition. To fix it we changed the type of
the variable 'i' and changed the loop condition.

</pre>
<p>[psi/iname.c]</p>
</blockquote>

<p><strong><a name="2008-10-21T103552.809111Z"></a>
2008-10-21T10:35:52.809111Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Conversion of PaintType 0 fonts to text rendering mode
1 sometimes produced incorrect stroke width.

Details:
Bug #690116 &quot;StrokeWidth of outline font too small&quot;

pdfwrite converts fonts with a PaintType of 0 (outline fonts) to a normal
font, but sets the text rendering mode to 1. The calculation of the 
required stroke width was insufficient in some cases.

</pre>
<p>[base/gdevpdts.c base/gdevpdtt.c base/gdevpdts.h]</p>
</blockquote>

<p><strong><a name="2008-10-19T203203.940940Z"></a>
2008-10-19T20:32:03.940940Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Search for 'startxref' instead of '%%EOF' in PDF recovery code because
'%%EOF' is mangled more ofthen than 'startxref'. Bug 690071, customer 384.

</pre>
<p>[Resource/Init/pdf_rbld.ps]</p>
</blockquote>

<p><strong><a name="2008-10-19T012328.662366Z"></a>
2008-10-19T01:23:28.662366Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Extend the size of the array for procedures scheduled for binding in DELAYBIND
mode to 2000. Prevent an overflow when 3rd party code (such as Ubuntu CJKV
patch) binds many new procedures. Bug 690124.

</pre>
<p>[Resource/Init/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2008-10-18T105242.057112Z"></a>
2008-10-18T10:52:42.057112Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Fixed bug #690032: bjc600/bjc800 drivers do not work with PDF input
</pre>
<p>[base/gdevcdj.c]</p>
</blockquote>

<p><strong><a name="2008-10-18T031141.445457Z"></a>
2008-10-18T03:11:41.445457Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a bug in a new reusable stream implementation introduced in rev. 8810.
Take into account unread data left in the stream buffer before refilling
the buffer. Bug 690090, customers 384, 581, 661.

</pre>
<p>[psi/zfrsd.c]</p>
</blockquote>

<p><strong><a name="2008-10-17T225821.764880Z"></a>
2008-10-17T22:58:21.764880Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update properties for cups driver files.
</pre>
<p>[cups/pstoraster.in cups/pdftoraster.c cups/pstopxl.in cups/pxlmono.ppd cups/cups.mak cups/gdevcups.c cups/pxlcolor.ppd]</p>
</blockquote>

<p><strong><a name="2008-10-17T225738.635737Z"></a>
2008-10-17T22:57:38.635737Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Use &#36;(PDFTORASTER_XE) for path to compiled pdftoraster binary
</pre>
<p>[cups/cups.mak]</p>
</blockquote>

<p><strong><a name="2008-10-17T214627.567328Z"></a>
2008-10-17T21:46:27.567328Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Put new files under MIT license,
</pre>
<p>[cups/pdftoraster.c cups/pdftoraster.convs]</p>
</blockquote>

<p><strong><a name="2008-10-17T205006.903656Z"></a>
2008-10-17T20:50:06.903656Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist writer) : Wrong compositor cropping when a shading is entirely clipped out (continued).

DETAILS :

Bug 690106 &quot;Regression: /unregistered in --run--&quot; 

The recent patch for the subject is not sufficient because
an empty clipping condition cannot be anticipated in the clist writer.
To fix it we introduce a new flag gx_device_clist_writer_s::cropping_saved
especially for clist_fill_path to know whether it was called recursively
for passing an untrivial clipping path for a shading. The cropping must be restored
in the outer call iff it is set.

</pre>
<p>[base/gxclpath.c base/gxclist.c base/gxclist.h]</p>
</blockquote>

<p><strong><a name="2008-10-17T202704.052662Z"></a>
2008-10-17T20:27:04.052662Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Added Ghostscript-based pdftoraster filter
</pre>
<p>[cups/pdftoraster.c cups/cups.mak cups/pdftoraster.convs]</p>
</blockquote>

<p><strong><a name="2008-10-17T164958.474885Z"></a>
2008-10-17T16:49:58.474885Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Fixed several bugs, like crash if input is PDF (bug #690101), duplex not working, ...
</pre>
<p>[cups/gdevcups.c]</p>
</blockquote>

<p><strong><a name="2008-10-17T134434.259593Z"></a>
2008-10-17T13:44:34.259593Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Consider /Identity CMap compatible with any CIDFont /Ordering. Bug 690120.

</pre>
<p>[Resource/Init/gs_cidcm.ps]</p>
</blockquote>

<p><strong><a name="2008-10-17T093135.914027Z"></a>
2008-10-17T09:31:35.914027Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): ICCBased color spaces in input PDF files, /Alternate space converted to
ICCBased in output PDF file.

Details:
Bug #690038 &quot;Regression: ghostscript cannot read ghostscript produced PDF file.&quot;

The PDF interpreter always runs with (in effect) /UseCIEColor set to true. This converts
process spaces to CIE color spaces, which are emitted in the PDF as ICCBased color
spaces when using pdfwrite/ps2write.

However, for ICCBased color spaces this caused the /Alternate space of the ICCBased
space to become another ICCBased space, which is legal but silly, and caused the GS PDF
interpreter problems.

Modified the alternate space extraction routines so that they can use the UseCIE flag in
the color handling code to prevent the base space being  substituted with a CIE space,
when the parent space is an ICCBased space.

Also discovered in passing that zfsample.c and zfunc4.c use zcolor.h but the makefile
did not have dependencies for them. Fixed.

</pre>
<p>[psi/zcolor.c psi/zfunc4.c psi/zcolor.h psi/int.mak psi/zfsample.c]</p>
</blockquote>

<p><strong><a name="2008-10-15T174700.008618Z"></a>
2008-10-15T17:47:00.008618Z Ray Johnston</strong></p>
<blockquote>
<pre>
Switch file I/O of 'opdfread.ps' to 'strmio' that supports the %rom% file system
as well as the default (%os%) file system. Bug 690074.
</pre>
<p>[base/gdevpdfu.c base/devs.mak]</p>
</blockquote>

<p><strong><a name="2008-10-15T070640.437422Z"></a>
2008-10-15T07:06:40.437422Z Ken Sharp</strong></p>
<blockquote>
<pre>
Revision 9154 accidentally left a temporary C++ style comment in place.

</pre>
<p>[psi/zicc.c]</p>
</blockquote>

<p><strong><a name="2008-10-15T045130.597312Z"></a>
2008-10-15T04:51:30.597312Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fix for bug 689961.

There was a problem with the testing to determine if a color space mapping was linear within a triangle and along a line.  The old code assumed the number of components was the same in the client and device color space.  In general this is not true, especially if we have a DeviceN color space with one color and a CMYK output device, which was the test case given.  

</pre>
<p>[base/gscspace.c]</p>
</blockquote>

<p><strong><a name="2008-10-15T013243.847670Z"></a>
2008-10-15T01:32:43.847670Z Ralph Giles</strong></p>
<blockquote>
<pre>
Exclude local repository files from other version control systems
from clusterpush.
</pre>
<p>[toolbin/clusterpush.sh]</p>
</blockquote>

<p><strong><a name="2008-10-15T013239.731625Z"></a>
2008-10-15T01:32:39.731625Z Ralph Giles</strong></p>
<blockquote>
<pre>
Read git commit names if an svn revision number isn't available.
</pre>
<p>[toolbin/clusterpush.sh]</p>
</blockquote>

<p><strong><a name="2008-10-15T013233.815878Z"></a>
2008-10-15T01:32:33.815878Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the clusterpush script for the new source locations.

Previously we copied the baseline from the last ghostpcl run on the
cluster, but since the ghostpdl tree moved to the public repository it
runs in an updating directory like gs.

Also, compare return codes numerically instead of as a string.
</pre>
<p>[toolbin/clusterpush.sh]</p>
</blockquote>

<p><strong><a name="2008-10-14T182724.066580Z"></a>
2008-10-14T18:27:24.066580Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (PS interpreter): .seticcspace leaving operand on stack.

Details:
Bug #690039 &quot;failure to read ICC profiles generated by  
Adobe Photoshop Version 7 and 9&quot;.

ICC profiles in PostScript comments are handled by the comment 
parsing code in gs_icc.ps, using the .seticcspace operator. After
the recent change to handle colour in 'C' rather than PostScript,
the .seticcspace operator was not removing its argument from the 
operand stack.

This led to the comment processing for other purposes (specifically
pdfwrite in this case) generating errors, as the stack had been disturbed.

Altered the 'seticc' routine (called by .seticcspace) to remove the
operand from the stack. Also required altering the C colour processing
to increment the operand stack and pass the operand that way, when 
calling seticc for PDF interpretation.

</pre>
<p>[psi/zcolor.c psi/zicc.c]</p>
</blockquote>

<p><strong><a name="2008-10-13T210348.526048Z"></a>
2008-10-13T21:03:48.526048Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Make Duplex with the &quot;pxlcolor&quot; and &quot;pxlmono&quot; drivers work (standard command line options &quot;-dDuplex&quot; and &quot;-dTumble&quot;).
</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2008-10-12T063818.212672Z"></a>
2008-10-12T06:38:18.212672Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Remove spurious un-definition of GlobalSubrs attribute during loading of
OpenType CFF fonts as CIDFont resources. Bug 690113, customer 1110.

</pre>
<p>[Resource/Init/gs_cff.ps]</p>
</blockquote>

<p><strong><a name="2008-10-10T085142.858031Z"></a>
2008-10-10T08:51:42.858031Z Ken Sharp</strong></p>
<blockquote>
<pre>
The update for opdfread.ps in revision 8706 missed a required routine 'putu32'.

Details:
putu32, used to update the offsets of TrueType tables in the TrueType header, uses
putu16, which was accidentally omitted. This (oddly) didn't seem to cause a problem with
testing but did for the customer. Added the missing routine.

</pre>
<p>[Resource/Init/opdfread.ps]</p>
</blockquote>

<p><strong><a name="2008-10-09T194814.487705Z"></a>
2008-10-09T19:48:14.487705Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Scale widget annotations in x and y directions to fit the BBox of the
appearance stream into the annotation rectangle. Old code considered
y direction only. Bug 690109.

DETAILS:
This implementation is mainly based on the experiments with AR5.

</pre>
<p>[Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2008-10-09T175310.358436Z"></a>
2008-10-09T17:53:10.358436Z Ray Johnston</strong></p>
<blockquote>
<pre>
Increase stack size to allow GS to run on older NT versions. Thanks to Alex
for pointing this out.
</pre>
<p>[psi/dw32c.def]</p>
</blockquote>

<p><strong><a name="2008-10-08T150358.878575Z"></a>
2008-10-08T15:03:58.878575Z Ray Johnston</strong></p>
<blockquote>
<pre>
Increase stack size to allow GS to run on older NT versions. Thanks to Alex
for pointing this out.
</pre>
<p>[psi/dwmain32.def]</p>
</blockquote>

<p><strong><a name="2008-10-08T134055.237034Z"></a>
2008-10-08T13:40:55.237034Z Ken Sharp</strong></p>
<blockquote>
<pre>
Log:
Fix: ps2write. Very large TrueType fonts (&gt;64Kb), when converted to Type 42
fonts for use in PostScript, must contain an /sfnts entry, which is an
array of strings comprising the TT font. There are restrictions on where
the original data is split to form the strings, which ps2write was not
honouring.

DETAILS:
Bug #690044 &quot;Printer error (49,4C02) with ps2write output&quot;
Bug #690012 &quot;Error with ps2write output ps file when Unicode font is used&quot;
Bug #690030 &quot;Issue with NeverEmbed flag with ps2write device for some of the fonts&quot;

There are five changes made to opdfread.ps in order to fix these problems:

1) The VM allocation mode used by opdfread is now local throughout, where 
   previously it was global. Judging by the number of local hacks, this 
   has frequently caused problems in the past.

2) There was a problem if a Font Descriptor contained neither a FontFile
   nor a FontFile2 entry. This was due to not embedding fonts, but caused
   the code to enter an infinte loop looking for one or the other.

3) After encountering the 'xref' in the PDF file, the code simply
   flushed the input file. This could potentially cause a problem if the
   EOF was not signalled back to the interpreter. This was theorised to
   be one of the issues, and fixed in passing, even though it was not
   in fact causing a problem.

4) The sfnts array is now built up from strings which follow the rules
   laid out in the Type 42 Font Format specification (tech note 5012)
   In particular the glyf table is now split on glyph boundaries. This
   only seems to cause problems for Adobe interpreters.

5) The 'post' table processing was modified to use an array of strings
   instead of a single string, if the table was &gt;64Kb.

</pre>
<p>[Resource/Init/opdfread.ps]</p>
</blockquote>

<p><strong><a name="2008-10-08T074352.342922Z"></a>
2008-10-08T07:43:52.342922Z Igor Melichev</strong></p>
<blockquote>
<pre>
TT fonts : An initial implementation of GSUB.

DETAILS :

This is a partial fix for bug 689304  
&quot;improper handling of vertical japanese text&quot;.
It works for brackets and punctuation signs orientation
when a vertical CJK text is painted with an 
Open Type font that defines a GSUB table.

The curent implementation always chooses a Format 1 
substitution table that substitutes single glyphs to single glyphs.
It doesn't account LangSys and feature tables.
Such logic is owned from the CJK patch attached to the bug 689304.
It may need further improvements.

Opposite to CJK group we implement it in C to allow
to it to work for other interpreters besides Postscript.

Interpreters may need to add an explicit call to 
the new function gs_type42_substitute_glyph_index_vertical
to involve the new functionality. This happens due to
a compatibility to PS interpreter that needs to call
the new function from the interpreter code rather than from
the graphics library.

See comments in code for more details.

</pre>
<p>[psi/zchar42.c base/gxfont42.h base/gstype42.c Resource/Init/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2008-10-08T055627.963219Z"></a>
2008-10-08T05:56:27.963219Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix Windows stack overflow when NumRenderingThreads &gt; 0. This was identified
during testing for bug 690108 (see comments, #1 and #2). This is a work around
as it does not address the excessive stack usage, but does work around the
problem by throwing memory at it. Bug 690198.
</pre>
<p>[base/gp_wsync.c]</p>
</blockquote>

<p><strong><a name="2008-10-07T200558.844384Z"></a>
2008-10-07T20:05:58.844384Z Ray Johnston</strong></p>
<blockquote>
<pre>
Restore function of NumRenderingThreads &gt; 0 that was inadvertently disabled
by previous commit to this module.

DETAILS:
The segfault was fixed by making sure that the clist structure was initialized
as a 'reader', but this included setting ymin=0, which meant that the following
test for crdev-&gt;render_threads == NULL always reverted to single threaded
rendering.

Note that this also will return the error if &quot;clist_close_writer_and_init_reader&quot;
returns an error value (&lt;0), which is consistent with the behavior of the
clist_get_bite_rectangle function (NumRenderingThreads==0).
</pre>
<p>[base/gxclthrd.c]</p>
</blockquote>

<p><strong><a name="2008-10-05T175125.414873Z"></a>
2008-10-05T17:51:25.414873Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix SEGV when NumRenderingThreads &gt; 0 caused by improper clist reader phase
initialization. Bug #690108.

DETAILS:
Make sure that the clsit device is initialized to 'reader' mode before checking
the 'render_threads' element of the reader device. Prevents a SEGV when the
corresponding element of the 'writer' device structure was non-zero at the end
of the page since the render_threads table will not have been allocated and
some other (invalid) pointer would be used instead.
</pre>
<p>[base/gxclread.c base/gxclthrd.c]</p>
</blockquote>

<p><strong><a name="2008-10-02T193322.695690Z"></a>
2008-10-02T19:33:22.695690Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move psromfs.mak to the interpreter source tree.

This file defines variables used by lib.mak, but the resources are all 
related to the ps interpreter, so it makes more sense to keep it there.
It is only included by top-level makefiles, so this doesn't violate
the dependency boundary.
</pre>
<p>[psi/os2.mak base/bcwin32.mak base/ugcclib.mak base/psromfs.mak psi/psromfs.mak base/macosx.mak base/watcw32.mak base/Makefile.in base/unix-gcc.mak base/unixansi.mak ijs/unix.mak psi/msvc32.mak base/macos-mcp.mak]</p>
</blockquote>

<p><strong><a name="2008-09-30T190135.905183Z"></a>
2008-09-30T19:01:35.905183Z Ray Johnston</strong></p>
<blockquote>
<pre>
Clean up a few coverity gripes (nothing important)
</pre>
<p>[base/gxclthrd.c]</p>
</blockquote>

<p><strong><a name="2008-09-27T013936.090759Z"></a>
2008-09-27T01:39:36.090759Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Set the temporary value of PDFDEBUG flag using 'gput' procedure instead of
'def' because initial PDF graphic state is represented by a read-only
dictionary. Bug 690088.

</pre>
<p>[Resource/Init/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2008-09-25T234803.662203Z"></a>
2008-09-25T23:48:03.662203Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Process invalid PDF operator QBT as Q BT .
Bug 690089, customer 384.

</pre>
<p>[Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2008-09-25T133655.133901Z"></a>
2008-09-25T13:36:55.133901Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (printer devices) : Allow retries for raster buffer allocation when BufferSpace is default.

DETAILS :

Bug 690055 &quot;seg fault at higher resolutions&quot;. 

1. The old code implements a branch with increasing the buffer space
when a clist writer initialization fails with limitcheck and
the buffer size is default.
However the clist writer initialization never returns limitcheck,
it does return rangecheck instead. I guess the bug is in the
retry condition so I change it to rangecheck.

2. When the buffer space size is not default,
the old code crashes while setpagedevice,
if the device was opened. The clist initialization
returns with an inconsistent clist writer state 
and the device still has is_open flag set.
The new code resets is_open if the clist writer initialization
fails while setpagedevice.    

Thanks to Ray for participation.


</pre>
<p>[base/gxclist.c base/gdevprn.c]</p>
</blockquote>

<p><strong><a name="2008-09-25T101003.369546Z"></a>
2008-09-25T10:10:03.369546Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist writer) : Wrong compositor cropping when a shading is entirely clipped out.

DETAILS :

Bug 690078 &quot;clist error in fts_41xx.xps and fts_39xx.xps&quot;.

clist_fill_path implements a special processing of a clipping path for shadings.
It falls back to gx_default_fill_path, which accounts both filling path and clipping patch.
Doing so, gx_default_fill_path passes the clipping path to the clist writer
as a high level object with calling clist_fill_path with a NULL color.

However the 2 calls to clist_fill_path differently processed the
case of the empty clipping : the first call did not return immediately
and restored the compositor cropping interval after returning from gx_default_fill_path, 
but the second call does return immediately and did not save the interval before
the clipping path is written. Thus the interval was restored to a wrong state 
that occasionally left from a preceeding filling operation.

This patch moves the check for empty clipping ahead the main
processing in clist_fill_path, so that the 2 calls do same thing
about the skipping of an empty clipping.

</pre>
<p>[base/gxclpath.c]</p>
</blockquote>

<p><strong><a name="2008-09-24T110746.268855Z"></a>
2008-09-24T11:07:46.268855Z Ralph Giles</strong></p>
<blockquote>
<pre>
Initial support for aes decryption streams.

Details:

This adds an AESDecode filter to the interpreter which wraps the
new aes stream implementation.
</pre>
<p>[psi/zfaes.c psi/int.mak]</p>
</blockquote>

<p><strong><a name="2008-09-24T110743.989804Z"></a>
2008-09-24T11:07:43.989804Z Ralph Giles</strong></p>
<blockquote>
<pre>
Initial support for aes decryption streams.

Details:

This adds support for compiling the xyssl aes implementation added
in r8870, and a stream library wrapper which calls it.

Note that while an s_aes_set_key() procedure is provided to set a
key in an allocated stream state, it merely stores the key, and the
actual allocation of the aes_context structure and initialization
with the key happen the first time the stream's process() method is
called.

This is because a typical call to filter_read() in the interpreter
binding will end up memcpy()ing this to its own separately allocated
stream state. This preserves any static initialization performed by
the caller, such as passing in the key, but the xyssl aes_context
structure includes an internal pointer, and this is not updated when
the state is copied.

The internal pointer provides an indirect reference to support optional
storage of the sbox in secure memory. We're not using this feature, so
we could remove it, or update the pointer ourselves when our process()
method is first called. However, working around the issue by delaying
all opaque initialization until the stream is working is more robust.
</pre>
<p>[base/saes.c base/lib.mak base/saes.h]</p>
</blockquote>

<p><strong><a name="2008-09-23T185730.153977Z"></a>
2008-09-23T18:57:30.153977Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PS interpreter) : Incorrect data in garbager descriptor for reusable stream state.

DETAILS :

The bug was introduced in rev 8810.
It defines a wrong offset for a relocating pointer.
The reason is an inaccurate copy-and-replace coding.
Fortunately the offset pointed to a static data pointer,
which the garbager filtered out with an error message.

</pre>
<p>[psi/zfrsd.c]</p>
</blockquote>

<p><strong><a name="2008-09-22T105652.199700Z"></a>
2008-09-22T10:56:52.199700Z Ken Sharp</strong></p>
<blockquote>
<pre>
Remove a number of no longer required includes from the source, and update the makefile to remove the dependencies.

Local regression testing shows no differences, local builds correctly generate executable.

</pre>
<p>[base/gdevpdfm.c base/gdevpsdp.c base/gdevpdt.c base/gdevpdfo.c base/gdevpdf.c base/gdevpsdu.c base/gdevpdfd.c base/gdevpdfu.c base/gdevpdfv.c base/gdevpsdi.c base/gdevpdfg.c base/devs.mak]</p>
</blockquote>

<p><strong><a name="2008-09-19T233125.043936Z"></a>
2008-09-19T23:31:25.043936Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix a double fclose().

fuzzy_diff_images() doesn't open the files it reads from, so it should
not close them when cleaning up. The caller takes care of this on line
764, right after calling fuzzy_diff_images().
</pre>
<p>[toolbin/tests/fuzzy.c]</p>
</blockquote>

<p><strong><a name="2008-09-19T214510.190751Z"></a>
2008-09-19T21:45:10.190751Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct two typos in error message strings.
</pre>
<p>[toolbin/tests/fuzzy.c]</p>
</blockquote>

<p><strong><a name="2008-09-19T214509.139047Z"></a>
2008-09-19T21:45:09.139047Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move the freport initizialization out of fuzzy_diff_images() to silence
a gcc uninitialized variable warning.
</pre>
<p>[toolbin/tests/fuzzy.c]</p>
</blockquote>

<p><strong><a name="2008-09-19T214508.203062Z"></a>
2008-09-19T21:45:08.203062Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove trailing whitespace.
</pre>
<p>[toolbin/tests/fuzzy.c]</p>
</blockquote>

<p><strong><a name="2008-09-19T214506.338528Z"></a>
2008-09-19T21:45:06.338528Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix a gcc warning. Bug 690054.

Details:

The gs_note_error() macro can't be called like a normal function. In
non-debug builds it reduces to its argument, generating an empty
statement. Placing it after a return or on the right hand side of an
assignment prevents this warning.
</pre>
<p>[base/gdev8510.c]</p>
</blockquote>

<p><strong><a name="2008-09-19T162232.262870Z"></a>
2008-09-19T16:22:32.262870Z Ralph Giles</strong></p>
<blockquote>
<pre>
Include our math_.h wrapper instead of math.h.

Details:

We have header_.h wrappers for most system headers which include various 
platform-specific #ifdef trees to ensure the symbols we use are defined.

Except for some of the bootstrap code, these wrappers should always be 
used instead of the system headers.
</pre>
<p>[psi/zcolor.c psi/int.mak]</p>
</blockquote>

<p><strong><a name="2008-09-19T160802.308202Z"></a>
2008-09-19T16:08:02.308202Z Ralph Giles</strong></p>
<blockquote>
<pre>
Also remove gscolor1.h from the zcolor.c dependency list.
</pre>
<p>[psi/int.mak]</p>
</blockquote>

<p><strong><a name="2008-09-19T134455.520555Z"></a>
2008-09-19T13:44:55.520555Z Ken Sharp</strong></p>
<blockquote>
<pre>
Remove gscolor1.h. We no longer use gs_setcmykcolor here and so this header is not required.

</pre>
<p>[psi/zcolor.c]</p>
</blockquote>

<p><strong><a name="2008-09-19T000151.675092Z"></a>
2008-09-19T00:01:51.675092Z Ralph Giles</strong></p>
<blockquote>
<pre>
Use a portable path separator in gs.mak.
</pre>
<p>[base/gs.mak]</p>
</blockquote>

<p><strong><a name="2008-09-18T235526.486186Z"></a>
2008-09-18T23:55:26.486186Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove a spurious &#36;(_I) and add use portable &#36;(D_)...&#36;(_D) for defines
as needed by the openvms build. Bug 690084.
</pre>
<p>[base/libpng.mak base/devs.mak]</p>
</blockquote>

<p><strong><a name="2008-09-18T235007.487730Z"></a>
2008-09-18T23:50:07.487730Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix typos in third-party library paths introduced in r6514. Bug 690084.
</pre>
<p>[base/openvms.mmk]</p>
</blockquote>

<p><strong><a name="2008-09-18T233116.150062Z"></a>
2008-09-18T23:31:16.150062Z Ralph Giles</strong></p>
<blockquote>
<pre>
Additional leading space characters before colons in makefiles. Bug 690084.
</pre>
<p>[base/lib.mak contrib/contrib.mak]</p>
</blockquote>

<p><strong><a name="2008-09-18T203208.326447Z"></a>
2008-09-18T20:32:08.326447Z Ralph Giles</strong></p>
<blockquote>
<pre>
Space makefile colons for the benefit of VMS. Bug 690084.

OpenVMS supports a basic makefile syntax, but requires a space on both 
sides of the dependency colon. We try to maintain this in our 
cross-platform makefiles. 
</pre>
<p>[contrib/contrib.mak base/contrib.mak base/devs.mak]</p>
</blockquote>

<p><strong><a name="2008-09-18T182322.617130Z"></a>
2008-09-18T18:23:22.617130Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move time_.h to the top of the include list.
</pre>
<p>[base/mkromfs.c]</p>
</blockquote>

<p><strong><a name="2008-09-18T003745.093298Z"></a>
2008-09-18T00:37:45.093298Z Ralph Giles</strong></p>
<blockquote>
<pre>
The SunPro compiler doesn't handle variable length arrays in structs.

Bug 689079. Patch from Jon Peatfield.
</pre>
<p>[contrib/opvp/opvp.h]</p>
</blockquote>

<p><strong><a name="2008-09-18T003743.189925Z"></a>
2008-09-18T00:37:43.189925Z Ralph Giles</strong></p>
<blockquote>
<pre>
Clean up whitespace in the opvp device source.
</pre>
<p>[contrib/opvp/opvp.h contrib/opvp/gdevopvp.c]</p>
</blockquote>

<p><strong><a name="2008-09-18T003741.259902Z"></a>
2008-09-18T00:37:41.259902Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix: default to MITER line joins in the opvp device. Bug 689079.

The previous default was BUTT, which is a line cap, not a join. This
looks like it was a cut-and-paste error. Patch from Jon Peatfield.
</pre>
<p>[contrib/opvp/gdevopvp.c]</p>
</blockquote>

<p><strong><a name="2008-09-18T003738.655050Z"></a>
2008-09-18T00:37:38.655050Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix: don't treat char as unsigned in the opvp device. Bug 690079.
</pre>
<p>[contrib/opvp/gdevopvp.c]</p>
</blockquote>

<p><strong><a name="2008-09-18T001211.086491Z"></a>
2008-09-18T00:12:11.086491Z Ralph Giles</strong></p>
<blockquote>
<pre>
Enable jasper assembly optimizations with _MSC_VER instead of _WIN32 so the MSVC-specific inline code won't be passed to gcc in mingw builds.

Bug 690070.</pre>
<p>[jasper/src/libjasper/jpc/jpc_qmfb.c]</p>
</blockquote>

<p><strong><a name="2008-09-16T002906.813229Z"></a>
2008-09-16T00:29:06.813229Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove an inadvertent semicolon in gs_throw_code, added in r9037.
</pre>
<p>[base/gserror.h]</p>
</blockquote>

<p><strong><a name="2008-09-14T122056.043501Z"></a>
2008-09-14T12:20:56.043501Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Allocate missing FontInfo dictionary in a matching global or local memory and
use .forceput to override read-only status of the font directory. Bug 690063.

</pre>
<p>[Resource/Init/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2008-09-13T202225.237944Z"></a>
2008-09-13T20:22:25.237944Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move the dxmain.c and dxmainc.c front ends to the interpreter source 
directory.
</pre>
<p>[base/dxmain.c psi/dxmain.c base/unix-dll.mak base/dxmainc.c psi/dxmainc.c]</p>
</blockquote>

<p><strong><a name="2008-09-12T080554.684727Z"></a>
2008-09-12T08:05:54.684727Z Ken Sharp</strong></p>
<blockquote>
<pre>
The CIEBasedDEF/DEFG colour space validation did not insist that the dictionary contain a
/Table entry, which is a required entry. It also did not limit the numeric values in the
/Table array to integers, reals are not allowed.

</pre>
<p>[psi/zcolor.c]</p>
</blockquote>

<p><strong><a name="2008-09-11T160358.760444Z"></a>
2008-09-11T16:03:58.760444Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add support for passing the requested number of copies through to the PXL
output file. Tested on an actual HP printer.
</pre>
<p>[base/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2008-09-10T213524.802228Z"></a>
2008-09-10T21:35:24.802228Z Ralph Giles</strong></p>
<blockquote>
<pre>
Change two more printf(%x) uses with pointers to use %p.

Update copyright.
</pre>
<p>[base/gxclmem.c]</p>
</blockquote>

<p><strong><a name="2008-09-10T213326.724052Z"></a>
2008-09-10T21:33:26.724052Z Ray Johnston</strong></p>
<blockquote>
<pre>
Replace non-standard %P with %p for pointer printing.
</pre>
<p>[base/gxclmem.c]</p>
</blockquote>

<p><strong><a name="2008-09-09T210054.348833Z"></a>
2008-09-09T21:00:54.348833Z Ralph Giles</strong></p>
<blockquote>
<pre>
Ask gcc to warn about declarations beyond the start of a block.
</pre>
<p>[base/configure.ac]</p>
</blockquote>

<p><strong><a name="2008-09-09T203137.982033Z"></a>
2008-09-09T20:31:37.982033Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move variable declarations to the top of blocks in the fontconfig 
support code.

Also fixes a gcc warning about passing int 0 instead of NULL to 
terminate an argument list.
</pre>
<p>[base/gp_unix.c]</p>
</blockquote>

<p><strong><a name="2008-09-09T184527.627887Z"></a>
2008-09-09T18:45:27.627887Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a space to the product name between the family and release names.
</pre>
<p>[base/gscdef.c]</p>
</blockquote>

<p><strong><a name="2008-09-09T174826.542519Z"></a>
2008-09-09T17:48:26.542519Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move some interpreter headers from base to psi.

These were missed in the original merge of the reorganization patch.
Also, add missing makefile dependencies for these new headers.
</pre>
<p>[base/zcolor.h base/zicc.h psi/zcolor.h psi/zicc.h base/zcie.h psi/zcie.h psi/int.mak]</p>
</blockquote>

<p><strong><a name="2008-09-09T143331.847337Z"></a>
2008-09-09T14:33:31.847337Z Ken Sharp</strong></p>
<blockquote>
<pre>
Henry's coverage test revealed that a couple of 'belt and braces' checks in the RGB-&gt;HSB
conversion were impossible to trigger. Removed those checks.

</pre>
<p>[psi/zcolor.c]</p>
</blockquote>

<p><strong><a name="2008-09-06T095738.114441Z"></a>
2008-09-06T09:57:38.114441Z Ken Sharp</strong></p>
<blockquote>
<pre>
Address some more issues raised by Coverity. Check return values in some places which were
not previously checked, initialise some variables, and remove some dead code.

Local regression testing of pdfwrite shows no differences.

</pre>
<p>[base/gdevpdtd.c base/gdevpdtt.c base/gdevpdte.c base/gdevpdtf.c base/gdevpdfe.c base/gdevpdtw.c base/gdevpdti.c]</p>
</blockquote>

<p><strong><a name="2008-09-04T154656.923276Z"></a>
2008-09-04T15:46:56.923276Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Divide gdevp14.c into 2 modules.

DETAILS :

This change is syntactically equivalent.
The purpose is to minimize dependencies between projects.
The new module gxblend1.c keeps color blending algorithms moved from gdevp14.

</pre>
<p>[base/gdevp14.c base/lib.mak base/gdevp14.h base/gxblend.c base/gxblend1.c base/gdevdevn.h base/gxblend.h]</p>
</blockquote>

<p><strong><a name="2008-09-04T140617.707413Z"></a>
2008-09-04T14:06:17.707413Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Preovide a right check for incorrect call to pdf14_pop_transparency_group.
 
DETAILS :

This patch doesn't change behavior with regular runs.
In hypothetic cases, when .entransparencygroup is called with no
L
due to unreferencin null pointer.

</pre>
<p>[base/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2008-09-04T100554.831940Z"></a>
2008-09-04T10:05:54.831940Z Ken Sharp</strong></p>
<blockquote>
<pre>
More minor issues reported by Coverity. An unchecked return code from cos_dict_find_c_key,
and some dead code.

</pre>
<p>[base/gdevpdfm.c]</p>
</blockquote>

<p><strong><a name="2008-09-04T100410.193139Z"></a>
2008-09-04T10:04:10.193139Z Ken Sharp</strong></p>
<blockquote>
<pre>
A couple of issues detected by Coverity. Firstly an error condition could lead to a file being
left open. Secondly a call to pdf_restore_viewer_state which didn't check the return value.

</pre>
<p>[base/gdevpdfu.c]</p>
</blockquote>

<p><strong><a name="2008-09-04T100204.794387Z"></a>
2008-09-04T10:02:04.794387Z Ken Sharp</strong></p>
<blockquote>
<pre>
More very minor dead code removal, again as noted by Coverity.

</pre>
<p>[base/gdevpdtb.c]</p>
</blockquote>

<p><strong><a name="2008-09-04T100112.562540Z"></a>
2008-09-04T10:01:12.562540Z Ken Sharp</strong></p>
<blockquote>
<pre>
Remove some dead code from cmap handling, as noted by Coverity.

</pre>
<p>[base/gdevpdtc.c]</p>
</blockquote>

<p><strong><a name="2008-09-04T095911.733313Z"></a>
2008-09-04T09:59:11.733313Z Ken Sharp</strong></p>
<blockquote>
<pre>
Check the return code from pdf_write_resource_objects when closing a page. Fixes Coverity
warning.

</pre>
<p>[base/gdevpdf.c]</p>
</blockquote>

<p><strong><a name="2008-09-03T204913.486158Z"></a>
2008-09-03T20:49:13.486158Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add protection for the &quot;finish&quot; exit point for potential (no longer exists
since rev 9062) case when f==NULL when code &gt;= 0. Belt and suspenders couldn't
hurt to improve maintainability (prevent future problems). Original problem
reported by Coverity analysis.
</pre>
<p>[base/gxclmem.c]</p>
</blockquote>

<p><strong><a name="2008-09-03T122027.869178Z"></a>
2008-09-03T12:20:27.869178Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : gcc compiler warnings (continued).

DETAILS :

Repair a file broken due to Far 1.70 editor glitch on Vista.
</pre>
<p>[psi/zfunc4.c]</p>
</blockquote>

<p><strong><a name="2008-09-03T114235.783010Z"></a>
2008-09-03T11:42:35.783010Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : gcc compiler warnings.

DETAILS :

This patch fixes only those ones which either were approved or belong to my ownership.
</pre>
<p>[base/gxclread.c base/gxpcopy.c base/gxclpage.c psi/zfunc4.c base/gxclutil.c base/gxclmem.c base/lib.mak base/gxiscale.c base/gxclmem.h base/gdevpdtd.c psi/int.mak psi/zfsample.c base/gdevpdte.c base/gximage1.c base/gsovrc.c base/gdevprn.c base/gxstroke.c psi/zfunc.c base/gspath1.c base/gxshade6.c psi/zfrsd.c base/gxclpath.c psi/zfunc.h psi/igcstr.c base/mkromfs.c base/gstype42.c base/gdevdsha.c base/gxfill.c base/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2008-09-02T183707.959806Z"></a>
2008-09-02T18:37:07.959806Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Fixed small bug in the patch to add a PJL command for setting the resolution to
the pxlmono/pxlcolor drivers (rev 9060).

</pre>
<p>[base/gdevpxut.c]</p>
</blockquote>

<p><strong><a name="2008-09-02T090641.787945Z"></a>
2008-09-02T09:06:41.787945Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Let pxlmono/pxlcolor drivers add resolution setting to the PJL header. Printers need the PJL command to set the resolution (see bug 689230). Now the printing resolution can be easily controlled with the &quot;-r&quot; command line option.
</pre>
<p>[base/gdevpxut.c]</p>
</blockquote>

<p><strong><a name="2008-09-01T170320.988497Z"></a>
2008-09-01T17:03:20.988497Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix incorrect error code test in the calculator function validation
procedure.

</pre>
<p>[psi/zfunc4.c]</p>
</blockquote>

<p><strong><a name="2008-09-01T165343.689721Z"></a>
2008-09-01T16:53:43.689721Z Ken Sharp</strong></p>
<blockquote>
<pre>
Resolve another gcc compiler warning. The test was incorrect, now it is correctly taking the
text render mode into account.

Local regression testing shows no differences.

</pre>
<p>[base/gdevpdts.c]</p>
</blockquote>

<p><strong><a name="2008-09-01T084944.722693Z"></a>
2008-09-01T08:49:44.722693Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix a warning from older versions of gcc. Spotted by Russell Lang when doing OS/2 build. 
Oddly, newer versions of gcc don't spot this, even though the code was technically
redundant.

Also remove some commented out code that should not have been present, and fix a couple
of warnings produced by recent versions of gcc regarding unused local variables and code.

Local regression testing exhibits no differences.

</pre>
<p>[base/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2008-08-31T002820.047781Z"></a>
2008-08-31T00:28:20.047781Z Russell Lang</strong></p>
<blockquote>
<pre>
Add a makefile target for a Windows source zip file, 
used in building a release.
</pre>
<p>[psi/winint.mak]</p>
</blockquote>

<p><strong><a name="2008-08-30T232304.017387Z"></a>
2008-08-30T23:23:04.017387Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make PDF interpreter run our /Install procedure after the user's procedure
because: (1) PDF interpreter caches the CTM, (2) the user's procedure may
replace CTM by calling setmatrix. Bug 689914, customer 770.

</pre>
<p>[Resource/Init/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2008-08-30T140729.736170Z"></a>
2008-08-30T14:07:29.736170Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PS interpreter) : Wrong dependencies in makefile.

</pre>
<p>[psi/int.mak]</p>
</blockquote>

<p><strong><a name="2008-08-30T133827.563236Z"></a>
2008-08-30T13:38:27.563236Z Russell Lang</strong></p>
<blockquote>
<pre>
Fix gcc warning on OS/2.
</pre>
<p>[base/gdevdsp.c]</p>
</blockquote>

<p><strong><a name="2008-08-30T133129.235544Z"></a>
2008-08-30T13:31:29.235544Z Russell Lang</strong></p>
<blockquote>
<pre>
Fix the OS/2 build after the source reorganization.
Remove the os2pm device and the old DLL interface for OS/2, 
to avoid direct links from the graphics library into the 
PS interpreter.
</pre>
<p>[base/gp_os2.c base/os2.mak psi/dpmain.c psi/gsos2.def base/gsos2.icx doc/Develop.htm psi/gsos2.rc base/pcwin.mak base/dpmain.c base/gsos2.def psi/os2.mak base/mkromfs.c base/gsos2.rc psi/gsdllos2.h psi/gsos2.icx base/gp_os2fs.c base/gdevpm.c psi/gsdll2.def base/devs.mak]</p>
</blockquote>

<p><strong><a name="2008-08-29T194713.384972Z"></a>
2008-08-29T19:47:13.384972Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the Visual Studio project file generator for
the new source locations. Untested.</pre>
<p>[toolbin/msvcxml.bat]</p>
</blockquote>

<p><strong><a name="2008-08-29T184621.860372Z"></a>
2008-08-29T18:46:21.860372Z Ralph Giles</strong></p>
<blockquote>
<pre>
Split the source tree into two new directories.

PSSRC files are now in 'gs/psi'.
GLSRC files are now in 'gs/base'.

This is to facilitate build modularization and merging in the ghostpdl 
tree.

NOTE: msvc32.mak is now in psi, not src.
</pre>
<p>[/trunk/ghostpdl/language_switch/pspcl6_msvc.mak /trunk/ghostpdl/main/pcl6_gcc.mak src /trunk/ghostpdl/tools/check_deps.py doc/Develop.htm psi /trunk/ghostpdl/svg/svg_gcc.mak /trunk/ghostpdl/xps/xps_msvc.mak /trunk/ghostpdl/main/pcl6_msvc.mak /trunk/ghostpdl/doc/ghostpdl.tex /trunk/ghostpdl/psi/psitop.c doc/API.htm doc/Issues.htm /trunk/ghostpdl/svg/svg_msvc.mak /trunk/ghostpdl/language_switch/pspcl6_gcc.mak doc/Make.htm doc/Drivers.htm base autogen.sh doc/Release.htm doc/C-style.htm /trunk/ghostpdl/doc/ghostpdl.txt /trunk/ghostpdl/xps/xps_gcc.mak]</p>
</blockquote>

<p><strong><a name="2008-08-28T194700.816950Z"></a>
2008-08-28T19:47:00.816950Z Ralph Giles</strong></p>
<blockquote>
<pre>
Replace 3d with 3rd in the documentation and regularize '3(r)d party' as 
'third-party'. Bug 690004.
</pre>
<p>[doc/Use.htm doc/Lib.htm]</p>
</blockquote>

<p><strong><a name="2008-08-28T024007.463083Z"></a>
2008-08-28T02:40:07.463083Z Ralph Giles</strong></p>
<blockquote>
<pre>
Use the new gs_rethrow_code() macro in svgwrite.
</pre>
<p>[src/gdevsvg.c]</p>
</blockquote>

<p><strong><a name="2008-08-28T024006.379728Z"></a>
2008-08-28T02:40:06.379728Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add gs_throw_code() and gs_rethrow_code() macros for use in situations
where the normal error string does not fit or is redundant.
</pre>
<p>[src/gserror.h]</p>
</blockquote>

<p><strong><a name="2008-08-28T024004.423296Z"></a>
2008-08-28T02:40:04.423296Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix some code style issues in the svgwrite device.

We can't use gs_note_error() as we were because it returns the error
code which generates an empty statement warning with gcc. Use gs_throw()
instead for now.
</pre>
<p>[src/gdevsvg.c]</p>
</blockquote>

<p><strong><a name="2008-08-28T003633.257400Z"></a>
2008-08-28T00:36:33.257400Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update warnings policy; we agreed to fix all warnings.
</pre>
<p>[doc/C-style.htm]</p>
</blockquote>

<p><strong><a name="2008-08-28T000340.520992Z"></a>
2008-08-28T00:03:40.520992Z Ralph Giles</strong></p>
<blockquote>
<pre>
Document the motivation for a source style item.

Details:

There has been some controvesy over the rule that single-statement 
bodies of control structs must be on their own line. Specifically:

  if (code &lt; 0)
    return code;

instad of:

  if (code &lt; 0) return code;

despite the latter being less obtrusive for common error checks.

Several developers have requested this because it allows setting a 
breakpoint directly on the return statement instead of a conditional 
return on the conditional line, or a breakpoint at the return inside
the single source line. This is therefore a practical issue, not just
one of readability and style.
</pre>
<p>[doc/C-style.htm]</p>
</blockquote>

<p><strong><a name="2008-08-27T172724.986727Z"></a>
2008-08-27T17:27:24.986727Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix more html conformance problems with the documentation.
</pre>
<p>[doc/Ps2ps2.htm doc/Fonts.htm doc/Use.htm doc/Ps2pdf.htm doc/Develop.htm doc/Deprecated.htm doc/Install.htm doc/API.htm doc/Issues.htm doc/Make.htm doc/Drivers.htm doc/Release.htm doc/C-style.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm]</p>
</blockquote>

<p><strong><a name="2008-08-27T025723.718740Z"></a>
2008-08-27T02:57:23.718740Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove Humor.htm.

The joke has gotten old, and blogs are a better medium for this sort of 
thing.
</pre>
<p>[doc/Humor.htm doc/Readme.htm]</p>
</blockquote>

<p><strong><a name="2008-08-27T021643.113337Z"></a>
2008-08-27T02:16:43.113337Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the obsolete HTML style guidelines.

We no longer expect readers to look at the raw html in a text editor. 
Documentation should declare its format specification and conform to it, 
attempting to match local style where appropriate.
</pre>
<p>[doc/Htmstyle.htm doc/Readme.htm]</p>
</blockquote>

<p><strong><a name="2008-08-27T021410.447789Z"></a>
2008-08-27T02:14:10.447789Z Ralph Giles</strong></p>
<blockquote>
<pre>
Replace the awkward &lt;b&gt;&lt;tt&gt; construction with css-styled &lt;code&gt; elements.
</pre>
<p>[doc/History7.htm doc/Fonts.htm doc/Projects.htm doc/Ps2ps2.htm doc/Use.htm doc/Readme.htm doc/Develop.htm doc/Ps2pdf.htm doc/Deprecated.htm doc/Source.htm doc/Helpers.htm doc/Psfiles.htm doc/Lib.htm doc/Install.htm doc/Htmstyle.htm doc/API.htm doc/gs.css doc/DLL.htm doc/Make.htm doc/Drivers.htm doc/Unix-lpr.htm doc/Commprod.htm doc/C-style.htm doc/Ps-style.htm doc/Release.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm doc/Ps2epsi.htm]</p>
</blockquote>

<p><strong><a name="2008-08-26T215026.926408Z"></a>
2008-08-26T21:50:26.926408Z Ralph Giles</strong></p>
<blockquote>
<pre>
Cast away signed/unsigned char warnings in gdevsvg.

Patch from Igor Melichev. Also cleaned up some trailing whitespace.
</pre>
<p>[src/gdevsvg.c]</p>
</blockquote>

<p><strong><a name="2008-08-26T214055.546109Z"></a>
2008-08-26T21:40:55.546109Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove references to bits64 from the source style documentation. It is 
superceeded by the stdint types.
</pre>
<p>[doc/C-style.htm]</p>
</blockquote>

<p><strong><a name="2008-08-26T155938.718117Z"></a>
2008-08-26T15:59:38.718117Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : Implementing a temporary option for development needs of images with soft mask. 

DETAILS :

It doesn't chamge the behavior for regular runs.
The new temporary option is for development purpose only.
It will be removed after the complete implementation of images with soft mask is done.

</pre>
<p>[Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2008-08-26T153103.416051Z"></a>
2008-08-26T15:31:03.416051Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : A wrong comment about procedure operands for is_big_mask .

DETAILS :

It changes a comment only.

</pre>
<p>[Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2008-08-26T070255.610521Z"></a>
2008-08-26T07:02:55.610521Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Scanline algorithm missed pixels at horizontal boundaries.

DETAILS :

Bug 689402 &quot;Regression: differences in dina3_watermark.pdf&quot;.

The defect looks as an unimplemented branch.
which persists since Ghostscript 8.00 released on Decebmer 2002
or longer. We could get a similar problem when runnung Bug687832.pdf
with Ghostscript 7.04 (it can't handle dina3_watermark.pdf),
and our reading of its code shows that the problem presents in it.
So the problem is really antique.
 
The bottom of the problem is that fill adjustment was not applied 
to some horizontal segments. Due to that some pixel centers are not covered 
when they must be.

</pre>
<p>[src/gxfillsl.h]</p>
</blockquote>

<p><strong><a name="2008-08-23T163921.950258Z"></a>
2008-08-23T16:39:21.950258Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix 6 Coverity warings about local variables hiding function arguments
by renaming local variables.

</pre>
<p>[src/gsbitops.c]</p>
</blockquote>

<p><strong><a name="2008-08-23T010547.610764Z"></a>
2008-08-23T01:05:47.610764Z Russell Lang</strong></p>
<blockquote>
<pre>
Remove reference from Windows image window code back to PostScript interpreter,
to allow the image window code to be used with non-interpreter builds.
</pre>
<p>[src/dwimg.h src/winint.mak src/dwmain.c src/dwmain.rc doc/Develop.htm src/dwmainc.c src/dwmain.h src/dwimg.c src/dwres.h]</p>
</blockquote>

<p><strong><a name="2008-08-22T163436.763761Z"></a>
2008-08-22T16:34:36.763761Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move the dw source files from GLSRC to PSSRC. Items in GLSRC shouldn't 
depend on items in PSSRC. This is in preparation for the code 
reorganization.

Details:

A number of these files, dwtext, dwtrace, and with some modifications 
dwimg don't actually have PSSRC dependencies, but it's easier to keep 
all the files built by winint.mak there for now. They can be moved back
into the base library later when they're useful for other builds.
</pre>
<p>[src/winint.mak]</p>
</blockquote>

<p><strong><a name="2008-08-22T011328.560292Z"></a>
2008-08-22T01:13:28.560292Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove an unnecesary iapi.h include.
</pre>
<p>[src/winint.mak src/dwimg.c]</p>
</blockquote>

<p><strong><a name="2008-08-22T011124.167807Z"></a>
2008-08-22T01:11:24.167807Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove trailing whitespace.
</pre>
<p>[src/dwimg.h src/dwimg.c]</p>
</blockquote>

<p><strong><a name="2008-08-21T232624.907412Z"></a>
2008-08-21T23:26:24.907412Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a missing return value check. Coverity issue 1847.
</pre>
<p>[src/zcolor.c]</p>
</blockquote>

<p><strong><a name="2008-08-21T225500.562927Z"></a>
2008-08-21T22:55:00.562927Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a double free introduced in r9005.
</pre>
<p>[src/gp_unix_cache.c]</p>
</blockquote>

<p><strong><a name="2008-08-21T215124.194924Z"></a>
2008-08-21T21:51:24.194924Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove trailing whitespace.
</pre>
<p>[src/ztrans.c]</p>
</blockquote>

<p><strong><a name="2008-08-21T083509.363063Z"></a>
2008-08-21T08:35:09.363063Z Ken Sharp</strong></p>
<blockquote>
<pre>
Submission for revision 9008 initialised the wrong 'pfn' variable. 

Details:
Accidentally changed the use in 'zbuildfunction' instead of 'buildfunction'. Correcting.
</pre>
<p>[src/zfunc.c]</p>
</blockquote>

<p><strong><a name="2008-08-21T083331.319105Z"></a>
2008-08-21T08:33:31.319105Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix some more Coverity warnings

Details:
Two places where a return value (from names_ref) was not being checked, one inadvertent
piece of dead code (duplicating a previous error check) and one genuine case of a variable
which could potentially be used uninitialsed.
</pre>
<p>[src/zcolor.c]</p>
</blockquote>

<p><strong><a name="2008-08-21T082849.451522Z"></a>
2008-08-21T08:28:49.451522Z Ken Sharp</strong></p>
<blockquote>
<pre>
Silence an 'uninitialised variable' warning from Coverity.

Details:
Function initialisation is a bit round about. We pass a function pointer to
make_sampled_function, which assigns it to a local variable. That variable is passed to
gs_function_Sd_init, which immediately zeros it....

Since the pointer is never actually used, setting it to NULL should silence the warning.</pre>
<p>[src/zfunc.c]</p>
</blockquote>

<p><strong><a name="2008-08-20T235843.536642Z"></a>
2008-08-20T23:58:43.536642Z Ralph Giles</strong></p>
<blockquote>
<pre>
Replace an abs() call with our any_abs() macro. Also remove an 
unnecessary math_.h include.

Details:

A call to abs() was added in r8942. Technically the prototype for this 
is in stdlib.h, but it's a built-in in most compilers so this didn't 
raise a warning. We do include stdlib.h elsewhere, usually for qsort() 
or malloc(), but abs() is only called from comment pseudo code; in 
practice the any_abs() macro or fabs() from math.h are used instead.
Because this isn't in an inner loop, speed isn't important, so we prefer 
the macro to a system header include for consistency.

Sine the beginning of repository history, gdevbit.c has included math.h, 
but I don't see any math library calls now, so it as been removed.
</pre>
<p>[src/gdevbit.c src/devs.mak]</p>
</blockquote>

<p><strong><a name="2008-08-20T232249.144680Z"></a>
2008-08-20T23:22:49.144680Z Ralph Giles</strong></p>
<blockquote>
<pre>
Check for and propagate failures to find matching component indexes in 
jpx streams.

</pre>
<p>[src/sjpx.c]</p>
</blockquote>

<p><strong><a name="2008-08-20T220949.649774Z"></a>
2008-08-20T22:09:49.649774Z Ralph Giles</strong></p>
<blockquote>
<pre>
Further cleanups to the unix persistent cache error handling.
</pre>
<p>[src/gp_unix_cache.c]</p>
</blockquote>

<p><strong><a name="2008-08-20T213228.795836Z"></a>
2008-08-20T21:32:28.795836Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix memory and file handle leaks in the unix persistent cache error 
handling. Also document that it is not re-entrant.
</pre>
<p>[src/gp_unix_cache.c]</p>
</blockquote>

<p><strong><a name="2008-08-20T194620.907096Z"></a>
2008-08-20T19:46:20.907096Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove trailing whitespace.
</pre>
<p>[src/gp_unix_cache.c]</p>
</blockquote>

<p><strong><a name="2008-08-20T190944.615235Z"></a>
2008-08-20T19:09:44.615235Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a cast in svgwrite to be explicit that we're only using the lower 24 
bits of the color index.
</pre>
<p>[src/gdevsvg.c]</p>
</blockquote>

<p><strong><a name="2008-08-20T182610.369143Z"></a>
2008-08-20T18:26:10.369143Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix __func__ on the default (non-C99) gcc build.

Details:

__func__ is a variable in C99. The earlier __FUNCTION__ is a magic 
preproccessor define in MSVC 7 and later, so the #if defined() clause 
enabled it. However, in GCC it is a magic string literal instead and so 
this clause did not enable it. Therefore we add an explicit check for 
the appropriate GCC version and define the same substitution for that 
compiler.

</pre>
<p>[src/gserror.h]</p>
</blockquote>

<p><strong><a name="2008-08-20T015436.820847Z"></a>
2008-08-20T01:54:36.820847Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add the svgwrite device to the default windows build.
Bug 690028.</pre>
<p>[src/msvc32.mak]</p>
</blockquote>

<p><strong><a name="2008-08-19T040740.862102Z"></a>
2008-08-19T04:07:40.862102Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the jasper dependency from jpxtopdf. It's straightforward to 
parse the image header ourselves.
</pre>
<p>[toolbin/jpxtopdf.c]</p>
</blockquote>

<p><strong><a name="2008-08-17T123125.491176Z"></a>
2008-08-17T12:31:25.491176Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a bug in error checking code introduced in the rev. 8996 in pamcmyk32
device. Bug 689583.
</pre>
<p>[src/gdevpbm.c]</p>
</blockquote>

<p><strong><a name="2008-08-17T061935.130662Z"></a>
2008-08-17T06:19:35.130662Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Check return values from all stdio functions in all pnm drivers and propagate
error codes upwards. Bug 689583.

</pre>
<p>[src/gdevpbm.c]</p>
</blockquote>

<p><strong><a name="2008-08-17T011923.099945Z"></a>
2008-08-17T01:19:23.099945Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add one more NMAKE version recognized as MSVC 7.
Bug 689816, customer 351.
</pre>
<p>[src/msvc32.mak]</p>
</blockquote>

<p><strong><a name="2008-08-16T041820.474141Z"></a>
2008-08-16T04:18:20.474141Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Work around a bug in a PDF file produced by &quot;Nitro PDF Driver&quot;. Assume invalid
operator '-' to be a number 0. Bug 690012, 

</pre>
<p>[Resource/Init/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2008-08-16T020051.387588Z"></a>
2008-08-16T02:00:51.387588Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix parsing of large embedded TrueType fonts by ps2write header: (1) read the
file into multiple strings for sfnts array. (2) use multiple reads to skip
over large parts of the file. Also modify Type42 font reader to allow TrueType
objects to span sfnts string boundaries. Bug 690012.

</pre>
<p>[src/gxttfb.c Resource/Init/opdfread.ps]</p>
</blockquote>

<p><strong><a name="2008-08-14T175406.399403Z"></a>
2008-08-14T17:54:06.399403Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use GNU iconv.h header in compatibility mode unless we link with GNU libiconv.
This is needed for compiling gs with gcc under HP-UX 11.11.

DETAILS:
gdevopvp.c uses some basic functionality from iconv library but none of GNU
extensions. So the native implementation is searched first.

GNU header uses different names in the library and defines some macros to map
iconv* names to GNU libiconv* names.

gcc looks for GNU version of iconv.h first, which requires a compatibility
flag to link with the native libraries.

So the compatibility flag is set when iconv* functions are not found but
libiconv* functions are found.

</pre>
<p>[src/configure.ac contrib/opvp/gdevopvp.c]</p>
</blockquote>

<p><strong><a name="2008-08-13T015636.856132Z"></a>
2008-08-13T01:56:36.856132Z Ray Johnston</strong></p>
<blockquote>
<pre>
Update the fonts to those that the nightly and cluster regressions have
been using all along. The -Ifonts in the regression script was causing
the contents of Resource/Font to be ignored. These fonts are the std-8.11
version.

Note we probably next need to move to the newer version of these fonts
with the metrics fixed, but this is a first step.

DETAILS:
These are files that were part of the distribution 8.11 files that really
can't live in the Resource/Font directory since some applications or
test files will enumerate (with 'resourceforall') the directory and will
get errors if files are there that are not fonts.
___________________________________________________________________________
				README:
This is release 1.0.7pre22 of Valek Filippov's improved versions of the URW
type 1 font collection, repackaged for distribution with Ghostscript.

Cyrillized free URW fonts.

These fonts were made from the free URW fonts distributed with ghostcript.
There are NO changes in the latin part of them (I hope).
Cyrillic glyphs were added by copying suitable latin ones
and painting oulines of unique cyrillic glyphs in same style as the others.
For all modification pfaedit was used.
The license for result is (of course) same as for original fonts,
i.e. GPL with an exception that you can put these fonts in your own non-GPLed
documents. (Looks like LGPL from my point of view =).

The &quot;sources&quot; of these fonts in the native pfaedit format are available
at ftp://ftp.gnome.ru/fonts/sources

The great font editor pfaedit is available at http://pfaedit.sf.net.
That page also includes some links to fonts created by
George Williams -- the author of pfaedit.

Acknowledgements:
I would like to thank George Williams, the pfaedit's author and developer.
He is the most bug-reporter/feature-requester friendly developer
I ever saw in my not so short life. At some moment in the future
I must write a book about him: &quot;George Williams and my best experience
in bug-reporting.&quot; George also greatly helped me bug-hunting these fonts,
explained to me some very important things about fonts and font design,
quickly adopted pfaedit to my needs (or pointed me to The Right Place in
documentation where I found better way of doing things).

I would like to thank Alexey Novodvorsky (aka AEN), who
pointed me to pfaedit and George Williams' fonts, explained
The Task to me. He is also one of the main participators in the
development of Sysiphus -- free repository of free software.
I didn't loose my time for compiling/installing and supporting
my linux box coz I used the result of Sysiphus developers' works.

I would like to thank Sergey Vlasov, who tested these fonts and reported
about bugs. Also he help me to make some bug-reports to George about
pfaedit bugs.

I would like Dmitry 40in, who did big QA for some font outlines, drawn some glyphs,
and explain some The Truths for me.

I would like to thank Vlad Harchev (aka hvv), who
proofread this text for me.

Also I have to thank RMS for GPL and URW for releasing the fonts
under it.

Thank you very much!
Valek Filippov frob@df.ru
(C)opyLeft 2001
______________________________________________________________________________________
				TODO:
- fix all missed glyphs.
- change suitable glyphs with references.
- improve bearings of glyphs (thanks Dmitry 40in who pointed me to this)
- improve outlines of some cyrillic glyphs 
______________________________________________________________________________________
				Changelog:
2002-11-22  Valek Filippov  &lt;frob@df.ru&gt;

    Fixed bug that broke printing from QT.
    
2002-11-16  Valek Filippov  &lt;frob@df.ru&gt;

   Fixed some cyrillic (russian) glyphs in NimbusMono.
   NimbusMono Ascend/Descend were changed to match the visible
   size of the other font if same point-size is used.

2002-10-12  Valek Filippov  &lt;frob@df.ru&gt;

   Regenerated coz I screwed up UIDs.
   Partly applied Owen Tailor tweaks.
   (Really GWW changed pfaedit autohinter after OT sugggestion,
   so other OT tweaks are aoutomade by pfaedit)
   
2002-08-17  Valek Filippov  &lt;frob@df.ru&gt;

    Regenerated from 9-aug pfaedit version.
    Mostly for testing of new cubic-&gt;quad bezier conversion.

2002-07-22  Valek Filippov  &lt;frob@df.ru&gt;

    Regenerated from 22-07 pfaedit version.
    I still haven't enough time for correct serbian glyphs from Danilo
    integration =(

2002-05-19  Valek Filippov  &lt;frob@df.ru&gt;

    Regenerated from 18-05 pfaedit version.
    Restored original UIDs.
    Made otf versions again =)

2002-03-06  Valek Filippov  &lt;frob@df.ru&gt;

    Added pfms. Forced using of original kerning.
    d* and s* files were missed (fixed now).

2002-03-04  Valek Filippov  &lt;frob@df.ru&gt;

    Improved Bookman and Gothic. All fonts were regenerated
    (fix 'Delta', improved hinting). pfms are temporary excluded.

2002-02-03  Valek Filippov  &lt;frob@df.ru&gt;

    Improved Bookman Light/DemiBold. At 2002-01-07 I put
    non latest version of Chancery -- fixed.

2002-01-18  Valek Filippov  &lt;frob@df.ru&gt;

    All fonts regenerated again, coz AEN found bug in names translation.
    NimbusRomNo9-Regu greatly improved. NimbusRomNo9-Bold, NimbusSans{Cond}-{Regu,Bold}
    partially improved.

2002-01-07  Valek Filippov  &lt;frob@df.ru&gt;

    Bookman improved. Chancery added.

2002-01-04  Valek Filippov  &lt;frob@df.ru&gt;

    All fonts were regenerated.
    TTF-instructions were improved, some non-russian cyrillic
    fixed, &quot;fi&quot; and &quot;fl&quot; ligatures ligaturized where were not.
    Implemented some changes that Dmitry suggested,
    NimbusMono-Regular is partially made by him.
    Added COPYING. Generated pfm-files.
    Added fonts.dir and fonts.scale from gnu-gs-fonts.
    
2001-12-14  Valek Filippov  &lt;frob@df.ru&gt;

    Full tarball was made.

    NimbusRomNo9 regenerated. Added 'numero sign',
    'infinity' and 'Omega' (in Regu -- by Dmitry 40in).
    OTF versions removed until the best time.
    Dmitry supposed that URW'd presented 'beta'-version
    of fonts to community, coz bearings for original URW
    are not perfect. 1st attempt to fix it.  

2001-12-12  Valek Filippov  &lt;frob@df.ru&gt;

    Schoolbook extended to 'val3' and regenerated.
    Palladio extended to 'val3' and regenerated.
    Bookman extended to 'val3' and regenerated.
    Gothic extended to 'val3' and regenerated.
    Some glyphs still missed.       

    NimbusMono regenerated with modern pfaedit
    (bug with xterm fixed). Some 0x4** glyphs fixed.
    Added &quot;number sign&quot; and &quot;infinity&quot;. Thanks to
    Dmitry 40in and Anton Zinoviev who criticized me
    about it. 

2001-12-08  Valek Filippov  &lt;frob@df.ru&gt;

    Added updated version of NimbusSansCond.
    Changes same like for NimbusSans
    (except: otf version not added).
    
2001-12-07  Valek Filippov  &lt;frob@df.ru&gt;

    Added updated version of NimbusMono.
    (Lat Ext-A, full 0x400 except 'glagolic', some chars are still
     missed; ttf hinting regenerated; otf version added;
     'Cyr De, de, L, l, Ch, ch' fixed).

2001-12-06  Valek Filippov  &lt;frob@df.ru&gt;

    Added updated version of NimbusSans.
    (Lat Ext-A, full 0x400 except 'glagolic', some chars are still
     missed; ttf hinting regenerated; otf version added;
     'Cyr De, de, L, l, Ch, ch' fixed).
    
2001-12-05  Valek Filippov  &lt;frob@df.ru&gt;

    Kern pairs from original URW had missed at the 11-nov version.
    Added OpenType version of fonts.

2001-11-11  Valek Filippov &lt;frob@df.ru&gt;
    
    NimbusRomanNo9
    Regular: added all uni0400 (except ancient cyrillic /glagolic?/).
             04bc-04bf, 04a8-9, 04d8, 04da still missed.
	     added all glyphs from Lat Ext-A (uni0100-017F) that was missed
	     in original URW (45 glyphs).
	     Most of accented chars and part of cyrillics changed
	     with references.
	     TTF hinting regenerated with modern PfaEdit.
    Bold: same but also missed 0494, 04a6, 04c3
    Italic, BoldItalic: same but missed many non-russian cyrillics.
______________________________________________________________________________________
				README.tweaks
Nimbus Sans L Regular, Nimbus Mono L Regular, Nimbus Mono L Oblique
all come from a more recent version of the cyrillic URW fonts.

The hints on Nimbus Sans Regular have been modified in the
following ways:

25 June 2002

 - Added ghost hint to the top of 4 to keep it from being
   taller than the other digits.
 - Reduced the width of the left stem hint for H to 83
   (probably no real differences)
 - Changed the StemSnapV values from [78 85 94] to [78 83 92]
   (and fixed up StdVW accordingly)
   This corresponds to the values in the font (which are 83/93
   for lower case and upper case stems) better and makes
   the width-88 stems on M and N snap to to upper case 
   widths not lower-case widths.

29 June 2002

 - Removed odd vertical stem hints (width of horizontal
   stems) from f, F, t, E, yen sign, fi ligature, 
   fl ligature, AE ligature, R, Lstroke, OE ligature,
   lstroke, E&quot; variants, t, variants, Eth, Dstoke, etc.
 - Fixed hints on 1 to be two ghost hints instead of one
   hint the height of the font
 - fix bottom stem of u to have integer coordinates
 - fixed hints on |
 - fixed hints on inverted exclamation mark

The hints on Nimbus Mono L Oblique have been modified in the
following ways:

 - Removed vertical stem hints from horizontal serifs on
   roman characters.
  
Owen Taylor
</pre>
<p>[Resource/Font/URWPalladioL-BoldItal Resource/Font/NimbusSanL-Bold Resource/Font/NimbusRomNo9L-Medi Resource/Font/Dingbats Resource/Font/URWChanceryL-MediItal Resource/Font/CenturySchL-Roma Resource/Font/NimbusMonL-Bold Resource/Font/NimbusRomNo9L-MediItal Resource/Font/NimbusSanL-BoldItal Resource/Font/URWGothicL-Demi Resource/Font/StandardSymL Resource/Font/URWBookmanL-DemiBold Resource/Font/NimbusRomNo9L-Regu Resource/Font/URWGothicL-Book Resource/Font/NimbusSanL-ReguCond Resource/Font/CenturySchL-Bold Resource/Font/URWBookmanL-Ligh Resource/Font/NimbusRomNo9L-ReguItal Resource/Font/URWBookmanL-DemiBoldItal Resource/Font/NimbusMonL-ReguObli Resource/Font/NimbusSanL-ReguCondItal Resource/Font/CenturySchL-Ital Resource/Font/URWPalladioL-Roma Resource/Font/CenturySchL-BoldItal Resource/Font/URWBookmanL-LighItal Resource/Font/NimbusSanL-BoldCond Resource/Font/NimbusSanL-BoldCondItal Resource/Font/NimbusMonL-BoldObli Resource/Font/URWGothicL-DemiObli Resource/Font/NimbusSanL-Regu Resource/Font/URWPalladioL-Bold Resource/Font/NimbusMonL-Regu Resource/Font/NimbusSanL-ReguItal Resource/Font/URWGothicL-BookObli Resource/Font/URWPalladioL-Ital]</p>
</blockquote>

<p><strong><a name="2008-08-12T234453.919723Z"></a>
2008-08-12T23:44:53.919723Z Ray Johnston</strong></p>
<blockquote>
<pre>
Remove 'Actual Fonts' references in the Fontmap that connected the URW FontName
to an 8.3 filename that we no longer use.
</pre>
<p>[Resource/Init/Fontmap.GS]</p>
</blockquote>

<p><strong><a name="2008-08-12T210438.048281Z"></a>
2008-08-12T21:04:38.048281Z Ray Johnston</strong></p>
<blockquote>
<pre>
Move opdfread.ps to Resource/Init since this is needed by the 'ps2write' device.
</pre>
<p>[lib/opdfread.ps Resource/Init/opdfread.ps]</p>
</blockquote>

<p><strong><a name="2008-08-12T144202.961911Z"></a>
2008-08-12T14:42:02.961911Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix: Genoa file renders incorrectly with current color code

Details:
A typo in the DeviceGray code used an array of doubles instead of floats, causing incorrect
values to be returned by currenthsbcolor.

</pre>
<p>[src/zcolor.c]</p>
</blockquote>

<p><strong><a name="2008-08-12T134108.386171Z"></a>
2008-08-12T13:41:08.386171Z Ken Sharp</strong></p>
<blockquote>
<pre>
Yet another minor change in the color work.

The test file 'foo0-ge-64k.pdf' demonstrated an error with NChannel processing. The old
PostScript based code simply ignored errors when setting the NChannel Colorant spaces, we
now do the same.

</pre>
<p>[src/zcolor.c]</p>
</blockquote>

<p><strong><a name="2008-08-12T091756.269901Z"></a>
2008-08-12T09:17:56.269901Z Ken Sharp</strong></p>
<blockquote>
<pre>
Another small change to the color code. The issue Michael has been looking at (#689950)
uses a DeviceN space with an NChannel Colorants dictionary. A mistake in the NChannel
parameter checking meant that the Colorants were never evaluated.

</pre>
<p>[src/zcolor.c]</p>
</blockquote>

<p><strong><a name="2008-08-12T073745.162884Z"></a>
2008-08-12T07:37:45.162884Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PS interpreter) : Wrong glyph positions with CIDFontType 2 WMode 1.

DETAILS :

Bug 688058 &quot;Vertical Japanese characters shift upper right direction&quot;. 
Bug 689559 &quot;centerline of vertical CJK text is wrong when external TrueType CJK font is used.&quot;. 

The old code wrongly computes glyph positions when a CIDFontType 2 WMode 1
font has no metrics and includes vmtx. The patch properly computes
the V vector using top side bearing and font bounding box.
See comments in code.

This patch fixes the glyph positions and closes the original bugs, 
but we still observe other 2 problems with the 688058 test case :

1. 2 characters are substitutes with hollow boxes.
2. pdfwrite generates a PDF with a wrong glyph positions.

Opened bugs 690006, 690007 for them. 

</pre>
<p>[src/zchar42.c]</p>
</blockquote>

<p><strong><a name="2008-08-12T073533.506225Z"></a>
2008-08-12T07:35:33.506225Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT interpreter) : AVector bug workaround was wrong.

DETAILS :

Bug 689820 &quot;rendering of embbeded font with very low quality&quot;.

The problem may happens only when a glyph is bigger than [-UnitsPerEm*2, UnitsPerEm*2].
The old code includes a workaround for an antique AVBector bug.
However for detecting it the old code supplied a glyph bbox 
with a wrong coordinate representation (scale).

The test case supplies a glyph, in which some points have x-coordinate
greater than UnitsPerEm*2, so the workaround
converted all curves into lines. 

The patch provides the right bbox data.

</pre>
<p>[src/ttfmain.c]</p>
</blockquote>

<p><strong><a name="2008-08-12T073119.650883Z"></a>
2008-08-12T07:31:19.650883Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : A clist-based pattern supplied a wrong clipping box.

DETAILS :

Bug 689851 &quot;Portions of output missing&quot;.

The test document paints an imagemask with a pattern 1 color, 
which contains a Type 1 image, which represents the graphics 
that one can view there.

The pattern appears so big as Ghostscript converts it into a clist.
When rendering the inner image to the clist,
It calls get_clipping_box to know whether the image portion
falls inside the painting area. But the old code
appears to use a wrong implementation of the get_clipping_box method, 
which was inherited from the page clist writer and retrieves the page size.
Here we need the pattern cell size instead the page size.
The patch sets up the right implementation for get_clipping_box.

</pre>
<p>[src/gxpcmap.c src/gximask.c]</p>
</blockquote>

<p><strong><a name="2008-08-12T014902.711432Z"></a>
2008-08-12T01:49:02.711432Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix single '~' expansion in generic POSIX persistent-cache implementation.

</pre>
<p>[src/gp_unix_cache.c]</p>
</blockquote>

<p><strong><a name="2008-08-12T013132.498041Z"></a>
2008-08-12T01:31:32.498041Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a potential crash after failed memory allocation in RAM-based command list.

</pre>
<p>[src/gxclmem.c]</p>
</blockquote>

<p><strong><a name="2008-08-12T005352.298682Z"></a>
2008-08-12T00:53:52.298682Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a typo in get_data() macro used by PDF 1.4 composition devices
because the typo caused dependency on the side effect order.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2008-08-11T230109.304118Z"></a>
2008-08-11T23:01:09.304118Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add a missing break statement after 16-bit Burn blending mode case.

</pre>
<p>[src/gxblend.c]</p>
</blockquote>

<p><strong><a name="2008-08-11T191145.049525Z"></a>
2008-08-11T19:11:45.049525Z Ralph Giles</strong></p>
<blockquote>
<pre>
Clean up the configure help entries for optional features.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2008-08-11T185827.188200Z"></a>
2008-08-11T18:58:27.188200Z Ralph Giles</strong></p>
<blockquote>
<pre>
Don't run configure if autoconf failed to regenerate it.
</pre>
<p>[autogen.sh]</p>
</blockquote>

<p><strong><a name="2008-08-11T183130.295468Z"></a>
2008-08-11T18:31:30.295468Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a --disable-cairo option to block linking to libcairo for packagers.
Bug 689999.

</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2008-08-11T151006.472831Z"></a>
2008-08-11T15:10:06.472831Z Ken Sharp</strong></p>
<blockquote>
<pre>
Further to the PostScript color work, clear up a couple of warnings which exhibit using gcc
on Linux, but not MSVC.

</pre>
<p>[src/zfunc.c src/zfunc4.c]</p>
</blockquote>

<p><strong><a name="2008-08-11T141618.397362Z"></a>
2008-08-11T14:16:18.397362Z Ken Sharp</strong></p>
<blockquote>
<pre>
Move the interpretation of PostScript (and PDF) color spaces from PostScript into C. 

DETAILS:
This has required a large number of changes, there are a few new .c or .h files, a
number of PostScript files have been removed, and a few others simplified. A few
documentation '.htm' files have also been modified to reflect these changes.

</pre>
<p>[src/int.mak src/zpcolor.c src/zicc.c Resource/Init/gs_devn.ps src/zcssepr.c Resource/Init/gs_cspace.ps src/zcie.c src/zicc.h src/zcie.h src/zcspixel.c Resource/Init/gs_lev2.ps Resource/Init/gs_ciecs3.ps Resource/Init/gs_sepr.ps src/zcolor.c src/ifunc.h src/zfunc4.c src/zcsdevn.c src/zcolor.h Resource/Init/gs_patrn.ps src/zfsample.c doc/Develop.htm src/zfunc.c Resource/Init/gs_ll3.ps src/zcsindex.c doc/Psfiles.htm Resource/Init/gs_icc.ps Resource/Init/gs_devpxl.ps src/gscolor2.h Resource/Init/gs_init.ps Resource/Init/gs_devcs.ps Resource/Init/gs_indxd.ps Resource/Init/gs_ciecs2.ps]</p>
</blockquote>

<p><strong><a name="2008-08-11T121924.825877Z"></a>
2008-08-11T12:19:24.825877Z Ken Sharp</strong></p>
<blockquote>
<pre>
Change the description for the -dNOCIE switch, since it wasn't apparently clear enough
which device spaces were substituted for which CIEBased spaces.</pre>
<p>[doc/Use.htm]</p>
</blockquote>

<p><strong><a name="2008-08-08T053921.132225Z"></a>
2008-08-08T05:39:21.132225Z Ralph Giles</strong></p>
<blockquote>
<pre>
Re-add pdf_draw.ps which was dropped in r8954, since the CET regression
requires it.
</pre>
<p>[Resource/Init/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2008-08-08T042238.494595Z"></a>
2008-08-08T04:22:38.494595Z Ray Johnston</strong></p>
<blockquote>
<pre>
Massive commit discussed before the freeze to move the PostScript initialization
files to Resource/Init. This obviates the need for geninit when COMPILE_INITS=1.
A followup change will enhance mkromfs to allow it to 'strip' comments and white
space from PostScript input files somewhat reducing the compressed storage needed
for the files in Resource/Init. All files mentioned in int.mak with 'ADDMOD ...
-ps ...' are included as well as those that would have been included via gs_init.ps
%% Replace lines.

Builds tested on Windows and Cygwin for the various executables (gs, pcl6, pspcl6
and gxps).

The default LIBPATH and GenericResourceDir are adjusted accordingly.

</pre>
<p>[Resource/Init/gs_typ32.ps /trunk/ghostpdl/main/pcl6_gcc.mak Resource/Init src/cfonts.mak lib/gs_dbt_e.ps Resource/Init/gs_dscp.ps lib/gs_statd.ps lib/gs_fapi.ps Resource/Init/gs_devn.ps Resource/Init/gs_agl.ps lib/cidfmap src/iccinit0.c lib/gs_epsf.ps lib/gs_dpnxt.ps lib/pdf_draw.ps lib/gs_icc.ps lib/gs_diskf.ps src/all-arch.mak Resource/Init/gs_fapi.ps lib/gs_init.ps lib/pdf_font.ps lib/gs_ciddc.ps lib/gs_diskn.ps src/ccfont.h lib/pdf_base.ps Resource/Init/gs_dps.ps lib/gs_sym_e.ps lib/gs_btokn.ps Resource/Init/xlatmap Resource/Init/gs_epsf.ps lib/gs_resmp.ps Resource/Init/gs_init.ps src/gs.mak src/wmin.mak lib/gs_wan_e.ps src/Makefile.in Resource/Init/gs_indxd.ps Resource/Init/gs_cidtt.ps src/macos-mcp.mak Resource/Init/gs_img.ps lib/gs_type1.ps lib/pdf_cslayer.ps Resource/Init/gs_setpd.ps lib/gs_dps1.ps Resource/Init/gs_mgl_e.ps src/psromfs.mak lib/gs_lev2.ps lib/gs_pdf_e.ps Resource/Init/gs_fonts.ps src/icfontab.c Resource/Init/gs_mex_e.ps Resource/Init/gs_ttf.ps lib/gs_pdfwr.ps Resource/Init/gs_std_e.ps lib/gs_cidfn.ps /trunk/ghostpdl/common/msvc_top.mak src/geninit.c src/bcwin32.mak src/imain.c Resource/Init/pdf_cslayer.ps lib/gs_ll3.ps lib/Fontmap Resource/Init/gs_dps1.ps src/iccinit1.c Resource/Init/gs_lev2.ps lib/gs_css_e.ps lib/gs_ccfnt.ps Resource/Init/gs_l2img.ps lib/gs_frsd.ps Resource/Init/gs_cet.ps lib/gs_devpxl.ps lib/gs_trap.ps Resource/Init/FCOfontmap-PCLPS2 src/macosx.mak Resource/Init/gs_patrn.ps Resource/Init/pdf_main.ps lib/gs_ciecs2.ps Resource/Init/gs_res.ps Resource/Init/gs_il1_e.ps lib/gs_cidcm.ps lib/gs_cmap.ps src/openvms.mmk lib/gs_typ32.ps Resource/Init/gs_frsd.ps Resource/Init/gs_mro_e.ps Resource/Init/gs_devpxl.ps Resource/Init/gs_devcs.ps Resource/Init/gs_trap.ps Resource/Init/gs_ciecs2.ps Resource/Init/gs_fntem.ps lib/gs_cspace.ps lib/gs_agl.ps Resource/Init/gs_cmap.ps Resource/Init/gs_typ42.ps Resource/Init/gs_cidfm.ps Resource/Init/pdf_rbld.ps src/int.mak lib/pdf_sec.ps src/msvclib.mak src/imainarg.c /trunk/ghostpdl/main/pcl6_msvc.mak Resource/Init/gs_cff.ps Resource/Init/gs_cspace.ps lib/gs_dps.ps src/msvc32.mak src/unix-gcc.mak lib/xlatmap Resource/Init/pdf_sec.ps src/zfile.c lib/pdf_ops.ps Resource/Init/gs_dbt_e.ps Resource/Init/gs_statd.ps lib/gs_indxd.ps lib/gs_cidtt.ps lib/gs_dps2.ps src/unixansi.mak lib/gs_img.ps Resource/Init/cidfmap lib/gs_setpd.ps Resource/Init/gs_dpnxt.ps Resource/Init/gs_icc.ps lib/gs_mgl_e.ps Resource/Init/gs_diskf.ps Resource/Init/pdf_ops.ps src/winint.mak lib/gs_fonts.ps Resource/Init/gs_ciddc.ps Resource/Init/pdf_font.ps Resource/Init/gs_dps2.ps Resource/Init/gs_diskn.ps lib/gs_mex_e.ps lib/gs_ttf.ps lib/gs_std_e.ps Resource/Init/pdf_base.ps lib/gs_resst.ps Resource/Init/gs_sym_e.ps Resource/Init/gs_btokn.ps src/wctail.mak lib/Fontmap.GS src/watclib.mak /trunk/ghostpdl/language_switch/pspcl6_msvc.mak lib/gs_sepr.ps lib/gs_ciecs3.ps lib/gs_l2img.ps Resource/Init/gs_resmp.ps lib/gs_cet.ps Resource/Init/gs_wan_e.ps src/iccfont.c lib/FCOfontmap-PCLPS2 lib/gs_patrn.ps lib/pdf_main.ps Resource/Init/Fontmap.GS Resource/Init/gs_type1.ps lib/gs_res.ps lib/gs_il1_e.ps /trunk/ghostpdl/language_switch/pspcl6_gcc.mak Resource/Init/gs_ciecs3.ps Resource/Init/gs_sepr.ps lib/gs_mro_e.ps Resource/Init/gs_pdf_e.ps lib/gs_devcs.ps src/openvms.mak Resource/Init/gs_pdfwr.ps Resource/Init/gs_cidfn.ps src/watcw32.mak lib/gs_fntem.ps Resource/Init/Fontmap Resource/Init/gs_ll3.ps Resource/Init/gs_css_e.ps src/os2.mak lib/gs_cidfm.ps lib/gs_typ42.ps lib/pdf_rbld.ps src/ugcclib.mak lib/gs_dscp.ps lib/gs_devn.ps lib/gs_cff.ps Resource/Init/gs_cidcm.ps]</p>
</blockquote>

<p><strong><a name="2008-08-08T040354.625369Z"></a>
2008-08-08T04:03:54.625369Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix 'rangecheck in showpage' with NumRenderingThreads&gt;0 if the lines requeested do
not range from 0 forward or height-1 backwards. Bug from customer 531 and 850.
Also fix problems with reversion to non-multithreaded rendering with file and memory
based BAND_LIST_STORAGE.

DETAILS:

The 'clist_get_band_from_thread' logic had a known deficiency if the device did not
request lines ranging from the top or bottom of the page. The fix assumes that the
normal direction is from line 0 forward unless the first line requested is the last
line of the page, setting the lookahead_direction. If a request is made for a band
other than the next one in the expected direction, the lookahead_direction is 
reversed and threads are started for the requested band and the bands following in
the new direction. This effectively recovers from an incorrect guess, but since
there is no limit on the number of times that the recovery is performed, also allows
for lines/bands to be requested in arbitrary order.

The customer uses a custom device, but the 'bit' devices were recently enhanced
with -dFirstLine= and -dLastLine= parameters to allow testing.

The re-opening of the clist files was changed to use 'a+' to avoid erasing the
file if multi-threaded rendering was shut down (clist_teardown_render_threads),
and rendering was reverted to single threaded mode.

The memory based clist (BAND_LIST_STORAGE=memory) was supplemented to better
track re-opening and allow for 'a' mode and avoid memory leak of the original
'base' named memfile structure. The customers mentioned above also use the
BAND_LIST_STORAGE=memory for performance reasons (realizing a 10% gain in
throughput over file based clist).

</pre>
<p>[src/gxclmem.c src/gxclthrd.c src/gxclmem.h]</p>
</blockquote>

<p><strong><a name="2008-08-07T192004.322235Z"></a>
2008-08-07T19:20:04.322235Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Redundant patterns in clist (continued),

DETAILS :

Bug 689995 &quot;segfault with 09-34.PS&quot;

1. (the bug fix) A recent patch doesn't account patterns with no tile,
which represent an empty pattern.  
This change inserts checks for empty tiles
and process them with no optimization (redundantly), 
because they are small and are not cached.
See comments in code.

2. pcls-&gt;band_complexity.uses_color accummulated a pattern address bits instead
a real data. This bug was introduced when serializing colors to clist.
nevertheless this bug has no visible effect because 'pure' is overlayed with 
a tile address, which can't be equal to 0 or 0xffffff.
So formally this part of the change is algorithmically equivalent,
but it is important for redability. 

Note that when serializing a pattern to clist, 'uses_color' is not properly
computed and needs further development. see new bug 689997.

Minor change : removed the second call to gs_dc_get_pattern_id for a faster code.

</pre>
<p>[src/gsptype1.c src/gxclpath.c]</p>
</blockquote>

<p><strong><a name="2008-08-07T052008.759100Z"></a>
2008-08-07T05:20:08.759100Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
A pointer to allocated memory was used before checking it for 0. This bug
was discovered by Klocwork static code analyzer.

</pre>
<p>[src/scfd.c]</p>
</blockquote>

<p><strong><a name="2008-08-07T000214.784953Z"></a>
2008-08-07T00:02:14.784953Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add the PSSRC dir to the includes of contrib devices that depend on
the ps interpreter so they can be build when that directory is different
from src.
</pre>
<p>[contrib/contrib.mak]</p>
</blockquote>

<p><strong><a name="2008-08-07T000213.283150Z"></a>
2008-08-07T00:02:13.283150Z Ralph Giles</strong></p>
<blockquote>
<pre>
Use graphics library instead of interpreter error codes in the gomni
device.
</pre>
<p>[contrib/gomni.c]</p>
</blockquote>

<p><strong><a name="2008-08-06T195707.199634Z"></a>
2008-08-06T19:57:07.199634Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove references to malloc/free memory management not used since r8192.
</pre>
<p>[src/lib.mak src/gsncdummy.c]</p>
</blockquote>

<p><strong><a name="2008-08-06T195121.189161Z"></a>
2008-08-06T19:51:21.189161Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove trailing whitespace.
</pre>
<p>[src/gsncdummy.c]</p>
</blockquote>

<p><strong><a name="2008-08-06T194905.961384Z"></a>
2008-08-06T19:49:05.961384Z Ralph Giles</strong></p>
<blockquote>
<pre>
Use graphics library instead of interpreter-level rangecheck errors.    
</pre>
<p>[src/gsncdummy.c]</p>
</blockquote>

<p><strong><a name="2008-08-06T182820.524086Z"></a>
2008-08-06T18:28:20.524086Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add a capability to select the first and last line to be emitted to the
output file. This was needed to support some customers (531 and 850) that
do something similar in their devices. Adds -dFirstLine=# and -dLastLine=#
to this device. Line numbers are from 0 to height-1, and may be in reverse
order. Probably not much use other than testing, but it doesn't hurt if it
is there.
</pre>
<p>[src/gdevbit.c]</p>
</blockquote>

<p><strong><a name="2008-08-06T072226.679682Z"></a>
2008-08-06T07:22:26.679682Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Redundant patterns in clist.

DETAILS :

Bug 689865 &quot;clist stores redundant patterns&quot;.

The change is pretty simple because the clist reader already implememnts
a pattern cache. We just add pattern id to gx_clist_state
and provide a short format (just the id) when writing and reading
a pattern color to/from clist at second time. A new function gs_dc_get_pattern_id
allows to access the pattern id through closures of color elements.

Note it remembers up to 2 pattern ids for a band
(one for the specific band, and another for &quot;all bands&quot;).
A better way would be to remember all patterns cached for a band,
but it would need to save all cached ids individually for each band while clist writing.
We don't want to enlarge the clist writer storage now.

Minor change : Some dependencies of gxclpath.c were missed in makefile. 

</pre>
<p>[src/gsptype1.c src/lib.mak src/gsptype1.h src/gxcldev.h src/gxclpath.c]</p>
</blockquote>

<p><strong><a name="2008-08-06T062444.864622Z"></a>
2008-08-06T06:24:44.864622Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Memory leak from Indexed color space.

DETAILS :

Bug 689990 &quot;pcl6.exe crash with gs revision 8928&quot;.

This change partially unwinds the revision 8928 change
and reopens the bug 89822 &quot;Memory leaks during rendering clist.&quot;
See comment in code. 

</pre>
<p>[src/gscolor2.c]</p>
</blockquote>

<p><strong><a name="2008-08-05T204434.621109Z"></a>
2008-08-05T20:44:34.621109Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move pointer dereferences to after the NULL check.

</pre>
<p>[src/ttobjs.c]</p>
</blockquote>

<p><strong><a name="2008-08-03T175446.281366Z"></a>
2008-08-03T17:54:46.281366Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Detect and reject PDF files with circular references in the page tree.
Avoid an infinite loop. Bug 689954.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2008-08-03T172340.990280Z"></a>
2008-08-03T17:23:40.990280Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update ignore list for the ijs directory.
</pre>
<p>[ijs]</p>
</blockquote>

<p><strong><a name="2008-08-03T171710.771824Z"></a>
2008-08-03T17:17:10.771824Z Ralph Giles</strong></p>
<blockquote>
<pre>
Clean up the cairo minimum version check introduced in r8929.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2008-08-03T163042.166329Z"></a>
2008-08-03T16:30:42.166329Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : A slow stroking with big patterns.

DETAILS :

Bug 689966 &quot;c329.bin hang with bitcmyk in clist code&quot;.


1. The stroking algorithm includes a branch for a 'faster' rasterizing
with an idempotential color. That branch paints each stroke independently of others.
However that branch doesn't apply an optimization for big patterns,
which the general filling algorithm implements. It caused the too slow rendering,
because a clist-based pattern is played back for each parallelogram.
This change disables the 'faster' srtoking with big patterns,
so that the faster filling algorithm works fine for stroking.

2. Revert the revision 8851 change, which was a temporary workaround for the problem,
The default value for MAX_PATTERN_BITMAP_SIZE is now restored back to 1Mb.

</pre>
<p>[src/lib.mak src/gxpcmap.c src/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2008-08-03T154758.770546Z"></a>
2008-08-03T15:47:58.770546Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Cairo device requires at least v. 1.2.0 of the Cairo library to build.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2008-08-03T122641.949878Z"></a>
2008-08-03T12:26:41.949878Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Memory leak from Indexed color space.

DETAILS :

Bug 689822 &quot;Memory leaks during rendering clist.&quot;

The finalize function doesn't release 'table,
which is allocated when use_proc == 1.

Minor change : improved a debug printing in gsmchunk.c :
A meanful name is better than an unknown address.
 

</pre>
<p>[src/gsmchunk.c src/gscolor2.c]</p>
</blockquote>

<p><strong><a name="2008-08-03T122539.705021Z"></a>
2008-08-03T12:25:39.705021Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Give a name to a continuation operator %ztoken_continue to avoid printing
its address, which varies between builds and causes spurious regression
reports.

</pre>
<p>[src/ztoken.c]</p>
</blockquote>

<p><strong><a name="2008-08-03T074959.678670Z"></a>
2008-08-03T07:49:59.678670Z Russell Lang</strong></p>
<blockquote>
<pre>
Fix the OS/2 build, which was broken because it was trying to use the 
Windows synchronisation code.  
While OS/2 does support thread synchronsation, there is no ghostscript 
implementation for the OS/2 platform, and no interest in writing one.
</pre>
<p>[src/os2.mak]</p>
</blockquote>

<p><strong><a name="2008-08-02T151041.076927Z"></a>
2008-08-02T15:10:41.076927Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Replace a conditional expression with an 'if' statement. The former
requires a prototype for mkstemp64() that is not available on AIX.

</pre>
<p>[src/gp_unifs.c]</p>
</blockquote>

<p><strong><a name="2008-08-01T214344.587346Z"></a>
2008-08-01T21:43:44.587346Z Ralph Giles</strong></p>
<blockquote>
<pre>
Document needing to remove autom4te.cache from the jasper directory.
</pre>
<p>[doc/Release.htm]</p>
</blockquote>

<p><strong><a name="2008-08-01T214342.361706Z"></a>
2008-08-01T21:43:42.361706Z Ralph Giles</strong></p>
<blockquote>
<pre>
We can no longer run the full build with -dBufferSpace=100000. The
minimum to complete the smoke test seems to be around 120000, but
use 200000 as future insurance.
</pre>
<p>[doc/Release.htm]</p>
</blockquote>

<p><strong><a name="2008-08-01T205740.076512Z"></a>
2008-08-01T20:57:40.076512Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Reduce heap size limit (/Zm) on MSVC6 to fix internal compiler error
when COMPILE_INITS=1.
</pre>
<p>[src/msvccmd.mak]</p>
</blockquote>

<p><strong><a name="2008-08-01T205500.712414Z"></a>
2008-08-01T20:55:00.712414Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a mapping of commit ids to author names.

This is used by split_changelog.py to do the replacement when building 
the History files. The changes to that script to make use of this file
were inadvertently included in r8917.
</pre>
<p>[doc/AUTHORS]</p>
</blockquote>

<p><strong><a name="2008-08-01T202216.068978Z"></a>
2008-08-01T20:22:16.068978Z Ralph Giles</strong></p>
<blockquote>
<pre>
Bump the version and product name post-release.
</pre>
<p>[doc/News.htm toolbin/split_changelog.py lib/gs_init.ps src/gscdef.c src/version.mak]</p>
</blockquote>

<p><strong><a name="2008-08-01T180818.641815Z"></a>
2008-08-01T18:08:18.641815Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update change logs for the 8.53 release.
</pre>
<p>[doc/Changes.htm doc/History8.htm doc/Details8.htm doc/Details.htm]</p>
</blockquote>


<h2><a name="Version8.63"></a>Version 8.63 (2008-08-01)</h2>

<p>
This is the fourth scheduled release in the stable Ghostscipt 8.6x 
series. It corresponds to the 1.53 release of GhostPDL.

<p>
Approximately 238 bugs have been fixed since version 8.62. Of particular 
note are robustness and performance improvements with large files, 
invalid PDF, and font handling.

<p>
The major new feature of this release is multithreaded rendering. This 
can be requested by passing <tt>-dNumRenderingThreads=</tt><i>n</i> on
the command line. The input document is first parsed, and then each page 
is split into <i>n</i> bands which are rendered concurrently. This 
can provide a significant reduction in processing time on multi-core 
systems.

<p>
Images are now always interpolated in their source colorspace. This 
improves correctness for XPS documents and avoids bypassing the custom 
color management callbacks for interpolated images. Interpolation and 
color management are both expensive operations, so this affects 
performance with large images. The effect can be positive or negative 
depending on the file and the target resolution. If performance is a 
problem, we suggest running with <tt>-dNOINTERPOLATION</tt>.

<p>
Support for OpenPrinting Vector devices has been upgraded to version 
1.0.

<p>
There are two new devices in this release, both experimental. Behdad 
Esfahbod has contributed a <tt>cairo</tt> output device which uses 
the <a href="http://cairographics.org/">cairo graphics library</a> to 
generate PDF, SVG, EPS, or PNG files, based on the requested filename
extension. The <tt>svgwrite</tt> device directly outputs Scalable Vector 
Graphics, the W3C XML vector graphics format. Both support only vector 
art at this point; text and images will not be represented efficiently.

<p> The following <a href="http://bugs.ghostscript.com/">bugs</a> were
open at the time of release: <blockquote>
226943,
430175,
465936,
493348,
535932,
578865,
614298,
626295,
686747,
686853,
686865,
687000,
687011,
687084,
687095,
687146,
687193,
687257,
687271,
687280,
687295,
687297,
687303,
687327,
687375,
687414,
687475,
687492,
687514,
687520,
687536,
687561,
687593,
687608,
687630,
687650,
687666,
687674,
687677,
687695,
687697,
687702,
687715,
687721,
687728,
687729,
687731,
687775,
687780,
687782,
687793,
687796,
687805,
687850,
687887,
687903,
687904,
687915,
687931,
687950,
687957,
687981,
687983,
688007,
688022,
688024,
688026,
688032,
688036,
688042,
688058,
688061,
688064,
688066,
688081,
688095,
688129,
688130,
688151,
688159,
688166,
688184,
688187,
688204,
688207,
688210,
688215,
688227,
688267,
688269,
688280,
688288,
688312,
688318,
688320,
688333,
688342,
688359,
688361,
688363,
688372,
688378,
688386,
688387,
688389,
688395,
688413,
688436,
688437,
688440,
688448,
688473,
688475,
688483,
688495,
688500,
688515,
688528,
688533,
688539,
688540,
688542,
688557,
688565,
688573,
688580,
688581,
688588,
688601,
688604,
688605,
688616,
688617,
688619,
688627,
688636,
688638,
688647,
688651,
688653,
688655,
688673,
688696,
688697,
688699,
688708,
688709,
688710,
688714,
688717,
688728,
688731,
688736,
688739,
688757,
688770,
688774,
688777,
688778,
688797,
688818,
688829,
688843,
688846,
688871,
688872,
688876,
688908,
688918,
688919,
688923,
688926,
688933,
688942,
688943,
688949,
688952,
688958,
688969,
688976,
688978,
688986,
688990,
688994,
688999,
689003,
689011,
689013,
689022,
689025,
689028,
689031,
689032,
689040,
689044,
689046,
689048,
689057,
689058,
689060,
689070,
689076,
689077,
689078,
689080,
689081,
689093,
689094,
689098,
689116,
689128,
689129,
689130,
689133,
689137,
689145,
689146,
689148,
689150,
689153,
689154,
689161,
689167,
689174,
689184,
689188,
689195,
689198,
689199,
689209,
689222,
689224,
689230,
689236,
689247,
689248,
689252,
689253,
689264,
689278,
689279,
689280,
689283,
689289,
689290,
689295,
689304,
689305,
689308,
689313,
689331,
689335,
689340,
689341,
689358,
689361,
689363,
689370,
689376,
689378,
689392,
689396,
689402,
689418,
689419,
689421,
689422,
689423,
689431,
689438,
689439,
689444,
689450,
689451,
689456,
689460,
689462,
689463,
689471,
689484,
689487,
689489,
689490,
689498,
689500,
689502,
689506,
689507,
689509,
689512,
689518,
689521,
689522,
689546,
689547,
689549,
689554,
689557,
689559,
689560,
689561,
689563,
689566,
689567,
689571,
689573,
689574,
689581,
689583,
689584,
689585,
689591,
689592,
689595,
689598,
689601,
689606,
689610,
689616,
689618,
689623,
689625,
689627,
689628,
689632,
689636,
689641,
689652,
689653,
689654,
689657,
689658,
689663,
689666,
689669,
689670,
689674,
689681,
689682,
689684,
689689,
689690,
689691,
689692,
689697,
689698,
689702,
689704,
689705,
689709,
689710,
689711,
689715,
689716,
689721,
689722,
689725,
689726,
689727,
689729,
689734,
689737,
689741,
689747,
689752,
689756,
689758,
689759,
689760,
689761,
689767,
689769,
689772,
689773,
689775,
689778,
689781,
689786,
689789,
689790,
689792,
689793,
689794,
689799,
689801,
689805,
689808,
689816,
689817,
689820,
689822,
689823,
689826,
689834,
689835,
689836,
689840,
689842,
689849,
689850,
689851,
689853,
689856,
689858,
689859,
689860,
689861,
689862,
689865,
689868,
689869,
689870,
689871,
689872,
689877,
689878,
689879,
689880,
689881,
689883,
689885,
689890,
689891,
689895,
689901,
689902,
689903,
689904,
689905,
689909,
689910,
689914,
689915,
689916,
689917,
689922,
689923,
689928,
689929,
689930,
689931,
689933,
689935,
689937,
689938,
689939,
689940,
689941,
689942,
689943,
689947,
689950,
689951,
689952,
689954,
689955,
689957,
689961,
689966,
689968,
689969,
689970,
689972,
689974,
689975,
689980.
</blockquote>

<h3><a name="8.63_Incompatible_changes"></a>Incompatible changes</h3>

<p>
The maximum number of color components has been reduced to 8 (from 252) 
as a performance improvement. Eight is the largest number commonly used 
and the largest number for which we support continuous tone images. 
Users with special needs can restore the previous behavior by setting 
the GS_CLIENT_COLOR_MAX_COMPONENTS preprocessor symbol to the required 
number of components at compile time.

<p>
The -Z: debugging option now uses 'realtime' instead of 'usertime' 
when reporting timing information on unix-like systems. This has
always been the case on windows-like systems.

<p>
Obsolete makefiles for the DesqView environment have been removed.

<h3><a name="8.63_changelog"></a>Changelog</h3>

<p><strong><a name="2008-08-01T175317.331788Z"></a>
2008-08-01T17:53:17.331788Z Ralph Giles</strong></p>
<blockquote>
<pre>
Bump the product name an date for the 8.63 release.
</pre>
<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm src/gscdef.c doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 src/version.mak man/pf2afm.1 doc/Ps2ps2.htm doc/Fonts.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp doc/Htmstyle.htm man/font2c.1 man/gsnd.1 man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]</p>
</blockquote>

<p><strong><a name="2008-07-31T210650.284451Z"></a>
2008-07-31T21:06:50.284451Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update change logs for 8.63rc3.
</pre>
<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/Changes.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 src/version.mak man/pf2afm.1 doc/Ps2ps2.htm doc/Fonts.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp doc/Htmstyle.htm man/font2c.1 man/gsnd.1 man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Details.htm doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]</p>
</blockquote>

<p><strong><a name="2008-07-29T203541.916113Z"></a>
2008-07-29T20:35:41.916113Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix problem with NumRenderingThreads&gt;0 with devices that request data from
the bottom up such as the 'bmp*' devices. Bug 689985.
</pre>
<p>[src/gxclthrd.c]</p>
</blockquote>

<p><strong><a name="2008-07-29T191131.677116Z"></a>
2008-07-29T19:11:31.677116Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add support to NULL pointers in t_structs or t_astructs objects to execstack
operator. Thanks to Ken for the analysis. Bug 689535.

DETAILS:
The issue is to do with devices handling patterns as high-level objects, which
is why it affects pdfwrite (which can handle patterns itself) but not regular
rendering. In zpcolor.c, pattern_paint_prepare(), there are two control paths,
one for devices which handle patterns as high-level objects, and one for
devices which don't. If the device can't handle high level objects, we install
a pattern accumulation device.

In this case, the flag internal_accum is set, we create the pattern accumulator
device and open it:

    if (internal_accum) {
	gs_memory_t *storage_memory = gstate_pattern_cache(pgs)-&gt;memory;

	pdev = gx_pattern_accum_alloc(imemory, storage_memory, pinst,
"pattern_paint_prepare");
	if (pdev == 0)
	    return_error(e_VMerror);
	code = (*dev_proc(pdev, open_device)) ((gx_device *) pdev);
...
...
}

Later the two control paths rejoin and we put some objects on the execution
stack:

    push_mark_estack(es_other, pattern_paint_cleanup);
    ++esp;
    make_istruct(esp, 0, pdev);

Now notice that we construct the structure on esp using pdev, but we *don't*
create pdev if we can handle patterns, so its left as NULL and we end up
pushing an empty t_struct.

Leo's question in comment 10 is whether this is legal, the answer appears to be
yes, but its debatable. 

In pattern_paint_finish we do this:

    gx_device_forward *pdev = r_ptr(esp - 1, gx_device_forward);

    if (pdev != NULL) {
	gx_color_tile *ctile;
	int code = gx_pattern_cache_add_entry((gs_imager_state *)igs,
					  pdev, &amp;ctile);

That is, if the structure *isn't* NULL we do something with it, we ignore it if
it is NULL. Either way we then do this:

    esp -= 3;

Removing all the objects from the execution stack that we added. Notice that
the structure we pushed onto the execution stack isn't actually 'executed', its
just data used by the pattern handler.

Now, all this works just fine in normal practice, however the job here uses a
CIEBased colour space, and being from an Adobe application it tries to set the
ColorRendering. Since we don't implement a ColorRendering resource category,
this causes an error (handled in a stopped context).

The default error handler uses execstack, and this is where the actual error
finally occurs, because execstack can't handle the empty structure.

</pre>
<p>[src/zcontrol.c]</p>
</blockquote>

<p><strong><a name="2008-07-29T180637.196198Z"></a>
2008-07-29T18:06:37.196198Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update change logs for 8.63rc2.
</pre>
<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/Changes.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 src/version.mak man/pf2afm.1 doc/Ps2ps2.htm doc/Fonts.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp doc/Htmstyle.htm man/font2c.1 man/gsnd.1 man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Details.htm doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]</p>
</blockquote>

<p><strong><a name="2008-07-29T110111.006826Z"></a>
2008-07-29T11:01:11.006826Z Russell Lang</strong></p>
<blockquote>
<pre>
Allow compilation with Microsoft Visual Studio 2008 (VC 9.0).
Include lib files in the Windows installer when using COMPILE_INITS=1.
</pre>
<p>[src/winint.mak src/msvc32.mak]</p>
</blockquote>

<p><strong><a name="2008-07-28T222304.128314Z"></a>
2008-07-28T22:23:04.128314Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fix for Bug 689983.  This was introduced with the source space interpolation code.  Fixes indexing direction in source data when we have indexed data, interpolation and a negative xx value in the geometric transformation.

</pre>
<p>[src/gxiscale.c]</p>
</blockquote>

<p><strong><a name="2008-07-28T204443.542926Z"></a>
2008-07-28T20:44:43.542926Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update change logs for 8.63rc1.
</pre>
<p>[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]</p>
</blockquote>

<p><strong><a name="2008-07-28T194125.163173Z"></a>
2008-07-28T19:41:25.163173Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix a syntax error from r8548.

This wasn't noticed because double.dev isn't part of the default build.
</pre>
<p>[src/zdouble.c]</p>
</blockquote>

<p><strong><a name="2008-07-28T185841.634974Z"></a>
2008-07-28T18:58:41.634974Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update release date and product name for 8.63rc1.
</pre>
<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm src/gscdef.c doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 src/version.mak man/pf2afm.1 doc/Ps2ps2.htm doc/Fonts.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp doc/Htmstyle.htm man/font2c.1 man/gsnd.1 man/pdfopt.1 man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]</p>
</blockquote>

<p><strong><a name="2008-07-28T185501.811159Z"></a>
2008-07-28T18:55:01.811159Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update news for 8.63rc1.
</pre>
<p>[doc/News.htm]</p>
</blockquote>

<p><strong><a name="2008-07-28T120151.595271Z"></a>
2008-07-28T12:01:51.595271Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix extraction of the default subfile from PDF file collection on save
level 0. Export the file name as a PS name from PDF interpreter instance
to protect the name from restore. Bug 689981.

DETAILS:
Exporting this value as a global composite object doesn't work when PDF
interpreter runs on the save level 0. If we ever implement processing of
multiple files from PDF collection the interface will need some changes.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2008-07-28T101053.373341Z"></a>
2008-07-28T10:10:53.373341Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist writer) : Improve the logic about zero tile id.

DETAILS :

Thanks to Peter for participation. See comment in code.

</pre>
<p>[src/gxclrect.c]</p>
</blockquote>

<p><strong><a name="2008-07-28T075242.264750Z"></a>
2008-07-28T07:52:42.264750Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (printer) : A check for buffer space overflow was dramatically overestimated.

DETAILS :

In the old code :

    new_height &lt; max_ulong/(mem_space + (new_height * pdf14_trans_buffer_size))

Where pdf14_trans_buffer_size is (raster * NUM_PDF14_BUFFERS).

equivalent to :

    
    new_height * (mem_space + (new_height * (raster * NUM_PDF14_BUFFERS))) &lt; max_ulong


equivalent to :

    new_height * mem_space + new_height * new_height * raster * NUM_PDF14_BUFFERS &lt; max_ulong


So it counts new_height quadratically, but it must be the linear multiple by the raster.

Debugged with the test case of the bug 689982.
It creates a 15Mb raster, but could not switch off the banding
even with -dMaxBitmap=1000000000 .

</pre>
<p>[src/gdevprn.c]</p>
</blockquote>

<p><strong><a name="2008-07-27T210638.633515Z"></a>
2008-07-27T21:06:38.633515Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (shading) : Empty clipping was entirely lost.

DETAILS :

Bug 689982 "A wrong shading raster".

The old code doesn't account that gx_cpath_from_rectangle
may normalize the given rectangle.

</pre>
<p>[src/gxfill.c]</p>
</blockquote>

<p><strong><a name="2008-07-27T191002.737363Z"></a>
2008-07-27T19:10:02.737363Z Ralph Giles</strong></p>
<blockquote>
<pre>
Metadata updates for the new zfile header.
</pre>
<p>[src/zfile.h doc/Develop.htm]</p>
</blockquote>

<p><strong><a name="2008-07-27T160730.174721Z"></a>
2008-07-27T16:07:30.174721Z Ray Johnston</strong></p>
<blockquote>
<pre>
Remove (complete) duplication of the contents. Cosmetic change only.
</pre>
<p>[src/zfile.h]</p>
</blockquote>

<p><strong><a name="2008-07-27T160128.177923Z"></a>
2008-07-27T16:01:28.177923Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist) : Skip writing unuseful data with linear color triangle.

DETAILS :

This fixes a minor problem what was discovered while working on 
bug 689918 "Ghostscript 8.62 and 8.63 segmentation fault".

cmd_write_trapezoid_cmd wrote an unused data to clist when 
processing a linear color triangle. The variables ybot, ytop are never used
while a clist interpretation. In same time the data are not initialized
in that case, so they imply an indeterministic content and length of the clist. 

</pre>
<p>[src/gxclrast.c src/gxclrect.c]</p>
</blockquote>

<p><strong><a name="2008-07-27T093842.451745Z"></a>
2008-07-27T09:38:42.451745Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (True Type font loader) : Can't work around unsorted 'loca' when 'loca' is not loaded.

DETAILS :

Bug 689893 "Regression: CID font emulation is broken." 

A work around against unsorted 'loca' and its recent improvements
assume that 'loca' presents in sfnts. It is not true
when a CID font is emulated with a True Type disk font,
because in that case the font machinery delay loading
'loca' and 'glyp' elements until a real request from a document.
For more details see comments added in code.

</pre>
<p>[src/bfont.h src/zfcid1.c src/gstype42.c src/zfont42.c]</p>
</blockquote>

<p><strong><a name="2008-07-27T092937.311275Z"></a>
2008-07-27T09:29:37.311275Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : A temporary work around huge images with a soft mask.

DETAILS :

Bug 689080 "PDF Crash with Transparency at 2880 dpi".

 
This is a temporary workaraound for the problem,
see comment in code.

With this patch the test case doesn't crash,
but it needs  -dBufferSpace=500000000 to complete in 15 minutes
on Core 2 Duo 2.4 MHz with debug build.
The test case is pretty big anyway - it generates a 4.2 gigapixel raster.

Thankls to Ray for obtaining the buffer space from a device.

I think the old code is incorrect because it looks applying the
mask two times : first when installing a mask buffer with
.begintransparencymaskimage in doimagesmask, and second time when
processing a Type 103 image in C code. The raster difference
is likely caused by that. I don't perform a deeper analyzis,
because it's a temporary fix which needs to be replaced soon.
All that is written in this paragraph are not sure,
because there is no time for a deeper analyzis before 8.63 release.
When we'll complete Type 103 images (with rasterizing after clist
and with a proper handling in pdfwrite), .begintransparencymaskimage
will likely go away.

</pre>
<p>[lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2008-07-27T070342.852634Z"></a>
2008-07-27T07:03:42.852634Z Russell Lang</strong></p>
<blockquote>
<pre>
When building the Windows installer with COMPILE_INITS=1, 
do not include the Resource and lib initialization files as
separate files in the installer zip archive.
</pre>
<p>[src/winint.mak]</p>
</blockquote>

<p><strong><a name="2008-07-27T025211.521293Z"></a>
2008-07-27T02:52:11.521293Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix direct access to a subfile in the %rom% file system by reusable
stream. Bug 689976, customers 661, 580.

DETAILS:
1. Open the source file of the reusable stream as a general stream,
   rather than an os-based file stream.
2. Take into account file_offset member when accessing the stream.

</pre>
<p>[src/zfile.h src/gsiorom.c src/int.mak src/zfrsd.c src/zfile.c]</p>
</blockquote>

<p><strong><a name="2008-07-25T225114.900519Z"></a>
2008-07-25T22:51:14.900519Z Russell Lang</strong></p>
<blockquote>
<pre>
Change Windows installer to remove "GPL Ghostscript Fonts" target.
Ghostscript now includes fonts in the Resource directory, 
and no longer needs the fonts previously installed in 
"C:\Program Files\gs\fonts".
</pre>
<p>[src/dwsetup.rc src/winint.mak src/dwsetup.h src/dwsetup.cpp]</p>
</blockquote>

<p><strong><a name="2008-07-25T011039.451286Z"></a>
2008-07-25T01:10:39.451286Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use reusable stream when the data stream of type 0 function doesn't fit into
a string. Bug 689978, customer 770.

</pre>
<p>[lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2008-07-24T172851.809318Z"></a>
2008-07-24T17:28:51.809318Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix source style warnings from the nightly regression.
</pre>
<p>[src/aes.h doc/Develop.htm toolbin/clusterpush.sh]</p>
</blockquote>

<p><strong><a name="2008-07-24T020607.385871Z"></a>
2008-07-24T02:06:07.385871Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Clean up of // comment in code and debug ifdef that should have been removed for r8868</pre>
<p>[src/gxiscale.c]</p>
</blockquote>

<p><strong><a name="2008-07-24T004206.095459Z"></a>
2008-07-24T00:42:06.095459Z Ralph Giles</strong></p>
<blockquote>
<pre>
Change the XYSSL AES implementation to better match our conventions.
</pre>
<p>[src/aes.h src/aes.c]</p>
</blockquote>

<p><strong><a name="2008-07-24T004204.729720Z"></a>
2008-07-24T00:42:04.729720Z Ralph Giles</strong></p>
<blockquote>
<pre>
Change the XYSSL AES implementation to build in isolation.
</pre>
<p>[src/aes.c]</p>
</blockquote>

<p><strong><a name="2008-07-24T004202.863201Z"></a>
2008-07-24T00:42:02.863201Z Ralph Giles</strong></p>
<blockquote>
<pre>
Replace Brian Gladman's AES implementation with a no-advertising BSD
version from XYSSL 0.9. Used with permission of Christophe Devine.
</pre>
<p>[src/aes.h src/aes.c]</p>
</blockquote>

<p><strong><a name="2008-07-24T004201.337493Z"></a>
2008-07-24T00:42:01.337493Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix some compile problems in Brian Gladman's AES implementation
and disable 'on the fly keying' routines we don't need.
</pre>
<p>[src/aes.h src/aes.c]</p>
</blockquote>

<p><strong><a name="2008-07-23T232939.935990Z"></a>
2008-07-23T23:29:39.935990Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fix for Bug 689246.  When performing interpolation, the interpolation is now performed in the source colorspace as opposed to the device space.  Custom color callback is no longer bypassed by direct concretization as it was previously.

DETAILS:

Previous code would take device color 8 bit values and do the interpolation.  That portion of the code is the same.   For cases where we have nondevice color the handling is now different.  Indexed colors are mapped to their base space and interpolated.  This is followed by a remap operation.  Device independent colors are interpolated followed by a remap operation.  

Note that for cases where there is a significant enlargement occurring and we are not in a device color space, there can be a performance cost due to current inefficiencies in our color remapping operations.  This can be costly if you have a CMYK CRD MLUT for example.  There is currently a project underway to improve the efficiency of the color flow.  For the current time, if this is an issue, improved speed can be achieved by invoking -dNOINTERPOLATION

</pre>
<p>[src/lib.mak src/gxiscale.c src/gxcolor2.h src/gximage.h src/gscindex.h src/gscolor2.c]</p>
</blockquote>

<p><strong><a name="2008-07-23T225250.086155Z"></a>
2008-07-23T22:52:50.086155Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix possible use of uninitialized variable 'mem_space'. Compute the value
when no-transparency is in effect prior to adding in the space needed for
transparency. Thanks to Michael Vrhel for spotting this.
</pre>
<p>[src/gdevprn.c]</p>
</blockquote>

<p><strong><a name="2008-07-23T215521.014656Z"></a>
2008-07-23T21:55:21.014656Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Write tile id into a pattern clist (continued).

DETAILS :

Bug 689818 "Regression: Test file imagemask-with-pattern.ps fails with banding and pbmraw ".

The last patch appears incomplete, now fifing it.

</pre>
<p>[src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2008-07-22T210307.709088Z"></a>
2008-07-22T21:03:07.709088Z Ray Johnston</strong></p>
<blockquote>
<pre>
Turn off the NOISY 'VERBOSE' setting by default.
</pre>
<p>[src/rinkj/rinkj-epson870.c]</p>
</blockquote>

<p><strong><a name="2008-07-22T183234.998275Z"></a>
2008-07-22T18:32:34.998275Z Ray Johnston</strong></p>
<blockquote>
<pre>
Change the default GS_CLIENT_COLOR_MAX_COMPONENTS to 8 (down from 252).
This improves the performance for files with many images. This limits
the number of DeviceN components and the number of separations that
can be generated in the default build and causes 'limitcheck' errors
on CET tests that attempt to set a 250 component DeviceN space.

THIS IS NOT BACKWARDS COMPATIBLE, but the change in ths single file
so this can readily be rebuilt by customers that need more components
or anyone that demands conformance to this implementation dependent
result on the CET. Note that not all Adobe implementations support
250 components as CPSI does.

Currently only the tiffsep and psdcmyk devices can generate more than
8 separations, and then only when USE_COMPRESSED_ENCODING is used to
fit more than 8 components in a 64-bit color value.

This partly reverts rev 7159.

</pre>
<p>[src/gsccolor.h]</p>
</blockquote>

<p><strong><a name="2008-07-22T142325.922113Z"></a>
2008-07-22T14:23:25.922113Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): limit checking of CIDfonts for 'fixed width' property.

Details:
Bug 689963 "Infinite loop converting PostScript to PDF"

In fact the loop is not infinite, but it does take a long time. When checking to see if a
font is non-proportional, ie all glyphs have the same width, and the font is a CIDFont, we
did not stop testing when the CID exceeded the maximum CID in the font instance. Instead
we continued to the full CID range (0xffffffff). Because the TrueType code returns a
default for missing glyphs if the font was truly non-proportional then it would take a
long time to search the entire range.

(zfcid1.c): In z11_enumerate_glyph, check the requested CID against the CIDCount for the
font. Return a rangecheck if we exceed it.

I believe only pdfwrite uses this code currently.

</pre>
<p>[src/zfcid1.c]</p>
</blockquote>

<p><strong><a name="2008-07-22T062414.072316Z"></a>
2008-07-22T06:24:14.072316Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Write tile id into a pattern clist.

DETAILS :

Bug 689818 "Regression: Test file imagemask-with-pattern.ps fails with banding and pbmraw ".

The old code doesn't write a tile id when writing the tile to clist,
because the clist interpreter doesn't use tile id.
This causes a failure after we implemented clist-based patterns.
While playing back a pattrn clist to a page clist writer device, 
the clist writer does need a tile id
for choosing an entry of an internal hash table.

Actually the failure happens due to a strange check 
"tile-&gt;id != gx_no_bitmap_id" in 
clist_strip_tile_rectangle in gxclrect.c ln 479.
It is not clear what it was intended for.
When a tile id is zerfo, the check skips writing tile size to clist,
so that a zerodevide happens during the clist playback.
 
We decided to provide meanful ids 
because the clist writer needs them anyway.
Fixing the check to be a subject of a separate patch
(if a fix is really necessary).

This patch simply writes tile id when the clist
is for a pattern. A new nacro IS_CLIST_FOR_PATTERN(cdev)
Defines the condition for that. 
Some internal functions change prototypes
with adding a new boolean argument for_pattern to know
whether a clist is for a pattern.

</pre>
<p>[src/gxclbits.c src/gxclist.h src/gdevprn.c src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2008-07-21T232313.534369Z"></a>
2008-07-21T23:23:13.534369Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the license statement for Kevin Hartig's hana fonts.

They are now under the SIL Open Font License 1.1 with reserved font
names Calligraphic-Hiragana and Calligraphic-Katakana.

See Bug 688674 for the relicensing declaration.
</pre>
<p>[lib/Fontmap.GS]</p>
</blockquote>

<p><strong><a name="2008-07-21T202221.005889Z"></a>
2008-07-21T20:22:21.005889Z Ray Johnston</strong></p>
<blockquote>
<pre>
Remove obsolete and probably non-working support for ancient DesqView (DOS
multi-taksing). This probably should have been dropped when we dropped 16-bit
support.
</pre>
<p>[src/dvx-tail.mak src/dvx-gcc.mak src/dvx-head.mak]</p>
</blockquote>

<p><strong><a name="2008-07-21T185531.311238Z"></a>
2008-07-21T18:55:31.311238Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Wrap string data source into a procedure when /ImscaleDecode filter is
installed, to ensure repeated reading of the string when the imagemask
needs more data than has the string. Allocate new composite objects
with the same global status as old ones. Bug 689889, customer 330.

</pre>
<p>[lib/gs_img.ps]</p>
</blockquote>

<p><strong><a name="2008-07-18T205354.538069Z"></a>
2008-07-18T20:53:54.538069Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for Seg fault caused by wrap around of an unsigned long. Seen at 600 dpi
to pkmraw with Bug689369.pdf and -dBufferSpace=32000000.

DETAILS:

While the pdf14_trans_buffer_size was small enough, the mem_space calculation
would wrap around.
</pre>
<p>[src/gdevprn.c]</p>
</blockquote>

<p><strong><a name="2008-07-17T201152.225244Z"></a>
2008-07-17T20:11:52.225244Z Ray Johnston</strong></p>
<blockquote>
<pre>
Increase the default threshold for using the (much slower) pattern clist accumulator.
The 32Mb threshold is tolerable for most host systems and this can be modified during
the build with -DMAX_PATTERN_BITMAP_SIZE=___ (possibly using the makefile XCFLAGS).

Only embedded systems may want to set this to a smaller value.

This is a temnporary workaround for bug 689966. Improving the performance of the
pattern clist accumulator will be considered a future enhancement.
</pre>
<p>[src/gxpcmap.c]</p>
</blockquote>

<p><strong><a name="2008-07-17T055119.136291Z"></a>
2008-07-17T05:51:19.136291Z Ray Johnston</strong></p>
<blockquote>
<pre>
Update documentation to describe multi-threaded rendering (NumRenderingThreads)
and improve the documentation about the clist/banding parameters and the effect
on performance. Addresses issues raised in bug 689668.
</pre>
<p>[doc/Use.htm doc/Language.htm]</p>
</blockquote>

<p><strong><a name="2008-07-17T023401.869133Z"></a>
2008-07-17T02:34:01.869133Z Ralph Giles</strong></p>
<blockquote>
<pre>
Write pure white as a background in the pngalpha device. Bug 689934.

Details:

Russell Lang reports this caused problems originally, but it seems to 
work now, so reverting the behaviour per his request.
</pre>
<p>[src/gdevpng.c]</p>
</blockquote>

<p><strong><a name="2008-07-16T171929.238633Z"></a>
2008-07-16T17:19:29.238633Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (transparency) : A mask buffer could left unreleased due to banding.

DETAILS :

Bug 689944 "Reference to free object".

See comment in code. 

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2008-07-16T150017.682927Z"></a>
2008-07-16T15:00:17.682927Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Ignore out-of-range UniqueID in embedded Type 1 PDF fonts. Bug 689973.

</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2008-07-15T202913.383262Z"></a>
2008-07-15T20:29:13.383262Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the obsolete pnga device. Bug 689971.

This was a test framework used in the development of the PDF 1.4
compositor. It's no longer used.
</pre>
<p>[src/devs.mak src/gdevpnga.c]</p>
</blockquote>

<p><strong><a name="2008-07-15T132729.996709Z"></a>
2008-07-15T13:27:29.996709Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Cache the pattern instance in the PDF pattern object to prevent reprated
pattern instantiation and improve performance. Bug 689896, customer 531.

</pre>
<p>[lib/pdf_ops.ps]</p>
</blockquote>

<p><strong><a name="2008-07-14T185340.636598Z"></a>
2008-07-14T18:53:40.636598Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>

Allows the Epson AcuLaser device output to be sent to a pipe (closes bug 689953).

Thanks to j@uriah.heep.sax.de (Joerg Wunsch) for the patch.
</pre>
<p>[contrib/eplaser/gdevescv.c]</p>
</blockquote>

<p><strong><a name="2008-07-13T220619.770532Z"></a>
2008-07-13T22:06:19.770532Z Henry Stiles</strong></p>
<blockquote>
<pre>
Rop devices now require access to an allocator instance.  Fixes crash
in running pxl fts file T326.BIN with a halftoning device.  The bug
was reported by a potential customer and a bugzilla report was never
filed.
</pre>
<p>[src/gdevrops.c]</p>
</blockquote>

<p><strong><a name="2008-07-12T014313.151852Z"></a>
2008-07-12T01:43:13.151852Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use /.notdef instead of null in the array of PostScript names of TTF glyphs.
This saves the trouble of checking for null values and fixes a case where
a null entry slipped through. Bug 689962, customer 384.

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2008-07-11T231056.624279Z"></a>
2008-07-11T23:10:56.624279Z Ralph Giles</strong></p>
<blockquote>
<pre>
Restore the 2_fracs image class to the psl2lib device.

It was inadvertently removed in r8828.
</pre>
<p>[src/lib.mak]</p>
</blockquote>

<p><strong><a name="2008-07-11T231055.549110Z"></a>
2008-07-11T23:10:55.549110Z Ralph Giles</strong></p>
<blockquote>
<pre>
Make the search for the most recent ghostpcl revision more robust.
Thanks to Henry Stiles for the extra quoting idea.
</pre>
<p>[toolbin/clusterpush.sh]</p>
</blockquote>

<p><strong><a name="2008-07-11T211049.148153Z"></a>
2008-07-11T21:10:49.148153Z Ralph Giles</strong></p>
<blockquote>
<pre>
Merge clusterpush changes from the ghostpcl tree.
</pre>
<p>[toolbin/clusterpush.sh]</p>
</blockquote>

<p><strong><a name="2008-07-11T180013.808434Z"></a>
2008-07-11T18:00:13.808434Z Ralph Giles</strong></p>
<blockquote>
<pre>
Check return codes of remote commands and abort if there's a problem.

Previously we continued which could confusingly return the wrong
regression report at the end if the connection drops while waiting
for the run to complete.
</pre>
<p>[toolbin/clusterpush.sh]</p>
</blockquote>

<p><strong><a name="2008-07-11T050607.316809Z"></a>
2008-07-11T05:06:07.316809Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
TrueType instruction definitions (IDEF) are addressed by a single byte index. 
So there cannot be mode than 256 different instructions. Nevertheless, a
request a for larger array for instruction definitions should not be a fatal
error. Bug 689960, customer 330.

</pre>
<p>[src/ttobjs.c]</p>
</blockquote>

<p><strong><a name="2008-07-10T233600.202299Z"></a>
2008-07-10T23:36:00.202299Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add the so build directories to the clusterpush exclude list.
</pre>
<p>[toolbin/clusterpush.sh]</p>
</blockquote>

<p><strong><a name="2008-07-10T233556.971501Z"></a>
2008-07-10T23:35:56.971501Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move the interpolation image class from the ps2 dev to the core graphics
library so it is available to all languages.
</pre>
<p>[src/lib.mak]</p>
</blockquote>

<p><strong><a name="2008-07-10T170039.840394Z"></a>
2008-07-10T17:00:39.840394Z Ralph Giles</strong></p>
<blockquote>
<pre>
Documentation update: we support Separation, DeviceN and a number of PDF 1.7 features.
</pre>
<p>[doc/Language.htm]</p>
</blockquote>

<p><strong><a name="2008-07-09T225900.503580Z"></a>
2008-07-09T22:59:00.503580Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use '%PDF-' instead of '%PDF-1.' to recognize PDF files because PDFsharp 0.8.2
generates '%PDF-0.0' and Acrobat accepts this. Bug 689949, customer 384.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2008-07-07T141754.881290Z"></a>
2008-07-07T14:17:54.881290Z Ken Sharp</strong></p>
<blockquote>
<pre>
Update the documentation for the NOCIE switch, noting that this also affects the CIEBasedDEF
and CIEBasedDEFG spaces, substituting DeviceRGB and DeviceCMYK for the CIE spaces.
</pre>
<p>[doc/Use.htm]</p>
</blockquote>

<p><strong><a name="2008-07-07T134338.233194Z"></a>
2008-07-07T13:43:38.233194Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix warnings from the JPX decoder when using Visual Studio 9.

Details:
A compiler warning was disabled if the MSVC_VERSION variable was exactly 8, changed to
&gt;7 so that it is also disabled for later versions of the compiler

</pre>
<p>[src/msvccmd.mak]</p>
</blockquote>

<p><strong><a name="2008-07-07T085659.749169Z"></a>
2008-07-07T08:56:59.749169Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Images ina DeviceN space with more than 60 inks caused a crash.

Details:
Bug #689864 "Regression: 09-34.PS core dumps with pdfwrite"

When emitting an image, using the Flate encoder, the number of colorants in 
the DeviceN space was not checked against the maximum permitted. Since the 
encoder uses a fixed buffer whose size depends on the maximum number of inks, this
could cause a write beyond the end of the buffer.

(spngpx.h) Increase the maximum number of colorants to 256
(spngp.c) Return error if the number of colorants in the space
          exceeds the maximum permitted.

I can't check the generated PDF file, as no PDF reader seems able to open a PDF 
file with more than 32 inks, the architectural limit in the current version 
of Acrobat.

</pre>
<p>[src/spngpx.h src/spngp.c]</p>
</blockquote>

<p><strong><a name="2008-07-06T004519.690811Z"></a>
2008-07-06T00:45:19.690811Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix address/value problem. How this ever seemed to work, who knows.
Thanks to Matthias Kilian for this patch.
</pre>
<p>[src/gdevwts.c]</p>
</blockquote>

<p><strong><a name="2008-07-04T203541.686667Z"></a>
2008-07-04T20:35:41.686667Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a bug in the error recovery code that handles invalid font streams.
Bug 689936, customer 661.

</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2008-07-04T182044.681886Z"></a>
2008-07-04T18:20:44.681886Z Ralph Giles</strong></p>
<blockquote>
<pre>
Parse common color space keys in JPXDecode filtered images and pass them
to the filter, allowing JPX-encoded CMYK images to display properly.
Fixes bug 688807.

DETAILS:

The fundamental issue is that the jasper library does not support the
ISO 15444-2 (JPX) extensions to the JP2 format for handling full ICC
and CMYK color spaces. So while the the PDF image dictionary and the
JPX streams both specify a CMYK ICC profile describing the image, jasper
ignores the extended colr boxes and marks the image as sRGB + an unknown
component, just based on it having three or more components. Our stream
implementation used this information and tried to return RGB pixels when
the graphics library expected CMYK, causing errors or hangs.

Jasper should be amended to handle these extensions. However, since in
PDF a color space in the image's stream dictionary overrides what is in
the stream, I felt implementing the override was the more useful
resolution.

This patch doesn't handle all color spaces, just Device* and ICCBased,
which are the most common. In the case of ICCBased spaces, we try to
look up the alternate, and use that if it is a Device* space; otherwise
we guess based on the number of components.

</pre>
<p>[src/zfjpx.c src/sjpx.c]</p>
</blockquote>

<p><strong><a name="2008-07-03T182555.494578Z"></a>
2008-07-03T18:25:55.494578Z Ralph Giles</strong></p>
<blockquote>
<pre>
Clean up the state machine in s_jpxd_process.

DETAILS:

The state machine didn't always respect the calling conventions for
filter process routines, and could return '0' (more input needed) when
'last' was true (no more input exists).

Also, the jas_stream member of the filter state isn't currently
necessary and has been moved to s_jpxd_decode_image(). Originally
it was envisioned that the jas_stream could seek on the filter's
source ghostscript stream and so would need a longer lifetime than
we're currently using. This has now been simplified to a local variable.

</pre>
<p>[src/sjpx.c src/sjpx.h]</p>
</blockquote>

<p><strong><a name="2008-07-03T182554.527696Z"></a>
2008-07-03T18:25:54.527696Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix a hang in s_jpxd_process. Bug 688807.

DETAILS:

The problem file contains a CMYK JPX stream, which jasper does not
recognize, treating it as sRGB with an extra component. This causes
us to try an return 3-component data, and end up looping forever if
only a fraction of the expected pixel is available at the end of a
line.

Check for this event and return an error instead.
</pre>
<p>[src/sjpx.c]</p>
</blockquote>

<p><strong><a name="2008-07-03T182552.592596Z"></a>
2008-07-03T18:25:52.592596Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove trailing whitespace from the jpx stream implementation.
</pre>
<p>[src/sjpx_luratech.h src/sjpx.c src/sjpx.h src/sjpx_luratech.c]</p>
</blockquote>

<p><strong><a name="2008-07-03T130311.896225Z"></a>
2008-07-03T13:03:11.896225Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist writer) : Indeterminizm writing a degenerate curve.

DETAILS :

Bug 689911 Shifting raster data, Windows MSVC 8 non-debug build. 

In function cmd_put_path the variable 'prev' was wrongly localized 
in the loop body when need to save/pass data from the previous cycle.
It worked fine with debug build, because the compiler 
always commits variables to RAM for debug purpose. 
With release build the variable 'prev' never changes 
because formally speaking the program never uses its value
after it is initialized.

The bug persists since the repository was created on March 9 2000.
The old behavior may be indeterministic.

With MSVC8 the effect is occasionaly visible when a degenerate curve
{x y x y x y x y} is written into clist. 
See the simplified test case attached to the bug report.
 
</pre>
<p>[src/gxclpath.c]</p>
</blockquote>

<p><strong><a name="2008-07-01T102225.835951Z"></a>
2008-07-01T10:22:25.835951Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist writer) : The maximal compositor command size was wrong.

DETAILS :

Bug 689927 "rangecheck in c_pdf14trans_write() causing 'unregistered' error". 

The bug was introduced in revision 8587.
See comments in code.
Thanks to Ray and Marcos for participation.
 
</pre>
<p>[src/gstparam.h src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2008-06-30T235604.281753Z"></a>
2008-06-30T23:56:04.281753Z Ralph Giles</strong></p>
<blockquote>
<pre>
Document the output filename behavior of ps2pdf in the manpage.
Bug 689920.
</pre>
<p>[man/ps2pdf.1]</p>
</blockquote>

<p><strong><a name="2008-06-30T181551.663545Z"></a>
2008-06-30T18:15:51.663545Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a missing header dependency.
</pre>
<p>[src/lib.mak]</p>
</blockquote>

<p><strong><a name="2008-06-30T000540.080596Z"></a>
2008-06-30T00:05:40.080596Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add one more way to store data of the reusable stream: an array of strings.
Read the input stream into an array of strings during reusable stream
construction and use the array directly as a data storage.
Bug 689476, customer 190.

</pre>
<p>[src/int.mak src/gxshade.c lib/gs_frsd.ps src/zfrsd.c]</p>
</blockquote>

<p><strong><a name="2008-06-28T145332.570212Z"></a>
2008-06-28T14:53:32.570212Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make /?dblacute and /?hungarumlaut glyph names equivalent in Type 1 fonts.
Add a missing glyph when the font is loaded if another glyph is defined.
Bug 689014, customer 580.

</pre>
<p>[lib/gs_type1.ps]</p>
</blockquote>

<p><strong><a name="2008-06-26T191737.366443Z"></a>
2008-06-26T19:17:37.366443Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use extended name table by default and adjust the settings to have
up to 1M names of up to 1K characters long. Bug 689913.

</pre>
<p>[src/inamedef.h src/inameidx.h src/inamestr.h]</p>
</blockquote>

<p><strong><a name="2008-06-25T161857.687888Z"></a>
2008-06-25T16:18:57.687888Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Fixed compile for Linux.
</pre>
<p>[contrib/opvp/gdevopvp.c]</p>
</blockquote>

<p><strong><a name="2008-06-24T141629.258940Z"></a>
2008-06-24T14:16:29.258940Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Clean image enumerator before releasing it.

DETAILS :

Bug 688845 "Segmentation Fault on EPS 2 PDF conversion", comment #38.

Adobe Illustrator creates a Postscript document, 
in which an image data procedure executes 'save',
and the corresponding 'restore' appears after the image end.
DCue to that the image enumerator is freed at a higher save level than
it was allocated, so that gs_free_object works idle. 
Nevertheless pointers must not in the structure,
because they may point to blocks already released
by the client's subclass method for end_image.
Leaving them uncleaned caused a real crash in the garbager - see bug 688845.

The patch defines the new function gs_image_free_enum,
which is intendend for a safe releasing of an image enumerator
from Postscript interpreter.
It cleans the entire subclassed enumerator,
including all possible pointers created by subclasses.
All end_image implementations,
which may be called from Postscript interpreter,
must call this function for releasing image enumerators.

The 'memory' pointer moved from subclasses to gx_image_enum_common.
We believe that in the old code all subclasses define and initialize it.

Working on this patch we suspected memory leaks 
from image enumerators with some devices.
Particularly we suspect that subclasses if gx_device_vector
(pdfwrite, ps2write, etc.) never release image enumerators (not sure).
This patch does not do any attempt to re[pair such leaks, 
because we want the new code doesn't
change the behavour too much in order to simplify the testing.
A work on leaks to be done separately.

</pre>
<p>[src/gxiparam.h src/gxidata.c src/gsimage.h src/gdevvec.c src/gximage.h src/gximag3x.c src/gdevplnx.c src/devs.mak src/gdevvec.h src/gdevpdfi.c src/gxclimag.c src/lib.mak src/gdevpx.c src/gdevtrac.c src/gdevbbox.c src/gximage1.c src/gximage3.c]</p>
</blockquote>

<p><strong><a name="2008-06-22T064328.997699Z"></a>
2008-06-22T06:43:28.997699Z Ralph Giles</strong></p>
<blockquote>
<pre>
Rename the svg device to svgwrite to avoid conflict with the SVG interpreter.

The device is still selected as -sDEVICE=svg, just the name used internally
has been changed.
</pre>
<p>[src/Makefile.in src/gdevsvg.c src/devs.mak]</p>
</blockquote>

<p><strong><a name="2008-06-21T140600.424638Z"></a>
2008-06-21T14:06:00.424638Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT interpreter) : A work around a wrong maxPoints.

DETAILS :

Bug 689907 "problem reading PDF: Failed to interpret TT instructions in font 80000001".

The test csae embeds a TT font subset with an incorrect maxPoints.
This is a simple work around that.
 
</pre>
<p>[src/ttobjs.c]</p>
</blockquote>

<p><strong><a name="2008-06-16T161237.522247Z"></a>
2008-06-16T16:12:37.522247Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Updated to latest versions of files from ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/aj16.tar.Z

Closes bug 689735.
</pre>
<p>[Resource/CMap/UniJIS2004-UTF32-H Resource/CMap/UniJIS2004-UTF16-H Resource/CMap/UniJIS2004-UTF8-H Resource/CMap/UniJISX0213-UTF32-H Resource/CMap/UniJIS-UTF32-H Resource/CMap/UniJIS-UTF16-H Resource/CMap/UniJIS-UTF8-H Resource/CMap/UniJISX02132004-UTF32-H]</p>
</blockquote>

<p><strong><a name="2008-06-11T162424.671679Z"></a>
2008-06-11T16:24:24.671679Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Undoing change introduced in rev 8794.  This change will need to occur after Bug 689889 is handled.   rev 8749 introduced 37 differences in the regression.  </pre>
<p>[src/simscale.c]</p>
</blockquote>

<p><strong><a name="2008-06-10T203705.090668Z"></a>
2008-06-10T20:37:05.090668Z Michael Vrhel</strong></p>
<blockquote>
<pre>
For bug 689888.  This fixes the hang in the while loop.  If end of file occurs during the reading of the stream it is passed along by the filter.  However, proper output does not occur due to a different issue.  Another bug was opened related to this postscript noncompliance of string reading reuse in imaging operators.  See 689889.  </pre>
<p>[src/simscale.c]</p>
</blockquote>

<p><strong><a name="2008-06-09T230250.347013Z"></a>
2008-06-09T23:02:50.347013Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a modified version of the clusterpush script from the ghostpcl tree.
</pre>
<p>[toolbin/clusterpush.sh]</p>
</blockquote>

<p><strong><a name="2008-06-09T134608.406410Z"></a>
2008-06-09T13:46:08.406410Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use a dictionary (instead of an array) to represent cmap table in
a TrueType font because the array cannot accept fonts that have both
0x0 and 0xFFFF codes. Bug 689136, customer 870.

</pre>
<p>[src/icid.h src/zfcid1.c lib/gs_ttf.ps src/zcid.c]</p>
</blockquote>

<p><strong><a name="2008-06-09T073357.606022Z"></a>
2008-06-09T07:33:57.606022Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (stroking) : Prevent unpainted gaps between neighbour strokes that could appear due to stroke adjustment.

DETAILS :

Bug 687974 "pdf file has banding with ghostscript but not with acrobat". 

The test case includes a gradient, which is represented
as a set of paralel strokes. Due to stroke widths equals to fractional pixels, 
stroke adjustment shifts some of them so that
an unpainted gap appears between strokes and the gradient looks striped.
Note the test document is created with Quark Express 4.11 .

This patch implements a hewristic recognizer for parallel contacting strokes
and suppresses stroke adjustment for them. See comments in code 
for more details.

Note that the recognizer data are associated with a device but they
are not a device property. We store them in a device structure because
we haven't got an associated structure in the graphic state,
and we don't want to introduce one now against extra complexity
with memory management. Also the recognizer code
Appears to be distributed along multiple functions and we would like
to apply a better incapsulation. Nevertheless the encapsulation
would cause CPU time expense for multiple small function calls
unless we create new macros. So commonly we're unhappy of
this code but we don't see a better solution.

Also note that the recognizer data is copied from/to clipper
device when the stroking algorithm installs and deinstalls a clipper.
So the data actually is not a property of a device.
Also they're not a part of graphic state because they must live
across gsave/grestore (the test case requires so). 
 
</pre>
<p>[src/gsimage.c src/gstext.c src/gxdevice.h src/gdevbit.c src/gspaint.c src/gxclip.c src/gxstroke.c src/gxdevcli.h]</p>
</blockquote>

<p><strong><a name="2008-06-05T215258.268146Z"></a>
2008-06-05T21:52:58.268146Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the executable property from the included fonts.
</pre>
<p>[Resource/Font/URWPalladioL-BoldItal Resource/Font/NimbusRomNo9L-Medi Resource/Font/NimbusSanL-Bold Resource/Font/Dingbats Resource/Font/URWChanceryL-MediItal Resource/Font/CenturySchL-Roma Resource/Font/NimbusMonL-Bold Resource/Font/URWGothicL-Demi Resource/Font/NimbusSanL-BoldItal Resource/Font/NimbusRomNo9L-MediItal Resource/Font/StandardSymL Resource/Font/URWBookmanL-DemiBold Resource/Font/NimbusRomNo9L-Regu Resource/Font/URWGothicL-Book Resource/Font/NimbusSanL-ReguCond Resource/Font/CenturySchL-Bold Resource/Font/URWBookmanL-Ligh Resource/Font/NimbusRomNo9L-ReguItal Resource/Font/URWBookmanL-DemiBoldItal Resource/Font/NimbusMonL-ReguObli Resource/Font/NimbusSanL-ReguCondItal Resource/Font/CenturySchL-Ital Resource/Font/URWPalladioL-Roma Resource/Font/CenturySchL-BoldItal Resource/Font/URWBookmanL-LighItal Resource/Font/NimbusSanL-BoldCond Resource/Font/NimbusSanL-BoldCondItal Resource/Font/NimbusMonL-BoldObli Resource/Font/URWGothicL-DemiObli Resource/Font/NimbusSanL-Regu Resource/Font/URWPalladioL-Bold Resource/Font/NimbusMonL-Regu Resource/Font/URWGothicL-BookObli Resource/Font/NimbusSanL-ReguItal Resource/Font/URWPalladioL-Ital]</p>
</blockquote>

<p><strong><a name="2008-06-05T002620.566472Z"></a>
2008-06-05T00:26:20.566472Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Replace incorrect FontMatrix in CFF CIDFont with a most common value to
recover a PDF file that Acrobat 8 manages to shows correctly. Bug 688517.

</pre>
<p>[lib/gs_cidfn.ps]</p>
</blockquote>

<p><strong><a name="2008-05-31T005734.917939Z"></a>
2008-05-31T00:57:34.917939Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add work-around for PDF files that misspell 'endobj' as 'endjobj'. Bug 689876.

</pre>
<p>[lib/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2008-05-30T202517.430208Z"></a>
2008-05-30T20:25:17.430208Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Dom't interpret ^D (0x04) as a self-delimeted character in PDF mode because
PDF doesn't need this hack. Bug 689875.

</pre>
<p>[src/iscan.c]</p>
</blockquote>

<p><strong><a name="2008-05-28T215203.844656Z"></a>
2008-05-28T21:52:03.844656Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (True Type font loader) : Work around incorrect numGlyphs (continued).

DETAILS :

Bug 689516 "problem reading PDF: Failed to interpret TT instructions (ref 7814)".
Bug 689866 "Regression: with TrueType fonts (possibly related to loca); file Bug688467.ps" 

The last patch appears to cause a conflict with the revision 5707 change.
which introduced a hewristic for reapring fonts with unsorted loca.
When sortinmg the full loca (including glyphs behind numGlyps), the test cases
of bugs 688467 and 688461 cause overlapping glyphs,
so that the hewristic gives a wrong glyph length.

This patch improves the hewristic with checking the glyph length
obtained from the unsorted loca, and replaces it only if it looks incorrect.
f
which may need further adjustments.
 
</pre>
<p>[src/gstype42.c]</p>
</blockquote>

<p><strong><a name="2008-05-28T181626.144495Z"></a>
2008-05-28T18:16:26.144495Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct properties.
</pre>
<p>[src/sidscale.h src/sjbig2_luratech.h src/sjpx_luratech.h src/sidscale.c src/sjbig2_luratech.c src/sjpx_luratech.c]</p>
</blockquote>

<p><strong><a name="2008-05-28T160401.772433Z"></a>
2008-05-28T16:04:01.772433Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Changed crlf to lf.
</pre>
<p>[src/sidscale.h src/sidscale.c]</p>
</blockquote>

<p><strong><a name="2008-05-28T023835.559910Z"></a>
2008-05-28T02:38:35.559910Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a typo introduced in the rev. 8146 that prevented running PDF files from
stdin. Bug 689847.
</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2008-05-28T002723.734030Z"></a>
2008-05-28T00:27:23.734030Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fix to enable proper custom color callback when indexed images with ICC profiles are used.  Bug 689863.</pre>
<p>[src/lib.mak src/gscolor2.h src/gxcie.h src/gsciemap.c src/gscolor2.c]</p>
</blockquote>

<p><strong><a name="2008-05-27T201208.164024Z"></a>
2008-05-27T20:12:08.164024Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Addition of debug code to dump embedded ICC profiles for external analysis.  </pre>
<p>[src/gsicc.c]</p>
</blockquote>

<p><strong><a name="2008-05-27T170740.221072Z"></a>
2008-05-27T17:07:40.221072Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Enable printafm to emit a comment with UniqueID, that may be of some use when
investigating versions of fonts used. Thanks to Michail Vidiassov for the
patch. Bug 688610.
</pre>
<p>[lib/printafm.ps]</p>
</blockquote>

<p><strong><a name="2008-05-26T190405.563476Z"></a>
2008-05-26T19:04:05.563476Z Ralph Giles</strong></p>
<blockquote>
<pre>
Work around broken JBIG2Decode streams created by several versions of
Xerox WorkCentre. Bugs 689841 and 689852.

In these streams, a segment data length field is written as -1
expecting the decoder to infer it from the length of the remaining
data.
</pre>
<p>[jbig2dec/jbig2_page.c]</p>
</blockquote>

<p><strong><a name="2008-05-25T072853.119264Z"></a>
2008-05-25T07:28:53.119264Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : MSVC warnings.

DETAILS :

Removed an extra debug printing that prints an unutialized variable.
 
</pre>
<p>[src/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2008-05-25T072338.027951Z"></a>
2008-05-25T07:23:38.027951Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (True Type font loader) : Work around incorrect numGlyphs.

DETAILS :

Bug 689516 "problem reading PDF: Failed to interpret TT instructions (ref 7814)".

The bug report supplies a PDF document, which embeds a TT font
with a too small numGlyphs. The loca table contains more glyphs and 
they are referenced in a text. The font is incorrect, but Acrobat handles the document.

This patch checks whether there are glyphs behind numGlyphs and 
extends numGlyphs to cover them. Also improved error handling in ttfmain.c .

Besides that, now we print a warning about an incorrect numGlyphs
in release build. The olkd code did with debug buil only.
I believe that users need to know whether a font is broken, and that
its rendering is hewristic.
 
</pre>
<p>[src/gstype42.c src/ttfmain.c]</p>
</blockquote>

<p><strong><a name="2008-05-25T054515.665594Z"></a>
2008-05-25T05:45:15.665594Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Revert the rev. 8509 because it is not needed after rev. 8774 but interferes
with FONTPATH search and memory font resources. Bug 689637.

DETAILS:
Since embedded PDF fints are now not registered as resources, there's no
need to distinguish between disk and memory font resources. Embedded fonts
bypass resource machinery; non-embedded fonts are loaded by name.
 
</pre>
<p>[lib/pdf_font.ps src/zfont.c]</p>
</blockquote>

<p><strong><a name="2008-05-25T042823.450067Z"></a>
2008-05-25T04:28:23.450067Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Continue the changes started by the rev. 8772. Remove one more definefont from
embedded TrueType font loader. Bug 689644, customer 243.

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2008-05-25T021714.504731Z"></a>
2008-05-25T02:17:14.504731Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change all shell scripts to treat a single dash '-' as a positional
parameter rather than an option. Bug 689846.
</pre>
<p>[lib/eps2eps lib/ps2ps lib/dumphint lib/ps2ps2 lib/dvipdf lib/pdfopt]</p>
</blockquote>

<p><strong><a name="2008-05-23T050520.013100Z"></a>
2008-05-23T05:05:20.013100Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use embedded PDF fonts directly. Don't define them as resources and look them
up later by the name. Leave findfont operator for fetching non-embedded fonts
only, which are now unaffected by embedded fonts. Bugs 689510, 689514 from
customer 700.

DETAILS:
CIDFont resources should be handled in a similar way but this part
is not yet implemented.

</pre>
<p>[lib/pdf_font.ps lib/pdf_ops.ps]</p>
</blockquote>

<p><strong><a name="2008-05-23T001350.314402Z"></a>
2008-05-23T00:13:50.314402Z Ralph Giles</strong></p>
<blockquote>
<pre>
Implement sync_output as cairo_flush. Patch from Behdad Esfahbod.
</pre>
<p>[src/gdevcairo.c]</p>
</blockquote>

<p><strong><a name="2008-05-22T180622.983939Z"></a>
2008-05-22T18:06:22.983939Z Igor Melichev</strong></p>
<blockquote>
<pre>
Enhancement (graphics) : Delay applying type 1 raster patterns until clist interpretation (continued 4).

DETAILS :

The old code assumes that a pattern always fits into the clist writer buffer.
However ppmraw -r400 176-01.ps violates this assumption.
This patch implements a subdivision of a pattern into slices,
each of which is smaller than the buffer size.

1. The new function cmd_get_buffer_space retrives maximal available space
   in the clist writer buffer (gxclutil.c).

2. cmd_put_drawing_color now implements a cycle for slicing big patterns.
   Each slice writes to clist as a separate clist instruction (gxclpath.c).

3. gx_dc_pattern_write_raster drops the constraint that the pattern
   fits into a single buffer (gsptype1.c).

4. The clist interpreter is enhanced with composing a pattern from slices
   (gxclrast.c).

</pre>
<p>[src/gsptype1.c src/gxcldev.h src/gxclrast.c src/gxclpath.c src/gxclutil.c]</p>
</blockquote>

<p><strong><a name="2008-05-22T095218.876353Z"></a>
2008-05-22T09:52:18.876353Z Igor Melichev</strong></p>
<blockquote>
<pre>
Enhancement (graphics) : Delay applying type 1 raster patterns until clist interpretation (continued 3).

DETAILS :

Bug 689856 "Regression: 09-34.PS core dumps when banding".

Uninitialized fields in device color after restoring a pattern from clist.
Debugged with
..\..\gs-hd\bin\gswin32c.exe -IF:/AFPL/gs-hd/lib;f:\afpl\fonts -r300 -K1000000 -dMaxBitmap=10000 -dNOPAUSE -dBATCH -sDEVICE=pbmraw -sOutputFile=cur.ppm H:\AuxFiles\CET\09-34.PS

</pre>
<p>[src/gsptype1.c]</p>
</blockquote>

<p><strong><a name="2008-05-21T194653.581581Z"></a>
2008-05-21T19:46:53.581581Z Ray Johnston</strong></p>
<blockquote>
<pre>
Change parameters to gdev_prn_allocata_mesmory to explicit width and height to work
around a (suspected) bug in gdev_prn_allocate when new_width and new_height are 0
and the page has transparency. That issue will be adddressed separately.
Crash with multi-threaded rendering reported by customer #850.
</pre>
<p>[src/gxclthrd.c]</p>
</blockquote>

<p><strong><a name="2008-05-21T194647.112573Z"></a>
2008-05-21T19:46:47.112573Z Ralph Giles</strong></p>
<blockquote>
<pre>
In r8765 we concluded GS_IMAGE_MAX_PLANES was the same as
MAX_COMPONENTS. Make this change permanent by removing the
MAX_PLANES define entirely.
</pre>
<p>[src/gsimage.c src/zimage.c src/gxiparam.h src/gdevbbox.c src/gxidata.c src/gximage.c src/gsiparam.h src/gxclimag.c]</p>
</blockquote>

<p><strong><a name="2008-05-21T194643.711424Z"></a>
2008-05-21T19:46:43.711424Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the lowercase "compatibility" versions of the GS_IMAGE_MAX_*
macros.
</pre>
<p>[src/zimage.c src/gdevtxtw.c src/gsimage.c src/gxiparam.h src/gxidata.c src/gximage.c src/dxmainc.c src/gdevpdtv.c src/gdevpdfb.h src/gdevpdtv.h src/macsystypes.h src/gdevmacttf.h src/gp_mac.h src/gxclimag.c src/iimage.h src/gxsamplp.h src/gdevmacxf.c src/gdevmac.c src/gsiparam.h src/gdevmac.h]</p>
</blockquote>

<p><strong><a name="2008-05-21T190531.529144Z"></a>
2008-05-21T19:05:31.529144Z Ray Johnston</strong></p>
<blockquote>
<pre>
Reduce the GS_IMAGE_MAX_PLANES to a sane number. The image cannot have more
planes than the number of CLIENT_COLORS we support (plus 1 for alpha).
This cures a stack overflow seen with the multi-threaded rendering on
Windows.
</pre>
<p>[src/gsiparam.h]</p>
</blockquote>

<p><strong><a name="2008-05-21T182742.905572Z"></a>
2008-05-21T18:27:42.905572Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fix for 689811.  Enables custom color callback when banding of images is occurs.

DETAILS:
This was a simple fix which puts the callback structure address into gslib_ctx instead of in the graphic state.  This fixes the customer's issue.  The postscript interface for custom color remains as it was with this commit.  Soon, in the future, we will be changing to a C API interface.  There does remain an issue with respect to object type tagging.  If high level images occur with banding, the object type is different than if there was no banding.  Opening a new bug in regard to this.</pre>
<p>[src/gsnamecl.h src/gslibctx.c src/gxcmap.c src/iapi.c src/gslibctx.h src/gsncdummy.c src/gsciemap.c src/gscspace.c src/gsicc.c src/gscdevn.c src/gsnamecl.c src/gscie.c]</p>
</blockquote>

<p><strong><a name="2008-05-21T181313.037917Z"></a>
2008-05-21T18:13:13.037917Z Ralph Giles</strong></p>
<blockquote>
<pre>
Credit Behdad in the source.
</pre>
<p>[src/gdevcairo.c]</p>
</blockquote>

<p><strong><a name="2008-05-21T134208.542151Z"></a>
2008-05-21T13:42:08.542151Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (Type 1 hinter) : The missed flex hewristic malfunctioned.

DETAILS :

Bug 689821 "SegFault in gxhintn.c".

The old code is buggy with a wrong index advance along a cyclic buffer range.

</pre>
<p>[src/gxhintn.c]</p>
</blockquote>

<p><strong><a name="2008-05-21T101214.199391Z"></a>
2008-05-21T10:12:14.199391Z Igor Melichev</strong></p>
<blockquote>
<pre>
Enhancement (graphics) : Delay applying type 1 raster patterns until clist interpretation (continued 2).

DETAILS :

Bug 689848 "C stack overflow on Windows and hang on linux 176-01.ps".

A patch from Ray, which eliminates an infinite recursion in the clist writer.
A further improvement is coming soon about noodling the big data 
while copying a pattern into a page clist.

</pre>
<p>[src/gxclutil.c]</p>
</blockquote>

<p><strong><a name="2008-05-21T064641.280250Z"></a>
2008-05-21T06:46:41.280250Z Ray Johnston</strong></p>
<blockquote>
<pre>
Ensure that the chunk wrapper is used on the non_gc allocator since doing GC
on chunks will be disastrous. This is protection only and causes no difference
since the only current client of the chunk wrapper is the multi-threaded clist
rendering which wraps non_gc_memory.
</pre>
<p>[src/gsmchunk.c]</p>
</blockquote>

<p><strong><a name="2008-05-21T064014.466289Z"></a>
2008-05-21T06:40:14.466289Z Ray Johnston</strong></p>
<blockquote>
<pre>
Upon one of our engineer's request, clean up the MSVC warning about use of an
uninitialized variable.
</pre>
<p>[src/gxclthrd.c src/gxclist.h src/gxclread.c]</p>
</blockquote>

<p><strong><a name="2008-05-21T063534.826889Z"></a>
2008-05-21T06:35:34.826889Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add some missing information for the clist multi-threaded rendering files and
the chunk memory wrapper. This cleans up (som of) the nightly regression nags.
</pre>
<p>[doc/Develop.htm]</p>
</blockquote>

<p><strong><a name="2008-05-21T013708.729158Z"></a>
2008-05-21T01:37:08.729158Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix the autoconf build when libcairo isn't available.

The device properly disabled in r8752.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2008-05-21T012649.215021Z"></a>
2008-05-21T01:26:49.215021Z Ralph Giles</strong></p>
<blockquote>
<pre>
Set properties on the new cairo device source file.
</pre>
<p>[src/gdevcairo.c]</p>
</blockquote>

<p><strong><a name="2008-05-21T012445.439819Z"></a>
2008-05-21T01:24:45.439819Z Ralph Giles</strong></p>
<blockquote>
<pre>
Whitespace cleanup. Also comment out the warning about setlogop; this
isn't important for most documents.
</pre>
<p>[src/gdevcairo.c]</p>
</blockquote>

<p><strong><a name="2008-05-21T012444.147836Z"></a>
2008-05-21T01:24:44.147836Z Ralph Giles</strong></p>
<blockquote>
<pre>
Don't compare a NULL extension string.
</pre>
<p>[src/gdevcairo.c]</p>
</blockquote>

<p><strong><a name="2008-05-21T012442.046903Z"></a>
2008-05-21T01:24:42.046903Z Ralph Giles</strong></p>
<blockquote>
<pre>
Rename the cairo device parameter CairoSurface to CairoOption.

Better handling of libcairo errors.

Add (untested) support for passing a libcairo context pointer
through the CairoContext device parameter for rendering to a
client drawable.

Details:

CairoSurface was renamed with the expectation that it will in
the future take additional options that might not be surface
specific. Also, the CairoSurface name was chosen with the idea
that a client could pass a pointer to an already allocated
cairo_surface_t, but it's just as easy to pass the result
of calling cairo_create() on such a surface as a context
pointer. Therefore we've added CairoContext and renamed the
old CairoSurface parameter to CairoOptions.

The new command line would be:

 gs -sDEVICE=cairo -sCairoOptions=ps -o - test.ps

to set the output format to ps.
</pre>
<p>[src/gdevcairo.c]</p>
</blockquote>

<p><strong><a name="2008-05-21T012440.923940Z"></a>
2008-05-21T01:24:40.923940Z Ralph Giles</strong></p>
<blockquote>
<pre>
Protect the use of pkg-config for libcairo.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2008-05-21T012438.762206Z"></a>
2008-05-21T01:24:38.762206Z Ralph Giles</strong></p>
<blockquote>
<pre>
New 'cairo' output device using the libcairo graphics library.
Patch by Behdad Esfahbod.

Details:

This output device uses the LGPL cairo library to create file output in
a variety of formats. Currently supported are png, svg, pdf, ps, eps.

The output format can be specified with the CairoSurface device
parameter. If this parameter isn't set, the device will guess
based on the filename extension given in OutputFile. Thus, these
two command lines are equivalent:

gs -sDEVICE=cairo -sCairoSurface=svg -o tiger.svg examples/tiger.eps
gs -sDEVICE=cairo -o tiger.svg examples/tiger.eps

Other output formats are selected like so:

gs -sDEVICE=cairo -o tiger.png examples/tiger.eps
gs -sDEVICE=cairo -o tiger.pdf examples/tiger.eps
gs -sDEVICE=cairo -o tiger.ps examples/tiger.eps

Only vector drawing is implemented at this point; images and text are
handled by fallback and will not give compact results. The resolution
for rasterization is set by the -r parameter as usual.
</pre>
<p>[src/Makefile.in src/configure.ac src/gdevcairo.c src/devs.mak]</p>
</blockquote>

<p><strong><a name="2008-05-20T203452.772461Z"></a>
2008-05-20T20:34:52.772461Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add double inclusion protection to cure nag from nightly regression.
</pre>
<p>[src/gsmchunk.h src/gxclthrd.h]</p>
</blockquote>

<p><strong><a name="2008-05-20T161840.306550Z"></a>
2008-05-20T16:18:40.306550Z Ray Johnston</strong></p>
<blockquote>
<pre>
Clean up properties to get rid of nightly regression warnings.
</pre>
<p>[src/gsmchunk.c src/gxclthrd.c src/gsmchunk.h src/gxclthrd.h src/gdevsvg.c]</p>
</blockquote>

<p><strong><a name="2008-05-20T005225.121469Z"></a>
2008-05-20T00:52:25.121469Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Consider Index object in CFF font as empty if the offset element size is
incorrect. Bug 689854, customer 580.

DETAILS:
The rationale behind this decision is that the index is, probably,
not used when it is malformed but the file survives in the wild.

</pre>
<p>[lib/gs_cff.ps]</p>
</blockquote>

<p><strong><a name="2008-05-19T144752.443966Z"></a>
2008-05-19T14:47:52.443966Z Igor Melichev</strong></p>
<blockquote>
<pre>
Enhancement (graphics) : Delay applying type 1 raster patterns until clist interpretation (continued).

DETAILS :

Bug 689807 "segfault with 09-34.PS".

The last patch for the subject appears incomplete.
This one allows to write and read null patterns.
Debugged with 09-34.PS .

</pre>
<p>[src/gsptype1.c]</p>
</blockquote>

<p><strong><a name="2008-05-17T213347.003946Z"></a>
2008-05-17T21:33:47.003946Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Permit opening of temporary files in the safe mode. Fix /invalidaccess
error during interpretation of PDF 1.7 file collections in the safe mode.
Bug 689847.

</pre>
<p>[lib/pdf_main.ps src/zfile.c]</p>
</blockquote>

<p><strong><a name="2008-05-17T125801.814886Z"></a>
2008-05-17T12:58:01.814886Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Ignore annotation appearance stream when it has a wrong type i.e. not a
dictionary. Bug 689839.

</pre>
<p>[lib/pdf_main.ps lib/pdf_base.ps lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2008-05-17T010202.764582Z"></a>
2008-05-17T01:02:02.764582Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Replace various access techniques to PDF annotations with 'knownoget'
in preparation to fix the bug 689839.

</pre>
<p>[lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2008-05-16T233414.372367Z"></a>
2008-05-16T23:34:14.372367Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add support for linecap/join and miterlimit.
</pre>
<p>[src/gdevsvg.c]</p>
</blockquote>

<p><strong><a name="2008-05-16T124824.645580Z"></a>
2008-05-16T12:48:24.645580Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use PDFScanRules to scan ToUnicode CMap. Fix a case where CMap stream has
a name starting with 2 slashes that should not be parsed as an immediately
evaluated name. Bug 689642, customer 870.

</pre>
<p>[lib/pdf_font.ps lib/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2008-05-16T000542.149140Z"></a>
2008-05-16T00:05:42.149140Z Ralph Giles</strong></p>
<blockquote>
<pre>
Accumulate imaging state changes and write a new group only when
drawing. Add support for the linewidth parameter. We're pretty
close to properly handling tiger and other vector-only files.
</pre>
<p>[src/gdevsvg.c]</p>
</blockquote>

<p><strong><a name="2008-05-16T000541.073469Z"></a>
2008-05-16T00:05:41.073469Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct stroke and fill attribute overrides based on the path type.

Also includes some whitespace cleanup.
</pre>
<p>[src/gdevsvg.c]</p>
</blockquote>

<p><strong><a name="2008-05-16T000540.066267Z"></a>
2008-05-16T00:05:40.066267Z Ralph Giles</strong></p>
<blockquote>
<pre>
Store clipping rectangles as a clip path and ignore other non-drawing
paths.
</pre>
<p>[src/gdevsvg.c]</p>
</blockquote>

<p><strong><a name="2008-05-15T212413.840635Z"></a>
2008-05-15T21:24:13.840635Z Ralph Giles</strong></p>
<blockquote>
<pre>
Set the document size and scale based on the page size and resolution
from the device parameters.
</pre>
<p>[src/gdevsvg.c]</p>
</blockquote>

<p><strong><a name="2008-05-15T212412.705572Z"></a>
2008-05-15T21:24:12.705572Z Ralph Giles</strong></p>
<blockquote>
<pre>
Return proper negative error codes on allocation failure.

Also some minor formatting.
</pre>
<p>[src/gdevsvg.c]</p>
</blockquote>

<p><strong><a name="2008-05-15T212411.342484Z"></a>
2008-05-15T21:24:11.342484Z Ralph Giles</strong></p>
<blockquote>
<pre>
Be explicit about clearing the current fill or stroke color when
none is set.
</pre>
<p>[src/gdevsvg.c]</p>
</blockquote>

<p><strong><a name="2008-05-15T161748.102316Z"></a>
2008-05-15T16:17:48.102316Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fix for previous commit.  I had the wrong version number test in the define.</pre>
<p>[jbig2dec/config_win32.h]</p>
</blockquote>

<p><strong><a name="2008-05-15T161217.999197Z"></a>
2008-05-15T16:12:17.999197Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Minor change in JBIG configuration file related to using Visual Studio Version 9 (2008).  stdio.h has a definition for vsnprintf which conflicts with the define in config_win32.h</pre>
<p>[jbig2dec/config_win32.h]</p>
</blockquote>

<p><strong><a name="2008-05-15T000024.616940Z"></a>
2008-05-15T00:00:24.616940Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Improve white-on-mask drawing mode.

Details:

This patch is provided by Hin-Tak (see bug 688372); his comments:

This is a patch which I have created, to make the pxlmono/pxlcolor driver
bebaves much better in the white-on-mask situation, without breaking
normal drawing.

I haven't quite work out all the details nor understand the
reverse-mask-draw code properly yet, but this patch improves the situation
a great deal, to the point all the icons are shown correctly except for
having its background draw solid white rather than transparent


</pre>
<p>[src/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2008-05-14T234909.954483Z"></a>
2008-05-14T23:49:09.954483Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>

Add support to pxlcolor and pxlmono for 24 bpp images.

Details:

Previous to this revision the pxlcolor and pxlmono devices would revert
to using gx_default_begin_image() when bits_per_pixel==24, resulting
in very large images.  Now the image data is written directly into the
pxl stream.  In the case of pxlmono the image is converted to 8 bpp via
the lum_*_weight values from gxlum.h.


</pre>
<p>[src/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2008-05-13T195208.912983Z"></a>
2008-05-13T19:52:08.912983Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix an incorrect curveto coordinate.
</pre>
<p>[src/gdevsvg.c]</p>
</blockquote>

<p><strong><a name="2008-05-13T184723.939753Z"></a>
2008-05-13T18:47:23.939753Z Ralph Giles</strong></p>
<blockquote>
<pre>
Disable drawing in the SVG output device after the first output_page call.

Even for single-page output we receive an erasepage fill after the showpage
from gdevvec, which overwrites whatever we've drawn. This should be avoided
in a more sophisticated way (ideally in the superclass) but this method is
helpful for current development.
</pre>
<p>[src/gdevsvg.c]</p>
</blockquote>

<p><strong><a name="2008-05-13T184723.279847Z"></a>
2008-05-13T18:47:23.279847Z Ralph Giles</strong></p>
<blockquote>
<pre>
Support setting stroke and fill colors.
</pre>
<p>[src/gdevsvg.c]</p>
</blockquote>

<p><strong><a name="2008-05-13T184721.967012Z"></a>
2008-05-13T18:47:21.967012Z Ralph Giles</strong></p>
<blockquote>
<pre>
Import the current state of the svg driver. Doesn't work.
</pre>
<p>[src/Makefile.in src/gdevsvg.c src/devs.mak]</p>
</blockquote>

<p><strong><a name="2008-05-13T035810.005759Z"></a>
2008-05-13T03:58:10.005759Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Reduce generation of garbage and the time spent on garbage collection by
placing gstate into the 2nd element of the patterm implementation array
in Adobe compatibility mode only. Ghostscript doesn't use this gstate
at all. Bug 689488.

</pre>
<p>[lib/gs_lev2.ps src/zmisc.c]</p>
</blockquote>

<p><strong><a name="2008-05-11T170017.181464Z"></a>
2008-05-11T17:00:17.181464Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a bug that leaves a junk value on the stack for every empty row on the
page during execution of a redefined showpage. Bug 689832.

DETAILS:
The bug was introduced in rev. 2602 and stayed undetected for a while because
most files don't depend on the contents of the operand stack after executing
showpage.

</pre>
<p>[lib/ps2epsi.ps]</p>
</blockquote>

<p><strong><a name="2008-05-10T220203.546959Z"></a>
2008-05-10T22:02:03.546959Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Ignore OutputIntent attribute if it is not an array; recover a broken PDF file.
Bug 689831.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2008-05-09T164454.615805Z"></a>
2008-05-09T16:44:54.615805Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix missing dependency that caused builds that included the 'bmpa' devices
to fail because the locking memory code wasn't included. Currently PCL
builds still had the bmpa devices included, so they failed.
</pre>
<p>[src/lib.mak]</p>
</blockquote>

<p><strong><a name="2008-05-09T140044.027651Z"></a>
2008-05-09T14:00:44.027651Z Ralph Giles</strong></p>
<blockquote>
<pre>
uncodes 33 and 34 repeat a zero code length symbol id, not the previous
symbol like runcode 32. Bug 689824.

Thanks to Justin Greer for the fix.
</pre>
<p>[jbig2dec/config.h jbig2dec/configure jbig2dec/jbig2_text.c]</p>
</blockquote>

<p><strong><a name="2008-05-09T041201.814716Z"></a>
2008-05-09T04:12:01.814716Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Reject incorrect ICC profile that has 0 offset in one of the tags
and use alternate color space. Bug 689830.

</pre>
<p>[icclib/icc.c]</p>
</blockquote>

<p><strong><a name="2008-05-09T021814.475665Z"></a>
2008-05-09T02:18:14.475665Z Ray Johnston</strong></p>
<blockquote>
<pre>
This is the "final" merge of the mtrender (multi-threaded clist rendering)
branch into the trunk. The default behavior is still the same, i.e., the
clist rendering is done in the same thread as the parsing (main thread).

The 'gsmalloc' memory allocator now ALWAYS uses a mutex to lock accesses
in case it is used by a multi-threaded client. This was determined to
result is less than 1% performance hit on a single threaded client.

Refer to the log messages on the mtrender branch for details on the
design of the multi-threaded clist rendering, but the summary is that
-dNumRenderingThreads=# (default 0) determines the number of background
threads REQUESTED for rendering bands. If the platform doesn't support
threads, or if there is an error starting the threads from the clist_
get_bits_rectangle_mt hook, single threaded rendering will be used.

The number of threads may be less than the requested number if the
number of bands is less than the request, or if there is an error
setting up threads (as many as can be created, up to the request will
be used). The -Z: debug switch emits status messages indicating how
many threads are requested (-dNumRenderingThreads) and the number that
is actually used.

Many files show little if any improvement with multi-threaded clist
rendering since they are dominated by the clist writing time, or by
the time required to write the output. No files seen to date show a
performance hit greater than aobut 3%. Setting NumRenderingThreads
to a count higher than the number of CPU cores available does not
seem to help or hurt much, but there is overhead (per page) with
starting threads and allocating band buffers, so a very large count
is not productive.

The best performance seen on an Intel Core 2 Duo system, on a
particular file is about a 75% performance improvement (completing
the page in 57% of the single threaded time). This time did not
include writing a file (output to /dev/null).

In order to prevent memory mutex (locking) contention from slowing
down multi-threaded clist rendering, each thread uses a 'chunk'
wrapper on NON-GC the non-gc memory allocator. Each chunk allocator
is thread-safe/instantiated, so the locking only occurs on chunk
allocations to the wrapped (target) memory allocator.

The 'BAND_LIST_STORAGE=mmeory' option has been supplemented to allow
multiple concurrent threads to read the clist 'memfile'.

The "autoconf" files (configure.ac and Makefile.in) have been improved
to hook the 'posix' pthreads if available, so linux and Mac OS/X will
be able to support the multi-threaded clist rendering.
</pre>
<p>[src/gxclist.c src/gsmemlok.c src/gsmchunk.c src/gxclthrd.c src/gxclist.h src/configure.ac src/gsmchunk.h src/gxclthrd.h src/gxclread.c src/lib.mak src/gxclmem.c src/gxclmem.h src/gsmalloc.c src/Makefile.in src/gdevprn.c src/gsmalloc.h src/gdevprn.h]</p>
</blockquote>

<p><strong><a name="2008-05-08T214707.355557Z"></a>
2008-05-08T21:47:07.355557Z Ray Johnston</strong></p>
<blockquote>
<pre>
Use 'realtime' instead of 'usertime' for -Z: timing information. On some
systems (Windows) these are equivalent, but on linux, 'usertime' is the
time for the current thread which interferes with timing collection on
different threads (multi-threaded rendering did not include any time for
the threads). INCOMPATIBLE CHANGE, but this is only debug info.
</pre>
<p>[src/imain.c]</p>
</blockquote>

<p><strong><a name="2008-05-08T212830.163536Z"></a>
2008-05-08T21:28:30.163536Z Ray Johnston</strong></p>
<blockquote>
<pre>
Allow some compile time constants that affect performance to be set as
/D compiler flags (via XCFLAGS makefile macro).

MAX_BITMAP_PATTERN_SIZE controls when the clist pattern accumulator is used,
and on machines with a decent amount of RAM, the default of 1 Mb is too
small and causes the slower clist method to be used too often. Setting this
to 32 Mb is probably better on hosts.

The GS_CLIENT_COLOR_MAX_COMPONENTS default of 252 is needed for Adobe CPSI
compatibility and for RIPS that want to use a large number of DeviceN
colorants, but this increases the size of some allocations and slows down
performance and is much too large for printers. Setting this to 6 or 8 is
probably plenty.
</pre>
<p>[src/gxpcmap.c src/gsccolor.h]</p>
</blockquote>

<p><strong><a name="2008-05-08T200932.433652Z"></a>
2008-05-08T20:09:32.433652Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix MSVC warning -- mismatched type.
</pre>
<p>[src/zchar42.c]</p>
</blockquote>

<p><strong><a name="2008-05-08T195633.932490Z"></a>
2008-05-08T19:56:33.932490Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix gcc warnings, unused variables and type mismatch, implicit declaration.
</pre>
<p>[src/gximask.c src/gp_unix.c]</p>
</blockquote>

<p><strong><a name="2008-05-08T193526.683268Z"></a>
2008-05-08T19:35:26.683268Z Ray Johnston</strong></p>
<blockquote>
<pre>
Clean up gcc compiler warnings for unused 'st' and no prototype for
gx_pattern_cache_free (from gxpcolor.h).
</pre>
<p>[src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2008-05-08T191040.329127Z"></a>
2008-05-08T19:10:40.329127Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add support for recursive mutex on posix. Multiple threads that perform
'locking' before calling an object's finalize need this to prevent
deadlock if the finalize calls 'free'. This protection is standard on
Windows, but PTHREAD_MUTEX_RECURSIVE attribute is not available on
many systems.

The method, using pthread_self and pthread_equal, was extracted from
a web information page and tested on linux.

NB: The multi-threaded clist rendering no longer needs this since
the 'chunk' memory wrapper calls the 'finalize' function without
locking, so the deadlock no longer occurs.
</pre>
<p>[src/gp_psync.c]</p>
</blockquote>

<p><strong><a name="2008-05-08T185610.922303Z"></a>
2008-05-08T18:56:10.922303Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix memory leak observed with DEBUG=1 build on mtrender branch. The
'levels' and 'bit_data' of halftones were being leaked when halftones
were set by the clist reader.

DETAILS:

Since the 'dht.rc' was filled with 0's, the rc.memory would cause the
gx_imager_dev_ht_install to copy the order (mem_diff would be true).
The gx_ht_copy_ht_order would make a copy, but the one passed in
was never freed. Since the 'src' component information was cleared
during the install, gx_ht_read_and_install needs to save a copy of
the components so that the orders can be released.
</pre>
<p>[src/gxdhtserial.c]</p>
</blockquote>

<p><strong><a name="2008-05-08T184031.637800Z"></a>
2008-05-08T18:40:31.637800Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix compiler warning due to missing prototype for strncmp.
</pre>
<p>[src/zchar42.c src/int.mak]</p>
</blockquote>

<p><strong><a name="2008-05-07T210753.236295Z"></a>
2008-05-07T21:07:53.236295Z Igor Melichev</strong></p>
<blockquote>
<pre>
Enhancement (graphics) : Delay applying type 1 raster patterns until clist interpretation.

DETAILS :

Bug 689579 "Ghostscript generates a very, very large temporary file".

The old code converts pattern fills into lots of constant color rectangles while writing to clist.
The new code writes pattern data to clist and apply pattern during the clist playback.
So here we complete the change started in revision 8655.

New functions gx_dc_pattern_write_raster, gx_dc_pattern_read_raster
implement color serialization for raster patterns.
The old function gx_dc_pattern_write got minor changes about buffer localization.

Minor chabge (gxclimag.c, gxclpath.c, gxclrect.c) : Propagated error codes.

Also fixed a bug occasionally found in gxclrast.c . 
It caused a crash in some unusual conditions.

</pre>
<p>[src/gsptype1.c src/gxclrast.c src/gxclpath.c src/gxclimag.c src/gxclrect.c]</p>
</blockquote>

<p><strong><a name="2008-05-07T210216.625138Z"></a>
2008-05-07T21:02:16.625138Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Wrong pattern phase when pattern applies to a band with non-zero origin.

DETAILS :

The old code computes pattern phase modulo rep_width, rep_height.
It appears wrong when pattern step is much bigger than the pattern bbox.
Really the bbox determines the painting area as rep_width, rep_height,
but the phase to be computed modulo pattern step.
Besides that, the old code aplies a wrong sign, which is oposite to a band offset.

This bug has no effect with Postscript interpreter, because 
currently patterns never apply after banding,
but it will change with the next patch.
With no banding the phase is always zero.

Other interpreters may need additional improvements
(we suspect they are bug-to-bug compatible).

</pre>
<p>[src/gsptype1.c]</p>
</blockquote>

<p><strong><a name="2008-05-07T091527.593615Z"></a>
2008-05-07T09:15:27.593615Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Imprecise pattern phase with negative cell origins (continued).

DETAILS :

The old code inaccurately converts floats to integers.
The problem here is that (int)-0.13 == 0 but the math wants -1.
It causes a 1 pixel bias with negative coordinates when argument is not integer.
This isn't a first time when we fix a bug of this kind,
and likely this one is not the last.

This change is important for bug 689579.

Debugged with the following commands :

gswin32c.exe -dMaxBitmap=22000000  -r300 -dNOPAUSE -dBATCH-sDEVICE=ppmraw -sOutputFile=cur-b.ppm 245-07.ps
gswin32c.exe -dMaxBitmap=100000000 -r300 -dNOPAUSE -dBATCH-sDEVICE=ppmraw -sOutputFile=cur-n.ppm 245-07.ps

They must render same raster, but they didn't.

</pre>
<p>[src/gxp1fill.c]</p>
</blockquote>

<p><strong><a name="2008-05-07T062534.508384Z"></a>
2008-05-07T06:25:34.508384Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Repait yet another broken PDF file that abbreviates /Indexed to /I
in the color space array. Bug 689815.

</pre>
<p>[lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2008-05-06T205954.208603Z"></a>
2008-05-06T20:59:54.208603Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix and simplify implementation of operator Q. Collecting the path with
the current ctm and re-playing it with the restored ctm transforms the
path exactly as PDF needs. Bug 689812.

</pre>
<p>[lib/pdf_ops.ps]</p>
</blockquote>

<p><strong><a name="2008-05-05T195117.293996Z"></a>
2008-05-05T19:51:17.293996Z Ray Johnston</strong></p>
<blockquote>
<pre>
Eliminate leaks caused by lost 'maskbuf' elements. Only the uppermost
maskbuf is (currently) used by the pop_transparency_group that applies
the mask, but the chain of maskbuf-&gt;maskbuf elements was never freed.
This also improves performance (at least for the test case of bug
689534). Customer #870.
</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2008-05-02T201350.255816Z"></a>
2008-05-02T20:13:50.255816Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Imprecise pattern phase with negative cell origins.

DETAILS :

The old code inaccurately converts floats to integers.
The problem here is that (int)-0.13 == 0 but the math wants -1.
It causes a 1 pixel bias with negative coordinates when argument is not integer.
This isn't a first time when we fix a bug of this kind,
and likely this one is not the last.

This change is important for bug 689579.
Here is a test for debugging it :

&lt;&lt;
  /PaintType 1
  /PatternType 1
  /TilingType 1
  /BBox [0 0 60 60]
  /XStep 40
  /YStep 60
  /star
  { gsave
    0 12 moveto
    4
    { 144 rotate
      0 12 lineto
    } repeat
    closepath
    fill
    grestore
  }
  /PaintProc
  { begin
    1 0 0 setrgbcolor
    15 15 translate
    star
    0 0 1 setrgbcolor
    30 30 translate
    star
    0 1 0 setrgbcolor
    -30 0 translate
    star
    30 -30 translate
    star
    end
    %.break
  } 
&gt;&gt;
[1 0 0 1 0 0]
makepattern
/Star4 exch def

/Pattern setcolorspace
Star4 setcolor

clippath pathbbox 
exch pop 30 exch
4 copy = = = =
rectfill

showpage

The old code gives different rasters for this test while banded and unbanded rendering.

</pre>
<p>[src/gxp1fill.c]</p>
</blockquote>

<p><strong><a name="2008-05-02T080750.475340Z"></a>
2008-05-02T08:07:50.475340Z Ken Sharp</strong></p>
<blockquote>
<pre>
The revision 8621 which reinstated the comments, and updated encs2c.ps to generate them,
placed the Id line in the wrong position relative to the licence and summary comments.
</pre>
<p>[toolbin/encs2c.ps src/gscedata.h src/gdevpdtv.c src/gdevpdtv.h src/gscedata.c]</p>
</blockquote>

<p><strong><a name="2008-05-02T021957.012115Z"></a>
2008-05-02T02:19:57.012115Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the testing instructions and file index.

This was mostly obsolete, and the automated tests are fairly complete now.
</pre>
<p>[doc/Testing.htm doc/Readme.htm toolbin/tests/check_docrefs.py]</p>
</blockquote>

<p><strong><a name="2008-05-02T014214.506521Z"></a>
2008-05-02T01:42:14.506521Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix various code policy warnings.
</pre>
<p>[toolbin/msvcxml.bat src/gdevdjet.c src/aes.h toolbin/memory.py src/aes.c]</p>
</blockquote>

<p><strong><a name="2008-04-30T190659.803995Z"></a>
2008-04-30T19:06:59.803995Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix some warnings.
</pre>
<p>[src/gsncdummy.c]</p>
</blockquote>

<p><strong><a name="2008-04-30T045102.115275Z"></a>
2008-04-30T04:51:02.115275Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fixed issue with NULL pointer in gsncdummy.c when ICC color space was used in custom color callback.  Also, made the object based coloring an option define and fixed minor header issues.</pre>
<p>[src/lib.mak src/gxcmap.c src/gsncdummy.c src/gscspace.c src/gscdevn.c src/gsnamecl.c]</p>
</blockquote>

<p><strong><a name="2008-04-30T013518.247997Z"></a>
2008-04-30T01:35:18.247997Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix some warnings.
</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2008-04-29T063417.581619Z"></a>
2008-04-29T06:34:17.581619Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fix for bug 689806 which was introduced when fixing bug 689803.  The current bug was related to a CIELAB image with a colorspace ICC profile (LAB to LAB).  The image data was incorrectly being normalized between 0 and 1 (float). It is now properly normalized to the range of the CIELAB ICC space.  There still exists an issue with this file as absolute colorimetry should be used.  This is the source of the current difference between AR and GS.  However, the image is no longer black now but should match the GS result prior to rev 8664.</pre>
<p>[src/lib.mak src/gxicolor.c]</p>
</blockquote>

<p><strong><a name="2008-04-29T003125.778368Z"></a>
2008-04-29T00:31:25.778368Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make pf2afm utility friendlier to Windows users: check for .pfa or .pfb
extensions case-insensitively and accept backslash as a path separator.
Bug 689804.
</pre>
<p>[lib/pf2afm.ps]</p>
</blockquote>

<p><strong><a name="2008-04-28T174826.844493Z"></a>
2008-04-28T17:48:26.844493Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Refine calculation of di member of a trap_line structure to avoid integer
overflow when the source operands are big. Bug 689448.

</pre>
<p>[src/gdevddrw.c]</p>
</blockquote>

<p><strong><a name="2008-04-28T162635.071571Z"></a>
2008-04-28T16:26:35.071571Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix a minor header dependency skew.
</pre>
<p>[src/int.mak src/gsicc.c]</p>
</blockquote>

<p><strong><a name="2008-04-28T064728.650051Z"></a>
2008-04-28T06:47:28.650051Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Undo accidental commitment of ENABLE_CUSTOM_COLOR_CALLBACK (has callback) code.</pre>
<p>[src/gsicc.c]</p>
</blockquote>

<p><strong><a name="2008-04-28T052054.026239Z"></a>
2008-04-28T05:20:54.026239Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Implement spacial handling of transfer functions during Gray to CMYK
conversion: ignore transfer functions for non-black components. Bug 688360.

DETAILS:
On this topic, section 7.3 of PRLM-3rd (page 494) says:
"Note: When the current color space is DeviceGray and the output device's
native color space is DeviceCMYK, the interpreter uses only the gray transfer 
function. ... This special case exists for compatibility with existing
applications." There is a similar comment in section 6.3 of the PDF 1.6
spec. (page 456).

</pre>
<p>[src/lib.mak src/gxcmap.c src/gxcspace.h src/gscspace.c src/gxdevcli.h]</p>
</blockquote>

<p><strong><a name="2008-04-27T152110.051210Z"></a>
2008-04-27T15:21:10.051210Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Check the error code early. Fix a SEGV in PDF file with invalid ICC profile
that was introduced by the rev. 8664.

</pre>
<p>[src/zicc.c]</p>
</blockquote>

<p><strong><a name="2008-04-26T043556.962801Z"></a>
2008-04-26T04:35:56.962801Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fix for bug#689803.  Set bounds correctly when input data is LAB and color also includes a colorspace source profile (e.g. LAB to LAB).  </pre>
<p>[src/int.mak src/gsicc.c src/zicc.c]</p>
</blockquote>

<p><strong><a name="2008-04-23T140611.166309Z"></a>
2008-04-23T14:06:11.166309Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Convert imagemask into a clipping path when painting a big pattern.

DETAILS :

Bug 689440 "PostScript file generates infinitely large temp file".

In the past we implemented a conversion of imagemask intoi a clipping path 
for a faster painting a shading color. Now we do same for big type 1 patterns.

1. Enhanced the condition in gximask.c for passing big patterns.

2. In gximask.c filter out degenerate rectangles, 
   which can't be painted with gx_device_color_fill_rectangle.

3. Set a pure black color in gsimage.c, 
   because patterns can't convert with gx_device_black.

4. In gxacpath.c added the default copy_mono method 
   to the clip list accumulator device in order to handle 
   imagemask with the pure color set by (3).

5. In gximask.c added a proper setup of device width and height
   to clip list accummulator, because gx_default_copy_mono needs them.

6. In gximask.c gx_device_retain is now called on errors.
   The old code does not call it, and we think it caused memory leaks
   in some rare cases.

This patch changes the behavior with shadings, because the old code paints
imagemask with the shading color to clip list accummulator.
The new code does with pure black, so that now the clipping is not
restricted with the shading area or the shading BBox.
But we believe that the final result should be same 
and the performance should be some faster.

Note we keep the call to gx_dc_pattern2_clip_with_bbox_simple
in gx_image_fill_masked_end rather now it is always idle.
Doing so for the case if this change will need undoing for shadings.

The new code doesn't use the writing of big patterns into clist,
which was done with recent revision 8655. 
That change appears unneccessary for this particular bug. 
However we want to keep it in HEAD branch because it may be useful 
for further impeovements when imagemask produces a too big clipping list.

This patch causes a minor raster difference with Bug688396.pdf .
Delaying it for better times.

</pre>
<p>[src/gsimage.c src/gxacpath.c src/gsptype1.h src/gximask.c]</p>
</blockquote>

<p><strong><a name="2008-04-23T003010.271302Z"></a>
2008-04-23T00:30:10.271302Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Since we always write a complete "classic" xref, the Trailer may need to be
adjusted: (1) remove keys that pertain to xref-streams and hybrid-xref PDFs;
(2) if it's a PDF stream, turn it into a PDF dict by removing keys used for
PDF streams (both standard and GS-specific), and the executable attribute.
Thanks to SaGS for the patch. Bug 688152.
</pre>
<p>[lib/pdfwrite.ps lib/pdfopt.ps]</p>
</blockquote>

<p><strong><a name="2008-04-22T171803.467843Z"></a>
2008-04-22T17:18:03.467843Z Ralph Giles</strong></p>
<blockquote>
<pre>
Set native line endings on gsnamecl. This should remedy patch-portability problems.
</pre>
<p>[src/gsnamecl.h src/gsnamecl.c]</p>
</blockquote>

<p><strong><a name="2008-04-21T145338.640663Z"></a>
2008-04-21T14:53:38.640663Z Igor Melichev</strong></p>
<blockquote>
<pre>
Enhancement (graphics) : Delay applying big patterns until page clist interpretation.

DETAILS :

This is a preparation for fixing 
the bug 689440 "PostScript file generates infinitely large temp file".

The old code decomposes the imagemask into rectangles,
each of which decomposed the pattern color into a huge list of rectangles.
See more about the old code in Comment #11 of the bug 689440.
Now we delay the decomposition until the page clist playback.

This patch reduces the clist file size for the bug 689440
from 355GB to an acceptable size of 316Mb. A further shortening
is possible as explained in (5) below. But the rasterization time is still
unacceptably long - more than 48 hours. It will be improved
in a next step with converting imagemask with pattern color
into a painting of a pattern color with a mask clip device.

1. The old functions gx_dc_pattern_write, gx_dc_pattern_read actually 
are generic functions for multiple color types,
which simply return an error. Renamed them into 
gx_dc_cannot_write, gx_dc_cannot_read.

2. Implemented new gx_dc_pattern_write, gx_dc_pattern_read for clist-based patterns.
They copy pattern clist data to/from page clist. Currently this code
doesn't try to compress the data, but probably we'll need to do that.

3. Changed a condition in gxclimag.c to pass imagemask
with a clist-based pattern color to clist writer.
Also moved some checks to provide image matrix to be computed
when the new condition is true.

4. Added more functions into gxclist.c, gxclist.h for accessing 
data of a clist-based pattern.

5. gx_dc_pattern_read now constructs pattern cache and stores the
clist-based pattern "tile" to it. The clist reader releases the cache before exiting a band.
We will need an optimization agains redundant writing of patterns into page clist.
This necessary optimization to be done in a next step.

6. Propagated error codes in gxclread.c, gdevfax.c for easier debugging.

7. Improved debug printing in gxp1fill.c to designate
recursive calls to clist interpreter when a clist-based pattern
in interpreted while a page clist playback.

8. Added new accessors into gxpcmap.c, which are needed 
to access pattern cache while a page clist interpretation.

9. Updated dependencies in makefiles. 

10. Fixed the dependenco of gxdcolor.c on gxdevcli_h, which was missed before this change.

11. Added the pattern color type into the list in gxdcolor.c,
because now we need to write it into clist. An old comment
reads that it was not included against unuseful reference to 
pattern stuff in a Postscript Language Level 1 build.
The reference now appears, and this is unfortunate.
We think that level 1 builds are not important in nowadays.
On necessity it may be improved in a separate change.

</pre>
<p>[src/gsptype1.c src/lib.mak src/gsptype2.c src/gxclist.c src/gxpcmap.c src/gsptype1.h src/gxdcolor.c src/gxclist.h src/gxpcolor.h src/gdevfax.c src/gxdcolor.h src/gxp1fill.c src/gxclrast.c src/gxclread.c src/gxclimag.c]</p>
</blockquote>

<p><strong><a name="2008-04-21T115827.801424Z"></a>
2008-04-21T11:58:27.801424Z Russell Lang</strong></p>
<blockquote>
<pre>
Change the name of a utility used to build Windows distribution so it doesn't 
get treated as a setup program by Windows Vista.
Change reference to obsolete doc/Public.htm to doc/COPYING.
Allow makefile to recognise a later patch of the Microsoft Visual Studio 2005 
make utility.
</pre>
<p>[src/winint.mak src/msvc32.mak]</p>
</blockquote>

<p><strong><a name="2008-04-20T234049.333141Z"></a>
2008-04-20T23:40:49.333141Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Ignore DSC comments in nested EPS files and data blocks. Thanks to
William Bader for the patch. Bug 689791.

RIFFERENCES:
None
</pre>
<p>[src/zdscpars.c]</p>
</blockquote>

<p><strong><a name="2008-04-20T045121.386273Z"></a>
2008-04-20T04:51:21.386273Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Skip bogus endobj operators inside the object stream.
Bug 689795, customer 870.

RIFFERENCES:
None
</pre>
<p>[lib/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2008-04-19T182631.622080Z"></a>
2008-04-19T18:26:31.622080Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix a problem when the default transfer function of the target printer
is not in global space. Seen with Konica Minolta (QMS PostScript).
Fixes 'invalidaccess' error caused by attempting to store a 'local'
currentcolortransfer into a 'global' array. NB: The 'cp2g' will then
convert the array to global which is needed to store into InitialExtGState.
</pre>
<p>[lib/opdfread.ps]</p>
</blockquote>

<p><strong><a name="2008-04-19T181834.484562Z"></a>
2008-04-19T18:18:34.484562Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add diagnostic information for start of rendering (Outputpage start) so that
parsing as well as rendering time can be observed with -Z: (gs_debug[':'])
</pre>
<p>[src/zdevice.c]</p>
</blockquote>

<p><strong><a name="2008-04-19T124815.825215Z"></a>
2008-04-19T12:48:15.825215Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix PDF transmuting utilities. Remove '#' from the list of characters that
may occur in PDF names unescaped. Bug 689770.
</pre>
<p>[lib/pdfwrite.ps]</p>
</blockquote>

<p><strong><a name="2008-04-19T044920.031557Z"></a>
2008-04-19T04:49:20.031557Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add recognition of abbreviated filter names to the PDF inflation utility.
</pre>
<p>[toolbin/pdfinflt.ps]</p>
</blockquote>

<p><strong><a name="2008-04-19T034321.791168Z"></a>
2008-04-19T03:43:21.791168Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Implement loading of OpenType CFF font as a CIDFont resource in PDF reader.
Bug 689763, customers 531, 850.

DETAILS:
PDF can use OpenType font with ordinary CFF data as a CIDFont. Such a font is
referenced by /CIDFontType2 and may have /CIDToGIDMap table. The following
changes have been done to support this usage.

- A flag that forces CIDFont generation was added to CFF font loader.
- When the flag is on, CFF font is converted to a Type 9 CIDFont.
- The FontSet resource is returned by the value from the font loader
  because it can be of either Font or CIDFont type,
- Since CIDMap has no effect on CIDFont Type 9, CIDToGIDMap is interpreted
  by PDF reader to modify GlyphDirectory to the same effect.
- Unused CIDMap is no longer generated for CIDFontType2 objects that are not
  TrueType CIDFont resources.

</pre>
<p>[lib/pdf_font.ps lib/gs_cff.ps lib/pdf_ops.ps]</p>
</blockquote>

<p><strong><a name="2008-04-17T174005.253185Z"></a>
2008-04-17T17:40:05.253185Z Ralph Giles</strong></p>
<blockquote>
<pre>
Use -O0 with the autoconf debug build instead of -O which seems to
hide some symbols.
</pre>
<p>[src/Makefile.in]</p>
</blockquote>

<p><strong><a name="2008-04-17T173157.458743Z"></a>
2008-04-17T17:31:57.458743Z Ralph Giles</strong></p>
<blockquote>
<pre>
Allow the ENABLE_CUSTOM_COLOR_CALLBACK preprocessor macro to be set
from the compiler command line.
</pre>
<p>[src/gsnamecl.h]</p>
</blockquote>

<p><strong><a name="2008-04-15T044724.255743Z"></a>
2008-04-15T04:47:24.255743Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Repair broken CFF CIDFont stream generated by "Exstream Dialogue Version
6.2.004m (DBCS)". Bug 689753, customer 353.

DETAILS:
1. The CFF stream has a single Private DICT block but refers to it twice.
New version caches the DICT block that correspond to the Private stream.

2. The operands of ROS operator are too small and correspond to some random
values from the standard string table. The patch doesn't attempt to find
the right values nut converts the fetched names to strings to avoid a
typecheck error during resource handling.

</pre>
<p>[lib/gs_cff.ps]</p>
</blockquote>

<p><strong><a name="2008-04-14T225722.422088Z"></a>
2008-04-14T22:57:22.422088Z Michael Vrhel</strong></p>
<blockquote>
<pre>
Fixed Colorspace enumeration order for debug printing.</pre>
<p>[src/gscspace.h]</p>
</blockquote>

<p><strong><a name="2008-04-10T234336.714953Z"></a>
2008-04-10T23:43:36.714953Z Ralph Giles</strong></p>
<blockquote>
<pre>
Increase the static command and path buffers in echogs to deal with
longer build paths. Bug 689788.
</pre>
<p>[src/echogs.c]</p>
</blockquote>

<p><strong><a name="2008-04-10T220820.215716Z"></a>
2008-04-10T22:08:20.215716Z Ralph Giles</strong></p>
<blockquote>
<pre>
Use the correct GEN directory references. Bug 689788.
</pre>
<p>[src/jbig2.mak src/jasper.mak]</p>
</blockquote>

<p><strong><a name="2008-04-10T073846.911876Z"></a>
2008-04-10T07:38:46.911876Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter): Improve omission of .notdef glyphs.

Details:
Bug #689757 "Extra square characters rendering PDF file".

Improvement to change 8217, makes the test for .notdef more
specific at Igor's suggestion.

Now matches exactly the string ".notdef" or strings beginning
".notdef~GS~" in order to include any .notdef modified by the
PDF interpreter when it appears multiple times in an Encoding.

</pre>
<p>[src/zchar42.c]</p>
</blockquote>

<p><strong><a name="2008-04-10T054343.466565Z"></a>
2008-04-10T05:43:43.466565Z Igor Melichev</strong></p>
<blockquote>
<pre>
Enhancement (graphics) : Generalize prototypes of color serialization methods for big color data.

DETAILS :

This is a preparation for fixing 
the bug 689440 "PostScript file generates infinitely large temp file".

The old serialization methods assume that color data can fit into a small buffer.
Now we want to drop this constraint to allow to write big patterns into clist.
See comment in code for details.

This change is algorithmically equivalent.
This patch adds a new argument to color serialization methods.
For a while the new actual parameter is always 0,
and the (untrivial) methods check for it.

</pre>
<p>[src/gsptype1.c src/gxwts.c src/gxcht.c src/gxdcolor.c src/gxdcolor.h src/gxclrast.c src/gxclpath.c src/gxht.c]</p>
</blockquote>

<p><strong><a name="2008-04-09T152845.087056Z"></a>
2008-04-09T15:28:45.087056Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter): Optionally omit rendering of /.notdef glyphs
from TrueType fonts.

Details:
Bug #689757 "Extra square characters rendering PDF file".

When rendering glyphs in a TrueType font, and the glyph is not present
in the font, GS (correctly) draws the /.notdef glyph (or glyph ID 0)
instead. Under some conditions, however, Acrobat does not do so, but
does leave a 'gap' apparently corresponding to the width of the
original glyph (if a /Widths array is present), or the width of the
/.notdef glyph.

Exactly what causes Acrobat to do this is unclear. In the thread for
bug 687929 it was suggested that Acrobat was substituting a standard
font with a /.notdef defined as an empty glyph. However changing the
font name had no effect.

Using a pdfwrite-produced PDF file, if I remove the symbolic flag
from the font, and any direct reference to /.notdef in the Encoding
/Differences array, then Acrobat does not display the /.notdef 
glyph. However, starting with a Distiller-produced PDF file, and
either altering the font to symbolic, or adding a direct /.notdef
to the Encoding, or both, makes no difference, Acrobat still does
not render the /.notdef glyph.

The behaviour of Acrobat is probably technically incorrect, but
we need to attempt to render files similarly, if at all possible.
However, since the appearance of a /.notdef is usually indicative
of an error, this has been made optional.

We can't substitute a space glyph for the /.notdef as has been
suggested, because we can't guarantee the existence of a space glyph
(eg Arabic, which has no space) and can't guarantee that the space
makes no marks even if present.

However, we still want to apply the Width of the glyph, so that
spacing works out correctly, if we simply skip the /.notdef glyph
then words may collide, as in the case of the file for this bug.
This means we must run the glyph through the text routines, as the
width is applied there.

A new user parameter '/RenderTTNotdef' controls whether glyphs
named /.notdef in a TrueType font should be rendered or not. This
is also controlled by a systemdict parameter /RENDERTTNOTDEF. The
PDF interpreter will set the user parameter to the same value as
the systemdict parameter, allowing this to be controlled from the
GS command line.

The user parameter defaults to 'true' which renders TrueType /.notdef
glyphs (so that these are properly rendered in PostScript), the 
RENDERTTNOTDEF systemdict parameter defaults to 'false', which is
used by the PDF interpreter to set the user parameter, and therefore
disables rendering of TT /.notdef glyphs in PDF files.

</pre>
<p>[lib/pdf_main.ps src/icontext.c src/zchar42.c doc/Use.htm src/icstate.h src/zusparam.c lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2008-04-09T061650.593621Z"></a>
2008-04-09T06:16:50.593621Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Avoid a spurious warning "CS/cs (setcolorspace) operand not a name".
Acept array values for /CS attribute. Bug 689738.

</pre>
<p>[lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2008-04-08T215508.170308Z"></a>
2008-04-08T21:55:08.170308Z Ralph Giles</strong></p>
<blockquote>
<pre>
We no longer have any outstanding port requests. Bug 689745.
</pre>
<p>[doc/Projects.htm]</p>
</blockquote>

<p><strong><a name="2008-04-06T214234.379385Z"></a>
2008-04-06T21:42:34.379385Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use operator .execn to keep the operand stack size and .pdfcount value
consistent during /BuildChar execution. Operator scn depends on the correct
value of .pdfcount. Bug 688796.

</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2008-04-06T075333.800999Z"></a>
2008-04-06T07:53:33.800999Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix PDF empty stack count (pdfemptycount) in the tiling pattern. Operator
scn depends on the correct value of pdfemptycount. This bug was introduced
in the rev. 8308. Bug 689776.

</pre>
<p>[lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2008-04-04T113017.034942Z"></a>
2008-04-04T11:30:17.034942Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Added the new files of OpenPrinting Vector 1.0.
</pre>
<p>[contrib/opvp/opvp_0_2_0.h contrib/opvp/opvp.h]</p>
</blockquote>

<p><strong><a name="2008-04-04T112822.909246Z"></a>
2008-04-04T11:28:22.909246Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Updated the OpenPrinting Vector driver interface ("opvp", "oprp") to version 1.0.
</pre>
<p>[contrib/opvp/opvp_media.def contrib/opvp/opvp_common.h contrib/opvp/gdevopvp.c]</p>
</blockquote>

<p><strong><a name="2008-04-04T085357.893326Z"></a>
2008-04-04T08:53:57.893326Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Incorrect cmap aubtables written for 'non-symbolic' TrueType
 fonts, when PDF/A output is enabled.

Details:
Bug #689754 "Substituting .notdef for "german umlauts" when generating PDFA".

Normally when writing TrueType fonts GS emits 'symbolic' TrueType fonts, and
correctly outputs both a 1,0 and 3,0 cmap subtable (with appropriate character
offsets, see section 5.5.5 of recent PDF specs).

However, when PDF/A output is enabled, and the TT font to be output only
contains glyphs from the Adobe Latin set, and these are ordered in
accordance with that set, then we emit a 'non-symbolic' TT font. (For PDF/A
we do not emit 'symbolic' fonts, if the font is not 'non-symbolic' then we
write a CIDFont instead.)

However, when writing the non-symbolic font, we continued to write the same
cmap subtables. Acrobat does not use the 3,0 subtable with non-symbolic fonts,
and falls back to the Mac Roman (1,0) subtable instead. For many glyphs this
works correctly, but if the font is WinAnsi compliant, and the glyph is one
of those for which the character position differs between Mac and Windows,
then the glyph cannot be found by Acrobat.

By writing a 3,1 (Windows Unicode) cmap subtable we can ensure this does not
happen, as Acrobat will use this in preference to the 1,0 subtable.

(gdevpsf.h) Add a new TrueType writing control flag WRITE_TRUETYPE_UNICODE_CMAP
 This is used to control whether we write a 3,0 or 3,1 cmap subtable.

(gdevpdtb.c) When setting options for TrueType font writing, if we are
 writing PDF/A, then set the new flag so we get a 3,1 Unicode subtable.

(gdevpsft.c) Create new boilerplate for a type 6 Mac Roman subtable,
 followed by a type 4 Windows Unicode subtable. Create a new routine
 'write_unicode_cmap_6' which uses the new boilerplate to write this
 kind of subtable. In write_cmap, check if we have been asked to write a
 Unicode cmap subtable, and use the new routine if so. Do not bias the
 character codes if writing a Unicode table.

</pre>
<p>[src/gdevpdtb.c src/gdevpsft.c src/gdevpsf.h]</p>
</blockquote>

<p><strong><a name="2008-04-04T083933.625568Z"></a>
2008-04-04T08:39:33.625568Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): code tidy up.

Details:
Bug #689712 "macro expanded unnecessarily and undocumented .h file".

No functional changes, merely code reordering and tidying up.

(encs2c.ps) Modified to write the current license boilerplate and a
 small additional comment referring developers to this file should they
 wish to modify the generated files. Modify the output to gdevpdtv.c
 to #include gdevpdtv.h.

(gscedata.h)
(gscedata.c)
(gdevpdtv.c)
(gdevpdtv.h) Update with output from modified encs2c.ps

(gdevpdtf.h) Remove the 'gs_private_st_basic..' macro, thus preventing
  its unnecessary expansion and inclusion in several .c files.

(gdevpdtb.c) Move the macro 'gs_private_st_basic(st_pdf_base_font...'
  into this module, where it is actually used.

</pre>
<p>[toolbin/encs2c.ps src/gdevpdtb.c src/gscedata.h src/gdevpdtv.c src/gdevpdtf.h src/gdevpdtv.h src/gscedata.c]</p>
</blockquote>

<p><strong><a name="2008-04-04T010217.399302Z"></a>
2008-04-04T01:02:17.399302Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add the rinkj driver to the default autoconf build under "ETS" devices.

It's not intended for production use, but this will help prevent
bit rot. Related to bug 689780.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2008-04-04T010216.708266Z"></a>
2008-04-04T01:02:16.708266Z Ralph Giles</strong></p>
<blockquote>
<pre>
Minimal changes to gdevrinkj.c so that it compiles. As far as I can tell,
the version in source control has never worked.
</pre>
<p>[src/gdevrinkj.c]</p>
</blockquote>

<p><strong><a name="2008-04-04T010216.013247Z"></a>
2008-04-04T01:02:16.013247Z Ralph Giles</strong></p>
<blockquote>
<pre>
Include stdlib.h for malloc and free in the rinkj device. Bug 689780.
</pre>
<p>[src/rinkj/rinkj-byte-stream.c]</p>
</blockquote>

<p><strong><a name="2008-04-01T002817.665464Z"></a>
2008-04-01T00:28:17.665464Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix incorrect scanline length calculation in 1 bit/component images on pswrite
and epswrite devices. The bug was introduced in rev. 8233.
Bug 689771, customer 73.

</pre>
<p>[src/gdevps.c]</p>
</blockquote>

<p><strong><a name="2008-03-31T235328.505732Z"></a>
2008-03-31T23:53:28.505732Z Ralph Giles</strong></p>
<blockquote>
<pre>
Don't override the memory pointer set by the client when initializing 
the luratech jpx decoder.
</pre>
<p>[src/sjpx_luratech.c]</p>
</blockquote>

<p><strong><a name="2008-03-31T230841.231868Z"></a>
2008-03-31T23:08:41.231868Z Ralph Giles</strong></p>
<blockquote>
<pre>
Do not invoke the s_jpxd_template set_defaults method if it is null.
Fixes bug 689743, whose attachment segfaults with the luratech decoder
for which this method is not implemented.
</pre>
<p>[src/zfjpx.c]</p>
</blockquote>

<p><strong><a name="2008-03-31T230055.454967Z"></a>
2008-03-31T23:00:55.454967Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Stroke width was wrong for short segments.

DETAILS :

Bug 689742 "Nearly missing dotted lines with anisotropic resolution".

Rather the bug title mentions anisotropic rendering, 
the problem appears with isotropic one as well.
The bottom of the problem is that the function width_is_thin
used the dash longitude to know its direction,
which gives an incorrect (zero) result 
for vertical segments of zero length.

That method became obsolete since revision 7706,
which intorduced the precise dash direction is a special data field.
Using it now for the right computation of the width.

</pre>
<p>[src/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2008-03-28T163025.778081Z"></a>
2008-03-28T16:30:25.778081Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : rectfill applied a wrong path adjustment.

DETAILS :

Bug 689361 "Text has white stripes and missing parts at 100 dpi".

Ghostsctript applies path adjustment as an implementation of
"any part of pixel inside" filling rule. 
However it was wrong for rectfill :
the lower adjustment was too wide, causing extra pixels to paint
when the lower coordinate of the rectangle falls to pixel center.
Besides that, the X adjustment was applied to Y axis.

</pre>
<p>[src/gsdps1.c]</p>
</blockquote>

<p><strong><a name="2008-03-28T063649.751300Z"></a>
2008-03-28T06:36:49.751300Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Improve detection of transparency usage. Search for transparency featires in
the resource chain of annotattion appearance streams.
Bug 689764, customer 531.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2008-03-27T083758.577822Z"></a>
2008-03-27T08:37:58.577822Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): endstream/endobj not always emitted PDF/A compliant.

Details:
Bug #689755 "Keywords endstream and endobj not always preceded by EOL when generating".

The PDF/A specification mandates that the endstream and endobj operators
are always preceded by an EOL character (in the spec, EOL = carriage return,
linefeed, or carriage return/linefeed pair). 

(gdevpdfb.c)
(gdevpdfu.c)
(gdevpdti.c) Ensure all endstream operators are preceded by a '\n' if we
 are producing PDF/A.
(gdevpdfo.c) Add '\n' to the end of array and dictionary objects in
 cos_array_write and cos_dict_write, if we are producing PDF/A. This
 ensures that endobj is always preceded by a EOL as other object types
 already conform.

</pre>
<p>[src/gdevpdfo.c src/gdevpdfb.c src/gdevpdfu.c src/gdevpdti.c]</p>
</blockquote>

<p><strong><a name="2008-03-26T140202.746186Z"></a>
2008-03-26T14:02:02.746186Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (vector device): Operation order could result in failure to
apply clipping.

Details:
Bug #689469 "Incorrect clipping operation in vector output".

From the patch supplied by Osamu Mihara. In gdev_vector_stroke_path and
gdev_vector_fill_path, clipping was performed after a number of other
operations. If these failed, the clipping was not applied, apparently
causing problems for some devices (eg OpenPrinting Vector Printer).

(gdevvec.c) Execute the clip operation before other operations to ensure
 that the clip is applied, even if the later operations fail.

</pre>
<p>[src/gdevvec.c]</p>
</blockquote>

<p><strong><a name="2008-03-25T052624.097873Z"></a>
2008-03-25T05:26:24.097873Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
PDF font descriptor may be shared between CID and simple fonts. We cache the
font object in the font descriptor dictionary. To prevent collision, use
different keys to store font and CIDFont objects. Improve the fix for the
bug 689301.

</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2008-03-24T200207.895385Z"></a>
2008-03-24T20:02:07.895385Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist writer) : Smaller tiles for strip_copy_rop (continued).

DETAILS :

The old code sometimes tried to write a degenerate rectangles to clist.
It happened since revision 8581 due to inaccurate coding.
Should fix ghostpcl regression happened on March 23, 2008 . 

</pre>
<p>[src/gxclimag.c src/gxclrect.c]</p>
</blockquote>

<p><strong><a name="2008-03-24T041747.859439Z"></a>
2008-03-24T04:17:47.859439Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Equivalent transformation of the PDF font handler to improve readability
in preparation for the PDF font overhaul.

</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2008-03-23T075043.652322Z"></a>
2008-03-23T07:50:43.652322Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (vector device): %pipe% IO device being opened as seekable (continued).

DETAILS :

Revision 8602 caused an MSVC warning, which is now fixed.

</pre>
<p>[src/gdevvec.c]</p>
</blockquote>

<p><strong><a name="2008-03-22T215500.988313Z"></a>
2008-03-22T21:55:00.988313Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist writer) : Smaller tiles for strip_copy_rop.

DETAILS :

Bug 689588 "Unexpected InternalOverflow in ReadImage".

When strip_copy_rop recieves a big tile, it is being subdivided into line tiles
to fit into the clist buffer. However the line tile can be too big as well.
The new code narrows the line tile with the size of the rectangle to be painted.
For details see comments added into gxclrect.c .

Minor change (gdevddrw.c, gdevmr8n.c) Added visual trace commands for easier debugging.

</pre>
<p>[src/lib.mak src/gdevddrw.c src/gdevmr8n.c src/gxclrect.c]</p>
</blockquote>

<p><strong><a name="2008-03-21T050753.304009Z"></a>
2008-03-21T05:07:53.304009Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (Windows application) : Provide a better visual trace support interface for use with other interpreters.

DETAILS :

This minor change doesn't change any behavior.

</pre>
<p>[src/dwtrace.h src/dwtrace.c]</p>
</blockquote>

<p><strong><a name="2008-03-20T102017.499008Z"></a>
2008-03-20T10:20:17.499008Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): pdfwrite embedded TrueType/Type 42 fonts which
specifically forbid embedding.

Details:
Bug #689693 "GS embeds licensed fonts when generating PDF".

For Type 42 fonts, in order to prevent embedding fonts with license
restrictions we need to retrieve and honour the /FSType key if present
in the FontInfo dictionary of the font.

We also need to check the embedding status of TrueType fonts read from disk
in a similar fashion to Type 42 fonts downloaded in the course of the job.

Finally, when writing a TrueType font to a PDF file, we need to preserve any
existing embedding rights by setting fstype appropriately in the OS/2 table.
It is possible to permit font embedding even when the embedding rights
are non zero and we should preserve these.

(gxfont.h) Add a new parameter, EmbeddingRights, and a new flag
	     FONT_INFO_EMBEDDING_RIGHTS, to the gs_font_info structure.

(zfont.c) In zfont_info, if we request the EmbeddingRights, and the font has
          a FontInfo dictionary, retrieve the FSType if present.

(gdevdtf.c) When determining whether a font may be embedded, retrieve the
          font info, check the 'members' structure member after retrieving font info
          to see if the EmbeddingRights member has been updated. Assume embedding
          allowed if the member has not been updated.

(gxfont42.h) Add a new member os2_offset to the gs_type42_data structure, to allow
           us to read from the OS/2 table later.

(gstype42.c) In gs_type42_font_init, when reading the TrueType Table directory, store
           the offset to the OS/2 table.

           In gs_truetype_font_info, if the caller has requested the embedding rights
           and they haven't already been retrieved from an FSType entry in the
           FontInfo dictionary, get the OS/2 table and pull the fstype value from there.

(gdevpsft.c) When writing a TrueType font, and we don't have an OS/2 table to
             copy (appears to always be the case), check to see if we have any
             embedding rights information in the original font, and preserve it if so
             by setting the fstype entry in the OS/2 table.

</pre>
<p>[src/gxfont42.h src/zfont.c src/gdevpdtt.c src/gstype42.c src/gdevpsft.c src/gdevpdtf.c src/gxfont.h]</p>
</blockquote>

<p><strong><a name="2008-03-19T100921.671968Z"></a>
2008-03-19T10:09:21.671968Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (vector device): %pipe% IO device being opened as seekable.

Details:
Bug #689428 "‘gs -sOutputFile=%pipe%cat’ doesn't work".

Based on the patch supplied by Dan Villiom Podlaski Christiansen. 

(gsdevice.c) in gx_device_open_output_file, if the parsed out iodevice
 is '%pipe%', then open the output 'file' non-seekable.

(gdevvec.c) Not strictly related, but gdev_vector_open_file_options could
 use 'fclose' on a stream opened with gx_device_open_output_file. Altered
 to use gx_device_close_output_file instead.

</pre>
<p>[src/gdevvec.c src/gsdevice.c]</p>
</blockquote>

<p><strong><a name="2008-03-16T222513.694561Z"></a>
2008-03-16T22:25:13.694561Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Handle TT fonts that have short post table with less than 256 glyphs.
Pad the generated Encoding vector with /.notdef glyphs.
Bug 689515, customer 700.

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2008-03-15T235948.788786Z"></a>
2008-03-15T23:59:48.788786Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Work around a bug in the PS interpeter by not using nulldevice in the PDF
interpreter where it isn't really needed. Bug 689751.

DETAILS:
PS interpreter seems to fall into an infinite loop running charpath when
the font is composite and the curent device is nulldevice.

</pre>
<p>[lib/pdf_ops.ps]</p>
</blockquote>

<p><strong><a name="2008-03-14T054011.023910Z"></a>
2008-03-14T05:40:11.023910Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Fixed duplexing for ljet3d and ljet4d devices; thanks to karsten@sengebusch.de for the changes.

Fixes bug 687531.

No regressions expected, since neither device is tested by the regression suite.

</pre>
<p>[src/gdevdjet.c src/gdevdljm.c]</p>
</blockquote>

<p><strong><a name="2008-03-13T071846.618081Z"></a>
2008-03-13T07:18:46.618081Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : A bug in the pattern color serialization.

DETAILS :

Patch from Alex mentioned in the bug 689731 and unrelated to that bug.

</pre>
<p>[src/gsptype1.c]</p>
</blockquote>

<p><strong><a name="2008-03-12T223203.336468Z"></a>
2008-03-12T22:32:03.336468Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Optimize filling a path with a shading color (continuewd 3).

DETAILS :

Bug 689748 "gs segfaults".

An unitialized variable since rev 8510.
We had no test files for that branch, now got one.

</pre>
<p>[src/gxfill.c]</p>
</blockquote>

<p><strong><a name="2008-03-11T183233.104151Z"></a>
2008-03-11T18:32:33.104151Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix MSVC makefile for the 'Big console mode EXE' case when COMPILE_INITS=1. Also
minor cleanup to gs.mak 'clean' target and redundant dependency in ugcclib.mak.
MSVC build problem noted by customer #531.
</pre>
<p>[src/ugcclib.mak src/gs.mak src/msvc32.mak]</p>
</blockquote>

<p><strong><a name="2008-03-10T021838.654568Z"></a>
2008-03-10T02:18:38.654568Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
When the font has no /FontBBox but provides character width through /Metrics
dictionary, use them instead of the calculated width. The old code did so only
when both the width and side bearings were defined. Bug 689740, customer 353.

</pre>
<p>[src/zchar1.c]</p>
</blockquote>

<p><strong><a name="2008-03-09T133451.534239Z"></a>
2008-03-09T13:34:51.534239Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (transparency) : Transparency compositor device recreation was incorrect.

DETAILS :

This problem was apparently detected when working on another problem.
The pdf14_recreate_clist_device code was wrong.
Regularly we never call that function, because
PDF interpreter creates the transparency compositor device once per page.
Nevertheless we store the right code since it is debugged.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2008-03-07T133935.783627Z"></a>
2008-03-07T13:39:35.783627Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (bbox device) : box_fill_path needs as path for shfill.

DETAILS :

Since revision 8017 the function gs_shfill includes a branch for 
a faster handling of the Postscript operator shfill,
which does not provide a path to fill. It uses the clipping path instead.
The bbox device appears to be incompatible with that optimization.
This patch adds a special branch to bbox device to handle a shading fill
with no path.

Please note that since revision 8017 the call 
dev_proc(dev, pattern_manage)(dev, gs_no_id, NULL, pattern_manage__shfill_doesnt_need_path) 
must return a proper information about the device's fill_path method. 
In most case it is doe with the default implementation gx_default_pattern_manage, 
but the bbox device ises gx_forward_pattern_manage instead, 
which appears wrong for bbox_fill_path. We decided to add an optomized branch 
rather than apply the slow general method.

</pre>
<p>[src/gdevbbox.c]</p>
</blockquote>

<p><strong><a name="2008-03-07T094238.021120Z"></a>
2008-03-07T09:42:38.021120Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a default return value. Follow on to Bug 689569.

Also rename a variable to match the jbig2dec version of the same call.
</pre>
<p>[src/sjbig2_luratech.c]</p>
</blockquote>

<p><strong><a name="2008-03-05T233550.165171Z"></a>
2008-03-05T23:35:50.165171Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist) : Some transparency compositor commands don't need CTM.

DETAILS :

The old code writes CTM with each transparency compositor command.
Actually it is only needed with begin_transparency_grup and 
begin_transparency_mask. So we can skip CTM with
when writing other commands to shorten the clist file.

Note clist reader now sets zero CTM when reading transparency
compositor command with no CTM. We believe it is useful because
subsequent graphics objects need to restore CTM of a containing group.

See also comments added in code.

</pre>
<p>[src/gdevdbit.c src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2008-03-04T205648.308882Z"></a>
2008-03-04T20:56:48.308882Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist) : Crop transparency commands while clist writing, step 4.

DETAILS :

This provides a right group bounding box for transparency masks.
Instead that the old code used the container's group bbox,
which may be much bigger causing a performance leak.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2008-03-03T201606.744980Z"></a>
2008-03-03T20:16:06.744980Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (images) : Revert an unintentional change to siscale.c .

DETAILS :

When doing the revisoon 8530, a macro was expanded in siscale.c 
for a debug purpose. This change was committed by error,
reverting it now.

</pre>
<p>[src/siscale.c]</p>
</blockquote>

<p><strong><a name="2008-03-03T160112.306842Z"></a>
2008-03-03T16:01:12.306842Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist) : Crop transparencsy commands while clist writing, step 3.

DETAILS :

This really crops transparency compositor commands with bands 
that are covered by the transparency bbox.

Actually the statement above has one exception. When a transparency bbox
covers more that 2/3 of all bands, we still write the commands to 
the "all bands" list for a shorter clist file. We noticed that 
the clist playback time strongly depends on the file size.

1. The new method gs_composite_type_procs_t::get_cropping
replies what bands are covered by the compositor. 
When it gives a non-trivial result, clist_create_compositor
writes the compositor command to those bands,
which are covered with the cropping (Exception :
if too many bands are covered, it writes the command to
the "for all bands" list).

2. Since some bands skip some compositor commands,
while clist reading the association of masks to groups 
becomes more complex. Before this patch each group
was associates with the mask, which was created immediately
before it at same transparency stack level. 
After this patch some groups may be skipped, so that
clist reader may recieve extra masks, because masks are
still use the container's group bbox. For skipping such extra masks
we provide a numeric identifier of a mask, which is named mask_id.
Here is how it works :

2.1. All masks recieve serial numbers (mask_id) while clist writing.
2.2. Each mask command is written with its mask_id.
2.3. Each group command is writen with mask_id, 
     which belongs to the mask that is assocuated with the group.
2.4. While clist playback pdf14_pop_transparency_group checks whether
     the mask amd the group have same mask_id. If not, the mask is extra
     and it must be droped.
2.5. Note the old assiciation logic is still working,
     and it may skip some masks as well.
2.6. If the rasterization happens with no clist, mask_id is always zero.
     In this case the old logics is only working.
     Maybe we'll provide non-zero values someday.
2.7. See comments in code for more details.

3. The method gs_composite_type_procs_t::clist_compositor_write_update
is now some generalized. Before this patch it only updates the clist writer state
with the compositor features. With this patch it also adds 
some information from the clist writer state to the compositor parameters.
Particularly it provides mask_id to the compositor command.
Thus now it updates *both* clist writer and the compositor parameters
to comply each another. For a while, in order to simplify the patch,
the compositor argument is still 'const'. Will need to fix someday.

4. Now we need to save mask_id in a stack that reflects the
transparency nesting. The cropping stack, which was introduced
in the last patch, now works for that. To provide that
we add mask_id to clist_writer_cropping_buffer_s,
and use clist_writer_push_no_cropping to save amsk_id
over inner groups. 

5. state_update(ctm) in c_pdf14trans_clist_write_update is replaced
with code, which updates CTM from the transparency compositor command.
The old code is not fully correct, because it takes CTM from the imager state,
rather we havn't got prcatical cases when it gives a wrong result.

6. drop_compositor_queue now calls adjust_ctm for compositors being dropped.
The old code is incorrect because it can miss a CTM update when 
a compositor sets some CTM and later a non-compositor object
sets same CTM. In this case the clist writer skips the second CTM on writing,
and skipping the first in the clist reader will miss the CTM completely.
We haven't got practical cases for that.

7. Improved some debug printing.

</pre>
<p>[src/gxclist.c src/gdevdflt.c src/gdevp14.h src/gstrans.c src/gsalphac.c src/gxclist.h src/gxcomp.h src/gsovrc.c src/gstparam.h src/gstrans.h src/gxclrast.c src/gdevp14.c src/gxclpath.c src/gxclimag.c]</p>
</blockquote>

<p><strong><a name="2008-03-03T115742.307384Z"></a>
2008-03-03T11:57:42.307384Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist) : Crop transparencsy commands while clist writing, step 2.

DETAILS :

This is a preparation to the next step.

The patch introduces a transparency stack for clist writer,
which saves cropping when entering a transparency group,
and restores when exiting it. The cropping is being narrowed
with transparency group's bounding box.

</pre>
<p>[src/gxclist.c src/gxcldev.h src/gxclist.h src/gdevp14.c src/gxclpath.c]</p>
</blockquote>

<p><strong><a name="2008-03-03T114233.253339Z"></a>
2008-03-03T11:42:33.253339Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist) : Crop transparencsy commands while clist writing, step 1b.

DETAILS :

Removing non-ascii chars that was not detected by MSVC.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2008-03-03T101301.196997Z"></a>
2008-03-03T10:13:01.196997Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist) : Crop transparencsy commands while clist writing, step 1a.

DETAILS :

The last commitment is incomplete, now fixing.

</pre>
<p>[src/gxclist.h]</p>
</blockquote>

<p><strong><a name="2008-03-03T101127.428498Z"></a>
2008-03-03T10:11:27.428498Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist) : Crop transparencsy commands while clist writing, step 1.

DETAILS :

This is a preparation to the next step.
In general, the behavior doesn't change, 
but implementation details differ.

The old code maitains a flag cropping_by_y in the clist writer,
which triggers a cropping of objects by the Y axis.
The old code isn't perfect, because 
it first crops by [cdev-&gt;cropping_min, cdev-&gt;cropping_max],
and then by [0, cdev-&gt;height].

In the new code we unite both croppings into a single one.
For doing that we remove the flag, and provide 
the right interval [cdev-&gt;cropping_min, cdev-&gt;cropping_max]
in any case. Initially it is [0, cdev-&gt;height},
and it is narrowed when a shading bbox is set.
To restore the initial cropping after the shading
is complete, we maintain 2 new fields 
save_croping_min and save_cropping_max.

So now the cropping mechanizm does not depend
on shading, and clients may set a croping when they need. 
We'll use this feature in the next patch.

</pre>
<p>[src/gxclist.c src/gdevp14.c src/gxclpath.c src/gxclimag.c src/gxclrect.c]</p>
</blockquote>

<p><strong><a name="2008-03-03T040351.374416Z"></a>
2008-03-03T04:03:51.374416Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>

Fix for compression always falling back to no compression in
pclxl_write_image_data(), bug 689732.

Details:

After much tracing of srle.c and gdevpx.c I believe this bug is in
the portion of s_RLE_process() that looks ahead in order to be able
to optimally compress the data.  Rather than attempting to modify the
function and probably breaking something else I'm taking the 99% solution
and just calling s_RLE_process with last set to true instead of false.
This disables the look ahead feature, presumably making the compression
very slightly suboptimal but at least now it works.

This change results in pxl files that are significantly smaller than
before (i.e. the test file associated with bug 689595 is reduced in size
from 1.1 megs to 387k).

</pre>
<p>[src/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2008-03-03T025705.472235Z"></a>
2008-03-03T02:57:05.472235Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix properties
</pre>
<p>[src/psromfs.mak src/gsromfs0.c]</p>
</blockquote>

<p><strong><a name="2008-03-03T011709.063617Z"></a>
2008-03-03T01:17:09.063617Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Fall back to using gx_default_copy_mono() in pclxl_copy_mono() if data_x!=0.

Details:

Fixes bug 688992.  Will increase the size of the generated PXL file in some cases; a better solution would be to modify the pclxl_write_image_data()function to handle data_x!=0.

Expected regressions:

None, pxlmono isn't covered in the regression suite.
</pre>
<p>[src/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2008-03-01T101820.389016Z"></a>
2008-03-01T10:18:20.389016Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): problems with type 3 fonts executing 'show'.

Details:
Bug #689685 "OpenType font incorrectly converted to PDF".

The File is from Quark XPress and contains a type 3 font which
executes a 'show' and a 'charpath stroke' with a glyph from a type
1 font. Further, it executes a 'charpath' on this type 3 glyph.

Pdfwrite was unaware, when processing the 'show' that this was
inside a charpath operation, and emitted the shown glyph.

Modified pdfwrtite to be aware that a charpath is in operation, and
to have the graphics library handle any show operations.

(gdevpdfx.h) Add a new flag 'type3charpath' to the gx_device_pdf
  structure.

(gdevpdfb.h) Add an initialiser for the type3charpath flag (also for
  the last_charpath_op which was missed in that change)

(gdevpdtt.c) In gdev_pdf_text_begin, if type3charpath is true, go
straight to the default text processing. Otherwise, check to see
if this is a type 3 font, and the operation is 'charpath'. If so
then create a pdfwrite text enumerator to process the text.

In pdf_text_process, if we have a type 3 font, the operation is charpath
and type3charpath is false, set it to true and go straight to the 
default text handler. When the enumerator is completed, if type3charpath
is true, set it to false.

In pdf_text_process, while handling text, do not start accumulating a
charparoc if type3charpath is set.

Finally, in pdf_text_set_cache, if type3charpath is set, simply execute
the standard cache routine.

</pre>
<p>[src/gdevpdfx.h src/gdevpdtt.c src/gdevpdfb.h src/gdevpdti.c]</p>
</blockquote>

<p><strong><a name="2008-03-01T101502.847745Z"></a>
2008-03-01T10:15:02.847745Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): problems with type 3 fonts executing 'show'.

Details:
Bug #689687 "Regression: pdfwrite DEVICE produces bad text".

The File is from Quark XPress and contains a type 3 font which
executes a 'show' and a 'charpath stroke' with a glyph from a type
1 font.

The code for revision 8265 converts these into a '2 Tr' in the
PDF file. However, I missed the case of this occuring inside a font,
resulting in much too large a strokewidth being set. This code takes
account of the font matrix.

NB there is still a potential problem. There is no way currently to tell
the difference between a charproc which explicitly sets a stroke width
and one which inherits it from the prevailing graphics state. Currently
we will write a font which always emits the stroke width at the time
the font was first used. There is no simple way to address this, we
could set the stroke width to an invalid value during the course of a type
3 glyph, and check it before emitting the stroke, but this is dangerous.

However, this seems unlikely to be a real problem in practice, since altering
the stroke width outside the font might result in unpredictable widths
dependent on the point size. I have chosen not to open a bug for the
possible condition at this time.

(gdevpdfd.c) gdev_pdf_stroke_path, if we are converting to a PDF text
rendering mode, and are inside a type 3 font glyph description, take the
font matrix into account when calculating the strokewidth.

</pre>
<p>[src/gdevpdfd.c]</p>
</blockquote>

<p><strong><a name="2008-03-01T014204.749356Z"></a>
2008-03-01T01:42:04.749356Z Ralph Giles</strong></p>
<blockquote>
<pre>
Bump the revision after the 8.62 release.
</pre>
<p>[doc/News.htm lib/gs_init.ps src/gscdef.c src/version.mak]</p>
</blockquote>


<h2><a name="Version8.62"></a>Version 8.62 (2008-02-29)</h2>

<p>
This version is the next in our line of scheduled semi-annual releases.
<p>
There were approximately 55 bugs fixed since version 8.61. Some fixes
and improvements of note were:
<p>
COMPILE_INITS=1 was broken in 8.61 and now works as expected.
<p>
Fonts are now distributed in the Resource/Font directory and will be
included in the executable if COMPILE_INITS=1
<p>
The tiffsep device was fixed for using more than 8 colorants.
<p>
Shadings, overprinting and transparency were optimized and are substantially
faster than in 8.61, particularly for large format or high resolution
rendering when using the 'clist' banding mode.
<p>
Changes were made to prevent near unbounded growth in memory usage and
corresponding performance problems on a few test cases.
<p>
The 'pdfwrite' device was improved to fix some compatibility issues with
PDF/A and to improve some font embedding and other issues.
<p>
The 'ht_ccsto.ps' Stochastic Threshold array was completely changed to
be more useful. The values in the threshold array were inverted, so
the number of 'light' colors was limited and using it generally caused
prints that were too dark.
<p>
The 'runpdfbegin', 'dopdfpages' and 'runpdfend' PostScript pseudo-operators
that were inadvertently removed in 8.61 were restored. This also restored
the functionality of toolbin/pdf_info.ps to display PDF creator stats,
fonts used and page sizes.
<p>
The halftone tile cache sizes and cache effectiveness were improved to
help the performance when tiling with large cells or threshold arrays.
<p> The following <a href="http://bugs.ghostscript.com/">bugs</a> were
open at the time of release: <blockquote>
465936, 578865, 626295, 686747, 686853, 687011, 687146, 687257, 687271,
687280, 687295, 687327, 687514, 687520, 687531, 687608, 687650, 687674,
687677, 687695, 687697, 687702, 687721, 687728, 687729, 687796, 687805,
687814, 687850, 687903, 687904, 687957, 687974, 688007, 688022, 688026,
688032, 688036, 688042, 688058, 688061, 688064, 688066, 688075, 688081,
688095, 688129, 688130, 688151, 688152, 688159, 688166, 688184, 688187,
688207, 688215, 688227, 688239, 688269, 688280, 688288, 688317, 688318,
688320, 688333, 688342, 688358, 688359, 688360, 688361, 688363, 688372,
688378, 688386, 688387, 688389, 688395, 688413, 688427, 688428, 688436,
688437, 688440, 688446, 688475, 688483, 688500, 688515, 688517, 688528,
688533, 688539, 688540, 688542, 688543, 688557, 688580, 688581, 688588,
688601, 688604, 688605, 688610, 688615, 688616, 688619, 688627, 688636,
688638, 688646, 688651, 688653, 688655, 688673, 688674, 688696, 688699,
688709, 688710, 688714, 688717, 688728, 688736, 688739, 688757, 688770,
688774, 688778, 688796, 688797, 688807, 688811, 688813, 688815, 688829,
688843, 688846, 688876, 688908, 688918, 688919, 688926, 688928, 688933,
688942, 688943, 688952, 688958, 688969, 688976, 688986, 688990, 688992,
688999, 689003, 689011, 689013, 689014, 689022, 689025, 689028, 689031,
689040, 689044, 689046, 689048, 689057, 689058, 689080, 689081, 689090,
689093, 689094, 689098, 689111, 689116, 689128, 689129, 689130, 689133,
689136, 689137, 689138, 689145, 689146, 689148, 689150, 689153, 689154,
689159, 689161, 689164, 689172, 689174, 689181, 689184, 689195, 689198,
689206, 689209, 689210, 689222, 689224, 689230, 689236, 689246, 689247,
689248, 689252, 689253, 689264, 689279, 689280, 689281, 689283, 689289,
689290, 689291, 689304, 689305, 689308, 689313, 689331, 689335, 689340,
689341, 689343, 689358, 689361, 689363, 689364, 689367, 689370, 689373,
689376, 689378, 689396, 689402, 689412, 689418, 689419, 689422, 689428,
689431, 689438, 689439, 689440, 689444, 689445, 689448, 689450, 689451,
689456, 689460, 689462, 689463, 689469, 689471, 689476, 689484, 689487,
689488, 689489, 689490, 689498, 689499, 689500, 689502, 689507, 689509,
689510, 689512, 689514, 689515, 689516, 689518, 689521, 689522, 689532,
689534, 689535, 689538, 689542, 689543, 689546, 689547, 689549, 689552,
689554, 689557, 689559, 689560, 689561, 689563, 689566, 689567, 689573,
689574, 689579, 689581, 689583, 689585, 689588, 689591, 689592, 689595,
689598, 689601, 689606, 689607, 689609, 689610, 689618, 689621, 689623,
689627, 689628, 689632, 689636, 689637, 689641, 689649, 689652, 689653,
689654, 689657, 689658, 689659, 689663, 689666, 689668, 689669, 689673,
689674, 689675, 689676, 689677, 689681, 689682, 689684, 689685, 689687,
689689, 689690, 689691, 689692, 689693, 689697, 689698, 689699, 689702,
689704, 689705, 689709, 689710, 689711, 689712, 689713, 689715, 689716,
689721, 689722, 689723, 689725, 689727.
</blockquote>

<h3><a name="8.62_Incompatible_changes"></a>Incompatible changes</h3>

<p>
Not strictly a compatibility issue, but the default URW (GPL) fonts are now
distributed in the Resource/Font/ path which can increase the number of
file handles open for PostScript that opens all of the resources. Also
the size of the %rom% rom file system within the executable when using
COMPILE_INITS=1 is larger by the amount needed for the fonts.
<p>
Also not strictly incompatible, but some alternate fixed-point code 
was stripped out, so FPU_TYPE and other FPU related makefile macros
are gone or don't cause any difference in the code generated. Also the 
'USE_ASM' macro was removed, since we expect modern compilers to do 
sufficient optimization.
<p>
Some old (deprecated) "helper" scripts were removed: gsindent, gssubst,
many2pdf.tcl, and pre.
<p>
The unused 'cmap' (special color mapping) and 'ropc' devices were 
removed from the distribution.
<p>
The 'ht_ccsto.ps' Stochastic Threshold array was completely changed to
be more useful. The values in the threshold array were inverted, so
the number of 'light' colors was limited and using it generally caused
prints that were too dark. This is an improvement, but incompatible
in that anyone using it previously would see much different grays/
colors.
<p>
The SYSTEM_CONSTANTS_ARE_WRITABLE compile time define was removed
as was the "EXTEND_NAMES" makefile macro (still accessible using
a compiler flag define).

<h3><a name="8.62_changelog"></a>Changelog</h3>

<p><strong><a name="2008-02-29T235931.476236Z"></a>
2008-02-29T23:59:31.476236Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix typo that caused unbalanced 'q' 'Q' operators in PDF's (caused by
rev 8501). Bug 689728.

</pre>
<p>[src/gdevpdfi.c]</p>
</blockquote>

<p><strong><a name="2008-02-29T222759.143965Z"></a>
2008-02-29T22:27:59.143965Z Ralph Giles</strong></p>
<blockquote>
<pre>
Release notes for the 8.62 release. Thanks to Ray Johnston for compiling these.
</pre>
<p>[doc/News.htm]</p>
</blockquote>

<p><strong><a name="2008-02-29T204904.253927Z"></a>
2008-02-29T20:49:04.253927Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove some C++ style comments.
</pre>
<p>[src/siscale.c src/gdevijs.c]</p>
</blockquote>

<p><strong><a name="2008-02-29T204902.503198Z"></a>
2008-02-29T20:49:02.503198Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add some new files to the documentation tree.
</pre>
<p>[doc/Develop.htm]</p>
</blockquote>

<p><strong><a name="2008-02-29T204752.884152Z"></a>
2008-02-29T20:47:52.884152Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update product name, copyright and release dates.
</pre>
<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Deprecated.htm doc/Source.htm man/ps2epsi.1 doc/Install.htm src/gscdef.c doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm src/version.mak man/gs.1 src/dwsetup.rc man/pf2afm.1 doc/Fonts.htm doc/Ps2ps2.htm man/printafm.1 doc/Develop.htm doc/Ps2pdf.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp doc/Htmstyle.htm man/font2c.1 man/gsnd.1 man/pdfopt.1 src/winint.mak doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Testing.htm doc/Unix-lpr.htm doc/Ps-style.htm doc/C-style.htm doc/History1.htm doc/History2.htm man/gslp.1 doc/History3.htm man/wftopfa.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 man/ps2ps.1 doc/History5.htm doc/History6.htm]</p>
</blockquote>

<p><strong><a name="2008-02-29T185314.162723Z"></a>
2008-02-29T18:53:14.162723Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add default FontResourceDir needed when COMPILE_INITS=1 is used so
that the fonts from Resource/Font in the distribution directory that
are built into %rom%Resource/Font/ will be found.
</pre>
<p>[src/iccinit1.c]</p>
</blockquote>

<p><strong><a name="2008-02-29T081308.227205Z"></a>
2008-02-29T08:13:08.227205Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix COMPILE_INITS=1. Note the next commit to the PCL tree will combine
with this one, but we can't commit to both trees atomically.

DETAILS:

Tested with Windows and linux. Needs OS/2 testing. Other build systems
may have bit rotted, and I don't hav them to test. Some of the changes
here are to allow working with a PCL or XPS only build where the PS
interpreter is not used/needed.

I noticed that the default systemparam value for FontResourceDir isn't
getting et to %rom%Resource/Font/ as it should, but GenericResourceDir
_is_ being initialized correctly to %rom%Resource/ which is _NOT_
fixed by this commit.

</pre>
<p>[src/openvms.mak src/psromfs.mak src/macosx.mak src/int.mak src/watcw32.mak src/dvx-gcc.mak src/unixansi.mak src/msvclib.mak src/unixlink.mak src/os2.mak src/lib.mak src/bcwin32.mak src/ugcclib.mak src/gsromfs0.c src/Makefile.in src/msvc32.mak src/unix-gcc.mak src/unix-aux.mak src/macos-mcp.mak src/watclib.mak]</p>
</blockquote>

<p><strong><a name="2008-02-28T145632.629339Z"></a>
2008-02-28T14:56:32.629339Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Attempt to repair invalid embedded TT fonts without cmap table.
Bug 689707, customer 531.

DETAILS:
1. Use identity cmap if it is missing from the TT file. Set an unknown
   language ID to activate post table processing.

2. To avoid false rejection during the validation of post table run the
   validator only on the TT files generated by an utility that is known
   to write broken post tables.

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2008-02-27T193618.181168Z"></a>
2008-02-27T19:36:18.181168Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist interpreter) : Improve transparency performance, step 4a.

DETAILS :

Bug 689708 "Long processing time of PDF file"
Bug 689714 "Severe performance penalty for PDF transparency through to clist"

The last patch is incomplete due to a commitment failure.
The patch completely removes .inittransparencymask because it is noop.

With the test case of the bug 689708 at 144 dpi 
with default band size it reduces
the temp file size from 64.8Meg to 36.5 Meg,
and speeds up the rendering in 11 times.

With the test case of the bug 689714 at 144 dpi
with default band size it reduces
the temp file size from 12.0Meg to 3.3 Meg,
and speeds up the rendering in 11 times.

The speed factor depends on resolution.

</pre>
<p>[lib/pdf_draw.ps lib/pdf_ops.ps]</p>
</blockquote>

<p><strong><a name="2008-02-27T192257.279403Z"></a>
2008-02-27T19:22:57.279403Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist interpreter) : Improve transparency performance, step 4.

DETAILS :

Bug 689708 "Long processing time of PDF file"
Bug 689714 "Severe performance penalty for PDF transparency through to clist"

The patch completely removes .inittransparencymask because it is noop.

With the test case of the bug 689708 at 144 dpi 
with default band size it reduces
the temp file size from 64.8Meg to 36.5 Meg,
and speeds up the rendering in 11 times.

With the test case of the bug 689714 at 144 dpi
with default band size it reduces
the temp file size from 12.0Meg to 3.3 Meg,
and speeds up the rendering in 11 times.

The speed factor depends on resolution.

</pre>
<p>[src/gstrans.c src/ztrans.c src/gdevpdft.c src/gstrans.h src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2008-02-27T183931.036262Z"></a>
2008-02-27T18:39:31.036262Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist interpreter) : Improve transparency performance, step 3.

DETAILS :

This is a preparation for fixing bug 689708 "Long processing time of PDF file"
The last patch appears incomplete, now fixing.

</pre>
<p>[src/gxistate.h]</p>
</blockquote>

<p><strong><a name="2008-02-27T004737.036819Z"></a>
2008-02-27T00:47:37.036819Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Added setting of fill_rule in pclxl_endpath().

DETAILS:

The pclxl_endpath() function checked if a clip_rule needed to be set but not a fill_rule.

This is a fix for bug 689665.


</pre>
<p>[src/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2008-02-27T000822.308407Z"></a>
2008-02-27T00:08:22.308407Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist interpreter) : Improve transparency performance, step 2.

DETAILS :

This is a preparation for fixing bug 689708 "Long processing time of PDF file"
The last patch appears incomplete due to a missed dependence in makefile.
Now we see the mask pointer was used but it was always NULL.

</pre>
<p>[src/lib.mak src/gxistate.h src/gsistate.c src/gdevpdfg.c]</p>
</blockquote>

<p><strong><a name="2008-02-26T231440.608304Z"></a>
2008-02-26T23:14:40.608304Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist interpreter) : Improve transparency performance, step 1.

DETAILS :

This is a preparation for fixing bug 689708 "Long processing time of PDF file"
It completely removes the mask pointer field from gs_transparency_source_s.
No idea what it was defined for. Nobody uses it.

</pre>
<p>[src/gstrans.c src/gstrans.h]</p>
</blockquote>

<p><strong><a name="2008-02-26T071249.848447Z"></a>
2008-02-26T07:12:49.848447Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change the decimal separator in generated strings to '.' effectively selecting
a C numeric locale without calling any locale functions. Bug 689624.

DETAILS:
For most clients Ghostscript is a library. We cannot set C locale before
sprintf() and reset it afterwards because this may affect other threads.

</pre>
<p>[src/spprint.c src/zdouble.c]</p>
</blockquote>

<p><strong><a name="2008-02-25T161043.614503Z"></a>
2008-02-25T16:10:43.614503Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Remove a space betveen -f and a file name to prevent parsing of the file name
that starts with '-' as an options. Bug 689682.

</pre>
<p>[lib/ps2pdfxx.bat]</p>
</blockquote>

<p><strong><a name="2008-02-25T054845.219666Z"></a>
2008-02-25T05:48:45.219666Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add a check for null value. Since rev. 6956 following Adobe implementation
Ghostscript doesn't accept null as a key in dictionary look-up. Bug 689696.

</pre>
<p>[lib/pdf2dsc.ps]</p>
</blockquote>

<p><strong><a name="2008-02-25T042047.177440Z"></a>
2008-02-25T04:20:47.177440Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
When the values of the color key mask exceed the valid range clip them to the
nearest valid values and continue. Don't discard the mask as we did before.
Bug 689717, customer 580.

</pre>
<p>[lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2008-02-24T092154.361457Z"></a>
2008-02-24T09:21:54.361457Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (images) : Improve coordinate precision when scaling an image (continued 8).

DETAILS :

Ghostscript Bug 687345 "Image interpolation problem at a band boundary"
Ghostscript Bug 689686 "siscale.c contrast degradation"

Accurately compute pixel center coordinates when applying the interpolation filter.
See comment in code. When scale=1, the offsets mutually eliminate.
Also the old code missed a bit when computing center_denom/2 in integers.

</pre>
<p>[src/siscale.c]</p>
</blockquote>

<p><strong><a name="2008-02-24T033703.979896Z"></a>
2008-02-24T03:37:03.979896Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (images) : Improve coordinate precision when scaling an image (continued 7).

DETAILS :

Ghostscript Bug 687345 "Image interpolation problem at a band boundary"
Ghostscript Bug 689720 "Hang with -dDOINTERPOLATE caused by rev 8530 changes"

An expression for HeightOut missed 'abs' with recent patch.
Thanks to Ray for pointing it out.

</pre>
<p>[src/gxiscale.c]</p>
</blockquote>

<p><strong><a name="2008-02-24T025834.824461Z"></a>
2008-02-24T02:58:34.824461Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix link errors in the file descriptor-based implementation of file streams.
Move function used by both fd and stdio implementations to a separate file
and compile it in both versions. Bug 688918.

DETAILS:
Although the patch fixes link errors, pdfwrite and other devices,
use stdio functions directly and generate incorrect documents in fd version.

</pre>
<p>[src/lib.mak src/sfxstdio.c src/sfxcommon.c]</p>
</blockquote>

<p><strong><a name="2008-02-24T011218.214936Z"></a>
2008-02-24T01:12:18.214936Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add definitions of some C99 types missing from old versions of Cygwin.
</pre>
<p>[src/stdint_.h]</p>
</blockquote>

<p><strong><a name="2008-02-23T222601.799844Z"></a>
2008-02-23T22:26:01.799844Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix typo that caused Cygwin build to fail if 'fontconfig' package was present.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2008-02-22T201808.422807Z"></a>
2008-02-22T20:18:08.422807Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (images) : Improve coordinate precision when scaling an image (continued 6).

DETAILS :

Ghostscript Bug 687345 "Image interpolation problem at a band boundary"
Ghostscript Bug 689718 "Regression: differences in FIG3.eps".

1. siscale.c : The revision 8529 patch part 4 tried to represent 'ceil' with rational 
arithmetics. But when downsampling the argument still uses a floating
number WidthIn, so we still need 'ceil'. 
This patch converts the formula back to floats, 
assuming that double precision is enough for precise result 
because source image size usually is smaller than 2^24.

The wrong rational representation of 'ceil' caused an array element index 
to fall outside the array. Debugged with FIG3.eps.

2. Improved debug printing and visual trace.

</pre>
<p>[src/gsimage.c src/lib.mak src/gxiscale.c src/siscale.c src/gdevm24.c]</p>
</blockquote>

<p><strong><a name="2008-02-22T102949.290734Z"></a>
2008-02-22T10:29:49.290734Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (FAPI) : Embedded fonts didn't work (continued).

DETAILS :

A condition for querying a glyph in GlyphDirectory was wrong.
Debugged with buttons.pdf from Karen.

</pre>
<p>[src/zfapi.c]</p>
</blockquote>

<p><strong><a name="2008-02-22T100930.542153Z"></a>
2008-02-22T10:09:30.542153Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (FAPI) : Embedded fonts didn't work.

DETAILS :

Embedded Type 42 FAPI support was broken since
Revision 7107 Sun Oct 15 17:19:45 2006 UTC (16 months, 1 week ago)
due to premature binding.

</pre>
<p>[lib/gs_typ42.ps]</p>
</blockquote>

<p><strong><a name="2008-02-20T210248.212097Z"></a>
2008-02-20T21:02:48.212097Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (images) : Improve coordinate precision when scaling an image (continued 5).

DETAILS :

Ghostscript Bug 687345 "Image interpolation problem at a band boundary"

This is a further improvement to image placement precision.
Debugged with a.pdf .

The old code provides insufficientg precision when computing 
transformation matrix for an image. This computation
include matrix inversion and matrix miltiplication.
The old code uses floats and causes a visible shift of subimages with banding.
The new code uses double precision.

We didn't test how it relates to the revision 7026 change, 
which dectreased the matrix precision for CPSI compatibility.
It should be a separate job.

In the new gsmatrix.c code we simply duplicate old code fragments
and replace types for double. We don't want to define a template
for now. Will see after the code passes enough practical work.

Besides that, in gxidata.c replaced fixed2int_pixround
with fixed2int_pixround_perfect. It is not related to a.pdf,
but we believe it is an useful change.

In gxipixel.c the patch replaces dda_advance with a repeated dda_next.
The old code appears implrecise due to loosing fraction pixels.
It eliminates a 1 pixel difference with Bug688789.pdf .

Minor changes : inserted debug printing and visual trace.

</pre>
<p>[src/lib.mak src/gsmatrix.c src/gximono.c src/gxidata.c src/gsmatrix.h src/gdevm24.c src/gxipixel.c]</p>
</blockquote>

<p><strong><a name="2008-02-18T202859.836803Z"></a>
2008-02-18T20:28:59.836803Z Ralph Giles</strong></p>
<blockquote>
<pre>
Propagate the new method argument change introduced in r8528 to the wts
device so that it compiles again.
</pre>
<p>[src/gdevwts.c]</p>
</blockquote>

<p><strong><a name="2008-02-17T233650.588580Z"></a>
2008-02-17T23:36:50.588580Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (images) : Improve coordinate precision when scaling an image (continued 4).

DETAILS :

Ghostscript Bug 687345 "Image interpolation problem at a band boundary"

This patch doesn't change the algorithm.
It only removes tracks of dead development branches.

</pre>
<p>[src/gxiscale.c src/siscale.c src/gxipixel.c]</p>
</blockquote>

<p><strong><a name="2008-02-17T232547.528293Z"></a>
2008-02-17T23:25:47.528293Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (images) : Improve coordinate precision when scaling an image (continued 3).

DETAILS :

Ghostscript Bug 687345 "Image interpolation problem at a band boundary"

1. The macro fixed2int_pixround returns a mathematically incorrect
result with negative half-integer arguments.
For example fixed2int_pixround(-2.5) = -3 when the math gives -2.
We guess it was designed for positive page coordinates only,
but later it was applied to objects with negative coordinates.
Particularly, an image can start outside the page with a negative coordinate,
and fixed2int_pixround causes distorsions with banding.

We do not update fixed2int_pixround for backward compatibility 
of other parts of the algorithm. Instead that the patch defines 
a mew macro fixed2int_pixround_perfect, and applies it to
images with Interpolate=true. (gxfixed.h, gxipixel.c, gxiscale.c).

2. Added gx_image_enum_s::yi0 to provide entire image origion in the page.
This value does not depend on band size, so it gives more stability -
see below. (gximage.h).

3. Added entire image sizes to stream_image_scale_params_s
for source image and scaled image. These values do not depend on band size
and provide more stability - see how they are used in siscale.c. 
(sisparam.h, gxiscale.c).

4. (siscale.c) calculate_contrib now computes the filter kernel center
with global (page) coordinates of the image, using the right macro 
fixed2int_pixround_perfect and with the rational arithmetics
instead floats. It gives the kernel center position relatively to source image
with no dependence on the band size.  Also improved the debug printing
about that.

5. In siscale.c we keep track of some experiments done while
developing the patch. We need to save them to history because they're not trivial.
See comments in code. We'll remove them from trunk with a separate patch.

</pre>
<p>[src/lib.mak src/gxiscale.c src/gxfixed.h src/siscale.c src/sisparam.h src/gximage.h src/gxipixel.c]</p>
</blockquote>

<p><strong><a name="2008-02-17T223215.427994Z"></a>
2008-02-17T22:32:15.427994Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (images) : Improve coordinate precision when scaling an image (continued 2).

DETAILS :

Ghostscript Bug 687345 "Image interpolation problem at a band boundary"

This patch does not change the algorithm,
except adding a debug printing with y coordinate of an image rectangle
in the page coordinate systems. It allows to compare
image fragments, which fall to verious bands depending on band size.

We could wrap the definition of gx_device_memory_s::band_y 
and all access to it with #ifdef DEBUG,
but we don't want to reduce the readability and because
memory and the CPU time expense is too small.

</pre>
<p>[src/gxclist.c src/gxdevbuf.h src/gxdevmem.h src/gdevppla.c src/gdevmem.c src/gdevbmpa.c src/gdevprn.c src/gdevppla.h src/gdevm24.c src/gxclread.c src/gdevpng.c src/gdevprn.h src/gdevijs.c]</p>
</blockquote>

<p><strong><a name="2008-02-17T035945.216145Z"></a>
2008-02-17T03:59:45.216145Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for regressions introduced with rev 8526. Some resolutions of CMYK, 1-bit
per component devices that had CMYK colors and Gray colors had strange dithers.
Bug 689706.

DETAILS:

The previous changes missed changing the cache index logic in gx_render_ht_1_level,
If the cache had been set with one of the other routines, gx_render_ht_default or
gx_dc_ht_binary_load_cache, then gx_render_ht_1_level would be inconsistent.

EXPECTED DIFFERNCES:

This is expected to resolve the regressions from rev 8527 with pkmraw on:

035-01.ps
119-28.ps
1_2001.pdf
Altona-Testsuite_p2_S_x3.pdf
Altona_Measure_1v1.pdf
Altona_Visual_bb_1v1_x3.pdf
Altona_Visual_sb_1v1_x3.pdf
BEST8-99-Path.fh7.pdf
BW0696FOLD1FRONT.pdf
Bug687489.ps
Bug687724.pdf
Bug687832.pdf
Bug687840.pdf
Bug688308.ps
Bug688822.eps
Bug689269.ps
Clarke-Tate-Manns-Chinese.ai
H00216q.pdf
Original.pdf
S2_Digitalproof-Forum_x3k.pdf
a.pdf
besttest.pdf
cmyk.pdf
foo.pdf
knight.pdf
test.pdf
time1.pdf
</pre>
<p>[src/gxht.c]</p>
</blockquote>

<p><strong><a name="2008-02-14T083456.225081Z"></a>
2008-02-14T08:34:56.225081Z Ray Johnston</strong></p>
<blockquote>
<pre>
Improve Halftone tile cache efficiency. Make default cache large enough
on default 32-bit (LARGE) configuration to allow for &gt; 256 cache tiles
when using the 'ht_ccsto.ps' 167x167 Threshold array. Change cache
lookup logic to eliminate collisions when the number of cache slots
exceeds the number of levels (the normal case). Remove duplicated
ht cache default size #defines and normalize the names to end in
_size (to imply size in bytes) and be consistent with other similar
function/macro names.

DETAILS:

When we have more cache slots than the number of levels, we can use
the 'b_level' directly and don't lookup based on the 'number of bits'
(level). This ELIMINATES collisions and on customer 661's benchmarks
resulted in up to 40% performance improvement for some files with
no performance degradation on any when running a large threshold
array based halftone (as the customer does).

The previous -Z. behavior is retained, although small cache sizes
are of questionable value, and this is sort of confusing since a
small memory build will use the same cache size with and without
-Z.

</pre>
<p>[src/gshtscr.c src/gzht.h src/gsht.c src/gdevprna.c src/gxht.c]</p>
</blockquote>

<p><strong><a name="2008-02-12T203017.540929Z"></a>
2008-02-12T20:30:17.540929Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (images) : Improve coordinate precision when scaling an image (continued).

DETAILS :

Ghostscript Bug 687345 "Image interpolation problem at a band boundary"

This is another partial fix for the bug 687345 for portrait images with Interpolate=true.
Debugged with CET 148-13.

1. The old code inprecisely computes the scaling factor
when interpolating images with Mitchel filter.
The computation was done with the subimage rectangle,
which is different for different bands.
The new code always computes the scale from the entire image rectangle,
which's size is same for all bands.

2. New fields are inserted into gx_image_enum_s and stream_image_scale_params_s
to provide data delivery for (1).

3. In calculate_contrib in siscale.c the variable input_index
is renamed into starting_output_index for a better reflection of its semantics.

4. In calculate_contrib in siscale.c the new variable dst_offset_fraction
is added for a preciser positioning of the filter center,
when it fails between device pixel rows. The old code missed fractional
pixels when stepping to a next band. The expression for its value 
was created empirically, so it may need further improvements.

5. Inserted visual trace instructions for easier debugging.

6. Improved the debug trace printing.

</pre>
<p>[src/gxdda.h src/lib.mak src/gxiscale.c src/siscale.c src/sisparam.h src/gximage.h src/gxipixel.c]</p>
</blockquote>

<p><strong><a name="2008-02-12T190319.125442Z"></a>
2008-02-12T19:03:19.125442Z Ralph Giles</strong></p>
<blockquote>
<pre>
Document the need to update the current documentation snapshot.
</pre>
<p>[doc/Release.htm]</p>
</blockquote>

<p><strong><a name="2008-02-09T023031.322331Z"></a>
2008-02-09T02:30:31.322331Z Ralph Giles</strong></p>
<blockquote>
<pre>
Clamp the number components read from the ICC DataSource array to the 
number actually allocated to avoid buffer overflow. CESA-2008-001.
</pre>
<p>[src/zicc.c]</p>
</blockquote>

<p><strong><a name="2008-02-09T005538.575949Z"></a>
2008-02-09T00:55:38.575949Z Ralph Giles</strong></p>
<blockquote>
<pre>
Include 12 and 16 bit image support as part of the core graphics 
library. Bug 689688.

Details:

Previously, the core graphics library defaulted to including the 
'no12bit' and 'no16bit' modules, which contained stubs. These modules
were replaced by full implementations when the psl2lib (12 bit) and 
pdfread (16 bit) modules were included.

We now consider this build-time flexibility redundant. The extra code is 
not large and the default build generally includes it as these images 
are part of all the newer page description languages. We therefore 
include the unpack routines directly in libcore and remove the 
noi1xbit modules entirely.
</pre>
<p>[src/lib.mak src/int.mak]</p>
</blockquote>

<p><strong><a name="2008-02-07T093322.506379Z"></a>
2008-02-07T09:33:22.506379Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): problems with unusual PDF text rendering modes.

Details:
Bug #689596 "Generated PDF loses an image from original".

Although the PDF interpreter stores both stroke and fill colours,
there is no way to pass both these colours to the graphics library.
The PostScript graphics state may only contain a single colour, and the
device interface only allows for a single colour to be passed.

The old code set the text rendering mode, and assumed that if the
current device was pdfwrite this would be sufficient. However the
need to set both colours causes this to fail.

Modified the pdf_ops to set a show/colour/charpath/stroke combination
instead. The existing code will spot text followed by a charpath of
the same text and collapse it back.

A number of other problems with text rendering modes were also addressed
at the same time, but in a less than optimal fashion. This patch
is a temporary fix while an enhancement is coded to better address
the problem.

(gdevpdts.c) pdf_render_mode_uses_stroke, was checking for render mode
not 0 (fill). Altered to check against the actual stroking modes.

(gdevpdtt.c) pdf_update_text_state was setting the text rendering mode
to 0 (fill) under most conditions. Altered this to set the mode from
the graphics state, unless the current font PaintType is 2 (stroke),
and the render mode is 0, in which case set render mode to 1 (stroke).

(pdf_ops.ps) Modify setshowstate to provide better methods of implementing
various text rendering modes to pdfwrite. Rendering is unaffected by
this change.

</pre>
<p>[src/gdevpdts.c src/gdevpdtt.c lib/pdf_ops.ps]</p>
</blockquote>

<p><strong><a name="2008-02-04T221808.283584Z"></a>
2008-02-04T22:18:08.283584Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (images) : Improve coordinate precision when scaling an image.

DETAILS :

Ghostscript Bug 687345 "Image interpolation problem at a band boundary"

This is a partial fix for the bug 687345 for images with Interpolate=false.
Actually it is related to scaling raher than interpolation.

1. gx_image_enum_begin performed inaccurate coordinate computations,
which caused a different image bias for different bands
due to a wrong coordinate rounding.
The patch replaces it with a better code,
which provides same bias for all bands and for unbanded rendering.
But we're not sure that image placement is now perfect,
because the initial rounding looks strange.
We keep the initial rounding to be compatible with the old code
to minimize raster differences and easier visual analyzis.
For a while we keep the old code in #if 0 because
it may be useful for next patch.

2. image_render_frac contains optimized branches for the case when
image's axes are parallel to page's axes.
Those optimized branches convert parallelograms into rectangles,
except for the last parallelogramm in the chunk.
It caused the last parallelogram to shift in 1 pixel relatively 
to the rectangles. This patch adds the optimized branch
for the last parallelogram, so that all image parts
are now placed with same rounding. It avoids rendering artifacts
with 148-05.ps and many other tests. Note that the patch does not fix
the rectangle shift from parallelograms,
so probably it still contain another bug,
which may need a separate fix.

3. While working on this patch we noted that update_strip
doesn't correctly preserve the fractional part for
dda.strip and dda.pixel . We include a track of that experiment
in the new code in #if 0 section for further development.
See comment in code.

4. Inserted visual trace commands for easier debugging.

</pre>
<p>[src/lib.mak src/gxidata.c src/gdevddrw.c src/gdevm24.c src/gxclread.c src/gxi12bit.c src/gxipixel.c]</p>
</blockquote>

<p><strong><a name="2008-02-03T175423.256452Z"></a>
2008-02-03T17:54:23.256452Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Modify pdf_info utility to match the changes in PDF interpreter interface.
Bug 689680.
</pre>
<p>[toolbin/pdf_info.ps]</p>
</blockquote>

<p><strong><a name="2008-02-01T220551.322620Z"></a>
2008-02-01T22:05:51.322620Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Interpolated images were shifed in a half of source pixel.

DETAILS :

Bug 687039 "Interpolated images looks strange on Win32 display device".

1. The old code maps the center of the [0,0]th source pixel
   to the output image origin. However Adobe maps 
   the source pixel's corner to the output origin.
   This patch compensates the shift when computing the
   filter kernel position - see '0.5' when computing 'center'.

2. When the filter kernel scans partially outside the source image,
   the math requires to extrapolate source data somenow
   to fill the kernel. However the old code performs some strange
   computation, which we're not sure what for.
   It looks as a rudiment of wrapping the source image
   like a thorus. Well, it's an useful math for periodic patterns,
   but not for single images. Since we never apply siscale.c to 
   patterns, we replace this code portion with a simpler one,
   which duplicates pixels at image boundaries.
   See attachment to the bug to prove that Adobe does so.

</pre>
<p>[src/siscale.c]</p>
</blockquote>

<p><strong><a name="2008-01-31T222032.934182Z"></a>
2008-01-31T22:20:32.934182Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix ColorValues parameter problem when device has total number of bits (depth)
of more than 31 bits, resulting in a "rangecheck" (-15) error.

DETAILS:

The default get_params would not return -1 for values too large for 32 bits,
but the default put_params tested for this. The rangecheck would show up
on 32-bit devices, such as tiff32nc when running:
   "currentpagedevice setpagedevice"
Note that the value returned for ColorValues was platform dependent since
it previously set ColorValues to 1&lt;&lt;depth, but 1&lt;&lt;32 is not -1 on any
platform (that I know of).
</pre>
<p>[src/gsdparam.c]</p>
</blockquote>

<p><strong><a name="2008-01-29T170250.720617Z"></a>
2008-01-29T17:02:50.720617Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Optimize filling a path with a shading color (continued 2).

DETAILS :

Bug 688970 "(shadings) Optimize filling a path with a shading color".

A minor code cleanup : Removing code portions that became unused.

</pre>
<p>[src/gsptype2.c src/gsptype2.h src/gximask.c src/gxfill.c]</p>
</blockquote>

<p><strong><a name="2008-01-29T124142.337727Z"></a>
2008-01-29T12:41:42.337727Z mpsuzuki</strong></p>
<blockquote>
<pre>
Fix (TT): Ignore broken post 2.0 table generated by "Windows Type 1 Installer".

DETAILS:

This is the second fix for bug 689495, that is quite specific
to a TrueType font generated by "Windows Type 1 Installer".

"Windows Type 1 Installer" makes a TrueType font including broken
post table in format 2.0. Previous fix (SVN revision 8351) just
ignores such broken post table, and ISOLatin1Encoding is used
for fallback. When such TrueType font is combined with WinAnsiEncoding,
some glyph names (exists only in WinAnsiEncoding) cannot be resolved.

The post table format 2.0 uses 2 maps to assign a glyph name to
TrueType glyph index: the first map is from TrueType glyph index
to glyph name index (glyphNameIndex[] array), the second map is
from glyph name index to glyph name string (names[] Pascal string
array). The broken post table generated by "Windows Type 1 Installer"
seems to use name[] array by TrueType glyph index directly, and
the glyphNameIndex[] array has unreliable values.

This patch sets /.broken_post when the post table is broken (the
detection of broken post table is same with SVN revision 8351),
then use names[] array by TrueType glyph index when /.broken_post
is set.

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2008-01-29T115450.007576Z"></a>
2008-01-29T11:54:50.007576Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Optimize filling a path with a shading color (continued).

DETAILS :

Bug 688970 "(shadings) Optimize filling a path with a shading color".

A minor code cleanup : prepare to eliminate gx_dc_pattern2_clip_with_bbox.

</pre>
<p>[src/gximask.c]</p>
</blockquote>

<p><strong><a name="2008-01-28T230259.180158Z"></a>
2008-01-28T23:02:59.180158Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Optimize filling a path with a shading color.

DETAILS :

Bug 688970 "(shadings) Optimize filling a path with a shading color".

When filling a path with a shading color, the old code
first intersects the the clipping path with the path,
then intersects the result with the shading BBox.
However the intermediate result frequently appears to be 
a big list of rectangles, so the second intersection is slow.

This patch accounts that the clipping path and shading BBox
frequently are rectangles, which are easier to intersect with
no converting to paths. Also the shading box is always a quadrangle,
so intersecting it early gives a smaller intermediate result.
Therefore we first intersect the clipping path with the shading BBox,
then with the path.

This patch keeps the old code within #if #endif
until the full regression testing is passed on the server.
Also would like to eliminate the old complicated function 
gx_dc_pattern2_clip_with_bbox, which is still called from elswhere.

</pre>
<p>[src/gsptype2.c src/gsptype2.h src/gxfill.c]</p>
</blockquote>

<p><strong><a name="2008-01-28T103145.187261Z"></a>
2008-01-28T10:31:45.187261Z mpsuzuki</strong></p>
<blockquote>
<pre>
Fix: ignore the embedded font resource when PDF interpreter resolves
     the unembedded font resource.

DETAILS:

Some PDF generators (e.g. Microsoft Office 2007 add-on to export the
documents to PDF format) emits incompatible font objects with same
resource name. The sample PDF in bug 689637 includes 2 "Times New
Roman" font objects: one is embedded CID-keyed TrueType for Cyrillic
glyphs, another is unembedded WinAnsiEncoding TrueType (possibly for
empty page header or footer). When PDF interpreter resolves latter
unembedded "Times New Roman", external font resource should be used
(Adobe Reader does so). But current Ghostscript uses former embedded
"Times New Roman", because the sample PDF includes "Times New Roman"
without randomization prefix.

To avoid the confusion between embedded and unembedded fonts with
same name, pfont-&gt;is_resource flag (=0 embedded, =1 unembedded)
is checked during font object resolution. Even if a cached font
object with same name is found, it is ignored if it is embedded
font. To execute this check in PostScript space (pdf_font.ps),
new operator ".isregisteredfont" is introduced. This patch assumes
that embedded font object in PDF is resolvable by tracking the
indirect object references. If a PDF assumes name-based resolution
of embedded font object (without indirect object), it may be
rendered by external font resource. At present, we don't have
such sample.

By this patch, bug 689637 is fixed.

</pre>
<p>[lib/pdf_font.ps src/zfont.c]</p>
</blockquote>

<p><strong><a name="2008-01-28T095854.861949Z"></a>
2008-01-28T09:58:54.861949Z mpsuzuki</strong></p>
<blockquote>
<pre>
Fix (TT): Fix a bug in /getinterval_from_stringarray

DETAILS:

getinterval_from_stringarray is a procedure defined to
extract a substring from long table of TrueType font.
When a table is too long to fit into 16bit-length string
object in PostScript, gs_ttf.ps split the table into
the array of strings. When getinterval_from_stringarray
is requested to extract a string which starts in one
member and ends in following member, it returns a string
that only the content of the first member is copied.
There was a wrong conditional that made the substring
extraction aborted. It was fixed to return the correct
substring.

By this fix, bug 689593 (IPA font 2007 edition cannot
be parsed correctly) is closed.

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2008-01-28T085010.139318Z"></a>
2008-01-28T08:50:10.139318Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist &amp; transparency) : Improve the compositor queue logic (continued).

DETAILS :

The last commit is incomplete due to human error.
Please don't use the last revision.

Bug 689492 "Ghostscript uses a large amount of memory", part 2.

This patch fixes the missed shadow of a text, which is mentioned 
in the Comment #8 of the bug report.

1. Added macros for configuring visual trace for easier debugging.
2. The idle transparency bufer allocation condition was wrong. 
   The patched code allocated ;esser buffers.
3. Found more cases when a mask needs to be released.
4. The old code immediately executes idle masks.
   It caused a wrong order for compositor execution
   with images that have a soft mask.
   With the test case the image's mask was executed before 
   the group that containing the image.
   It caused a premature releasing of a mask,
   which preceeeds the group and must noy be released.

   The new code delays the execution of idle masks
   after all containing groups are executed,
   so that the queue is now longer and stores all masks.
   We beleive that's not harmful, because
   transparency queue elements are pretty small and
   work for hos based applications only.

   The new function mark_as_idle works for the new logic.
   Few aother functions are enhanced with a smarter
   processing of the idle flag.
5. Improved comments for the compositor queue logic.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2008-01-28T084521.850870Z"></a>
2008-01-28T08:45:21.850870Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist &amp; transparency) : Improve the compositor queue logic.

DETAILS :

Bug 689492 "Ghostscript uses a large amount of memory", part 2.

This patch fixes the missed shadow of a text, which is mentioned 
in the Comment #8 of the bug report.

1. Added macros for configuring visual trace for easier debugging.
2. The idle transparency bufer allocation condition was wrong. 
   The patched code allocated ;esser buffers.
3. Found more cases when a mask needs to be released.
4. The old code immediately executes idle masks.
   It caused a wrong order for compositor execution
   with images that have a soft mask.
   With the test case the image's mask was executed before 
   the group that containing the image.
   It caused a premature releasing of a mask,
   which preceeeds the group and must noy be released.

   The new code delays the execution of idle masks
   after all containing groups are executed,
   so that the queue is now longer and stores all masks.
   We beleive that's not harmful, because
   transparency queue elements are pretty small and
   work for hos based applications only.

   The new function mark_as_idle works for the new logic.
   Few aother functions are enhanced with a smarter
   processing of the idle flag.
5. Improved comments for the compositor queue logic.

</pre>
<p>[src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2008-01-26T132127.618379Z"></a>
2008-01-26T13:21:27.618379Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (transparency) : Memory leak after an image with soft mask.

DETAILS :

Bug 689492 "Ghostscript uses a large amount of memory".

When a PDF command stream executes "/d1 gs /d2 gs" where d1 and d2 both define an 
untrivial SMask (not important whether they are same mask or different masks),
the second mask replaces the first one, and the first one to be released.

When a transparent group includes an image with a soft mask 
(this case happens in the test document for the bug), the image's soft mask must 
*temporary* replace the groups soft mask, and the first mask must not 
be released.

The old code does not distinguish these cases, assuming that 
a mask buffer is being released after rendering a group with it.
Due to that some mask buffers were never released,
causing a memory leak with banded rendering,
because the clist interpreter doesn't run the garbager.

A simpler case for demonstrating the leak could be created with 
"/d1 gs /d2 gs" as explained above.

The patch defines a new bool gs_transparency_mask_params_s::replacing, 
gx_transparency_mask_params_s::replacing and gs_pdf14trans_params_s::replacing
for passing the necessary information through old interfaces.
Note that as usual we cannot change the device interface for 
an easier passing of this info, because we need to maintain
the compatibility with 3d party devices.

Using the 'replacing' flag, pdf14_push_transparency_mask either replaces
the old mask buffer, or creates a new one as a temporary substitution for
an image with a soft mask. In the second case the group mask is
saved in the last transparency stack element in the field 
buf-&gt;maskbuf. After rendering the image's group 
the function pdf14_pop_transparency_group restores 
the saved mask buffer, as it was set in the transparency context
before starting the image's mask. For more details see
comments added into gdevp14.c .

</pre>
<p>[src/gstrans.c src/ztrans.c src/gstparam.h src/gstrans.h src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2008-01-25T081716.431601Z"></a>
2008-01-25T08:17:16.431601Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (Font renderer) : Horizontal metrics sometimes applied with WMode 1 fonts.

DETAILS :

Bug 689464 "Japanese font writing direction (vertical ?)".
Bug 689646 "vertical text rendered by external CIDFontType0 flows horizontal".

1. When a descendent font of a type 0 CID font has zero FontBBox,
   use the FontBBox of the CID font. This is another case when
   a 3d party software generates a font with zero FontBBox.
   We believe that such font data is incorrect, 
   but this patch provides a simple workaround.

2. When FontBBox to be used to compute Metrics2,
   don't obtain sbw from type 1 glyph descriptions.
   The old code does so causing the horizontal metrics
   to be used when rendering a WMode 1 font. 

3. The case (2) appears to have an exception,
   when the font has CDevProc. In this case 
   we do need sbw from the glyph description
   to provide arguments for CDevProc.
   See alse the comment added to code.

Note that Type 1 font renderer now depends on some knowledge about type 0 CID font.
But this dependence does not break the configurability
because only an .h file is included into the Type 1 font renderer.

</pre>
<p>[src/int.mak src/zchar1.c]</p>
</blockquote>

<p><strong><a name="2008-01-23T211316.354024Z"></a>
2008-01-23T21:13:16.354024Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist &amp; transparency) : Inconsisting compressed color index info.

DETAILS :

Bug 689626 "Segmentation Fault using 'bit' device to clist.".

The bug was put while the custom color callback merge in revision 7795.
The color index information to be passed to the clist writer
after restoring the color information to the clist writer.
Before restoring it is set to a blending space,
which may be incompatible with the target device's color index type.

I'm unable to test this patch fully
due to no test cases for antrivial spot colors with transparency.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2008-01-23T183335.648405Z"></a>
2008-01-23T18:33:35.648405Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (DSC parser) : Avoid a structure type name duplicate.

DETAILS :

The old name cmd_list_s is also defined in gxclist.h .
It confused MSVC debugger while tracing gxclutil.c for bug 689626.

</pre>
<p>[src/zdscpars.c]</p>
</blockquote>

<p><strong><a name="2008-01-23T181227.956590Z"></a>
2008-01-23T18:12:27.956590Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (patterns) : The clipping was wrong with antrivial pattern matrix (continued).

DETAILS :

Bug 687196 "Incorrect pattern processing from Adobe test file pattyp1.ps".
This is a partial fix for the bug, which fixes vector devices only.
It closes the bug with the last patch applied.

The old code set identity matrix for a pattern dstream accummulation.
It appears incompatible with Type 2 pattern handler, which assumes
the default page matrix. This patch changes the matrix and improves
the pattern stream accumulator with accounting the default page scale. 

</pre>
<p>[src/gdevpdfi.c src/zpcolor.c]</p>
</blockquote>

<p><strong><a name="2008-01-23T180949.970130Z"></a>
2008-01-23T18:09:49.970130Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (patterns) : The clipping was wrong with antrivial pattern matrix.

DETAILS :

Bug 687196 "Incorrect pattern processing from Adobe test file pattyp1.ps".
This is a partial fix for the bug, which fixes raster devices only.

1. The old code always sets a canonic rectangular clipping,
   which is wrong with rotated or skewed matrices.

   Note the patch resets path in the pattern's graphic state.
   It is not done in the old code, so it may cause raster diferences.
   But it is required in PLRM chapter 8 by the definition of 'makepattern'.

2. Adjust the pattern matrix to pixel grid.
   After doing the change (1) the clipping area appears too small for some cases.
   It happens because the tile origin falls at fractional pixels,
   The new code causes a massive raster difference, which actually is minor
   (a shift of some pattern instances in 1 pixel).

   Note that PLRM requires to adjust pattern matrix in the definition of 'makepattern',
   but doesn't explain how to.

3. In compute_inst_matrix perform computations in 'float'
   because the matrix is represented with 'float'.

4. (miror change) Expanded the 'mat' macro for easier debugging with MSVC.

</pre>
<p>[src/gsptype1.c]</p>
</blockquote>

<p><strong><a name="2008-01-23T164951.344351Z"></a>
2008-01-23T16:49:51.344351Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Wrong format string for pprintg.

Details:
Bug #689661 "pdfwrite : Incorrect sprintf format".

(gdevpdfu.c) The new function, 'pdf_write_font_bbox_float,
added in revision 8360, used the wrong format string (%f
instead of %g) to write the font BBox.

</pre>
<p>[src/gdevpdfu.c]</p>
</blockquote>

<p><strong><a name="2008-01-23T133039.283039Z"></a>
2008-01-23T13:30:39.283039Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (shadings) : A memory deallocation problem.

DETAILS :

Bug 689660 "memory deallication problems with shadings".

The old code used pdev-&gt;memory for temporary storing 
an intersection of clipping path with shading bbox.
This is the global memory space.
However if the intersection is trivial,
the path of the clipping path is copied from the 
original clipping path, which is allocated in the local memory space.
Later it causes a freeing of path segments to a wrong memory space.

This patch chooses the original clipping path's memory space
when the clipping path is available, and the global space otherwise.

</pre>
<p>[src/lib.mak src/gsptype2.c]</p>
</blockquote>

<p><strong><a name="2008-01-23T132309.676697Z"></a>
2008-01-23T13:23:09.676697Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Added HP's KRGB patch for improved control of true black text printing on color printers with HPIJS. Bug #689065 (Ubuntu LP: #69905) is fixed in this updated version of the patch.
</pre>
<p>[src/gdevijs.c]</p>
</blockquote>

<p><strong><a name="2008-01-21T205955.657274Z"></a>
2008-01-21T20:59:55.657274Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (save/restore) : Remove gs_ref_memory_s::inherited.

DETAILS :

It is not used since revision 5250.

</pre>
<p>[src/gxalloc.h src/igc.c src/gsalloc.c src/isave.c]</p>
</blockquote>

<p><strong><a name="2008-01-20T222307.686290Z"></a>
2008-01-20T22:23:07.686290Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (save/restore) : Do not create invisible save levels.

DETAILS :

Invisible save levels is a rudiment of old code.
gs_ref_memory_s::scan_limit effectively work instead them 
since revision 6706 committed on April 14 2006.

We're not sure what gs_ref_memory_s::inherited works for.
Keeping it updated for a while, and don't remove the 
old code for reference. Note the maintanence of gs_ref_memory_s::inherited
in the new code is not fully equivalent to old code.

</pre>
<p>[src/isave.c]</p>
</blockquote>

<p><strong><a name="2008-01-20T095615.017727Z"></a>
2008-01-20T09:56:15.017727Z Ralph Giles</strong></p>
<blockquote>
<pre>
Only report the ICC Profile colorspace when the jasper library's debug 
level is above zero. Bug 689662.
</pre>
<p>[jasper/src/libjasper/jp2/jp2_dec.c]</p>
</blockquote>

<p><strong><a name="2008-01-20T092115.660626Z"></a>
2008-01-20T09:21:15.660626Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (save/restore) : Compact the changes list against big memory leak.

DETAILS :

Bug 689536 "Memory leak reading PostScript file (PMR 53877).".

The old implementation includes an optimization agains a big CPU time expense
in 'save' and 'restore' for sedtting and resetting l_mark flags.

Normally, when executing 'save', the memory manager needs
to reset l_new marks for objects modified or allocated at the last save level,
so that their further modification on the next save level to be saved
in the changes list. When executing 'restore' these flags to be set 
to prevent redundant save.

When the last save level includes many allocations, 
the number of scanned objects is big and it causes a significant
time expense. A long ago Ghostscript implements an optimization,
which shorten the scanned list against the big time expense.
However the shortening causes redundant saving.

The redundant saving itself isn't harmful because
it happens seldon and spends a small memory.
However if a redundant save element points to a reference to
a newly allocated array or dictionary, the array or dictionary
can't be garbage collected. When a client executes such allocation and 
same reference modification multiple times, all allocated arrays
and dictionaries persist in memory, causing a significant memory leak.

This patch compacts the saved change list whem a significant memory 
allocation is accummulated since last save or since last compacting.
The new field gs_ref_memory_s::total_scanned_after_compacting
works for counting allocated elements. The new function 
drop_redundant_changes performs the compacting. See comments in its code.

The threshold for starting drop_redundant_changes is choosen arbitrary. 
It must not be too small, because the CPU time expense
optimization wouldn't be effective. Also it can't be too big,
because the memory leak recovery would not be effective.
This patch sets it to about 1600000 objects,
which is an experimental trade-of.

Note that this patch reduces the memory leak but doesn't
eliminate it to zero, because more data may be allocated
after the last filtering.

We could implement a filtering within the garbager rather 
than withis save/restore. Actually it wouldn't change 
the behavior to much, because the threshold would be still needed 
against the CPU time expense, It happens because the scanning
deals with array or dictioanr elements rather than with
whole aggregates. Also we don't want to complicate the garbager.

Note that the arbitrary threshold is bigger than neccessary
for the simplified test case included into the bug report.
Due ti that the leak elimination does not happen with this test.
For the compacting to take place the sequence "NEWJOB Z"
to be repeated 90 times rather than 40 in the supplied test. 
The customer's test does demonstrate the leak reducing.

</pre>
<p>[src/gxalloc.h src/gsalloc.c src/isave.c]</p>
</blockquote>

<p><strong><a name="2008-01-18T215038.830947Z"></a>
2008-01-18T21:50:38.830947Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Explicitly close CMap files opened during CMap-CIDFont font enumeration.
On certain systems file handles were used up before GC freed inaccessible
handles causing PostScript errors. Bug 689594.

</pre>
<p>[lib/gs_cidcm.ps]</p>
</blockquote>

<p><strong><a name="2008-01-18T061702.734368Z"></a>
2008-01-18T06:17:02.734368Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add redefinition of setpagedevice to ps2epsi utility to support PS files
that call setpagedevice. Bug 689650.
</pre>
<p>[lib/ps2epsi lib/ps2epsi.ps lib/ps2epsi.cmd lib/ps2epsi.bat]</p>
</blockquote>

<p><strong><a name="2008-01-17T135043.754302Z"></a>
2008-01-17T13:50:43.754302Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist interpreter) : Skip idle compositors, step 6.

DETAILS :

Enabling visual trace for buffer backdropping.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2008-01-17T134711.707889Z"></a>
2008-01-17T13:47:11.707889Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (visual trace) : Add a single pixels painting operation.

DETAILS :

This patch doesn't change the algorithm.
It only enhances debuging instrument.
The new instrument will be used for debugging the clist logics about transparency masks.

</pre>
<p>[src/vdtrace.h src/vdtrace.c src/dwtrace.c]</p>
</blockquote>

<p><strong><a name="2008-01-17T133719.476394Z"></a>
2008-01-17T13:37:19.476394Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc warnings.
</pre>
<p>[src/gdevcgm.c src/int.mak src/gstrans.c src/gdevpdfe.c src/gdevbit.c src/devs.mak src/gxclread.c src/gscdevn.c src/gscie.c src/gxclutil.c src/lib.mak src/gdevp2up.c src/gxclmem.c src/gdevdflt.c src/gdevpdtd.c src/gxcomp.h src/gsovrc.c src/gdevprn.c src/gscsepr.c src/genarch.c src/ztoken.c src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2008-01-17T031602.921192Z"></a>
2008-01-17T03:16:02.921192Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Comment-only change: remove obsolete reference to MS-DOS limitations and 
mention that PDF interpreter passes un-escaped font names to PS level.
Bug 689651.
</pre>
<p>[lib/Fontmap.GS]</p>
</blockquote>

<p><strong><a name="2008-01-17T031245.266699Z"></a>
2008-01-17T03:12:45.266699Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Remove the warning about non-embedded TrueType fonts in PDF files because it
confuses users but seems to have little effect on the main producer of
non-conforming files.

</pre>
<p>[lib/pdf_main.ps lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2008-01-16T233548.055065Z"></a>
2008-01-16T23:35:48.055065Z Ralph Giles</strong></p>
<blockquote>
<pre>
Unbreak the build.
</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2008-01-16T225542.290132Z"></a>
2008-01-16T22:55:42.290132Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist interpreter) : Skip idle compositors, step 5.

DETAILS :

This really skips compositors which don't paint anything.

Compositor parameter list structures are extended with a new boolean field 'idle'.
These fields pass information whether something was painted to a compositor.
We choosen this way for passing this info because 
(1) we can't change the device inteface with new function arguments, and 
(2) we need to pass it through the device chain
(for example, when a clipper is installed onth the overprint device).

This patch only affects the transparency and the overprint.
Other compositors (gsalphac.c, gxropc.c) behave as before. 
They may need further improvements.

This patch does not fix the bug 689492.
That fix may be done either before or after this one,
but in any case the patches need to adopt each to another.

The new compositor virtual method is_closing
checks whether a current compositor command
closes an older command, and finds the opening command.
Now we provide untrivial implementations for transparency and overprint compositors.
Would like to define an enum for return values of is_closing.

The old device method create_compositor now passes the 'idle' parameter via 
gs_composite_s structure. By default it is false and the behaviour
is same as before. But the clist interpreter is modified
to provide true value when a compositor doesn't paint anything.
To compute this flag the compositor queue now works with its full power.
Note we changed the queue representation with a bilikned list.

This patch entroduces the concept of 'friendly operations'
for compositor operations. These are those operations, which
may interchange with compositor installation/deinstallation.
One example is halftone operations, which always affect
the device below the compositor device, i.e. the target device
of the compositor device. The new compositor virtual method
is_friendly is implemented in an intrivial way for the
transparency compositor especially to exchange with halftone
operations while queueing clist operations.
This especially helps to delay the pdf14 device installation
so that it may completely annihilate with its deinstallation
if nothing is painted through the compositor in a band.

Overprint and transparency compositor implementations
are changed with checking the idle flag.
If it is set, they don't perform neither color blending, nor
raster buffer allocation. Note the pdf14 device maintains the buffer stack
as before, but the allocation of buffers may be skipped.
It saves significant time from cleaning up raster buffers when they are idle.

This patch may need further improvements for the case when
different compositor types are mixed in one queue. 
We could not fully test it due to absence of practical tests.

Another useful improvement would be to convert 
"0 .inittransparencymask 1 .inittransparencymask dict .setblendparams"
into a single command. It would simplify the compositor queue logic.
Also we think that the name .inittransparencymask doesn't reflect the function purpose.
Will improve someday.

We're not sure whether this patch correctly works with idle masks.
We could not debug it due to no practical cases.
Possibly idle mask will need an additional effort to skip 
the group painting to the band.

Also disabled cmd_put_halftone in c_pdf14trans_clist_write_update -
see comment in code.

Monor change : Inserted a visual trace support for transparency buffers.

</pre>
<p>[src/lib.mak src/zdict.c src/gdevdflt.c src/gdevp14.h src/gstrans.c src/gsalphac.c src/gxcomp.h src/gsovrc.c src/gstparam.h src/gstrans.h src/gxclrast.c src/gsovrc.h src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2008-01-09T003630.938192Z"></a>
2008-01-09T00:36:30.938192Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Fixed umlauts (maybe, am having trouble testing the results).
</pre>
<p>[man/de/pdf2dsc.1]</p>
</blockquote>

<p><strong><a name="2008-01-09T002450.313955Z"></a>
2008-01-09T00:24:50.313955Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Corrected man page (thanks to Peter Dyballa).
</pre>
<p>[man/de/pdf2dsc.1]</p>
</blockquote>

<p><strong><a name="2008-01-09T000059.719986Z"></a>
2008-01-09T00:00:59.719986Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add unmodified byte-oriented AES encryption code by Brian Gladman. These
files serve as a reference point. They are not yet included into any
project nor can be compiled by some of the compilers we support.

</pre>
<p>[src/aes.h src/aes.c]</p>
</blockquote>

<p><strong><a name="2008-01-07T205840.018332Z"></a>
2008-01-07T20:58:40.018332Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the obsolete gconfigv.h.
</pre>
<p>[src/lib.mak toolbin/msvcxml.bat src/openvms.mak src/unix-end.mak src/gs.mak src/std.h src/gscdefs.h src/macos-mcp.mak src/openvms.mmk src/os2.mak src/wctail.mak src/winlib.mak]</p>
</blockquote>

<p><strong><a name="2008-01-07T205836.882379Z"></a>
2008-01-07T20:58:36.882379Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove EXTEND_NAMES from the top level makefiles.

There is a fallback to the default value of 0 in inameidx.h so there
is no change in the default behaviour. The extended name table can
still be activated by defining EXTEND_NAMES on the compiler command
line or changing the source directly.
</pre>
<p>[toolbin/msvcxml.bat src/openvms.mak src/unix-end.mak src/gs.mak doc/Use.htm src/int.mak src/macosx.mak src/Makefile.in src/inameidx.h src/unix-gcc.mak src/macos-mcp.mak src/openvms.mmk src/os2.mak src/wctail.mak src/winlib.mak]</p>
</blockquote>

<p><strong><a name="2008-01-07T184302.811990Z"></a>
2008-01-07T18:43:02.811990Z Henry Stiles</strong></p>
<blockquote>
<pre>
Deprecate USE_FPU, no changes expected.
</pre>
<p>[src/gxchar.c src/openvms.mak src/unix-end.mak src/gsjmorec.h src/macosx.mak src/dvx-gcc.mak src/gxfarith.h src/msvccmd.mak src/siscale.c src/unixansi.mak src/gsmisc.c src/msvclib.mak src/gsfemu.c src/os2.mak src/openvms.mmk src/lib.mak src/bcwin32.mak src/ugcclib.mak src/gscie.h src/Makefile.in src/unix-gcc.mak src/gxfixed.h src/msvc32.mak src/macos-mcp.mak src/wccommon.mak src/wctail.mak src/winlib.mak src/watclib.mak]</p>
</blockquote>

<p><strong><a name="2008-01-02T235844.056429Z"></a>
2008-01-02T23:58:44.056429Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Re-export runpdfbegin, dopdfpages, and runpdfend procedures, which turned out
to be used by 3rd party programs. Partly revert the rev. 8325.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2008-01-02T131059.547816Z"></a>
2008-01-02T13:10:59.547816Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Tidy up after the prior patch, 
algorithmically this is the same as before.

Details:
Bug #689597 "PDF created with NoEmbed has wrong BaseFont name".

gdevpdtb.c, gdevpdtf.c, gdevpdtf.h, remove the redundant
routine pdf_choose_font_name.

gdevpdtb.c, gdevpdtd.c, gdevpdtf.c, gdevpdtb.h, modify the
function pdf_base_font_alloc to remove the redundant
argument 'orig_name', we always use the original font name
now.

</pre>
<p>[src/gdevpdtb.c src/gdevpdtd.c src/gdevpdtf.c src/gdevpdtb.h src/gdevpdtf.h]</p>
</blockquote>

<p><strong><a name="2008-01-01T204452.186969Z"></a>
2008-01-01T20:44:52.186969Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Don't ignore xref stream in a hybrid  "classic xref" + "stream xref" file
as PDF 1.5-compatible should do. Thanks to SaGS for the patch. Bug 688282.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2008-01-01T142830.927323Z"></a>
2008-01-01T14:28:30.927323Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Replace clearly invalid generation numbers out of 0..65535 range with 0 during
rebuilding of xref table. Bug 689634.

</pre>
<p>[lib/pdf_rbld.ps]</p>
</blockquote>

<p><strong><a name="2008-01-01T013052.687921Z"></a>
2008-01-01T01:30:52.687921Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the SYSTEM_CONSTANTS_ARE_WRITABLE compile-time define.

Details:

This was added so a particular application could rewrite the product name,
version, etc. after loading the library. We're not aware of anyone still
using the feature, and if so they can just change the source, which is
more appropriate in any case.

Also, remove USE_ASM from the msvc project file.
</pre>
<p>[toolbin/msvcxml.bat src/openvms.mak src/unix-end.mak src/gs.mak src/gscdefs.h src/openvms.mmk src/os2.mak src/wctail.mak src/winlib.mak src/gscdef.c]</p>
</blockquote>

<p><strong><a name="2007-12-31T224650.849681Z"></a>
2007-12-31T22:46:50.849681Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add a flag that marks PDF text rendering mode 3 to avoid confusion with other
non-rendering text operations such as stringwidth. This avoids unnecessary 
calculation of the current point, which fails when the CTM is singular. This
patch continues conservative approach to the text rendering modes started in
rev. 4006. Bug 689614, customer 384.

</pre>
<p>[src/gxchar.c src/gstext.c src/gstext.h]</p>
</blockquote>

<p><strong><a name="2007-12-31T190652.216061Z"></a>
2007-12-31T19:06:52.216061Z Ray Johnston</strong></p>
<blockquote>
<pre>
Correct polarity of the stochastic threshold array so that the images are
not too dark.

DETAILS:

The original conversion from the threshold array provided by CalComp had
the threshold values inverted so that the implicit linearization was
inverted, making images much too dark. This correction provides reasonable
results on printers. Fine tuning of transfer functions can be used for
specific printers.

</pre>
<p>[lib/ht_ccsto.ps]</p>
</blockquote>

<p><strong><a name="2007-12-31T180759.109475Z"></a>
2007-12-31T18:07:59.109475Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the USE_ASM build flag.
    
Details:
   
It was originally added to support vga mode setting, and has been 
used for a few minor optimizations since. We don't believe these 
are worth the trouble with modern compilers, so it is removed to 
simplify configuration management.

</pre>
<p>[src/unix-end.mak src/openvms.mak src/watcw32.mak src/gdevpcfb.c doc/Develop.htm src/msvccmd.mak src/iutilasm.asm src/gsmisc.c src/msvclib.mak src/dvx-head.mak src/devs.mak src/os2.mak src/openvms.mmk src/unixhead.mak src/lib.mak src/bcwin32.mak src/winint.mak src/gdevegaa.asm src/msvc32.mak src/gdevsvga.c src/gsutil.c src/wccommon.mak src/wctail.mak src/winlib.mak]</p>
</blockquote>

<p><strong><a name="2007-12-31T061033.027699Z"></a>
2007-12-31T06:10:33.027699Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Don't try to obtain the bounding box of a glyph when FontBBox is invalid and
CTM is singular. Set an empty box and consider it valid. The bounding box is
not used when the CTM is singular. Bug 689614, customer 384.

</pre>
<p>[src/zchar1.c]</p>
</blockquote>

<p><strong><a name="2007-12-29T025321.940078Z"></a>
2007-12-29T02:53:21.940078Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the ARCH_CAN_SHIFT_FULL_LONG define and its derivatives. Bug 689611.

Details:

This was only used in one place, in an attempt to support
non-portable code. However this caused problems with recent
gcc's which optimized the test one way and the code in gxshade.c
another. We're therefore removing it entirely and just using
portable code.
</pre>
<p>[src/std.h src/gxshade.c src/gxbitops.h src/genarch.c]</p>
</blockquote>

<p><strong><a name="2007-12-27T222836.610626Z"></a>
2007-12-27T22:28:36.610626Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add -Wundef to the autoconf build.

There have been a number of problems related to missing defines lately.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-12-22T191320.335131Z"></a>
2007-12-22T19:13:20.335131Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correction to the refcount documentation.

Our allocator can't double free, but attempting to trace a freed pointer
can confuse things, possibly resulting in a segfault or other
misbehaviour.
</pre>
<p>[src/gsrefct.h]</p>
</blockquote>

<p><strong><a name="2007-12-22T020540.922995Z"></a>
2007-12-22T02:05:40.922995Z Ralph Giles</strong></p>
<blockquote>
<pre>
Also remove gdevcmap from the documentation.
</pre>
<p>[doc/Develop.htm]</p>
</blockquote>

<p><strong><a name="2007-12-22T020536.008019Z"></a>
2007-12-22T02:05:36.008019Z Ralph Giles</strong></p>
<blockquote>
<pre>
Include gconfigv.h in std.h so defines like USE_FPU are more
consistently defined.
</pre>
<p>[src/lib.mak src/gscie.h src/std.h src/gdevpcfb.c src/gxfarith.h src/siscale.c src/gsmisc.c src/gdevsvga.c src/devs.mak src/sidscale.c src/gxpcopy.c]</p>
</blockquote>

<p><strong><a name="2007-12-22T001936.075695Z"></a>
2007-12-22T00:19:36.075695Z Ralph Giles</strong></p>
<blockquote>
<pre>
Document the behaviour of the reference count macros.
</pre>
<p>[src/gsrefct.h]</p>
</blockquote>

<p><strong><a name="2007-12-22T001005.865239Z"></a>
2007-12-22T00:10:05.865239Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the unused cmap device.
</pre>
<p>[src/lib.mak src/ugcclib.mak src/gslib.c src/gdevcmap.c src/gdevcmap.h]</p>
</blockquote>

<p><strong><a name="2007-12-21T195819.459173Z"></a>
2007-12-21T19:58:19.459173Z Ralph Giles</strong></p>
<blockquote>
<pre>
Further update the graphics library unit test and build. The gslib test 
executable builds and works now.

</pre>
<p>[src/ugcclib.mak src/gslib.c]</p>
</blockquote>

<p><strong><a name="2007-12-21T195607.995361Z"></a>
2007-12-21T19:56:07.995361Z Ralph Giles</strong></p>
<blockquote>
<pre>
Construct romfs.dev in the graphics library's gen directory instead of 
the ps interpreter's so building just the library is possible.
</pre>
<p>[src/gs.mak]</p>
</blockquote>

<p><strong><a name="2007-12-21T103100.226023Z"></a>
2007-12-21T10:31:00.226023Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (jbig2dec): The global data stream for a JBIG2 image in a PDF
file was being released, and the data freed by the garbage collector,
before the data was used.

Details: Bug #689568 and #689569. Uses the patch supplied by Alex
in thread for #689569, implements Ralph's comments about the structure 
naming. Does not attempt to change the memory allocator. This slightly
modified patch also works with the Luratech decoder.

sjbig2.h, sjbig2_luratech.h; make the global data structure 
s_jbig2_global_data_t public. Store the structure in the 
stream decoder state.

sjbig2.c, sjbig2_luratech.c; store a pointer to the global
data structure. 

sjbig2_luratech.c; don't reset the pointer during initialisation!

zfjbig2.c; Pass the global pointer to the stream decoder for
release in the finalize routine.

</pre>
<p>[src/sjbig2_luratech.h src/zfjbig2.c src/sjbig2.c src/sjbig2.h src/sjbig2_luratech.c]</p>
</blockquote>

<p><strong><a name="2007-12-21T001553.911110Z"></a>
2007-12-21T00:15:53.911110Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove some old helper scripts.

They aren't used much and we no longer wish to maintain them.
</pre>
<p>[toolbin/many2pdf.tcl toolbin/pre toolbin/gssubst toolbin/gsindent]</p>
</blockquote>

<p><strong><a name="2007-12-21T001154.376327Z"></a>
2007-12-21T00:11:54.376327Z Ralph Giles</strong></p>
<blockquote>
<pre>
Make pre.tcl more robust in creating temporary files.

Also update the copyright header and fix a bug in an error handler.
</pre>
<p>[toolbin/pre.tcl]</p>
</blockquote>

<p><strong><a name="2007-12-19T062541.308572Z"></a>
2007-12-19T06:25:41.308572Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Ignore operator readonly when it is applied to a wrong type inside an
embedded Type 1 font. Bug 689617, customer 580.

</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2007-12-19T062222.816836Z"></a>
2007-12-19T06:22:22.816836Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Treat the text after empty ASCII block in PFB stream as ASCII sub-stream
terminated by 0x80 character, a presumed header of the next block.
Bug 689617, customer 580.

</pre>
<p>[src/sfilter1.c]</p>
</blockquote>

<p><strong><a name="2007-12-19T002508.107768Z"></a>
2007-12-19T00:25:08.107768Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the graphics library unit tests for recent code changes.
</pre>
<p>[src/gslib.c]</p>
</blockquote>

<p><strong><a name="2007-12-18T100307.564012Z"></a>
2007-12-18T10:03:07.564012Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Font Descriptors for fonts not embedded, due to
EmbedAllFonts=false, did not preserve the original font name.

Details:
Bug #689597 "PDF created with NoEmbed has wrong BaseFont name".

(gdevpdtd.c) pdf_font_descriptor_alloc, do not use the 'embed'
status to determine whether to use the font or key name. Always
use the font name.

pdf_compute_font_descriptor. Remove the simplistic test for
symbolic. In the loop retrieving glyph information, check to see 
if the glyph name is present in ISO Latin 1. If not, the font is
symbolic.

</pre>
<p>[src/gdevpdtd.c]</p>
</blockquote>

<p><strong><a name="2007-12-18T100209.815887Z"></a>
2007-12-18T10:02:09.815887Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): PDFXTrimBoxToMediaBoxOffset used the supplied data
incorrectly.

Details:
Bug #689578 "PDFXTrimBoxToMediaBoxOffset".

Patch supplied by Adam Augusta.

(gdevpdf.c) pdf_write_page. When using the PDFXTrimBoxToMediaBoxOffset
data, we need to subtract the bottom right offset from the MediaBox
not add it, the trim box must lie inside the media (see Acrobat 7.0
distiller parameters manual, pp. 102-103).

</pre>
<p>[src/gdevpdf.c]</p>
</blockquote>

<p><strong><a name="2007-12-18T034036.305448Z"></a>
2007-12-18T03:40:36.305448Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the unused composite_rop device.

DETAILS:

This was an attempt to implement PCL raster operations as an interposed 
device which first rendered to an intermediate buffer and them 
composited with the underlying device buffer, similar to how the
"PDF 1.4 Transparency" device works.

While this would be a nice approach, allowing raster operations to 
function in more color spaces, it was never completed, and presents
a maintenance burden for ongoing clist improvements. We are therefore
removing it. It can be reinstated later as a starting point for further 
development if needed.
</pre>
<p>[src/lib.mak src/gsropc.c src/gsropc.h doc/Develop.htm src/gxropc.h]</p>
</blockquote>

<p><strong><a name="2007-12-17T213335.320044Z"></a>
2007-12-17T21:33:35.320044Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (transparency) : Providing a right nested masks logic (continued).

DETAILS :

The revision 8439 missed an initializer.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-12-17T072822.397599Z"></a>
2007-12-17T07:28:22.397599Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Improve outline pdfmarks produced by the pdf interpreter. Add page number and view
values. Thanks to Leon Bottou for the patch. Bug 689599.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2007-12-16T153809.417159Z"></a>
2007-12-16T15:38:09.417159Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist interpreter) : Improving debug trace about compositors.

DETAILS :

This only improves a debug printing.
The algorithm isn't changed.

This change simplifies the debug trace analysis with
using C function names as event marks in the trace.
Also return_error is now not used when c_pdf14trans_write
is called for estimating the buffer size.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-12-16T013756.744199Z"></a>
2007-12-16T01:37:56.744199Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Don't skip space characters after eexec in embedded PDF fonts but
continue to do so in other cases. Bug 689615.

</pre>
<p>[src/seexec.c src/sfilter.h lib/pdf_font.ps src/zmisc1.c doc/Language.htm]</p>
</blockquote>

<p><strong><a name="2007-12-14T195101.706015Z"></a>
2007-12-14T19:51:01.706015Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Work around a GCC 4.2.1 bug on PowerPC that generates incorrect code in the
release build affecting scanning of binary tokens containing floating point
numbers. Bug 689586.

</pre>
<p>[src/ibnum.c]</p>
</blockquote>

<p><strong><a name="2007-12-14T184031.738291Z"></a>
2007-12-14T18:40:31.738291Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Added casts to sprintf debugging statements (thanks for Michael Rutter for finding these).
</pre>
<p>[contrib/eplaser/gdevescv.c]</p>
</blockquote>

<p><strong><a name="2007-12-14T183139.938693Z"></a>
2007-12-14T18:31:39.938693Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Align the pointer to gx_clist_state array in gx_device_clist_writer device to
the natural boundary to avoid misaligned memory access and bus errors on ARM
processors. Bug 689600.

</pre>
<p>[src/gxclist.c]</p>
</blockquote>

<p><strong><a name="2007-12-12T202944.002303Z"></a>
2007-12-12T20:29:44.002303Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (transparency) : Providing a right nested masks logic.

DETAILS :

This redoes the change 8340 without extra assumptions.
See comments in code.

</pre>
<p>[src/gdevp14.h src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-12-12T195831.269810Z"></a>
2007-12-12T19:58:31.269810Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (transparency) : Unwinding the nested masks logic.

DETAILS :

The patch 8340 appears to be optimized for a particular case,
in which a call to pdf14_push_transparency_group
"will have been preceded by pdf14_push_transparency_mask ... pdf14_pop_transparency_mask".
This assumption is not true in general, when the clist interpreter
skips idle groups (either with incoming improvement or 
with using the band complexity array).

This patch unwinds the change 8340 and the dependent change 8342.
It also simplifies the garbager descriptor for pdf14_buf_s.

The nested mask problem is now reopen,
but we intend to close it shortly with a different patch.

</pre>
<p>[src/gdevp14.h src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-12-12T190044.753250Z"></a>
2007-12-12T19:00:44.753250Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist interpreter) : Skip idle compositors, step 4.

DETAILS :

gs_pdf14trans_s doesn't need a reference counting.
Actually it was never used, so removing it should be
algorithmically equivalent.

</pre>
<p>[src/gsropc.c src/gsalphac.c src/gxcomp.h src/gsovrc.c src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-12-11T234718.340705Z"></a>
2007-12-11T23:47:18.340705Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for SEGV when more than 4 colorants used with psdcmyk device.
Bug 689457 for customer #460.

DETAILS: 

Apparently the psdcmyk device never got updated with the ret_devn_params proc
as did the tiffsep device.
</pre>
<p>[src/gdevpsd.c]</p>
</blockquote>

<p><strong><a name="2007-12-11T212702.763129Z"></a>
2007-12-11T21:27:02.763129Z Ralph Giles</strong></p>
<blockquote>
<pre>
Store the posix persistent cache's last modified line as an unsigned 
long to avoid portability problems when reading and writing. Bug 689604.

DETAILS:

Previously we used time_t directly, but read and wrote it to the 
filesystem using the %ld printf format specifier, which is wrong
on systems where long int and time_t are different widths. Instead
we stort it as an unsigned long int, coercing the return value of
time(). This will be a year 2038 problem on systems with 32 bit longs, 
but seems the better option for portability now. There is no cast,
so the compiler should warn if this loses precision.
</pre>
<p>[src/gp_unix_cache.c]</p>
</blockquote>

<p><strong><a name="2007-12-11T165405.187153Z"></a>
2007-12-11T16:54:05.187153Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Replaced C++ comments with C comments (// -&gt; /* */).
</pre>
<p>[imdi/imdi.c imdi/imdi_tab.c imdi/imdi_gen.c imdi/cctiff.c]</p>
</blockquote>

<p><strong><a name="2007-12-11T082958.454613Z"></a>
2007-12-11T08:29:58.454613Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (jbig2dec): Missing support for decoding multiple symbols
from a symbol dictionary, when using refinement/aggregation.

Details:
Bug #688945 "jbig2dec FATAL ERROR decoding image: aggregate
coding with REFAGGNINST=2 (segment 0x03)".

Improved the previous patch. We need to have a symbol dictionary
which contains all the original symbols, plus all the symbols decoded
so far, for the refinement/aggregation. Previously we created this
anew for each symbol, this patch creates the dictionary once at
the start of the dictionary decoding, and releases it when decoding
is complete.

Also releases the Huffman tables (if used), which was missed
in the previous patch.

</pre>
<p>[jbig2dec/jbig2_symbol_dict.c]</p>
</blockquote>

<p><strong><a name="2007-12-10T221105.461373Z"></a>
2007-12-10T22:11:05.461373Z Tor Andersson</strong></p>
<blockquote>
<pre>
Update to previous commit. Add pdf14_buffer maskbuf pointer to GC structures.</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-12-10T202711.787298Z"></a>
2007-12-10T20:27:11.787298Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a compilation error on Tru64's native cc, which doesn't tolerate spaces
between -I and the directory. Thanks to M. Rutter for the patch. Bug 689602
</pre>
<p>[contrib/contrib.mak]</p>
</blockquote>

<p><strong><a name="2007-12-10T161326.551663Z"></a>
2007-12-10T16:13:26.551663Z Tor Andersson</strong></p>
<blockquote>
<pre>
Pick up the transparency mask buffer when a new transparency group is pushed rather than when it is popped. Solves memory leaks and incorrect rendering when transparency groups are nested.</pre>
<p>[src/gdevp14.h src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-12-10T094503.624134Z"></a>
2007-12-10T09:45:03.624134Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (jbig2dec): Missing support for decoding multiple symbols
from a symbol dictionary, when using refinement/aggregation.

Details:
Bug #688945 "jbig2dec FATAL ERROR decoding image: aggregate
coding with REFAGGNINST=2 (segment 0x03)".

Added missing support. When decoding a symbol dictionary, using
refinement/aggregation, and decoding multiple symbols, we need
to use text region decoding (single symbols use refinement
region decoding, already implemented).

This required making the text region decoding procedure available
to the symbol dictionary decoding routine, and correctly
initialising the parameters.

(jbig2_text.h) New include file. The 'Jbig2TextRegionParams'
structure and Jbig2RefCorner enum have been moved here from
jbig2_text.c, and a prototype for 'jbig2_decode_text_region'
created.

Added pointers for the adaptive arithmetic decoder tables to the
Jbig2TextRegionParams structure, as these tables must now be passed
to the decoder routine (see below) rather than initialised in it.

(jbig2_text.c) Modified the 'jbig2_decode_text_region' routine to
take the arithmetic decoder state or data stream (for Huffman
decoding) as a parameter. When being called from the symbol
dictionary decoder we must use the current decoder state; removed
the initialisation of the decoder state, this is passed as a
parameter Removed the initialisation of the adaptive arithmetic
decoder tables, these are now passed as part of the
Jbig2TextRegionParams structure.

Modified 'jbig2_parse_text_region' to create and initialise the
arithmetic decoder state (or data stream for Huffman). If
using adaptive arithmetic encoding, create and initialise the
tables.Required now that these are parameters to the text
region decoder.

(jbig2_symbol_dict.c) 'jbig2_decode_symbol_dict', when we
encounter refinement/aggregation with REFAGGNINST &gt; 1, instead of
flagging an error create a Jbig2TextRegionParams structure (if
not already present), initialise the arithmetic decoder tables, and
call the text region decoder to create the bitmap. If we already
have a Jbig2TextRegionParams structure (because we have already
decoded a symbol this way) just use it as the argument to the
text region decoder.

</pre>
<p>[jbig2dec/jbig2_text.c src/jbig2.mak jbig2dec/jbig2_symbol_dict.c jbig2dec/jbig2_text.h]</p>
</blockquote>

<p><strong><a name="2007-12-09T063300.168945Z"></a>
2007-12-09T06:33:00.168945Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use a smaller buffer for eexecDecode filter to avoid consumption of the data
that follow a short (and incorrect) run of 0's in PS files generated by
Adobe Acrobat from PDF files with usage restrictions. Bug 689577

DETAILS:
The buffer size of 132 has been selected from a middle of small window that
fixes the bug but doesn't cause regession in comparefiles/fonttest.pdf.
Detection of EOF after seing a run of 0's is worth to note as an alternative.

</pre>
<p>[src/seexec.c]</p>
</blockquote>

<p><strong><a name="2007-12-08T135753.015953Z"></a>
2007-12-08T13:57:53.015953Z Ken Sharp</strong></p>
<blockquote>
<pre>
Update the MSVC makefile to work with Visual Studio 2005 (nmake version 8). 
Should still be OK with MSVC 6.
</pre>
<p>[jbig2dec/msvc.mak]</p>
</blockquote>

<p><strong><a name="2007-12-07T233906.271814Z"></a>
2007-12-07T23:39:06.271814Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist interpreter) : Skip idle compositors, step 3.

DETAILS :

The clist writer writes the 'create compositor' operation to all bands,
including ones that are not covered by a transparency.
It does so because this operation changes the number of color components.

When rendering a specific band, it frequently happens that a compositor
is created and then immediately destroyed. Such thing happens outside 
the transparency bbox, and within the transparency bbox if
the band has no transparent objects. When compositor is created,
it allocates a big raster buffer and cleans it. 
Due to that we observe a significant CPU time expence
when running the test case of the bug 689155.

This patch is a preparation for further improvements.
This patch includes CTM into pdf14 compositor params
(see changes to c_pdf14trans_read, c_pdf14trans_write, clist_create_compositor).
The result should be same as the old code, but the algorithm is different.
The old code wrote CTM as a separate command before cmd_opv_ext_create_compositor.
The new code does not, and in many cases compositor commads 
immediately follow each another.

The last fact changes the behavior of the compositor queue :
before this patch it consisted of 1 element maximum,
but after it the queue becomes longer (up to 10 elements
with SoftMaskGroup.pdf). A bug is fixed in the queue logic 
in gxclrast.c ln 1355.

The queue is still immediately executed
when a non-compositor command appears in the input stream.
An annihilation of neighbour idle compositors will be a next step.

Minor changes:

- added a new method adjust_ctm to gs_composite_type_procs_t.
- added type checks with composite_*_proc macros to all compositor types.
- dependencies were broken for gdevp14.c in lib.mak .

</pre>
<p>[src/lib.mak src/gsropc.c src/gdevdflt.c src/gxclpath.h src/gxcldev.h src/gsalphac.c src/gxcomp.h src/gsovrc.c src/gstrans.h src/gxclrast.c src/gdevp14.c src/gxclpath.c src/gxclimag.c src/gxclutil.c]</p>
</blockquote>

<p><strong><a name="2007-12-05T233942.529355Z"></a>
2007-12-05T23:39:42.529355Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist interpreter) : Skip idle compositors, step 2.

DETAILS :

The clist writer writes the 'create compositor' operation to all bands,
including ones that are not covered by a transparency.
It does so because this operation changes the number of color components.

When rendering a specific band, it frequently happens that a compositor
is created and then immediately destroyed. Such thing happens outside 
the transparency bbox, and within the transparency bbox if
the band has no transparent objects. When compositor is created,
it allocates a big raster buffer and cleans it. 
Due to that we observe a significant CPU time expence
when running the test case of the bug 689155.

This patch is a preparation for further improvements.
The change is algorithmically equivalent.
It implements a compositor queue for a delayed applying of compositors.
Nevertheless currently the compositors are still applied immediately 
due to stubs in is_null_compositor_op, is_closing_compositor.

</pre>
<p>[src/gxcomp.h src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2007-12-05T164041.424504Z"></a>
2007-12-05T16:40:41.424504Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist interpreter) : Skip idle compositors, step 1.

DETAILS :

The clist writer writes the 'create compositor' operation to all bands,
including ones that are not covered by a transparency.
It does so because this operation changes the number of color components.

When rendering a specific band, it frequently happens that a compositor
is created and then immediately destroyed. Such thing happens outside 
the transparency bbox, and within the transparency bbox if
the band has no transparent objects. When compositor is created,
it allocates a big raster buffer and cleans it. 
Due to that we observe a significant CPU time expence
when running the test case of the bug 689155.

This patch is a preparation for further improvements.
The change is algorithmically equivalent.
I simply divides read_create_compositor into 2 ones :
the first one just reads the instruction,
and the second one applies it. 
Also did a mionor code cleanup.

</pre>
<p>[src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2007-12-05T000850.583846Z"></a>
2007-12-05T00:08:50.583846Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Let CUPS filters use buffered input to Ghostscript via '-_', to work around bug #689577. 
</pre>
<p>[cups/pstoraster.in cups/pstopxl.in]</p>
</blockquote>

<p><strong><a name="2007-12-03T213116.528843Z"></a>
2007-12-03T21:31:16.528843Z Henry Stiles</strong></p>
<blockquote>
<pre>
Replace the "tricky" unit_frac macro with a normal function call.  The
macro produced a false positive in valgrind and seems to cause
incorrect code generation on gcc 4.1.2 with optimization but we did
not study it in detail.  The change should be equivalent to the
previous code, reviewed by Ralph Giles.
</pre>
<p>[src/gxcmap.c src/gxcmap.h src/gscsepr.c src/gscdevn.c]</p>
</blockquote>

<p><strong><a name="2007-12-03T200705.165284Z"></a>
2007-12-03T20:07:05.165284Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (shadings) : Optimize fill_linear_color_scanline with analitic computation of the color change position.

DETAILS :

Debugged with the test case of the bug 689155.

This optimizes slightly changing gradients.
It speeds up the test case from 6 hours to 5 hours.

The old code in gx_default_fill_linear_color_scanline 
recomputes color for each pixel.
The new code checks whether neighbour pixels have same color,
and if so it finds the color change position 
with solving a linear equation, 
and fills entire constant color interval 
without computing color for each pixel.

The linear equation is solved with 64 bits arithmetics.
We would like to create a 32bits algorithm someday.
We think it is possible with rounding colors to 16 bits
and restricting a run length with 15 bits. 
Note it must not accummulate rounding errors,
so it needs to compute from the run start at each iteration.
So if the scanline is wide, first split it into smaller ones
by coordinates, then break each subscanline into runs by color changes.

</pre>
<p>[src/gdevdsha.c]</p>
</blockquote>

<p><strong><a name="2007-11-30T221349.581001Z"></a>
2007-11-30T22:13:49.581001Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Add a tool that analyzes logs produced by gs -Z67, producing a report of
memory leaks.
</pre>
<p>[toolbin/memory.py]</p>
</blockquote>

<p><strong><a name="2007-11-30T064347.688763Z"></a>
2007-11-30T06:43:47.688763Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Adds the base font address to the -Zm tracing output.
</pre>
<p>[src/gsfont.c]</p>
</blockquote>

<p><strong><a name="2007-11-30T064312.449891Z"></a>
2007-11-30T06:43:12.449891Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes bug: -Z89 produced slightly mangled output (-Z9 output inserted in the
middle of a line of -Z8 output).
</pre>
<p>[src/igcref.c]</p>
</blockquote>

<p><strong><a name="2007-11-30T004553.632689Z"></a>
2007-11-30T00:45:53.632689Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add URW fonts to the Resource/Font directory. These will be included when
COMPILE_INITS=1. Fontmap.GS still references the disk file name so that
the disk file based fonts can still be used if they are available.
</pre>
<p>[Resource/Font/URWPalladioL-BoldItal Resource/Font/NimbusRomNo9L-Medi Resource/Font/NimbusSanL-Bold Resource/Font/Dingbats Resource/Font/URWChanceryL-MediItal Resource/Font/CenturySchL-Roma Resource/Font Resource/Font/NimbusMonL-Bold Resource/Font/URWGothicL-Demi Resource/Font/NimbusSanL-BoldItal Resource/Font/NimbusRomNo9L-MediItal Resource/Font/StandardSymL Resource/Font/URWBookmanL-DemiBold Resource/Font/NimbusRomNo9L-Regu Resource/Font/URWGothicL-Book Resource/Font/NimbusSanL-ReguCond Resource/Font/CenturySchL-Bold Resource/Font/URWBookmanL-Ligh Resource/Font/NimbusRomNo9L-ReguItal Resource/Font/URWBookmanL-DemiBoldItal Resource/Font/NimbusMonL-ReguObli Resource/Font/NimbusSanL-ReguCondItal Resource/Font/CenturySchL-Ital Resource/Font/URWPalladioL-Roma Resource/Font/CenturySchL-BoldItal Resource/Font/URWBookmanL-LighItal Resource/Font/NimbusSanL-BoldCond Resource/Font/NimbusMonL-BoldObli Resource/Font/NimbusSanL-BoldCondItal Resource/Font/URWGothicL-DemiObli Resource/Font/NimbusSanL-Regu Resource/Font/URWPalladioL-Bold Resource/Font/NimbusMonL-Regu Resource/Font/URWGothicL-BookObli Resource/Font/NimbusSanL-ReguItal Resource/Font/URWPalladioL-Ital]</p>
</blockquote>

<p><strong><a name="2007-11-29T213953.584646Z"></a>
2007-11-29T21:39:53.584646Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (shadings) : Optimize path manipulations for shading fill (continued).

DETAILS :

Debugged with the test case of the bug 689155.

A long ago the graphics library converted the sfill clipping into a path.
It was improved with revision 8017 with introducing 
a device response for pattern_manage__shfill_doesnt_need_path.
However the revision 8017 appears incomplete : 
it missed the related change to the clist writer device
and to pdf14 device. This patch fixes it.

This patch causes a progression for the problem
known as bug 689338 "Raster depends on bands".
With banded rendering some shadings are now painted some wider,
and the raster appears equal to one from unbanded rendering.
It happens because the old code doesn't convert shfill clipping
into a path when no banding, and does convert when banding.
The new code does not convert in both cases.

</pre>
<p>[src/gdevp14.c src/gxclpath.c src/gxclrect.c]</p>
</blockquote>

<p><strong><a name="2007-11-29T014216.432740Z"></a>
2007-11-29T01:42:16.432740Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Remove obsolete variables dstderr and estderr; repair tracing code in
igcstr.c that would cause a crash if -Z5 was used.

</pre>
<p>[src/interp.c src/gdebug.h src/igcstr.c]</p>
</blockquote>

<p><strong><a name="2007-11-28T200434.791598Z"></a>
2007-11-28T20:04:34.791598Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add the 'pamcmyk32' (previously the 'pam' device) to all default builds.
This will be used for regression testing of 32-bit CMYK.

DETAILS:

The 'pam' device is retained, but not included in the default builds,
in case anyone was using this. The 'pamcmyk32' name was created as
more descriptive.
</pre>
<p>[src/bcwin32.mak src/openvms.mak src/ugcclib.mak src/macosx.mak src/watcw32.mak src/dvx-gcc.mak src/msvc32.mak src/unix-gcc.mak src/gdevpbm.c src/unixansi.mak src/macos-mcp.mak src/devs.mak src/os2.mak]</p>
</blockquote>

<p><strong><a name="2007-11-28T194748.435055Z"></a>
2007-11-28T19:47:48.435055Z Ralph Giles</strong></p>
<blockquote>
<pre>
Document the jasper build file version skew menioned in Bug 689570.
</pre>
<p>[doc/Release.htm]</p>
</blockquote>

<p><strong><a name="2007-11-28T184655.924792Z"></a>
2007-11-28T18:46:55.924792Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix #defines when USE_COMPRESSED_ENCODING == 0 so that the number of
components, separable/linear and encode/decode values are correct.
Also add checking for TIFF file larger than max_long.
</pre>
<p>[src/gdevtsep.c]</p>
</blockquote>

<p><strong><a name="2007-11-28T183959.435918Z"></a>
2007-11-28T18:39:59.435918Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix CIEBasedA problem, add DeviceGray and DeviceRGB support to this utility.

DETAILS:

This isn't used by Ghostscript, but is a useful utility for 'running' a
CIE colorspace conversion to see the intermediate and final results.
</pre>
<p>[lib/docie.ps]</p>
</blockquote>

<p><strong><a name="2007-11-27T225840.032075Z"></a>
2007-11-27T22:58:40.032075Z Ralph Giles</strong></p>
<blockquote>
<pre>
Also install gdevdsp.h in the unix so build. This header contains the
callback definitions for the "display" device. Bug 689576.
</pre>
<p>[src/unix-dll.mak]</p>
</blockquote>

<p><strong><a name="2007-11-27T204309.836338Z"></a>
2007-11-27T20:43:09.836338Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the regression code license headers with the current contact
address.
</pre>
<p>[toolbin/tests/dump_checksum.py toolbin/tests/cmpi.py toolbin/tests/gscheck_testfiles.py toolbin/tests/dump_checksum_plus.py toolbin/tests/check_source.py toolbin/tests/gssum.py toolbin/tests/gscheck_all.py toolbin/tests/dump_checksum_raw.py toolbin/tests/make_two_pdfversions toolbin/tests/check_all.py toolbin/tests/rasterdb.py toolbin/tests/gsutil.py toolbin/tests/gscheck_fuzzypdf.py toolbin/tests/revert_pdfbaseline toolbin/tests/build_revision.py toolbin/tests/compare_checksumdb.py toolbin/tests/gsconf.py toolbin/tests/revert_baseline toolbin/tests/update_baseline.py toolbin/tests/make_baselinedb.py toolbin/tests/gscheck_raster.py toolbin/tests/gsparamsets.py toolbin/tests/gstestutils.py toolbin/tests/compare_checksums.py toolbin/tests/check_dirs.py toolbin/tests/update_specific toolbin/tests/run_nightly.py toolbin/tests/gstestgs.py toolbin/tests/myoptparse.py toolbin/tests/run_regression.py toolbin/tests/get_baselines.py toolbin/tests/make_two_versions toolbin/tests/testdiff.py toolbin/tests/gscheck_pdfwrite.py toolbin/tests/make_testdb.py toolbin/tests/check_comments.py toolbin/tests/check_docrefs.py toolbin/tests/get_baseline_log.py]</p>
</blockquote>

<p><strong><a name="2007-11-27T204307.921159Z"></a>
2007-11-27T20:43:07.921159Z Ralph Giles</strong></p>
<blockquote>
<pre>
Change the regression scripts to rewrite the product as
"GPL Ghostscript".
</pre>
<p>[toolbin/tests/build_revision.py toolbin/tests/update_specific]</p>
</blockquote>

<p><strong><a name="2007-11-27T181110.542532Z"></a>
2007-11-27T18:11:10.542532Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics) : Improving the setoverprint logic.

DETAILS :

Debugged with the test case of the bug 689155.

This eliminates unnecessary calls of dx_device::procs.create_compositor.
In the test case the oprator 'show' calls gs_save and gs_restore
and the latter performs unnecessary call to gs_do_set_overprint
due to overprint is set at page start. It causes a significant CPU time expense 
while clist interpretation.

We're not sure why the old code is such,
we change it as we think correct.
Will see the regression test results.
A local test gave no differences.

</pre>
<p>[src/gsstate.c]</p>
</blockquote>

<p><strong><a name="2007-11-23T092306.243419Z"></a>
2007-11-23T09:23:06.243419Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Fonts containing glyphs with no sbw or hsbw
instruction caused pdfwrite to crash.

Details:
Bug #689544 "Segmentation fault writing PDF file".

The job contains a number of fonts apparently converted from 
TrueType to type 1. The /.notdef glyph in every case consists
only of an endchar instruction. Techincally invalid since the 
specification says the first instruction must be either an sbw
or hsbw instruction.

This causes a crash because gs_type1_glyph_info didn't create
a path before interpreting the glyph. If we encountered a path
operation before a sbw instruction we attempted to write to the 
non-existent path.

(gxtype1.c), gs_type1_glyph_info, create a path for the type 1
interpreter to work with. Make it a bbox_accumulator so we don't
allocate memory for path segments.

(gdevpsfu.c), psf_check_outline_glyphs, if we get an invalidfont
error return from the font's 'glyph_info' procedure, don't exit
immediately. Check each glyph, and only return an error if 
there are no good glyphs. 

</pre>
<p>[src/gxtype1.c src/gdevpsfu.c]</p>
</blockquote>

<p><strong><a name="2007-11-22T024659.719550Z"></a>
2007-11-22T02:46:59.719550Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct Id line and double-include protection warnings.
</pre>
<p>[src/ConvertUTF.h toolbin/tests/check_source.py src/expat.mak]</p>
</blockquote>

<p><strong><a name="2007-11-22T010346.485805Z"></a>
2007-11-22T01:03:46.485805Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the run_nightly regression script to rewrite the product
name to GPL Ghostscript instead of AFPL Ghostscript. Also, include
quotation marks in the optional part of the regex so we work when
GS_PRODUCT is set to another macro and does not include a literal
string, as it does at release time.
</pre>
<p>[toolbin/tests/run_nightly.py]</p>
</blockquote>

<p><strong><a name="2007-11-22T005403.544607Z"></a>
2007-11-22T00:54:03.544607Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a format string error in the PDF 1.4 spot color name generation.
</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-11-22T005401.468513Z"></a>
2007-11-22T00:54:01.468513Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update release procedure documentation.
</pre>
<p>[doc/Release.htm]</p>
</blockquote>

<p><strong><a name="2007-11-21T224203.178745Z"></a>
2007-11-21T22:42:03.178745Z Ralph Giles</strong></p>
<blockquote>
<pre>
Bump the version number and date after the 8.61 release.
</pre>
<p>[doc/News.htm lib/gs_init.ps src/gscdef.c src/version.mak]</p>
</blockquote>

<p><strong><a name="2007-11-21T200708.596302Z"></a>
2007-11-21T20:07:08.596302Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update changelogs and release date for the second 8.61 candidate.
</pre>
<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/Changes.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 src/version.mak man/pf2afm.1 doc/Ps2ps2.htm doc/Fonts.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp doc/Htmstyle.htm man/font2c.1 man/gsnd.1 man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Testing.htm doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm doc/Details.htm doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 man/ps2ps.1 doc/History5.htm doc/History6.htm]</p>
</blockquote>

<h2><a name="Version8.61"></a>Version 8.61 (2007-11-21)</h2>

<p>This is the second release in the Ghostscript 8.6x stable series. It 
contains a number of bug fixes and improvements.

<p> The following <a href="http://bugs.ghostscript.com/">bugs</a> were
open at the time of the last release: <blockquote>
226943,
430175,
465936,
493348,
535932,
578865,
614298,
626295,
686747,
686853,
686865,
687011,
687039,
687084,
687095,
687146,
687193,
687196,
687257,
687271,
687280,
687295,
687297,
687303,
687327,
687342,
687345,
687375,
687414,
687475,
687492,
687514,
687520,
687531,
687536,
687561,
687593,
687608,
687630,
687650,
687666,
687674,
687677,
687695,
687697,
687702,
687715,
687721,
687728,
687729,
687731,
687775,
687780,
687782,
687793,
687796,
687805,
687814,
687850,
687887,
687903,
687904,
687907,
687915,
687931,
687950,
687957,
687974,
687981,
687983,
688007,
688022,
688024,
688026,
688032,
688036,
688042,
688058,
688061,
688064,
688066,
688075,
688081,
688095,
688129,
688130,
688151,
688152,
688159,
688166,
688184,
688187,
688204,
688207,
688210,
688215,
688227,
688239,
688267,
688269,
688280,
688282,
688288,
688312,
688317,
688318,
688320,
688333,
688342,
688358,
688359,
688360,
688361,
688363,
688372,
688378,
688386,
688387,
688389,
688395,
688413,
688427,
688428,
688436,
688437,
688440,
688446,
688448,
688468,
688473,
688475,
688483,
688490,
688495,
688500,
688515,
688517,
688528,
688533,
688539,
688540,
688542,
688543,
688557,
688565,
688573,
688580,
688581,
688588,
688601,
688604,
688605,
688610,
688615,
688616,
688617,
688619,
688627,
688636,
688638,
688643,
688646,
688647,
688651,
688653,
688655,
688673,
688674,
688696,
688697,
688699,
688708,
688709,
688710,
688711,
688714,
688717,
688728,
688731,
688736,
688739,
688757,
688770,
688774,
688777,
688778,
688796,
688797,
688806,
688807,
688811,
688813,
688815,
688818,
688829,
688843,
688845,
688846,
688871,
688872,
688876,
688908,
688918,
688919,
688923,
688926,
688928,
688933,
688942,
688943,
688945,
688949,
688952,
688958,
688969,
688970,
688976,
688978,
688986,
688990,
688992,
688994,
688999,
689003,
689011,
689013,
689014,
689022,
689025,
689028,
689031,
689032,
689040,
689044,
689046,
689048,
689057,
689058,
689060,
689065,
689070,
689076,
689077,
689078,
689080,
689081,
689090,
689093,
689094,
689098,
689103,
689107,
689111,
689116,
689128,
689129,
689130,
689133,
689136,
689137,
689138,
689145,
689146,
689148,
689150,
689153,
689154,
689155,
689159,
689161,
689164,
689167,
689172,
689174,
689181,
689184,
689188,
689195,
689198,
689199,
689206,
689209,
689210,
689222,
689224,
689230,
689236,
689241,
689246,
689247,
689248,
689252,
689253,
689264,
689266,
689278,
689279,
689280,
689281,
689283,
689289,
689290,
689291,
689295,
689304,
689305,
689306,
689308,
689313,
689331,
689335,
689338,
689340,
689341,
689343,
689356,
689358,
689361,
689363,
689364,
689367,
689369,
689370,
689373,
689376,
689378,
689389,
689392,
689396,
689402,
689412,
689418,
689419,
689421,
689422,
689423,
689428,
689431,
689438,
689439,
689440,
689444,
689445,
689448,
689450,
689451,
689456,
689457,
689460,
689461,
689462,
689463,
689464,
689469,
689471,
689472,
689473,
689476,
689482,
689484,
689487,
689488,
689489,
689490,
689492,
689498,
689499,
689500,
689502,
689506,
689507,
689509,
689510,
689512,
689514,
689515,
689516,
689518,
689521,
689522,
689525,
689528,
689532,
689533,
689534,
689535,
689536,
689538,
689542,
689543,
689544,
689546,
689547,
689549,
689550,
689552,
689554,
689557,
689558,
689559,
689560,
689561,
689563,
689566,
689567,
689568,
689569.

</blockquote>

<h3><a name="8.61_Incompatible_changes"></a>Incompatible changes</h3>

<p>
The default device on unix-oriented builds was temporarily switched to 
the <tt>bbox</tt> device in the 8.60 release. In the 8.61 release, the
default was changed again to the <tt>x11alpha</tt> device, if X11 
support is available, and otherwise falls back to the <tt>bbox</tt> device. 

<h3><a name="8.61_changelog"></a>Changelog</h3>

<p><strong><a name="2007-11-21T194440.574652Z"></a>
2007-11-21T19:44:40.574652Z Ralph Giles</strong></p>
<blockquote>
<pre>
Revert the change to using an environment variable for the MSVC LIBPATH. 

Details:

This wasn't effective in addressing the problem and could cause 
additional trouble if the environment isn't configured. The changes
in r8394 should properly address the issue of quote interpretation
with MSVC6.
</pre>
<p>[src/msvc32.mak]</p>
</blockquote>

<p><strong><a name="2007-11-21T061053.144641Z"></a>
2007-11-21T06:10:53.144641Z Henry Stiles</strong></p>
<blockquote>
<pre>
Check that a device halftone exists before writing it.  Fixes
segmentation fault in xps.  No differences expected.
</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-11-21T055723.672501Z"></a>
2007-11-21T05:57:23.672501Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix compiler flag conflict for non-debug build (seen when switching
PCL6 build to default to non-debug default). Changes /ZI to /Zi.
</pre>
<p>[src/msvccmd.mak]</p>
</blockquote>

<p><strong><a name="2007-11-20T183658.009554Z"></a>
2007-11-20T18:36:58.009554Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix broken MSVC 6 build issue caused by change in src/msvccmd.mak that puts
a LIBPATH into the link command line. MSVC linker can't handle spaces in the
LIBPATH even if within " ". We use an environment variable set by Microsoft
MSVC 6 'vcvars32.bat' instead. This can be manually set if needed.
</pre>
<p>[src/msvc32.mak]</p>
</blockquote>

<p><strong><a name="2007-11-20T114222.623309Z"></a>
2007-11-20T11:42:22.623309Z Ken Sharp</strong></p>
<blockquote>
<pre>
Batch file to create MSVC solution and projects.

Usage:
msvcxml gs obj\ld.tr &gt; ghostscript.sln

This is the first attempt, and very poor.
</pre>
<p>[toolbin/msvcxml.bat]</p>
</blockquote>

<p><strong><a name="2007-11-19T235746.396323Z"></a>
2007-11-19T23:57:46.396323Z Ralph Giles</strong></p>
<blockquote>
<pre>
Change the product name for the release.
</pre>
<p>[src/gscdef.c]</p>
</blockquote>

<p><strong><a name="2007-11-19T235628.975783Z"></a>
2007-11-19T23:56:28.975783Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update changelogs for release.
</pre>
<p>[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]</p>
</blockquote>

<p><strong><a name="2007-11-19T203607.538187Z"></a>
2007-11-19T20:36:07.538187Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (transparency) : Wrong background color of a soft mask group.

DETAILS :

Bug 689531 "Regression: PDF file has undesired extra gray object.".

The old code used the 0th component of the background color
instead its gray equivalent.  The bug was introduced when 
working on bug 687176.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-11-19T202407.302766Z"></a>
2007-11-19T20:24:07.302766Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update documentation timestamps for 8.61.
</pre>
<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Ps2ps2.htm doc/Fonts.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp doc/Htmstyle.htm man/font2c.1 man/gsnd.1 man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Testing.htm doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]</p>
</blockquote>

<p><strong><a name="2007-11-19T202339.904096Z"></a>
2007-11-19T20:23:39.904096Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the verification checks for PVERSION and JVERSION, which we no 
longer use.
</pre>
<p>[toolbin/pre.tcl]</p>
</blockquote>

<p><strong><a name="2007-11-19T201545.795513Z"></a>
2007-11-19T20:15:45.795513Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add new files to the documentation.
</pre>
<p>[doc/Develop.htm doc/Psfiles.htm]</p>
</blockquote>

<p><strong><a name="2007-11-19T201543.672566Z"></a>
2007-11-19T20:15:43.672566Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update release notes and date for 8.61.
</pre>
<p>[doc/News.htm src/version.mak]</p>
</blockquote>

<p><strong><a name="2007-11-18T225036.855233Z"></a>
2007-11-18T22:50:36.855233Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Normalize weigts in the Mitchell filter and use proper rounding to ensure
that the constant value is not changed by the filter.
Bug 689556, customer 581.

</pre>
<p>[src/siscale.c]</p>
</blockquote>

<p><strong><a name="2007-11-18T164841.008511Z"></a>
2007-11-18T16:48:41.008511Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist interpreter) : Transparency caused a wrong color depth.

DETAILS :

Bug 689520 Regression: 1bpp and grayscale output broken.

The clist interpreter clist_playback_band maintains 2 devices :
the clist reader and target. The clist reader device stores
private interpreter's data. However using a device structure
for this purpose is pretty confusing, because the target 
device may have same device fields with different values.
Particularly while processing a transparency, the target device
chage to a transparency buffer device, 
which may have a different number of color components.

The problem happens due to the clist interpreter used
a wrong device to obtain the number of color components.
This patch changes the code with taking color components 
from the target device. 

Now we don't try to analyze all other access to the clist device -
it should be a subject of a separate job. 
Therefore the code may need further improvements.
The right way would be to define a special structure for the clist interpreter, 
and to drop the clist reader device at all.

</pre>
<p>[src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2007-11-18T093055.737640Z"></a>
2007-11-18T09:30:55.737640Z Russell Lang</strong></p>
<blockquote>
<pre>
Remove incorrect and unnecessary gtk+ separation code. Fixes bug 689541.
</pre>
<p>[src/dxmain.c]</p>
</blockquote>

<p><strong><a name="2007-11-18T060720.783700Z"></a>
2007-11-18T06:07:20.783700Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist) : Improving the debug printing.

DETAILS :

This patch only inserts some debug trace printing about the pdf14 compositor.
The old code is confusing due to mapping an obsolete instruction to "set_color[*]".

</pre>
<p>[src/gxclpath.h]</p>
</blockquote>

<p><strong><a name="2007-11-18T053055.503323Z"></a>
2007-11-18T05:30:55.503323Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist) : Improving the debug printing.

DETAILS :

This patch only inserts some debug trace printing about the pdf14 compositor.
The old code generates a confusing trace due to missing an important information.

</pre>
<p>[src/gstrans.c src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-11-16T213922.306411Z"></a>
2007-11-16T21:39:22.306411Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix dependency problems that caused obj/gs_init.ps to be missed. Also fix a
typo that caused CMap files to be missing.

DETAILS:

This method of putting the gs_init.ps dependency down in lib.mak require
us to get gs_init.ps. This hack was discussed with Ralph and is an
alternative to adding a dependency to all of the top level makefiles.
The dummy gs_init.ps is only made when we are NOT including the PS
interpreter (PSI_INCLUDED) since we need the real one for the language
switch build. Note that the dummy file doesn't get added to the %rom%
file system since PS_ROMFS_ARGS is empty if int.mak is not included.

</pre>
<p>[src/lib.mak src/int.mak]</p>
</blockquote>

<p><strong><a name="2007-11-16T211431.380613Z"></a>
2007-11-16T21:14:31.380613Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct typos and spelling errors in the change log. Bug 688940.
</pre>
<p>[doc/History8.htm]</p>
</blockquote>

<p><strong><a name="2007-11-16T081105.046465Z"></a>
2007-11-16T08:11:05.046465Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist) : Providing clist instruction ids and offsets to debug trace (continued 2).

DETAILS :

The last patch (rev 8365) appears incorrect and causes crashes with halftoning devices.

The problem happens due to gx_device_clist_reader::offset_map 
has been initialized too early in clist_reader_init. 
At that moment the device is still a clist writer, 
but the field offset_map belongs to clist reader. 
Due to gx_device_clist_s is a union, the field overlaps band_range_list.head,
and the letter was prematurely reset. It caused some commands were not written
to clist file while the page closes. With the test case (pbmraw -r300 012-01.ps)
it missed cmd_opv_ext_put_halftone and did not miss cmd_opv_ext_put_drawing_color
with color index type == ht_binary. It caused the crash in gx_dc_ht_binary_readdue to 
pis-&gt;dev_ht was not set. (cmd_opv_ext_put_halftone does set, but it was missed).

The log message of the revision 8365 reads :
"This change is algorithmically equivalent for release build."
This statement is false due to the premature initialization of 
gx_device_clist_reader::offset_map.
This patch fixes that with removing its initialization from 
clist_reader_init. A subsequent call to clist_render_init initializes it.

The last patch was made buggy due to the function name 
clist_reader_init does not properly reflects its finction.
This patch fixes the naming.

Also provided more stability in gxht.c with a check for NULL pointer.

</pre>
<p>[src/gxclread.c src/gxht.c]</p>
</blockquote>

<p><strong><a name="2007-11-16T021056.107493Z"></a>
2007-11-16T02:10:56.107493Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the makefile for current pkgconfig macros.
</pre>
<p>[ijs/Makefile.am]</p>
</blockquote>

<p><strong><a name="2007-11-16T015209.559298Z"></a>
2007-11-16T01:52:09.559298Z Ralph Giles</strong></p>
<blockquote>
<pre>
Don't generate build files for the ijs package when building. Since this 
is distinct from 'make dist' the results are not optimal Bug 689425.
</pre>
<p>[doc/Release.htm]</p>
</blockquote>

<p><strong><a name="2007-11-15T072243.143761Z"></a>
2007-11-15T07:22:43.143761Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist) : Providing clist instruction ids and offsets to debug trace (continued).

DETAILS :

The last patch appears incorrect for the debug build 
and causes crashes sometimes. Not sure why local testing didn't detect that.

This change is algorithmically equivalent for release build.
In the debug build it fixes problems of the last patch.

1. Offset map could be prematurely released by the garbager
(It could cause a crash. Not sure why the local test didn't detect it).
A new pointer gx_device_clist_reader::offset_map prevents that.
Added it to the garbager descriptor and provided its initialization.

2. buffer_segment_index can fail with returning a negative index.
Checked that and propagated error codes.

4. Besides top_up_cbuf, the buffer topping up also happens 
with calling memmove when reading bitmap data. 
Added calls to top_up_offset_map for accounting that.

5. See comment in top_up_offset_map about the improved invariant.

6. The prototupe of top_up_cbuf is changed with passing the error code.
Due to that the variable 'cbp' is droped the 'register' modifier.
We believe it won't cause a visible slowdown because
modern compilers are smart enough.

7. Do not maintain offset_map when -ZL is not specified.
It saves some CPU time with debug build.

</pre>
<p>[src/gxclist.c src/gxcldev.h src/gxclist.h src/gxp1fill.c src/gxclrast.c src/gxclread.c src/gxclpage.c src/gxclutil.c]</p>
</blockquote>

<p><strong><a name="2007-11-14T230322.440437Z"></a>
2007-11-14T23:03:22.440437Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove an obsolete include.
</pre>
<p>[src/gendev.c]</p>
</blockquote>

<p><strong><a name="2007-11-14T220613.972530Z"></a>
2007-11-14T22:06:13.972530Z Ray Johnston</strong></p>
<blockquote>
<pre>
Refactor the gs int.mak and lib,mak to simplify building COMPILE_INITS=1 without PS (PCL
only build). Make sure gs/src/ugcclib.mak does conditional assignment of COMPILE_INITS
</pre>
<p>[src/lib.mak src/ugcclib.mak src/int.mak]</p>
</blockquote>

<p><strong><a name="2007-11-14T220453.375824Z"></a>
2007-11-14T22:04:53.375824Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix number of macro arguments that showed an error when FPU_TYPE=-1 (no FPU)
</pre>
<p>[src/gsciemap.c]</p>
</blockquote>

<p><strong><a name="2007-11-14T183745.596510Z"></a>
2007-11-14T18:37:45.596510Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist) : Providing clist instruction ids and offsets to debug trace.

DETAILS :

This change is algorithmically equivalent for release build.
In the debug build it only adds a new debug printing.

Let clist segment is consecutive instuctions buffered for same band.

1. gx_device_clist_writer::ins_count counts clist segments.

2. cmd_prefix_s::id is the number of clist segment that it belongs to.

3. stream_band_read_state_s::offset_map stores a table for mapping
clist segments' buffer offsets to clist file offsets.

4. s_band_read_init_offset_map, s_band_read_dnit_offset_map,  
clist_file_offset, top_up_offset_map maintain the table.

5. Inserted a debug printing into gxclutil.c, gxclrast.c .

</pre>
<p>[src/gxclist.c src/gxcldev.h src/gxclist.h src/gxclrast.c src/gxclread.c src/gxclutil.c]</p>
</blockquote>

<p><strong><a name="2007-11-14T180902.242685Z"></a>
2007-11-14T18:09:02.242685Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (clist) : A preparation for providing clist instruction ids and offsets to debug trace.

DETAILS :

We would like this change to be algorithmically equivalent,
but the proof is too complex. Therefore we commit it separately
in order to check for raster differences.

1. Inserted a new field into cmd_prefix_s.
For now this field is never used, but it changes memory allocation.
Due to that the bufferring in the clist writer goes slightly different.
Particularly it may cause new effects while restarting failed instructions.

2. Early return from top_up_cbuf when the stream is over.
The new code does not top up the last portion of the data stream.
It shouldn't be important for the reader, but we can't proove for sure.
This change is necessary because we want to add more fields to gx_clist_state_s,
and the new fields would be invalid after s_close resets stream::state.
See the next patch for details.

</pre>
<p>[src/gxclist.h src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2007-11-14T022253.263144Z"></a>
2007-11-14T02:22:53.263144Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add support for passing EXPAT_CFLAGS from the top-level makefile.
Passing -DHAVE_MEMMOVE is required in the unix build.
</pre>
<p>[src/expat.mak]</p>
</blockquote>

<p><strong><a name="2007-11-14T020605.012311Z"></a>
2007-11-14T02:06:05.012311Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove spurious executable bits.
</pre>
<p>[expat/MANIFEST expat/conftools/expat.m4 expat/tests/benchmark/benchmark.c expat/lib/internal.h expat/COPYING expat/Changes expat/lib/utf8tab.h expat/tests/runtestspp.cpp expat/tests/runtests.c expat/lib/expatw_static.dsp expat/lib/libexpat.def expat/amiga/include/proto/expat.h expat/tests/README.txt expat/xmlwf/xmlfile.c expat/xmlwf/xmlfile.h expat/xmlwf/ct.c expat/lib/Makefile.MPW expat/xmlwf/codepage.c expat/vms/descrip.mms expat/xmlwf/codepage.h expat/bcb5/elements.bpf expat/lib/amigaconfig.h expat/amiga/expat_lib.c expat/bcb5/elements.bpr expat/lib/expat.h expat/win32/README.txt expat/conftools/get-version.sh expat/doc/valid-xhtml10.png expat/examples/outline.dsp expat/xmlwf/readfilemap.c expat/bcb5/outline.mak expat/lib/xmlrole.c expat/amiga/launch.c expat/bcb5/expat_static.mak expat/lib/xmlrole.h expat/lib/winconfig.h expat/examples/elements.dsp expat/win32/expat.iss expat/win32/MANIFEST.txt expat/amiga/expat.xml expat/bcb5/outline.bpf expat/expat_config.h.in expat/lib/libexpatw.def expat/lib/expatw.dsp expat/bcb5/expat.mak expat/lib/xmltok.c expat/vms/README.vms expat/tests/benchmark/README.txt expat/bcb5/expat_static.bpf expat/lib/xmltok.h expat/tests/xmltest.sh expat/lib/latin1tab.h expat/bcb5/outline.bpr expat/tests/minicheck.c expat/xmlwf/xmlwf.dsp expat/conftools/PrintPath expat/tests/minicheck.h expat/Makefile.in expat/lib/expat_static.dsp expat/bcb5/libexpat_mtd.def expat/bcb5/expat_static.bpr expat/lib/xmltok_impl.c expat/bcb5/expatw.mak expat/amiga/include/interfaces/expat.h expat/lib/xmltok_impl.h expat/xmlwf/filemap.h expat/bcb5/expatw_static.mak expat/vms/expat_config.h expat/bcb5/expat.bpf expat/xmlwf/xmlwin32url.cxx expat/lib/xmltok_ns.c expat/xmlwf/xmltchar.h expat/doc/reference.html expat/tests/benchmark/benchmark.dsp expat/bcb5/expat.bpr expat/bcb5/xmlwf.mak expat/bcb5/setup.bat expat/lib/xmlparse.c expat/tests/benchmark/benchmark.dsw expat/conftools/install-sh expat/configure.in expat/conftools/libtool.m4 expat/bcb5/expatw.bpf expat/amiga/Makefile expat/bcb5/expatw_static.bpf expat/bcb5/expatw.bpr expat/bcb5/expatw_static.bpr expat/bcb5/xmlwf.bpf expat/lib/expat_external.h expat/configure expat/lib/macconfig.h expat/conftools/ac_c_bigendian_cross.m4 expat/lib/ascii.h expat/amiga/expat_vectors.c expat/conftools/mkinstalldirs expat/bcb5/README.txt expat/amiga/README.txt expat/bcb5/xmlwf.bpr expat/xmlwf/unixfilemap.c expat/doc/xmlwf.sgml expat/bcb5/all_projects.bpg expat/xmlwf/xmlurl.h expat/doc/expat.png expat/amiga/include/inline4/expat.h expat/examples/elements.c expat/expat.dsw expat/amiga/stdlib.c expat/amiga/include/libraries/expat.h expat/lib/iasciitab.h expat/xmlwf/xmlmime.c expat/tests/chardata.c expat/xmlwf/xmlmime.h expat/doc/style.css expat/README expat/tests/chardata.h expat/conftools/config.guess expat/doc/xmlwf.1 expat/conftools/ltmain.sh expat/conftools/config.sub expat/lib/nametab.h expat/bcb5/libexpatw_mtd.def expat/lib/asciitab.h expat/xmlwf/xmlwf.c expat/lib/expat.dsp expat/examples/outline.c expat/xmlwf/win32filemap.c expat/bcb5/elements.mak expat/bcb5/makefile.mak]</p>
</blockquote>

<p><strong><a name="2007-11-13T185718.728921Z"></a>
2007-11-13T18:57:18.728921Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (make) : Could not build for x64 platform with Developer Studio 2005. 

DETAILS :

1. The old code uses the 32 bits compiler for compiling build utilities 
(genarchg, echogs), and then tries to link them with x64 libraries.

2. Developer Studio 2005 doesn't support -ZI 
(debug database for edit end continue) for the x64 platform. 

</pre>
<p>[src/msvccmd.mak]</p>
</blockquote>

<p><strong><a name="2007-11-13T100155.069333Z"></a>
2007-11-13T10:01:55.069333Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): type 3 fonts with exceedingly small BoundingBox
entries were clamped to 0 or 1.

Details:
Bug #689537 "FontBBox wrong in pdf generated by ps2pdf (breaks
acrobat 8)".

The type 3 font has a FontBBox of [0 0 0.3 0.3]. Because
pdfwrite uses integers to record the font bounding box, this was 
being clampled to [0 0 1 1]. This should not cause a prolem, but
for unknown reasons causes Acrobat 8 to render *very* slowly.

(gdevpdtf.h), 'struct /*type 3*/', alter the FontBBox member from
a gs_int_rect to a gs_rect to preserve floating point box values.

(gdevpdtt.c), pdf_make_font3_resource, copy the font bbox values
instead of floor'ing the lower and ceil'ing the upper values.

(gdevpdfu.c), create a new function 'pdf_write_font_bbox_float'
to write the bbox as floats instead of ints.

(gdevpdfx.h) prototype 'pdf_write_font_bbox_float'

(gdevpdtw.c), pdf_finish_write_contents_type3, use the new
routine to write out a floating point bounding box.

</pre>
<p>[src/gdevpdfx.h src/gdevpdtt.c src/gdevpdfu.c src/gdevpdtw.c src/gdevpdtf.h]</p>
</blockquote>

<p><strong><a name="2007-11-12T085935.891834Z"></a>
2007-11-12T08:59:35.891834Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): named objects, created via a pdfmark such as /BP,
could not have their content modified after the object was completed.

DETAILS:
Bug #689104 "Overwriting transformation /Matrix in XObject previously
created with /BP &amp; /EP pdfmarks".

Some pdfmarks, such as /BP create named objects. These can accumulate
information until a matching pdfmark (/EP in this case) completes the
object. When complete, objects were written to the final destination
PDF file. This made it impossible to later modify the object.

(gdevpfm.c) pdfmark_bind_named_object, change the call to
pdf_substitute_resource to defer writing the object to the
destination file, if the object is named. This means the object is still
available for modification until the end of the job. NB if the object
is not named, we still write it immediately, as there is no mechanism
for modifying an unnamed object, nor do we currently have a mechanism
for maintaining a record of unnamed objects.

</pre>
<p>[src/gdevpdfm.c]</p>
</blockquote>

<p><strong><a name="2007-11-10T172049.620638Z"></a>
2007-11-10T17:20:49.620638Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Pre-scan the stream for '{' during the stream length check to avoid reading
to the end of the stream and closing it. Bug 689551, customer 661.

</pre>
<p>[lib/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2007-11-09T211804.579128Z"></a>
2007-11-09T21:18:04.579128Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the JVERSION makefile variable.

We only support the current version 6 library, and it seems
unlikely to revise in the the near future. We also include
our own copy of the source now, so it is less important to
support a variety of third party library versions.
</pre>
<p>[src/openvms.mak src/macosx.mak src/watcw32.mak src/dvx-gcc.mak src/unixansi.mak src/msvclib.mak src/os2.mak src/openvms.mmk src/bcwin32.mak src/ugcclib.mak src/gs.mak src/Makefile.in doc/Make.htm src/msvc32.mak src/unix-gcc.mak src/macos-mcp.mak src/watclib.mak src/jpeg.mak]</p>
</blockquote>

<p><strong><a name="2007-11-09T211556.512922Z"></a>
2007-11-09T21:15:56.512922Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the PNGVERSION makefile variable.
    
We no longer support building older versions of the libpng source,
and now include our own version, so there is no reason to maintain
this.
</pre>
<p>[src/openvms.mak src/macosx.mak src/watcw32.mak src/dvx-gcc.mak src/unixansi.mak src/msvclib.mak src/os2.mak src/openvms.mmk src/bcwin32.mak src/ugcclib.mak src/gs.mak src/libpng.mak doc/Make.htm src/msvc32.mak src/unix-gcc.mak src/macos-mcp.mak src/all-arch.mak src/watclib.mak]</p>
</blockquote>

<p><strong><a name="2007-11-09T210048.139238Z"></a>
2007-11-09T21:00:48.139238Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the top level makefiles with the current libpng version number.
</pre>
<p>[src/bcwin32.mak src/openvms.mak src/ugcclib.mak src/macosx.mak src/watcw32.mak src/dvx-gcc.mak src/msvc32.mak src/unix-gcc.mak src/unixansi.mak src/macos-mcp.mak src/msvclib.mak src/all-arch.mak src/openvms.mmk src/os2.mak src/watclib.mak]</p>
</blockquote>

<p><strong><a name="2007-11-09T205819.833269Z"></a>
2007-11-09T20:58:19.833269Z Ralph Giles</strong></p>
<blockquote>
<pre>
Use PNGSRCDIR and PNGVERSION instead of PSRCDIR and PVERSION in
the top level makefiles.
</pre>
<p>[src/openvms.mak src/macosx.mak src/watcw32.mak src/dvx-gcc.mak src/unixansi.mak src/msvclib.mak src/os2.mak src/openvms.mmk src/bcwin32.mak src/ugcclib.mak src/gs.mak src/libpng.mak src/Makefile.in doc/Make.htm src/msvc32.mak src/unix-gcc.mak src/macos-mcp.mak src/all-arch.mak src/watclib.mak]</p>
</blockquote>

<p><strong><a name="2007-11-09T195457.891517Z"></a>
2007-11-09T19:54:57.891517Z Ralph Giles</strong></p>
<blockquote>
<pre>
Minor cleanup of the expat makefile.
</pre>
<p>[src/expat.mak]</p>
</blockquote>

<p><strong><a name="2007-11-09T011415.828665Z"></a>
2007-11-09T01:14:15.828665Z Ralph Giles</strong></p>
<blockquote>
<pre>
Change the jbig2dec license from GPLv2 to GPLv2 or later.
</pre>
<p>[jbig2dec/LICENSE]</p>
</blockquote>

<p><strong><a name="2007-11-08T075721.838362Z"></a>
2007-11-08T07:57:21.838362Z Suzuki Toshiya</strong></p>
<blockquote>
<pre>
Fix: Ignore problematic post table in format 2.0 with ISOLatin1Encoding glyph names.

DETAILS:
Some TrueType fonts converted by "Windows Type 1 Installer" have
problematic post table format 2.0 including MacGlyphEncoding
entries which should be omitted. Such extra entries in the
beginning of glyphName array make /Encoding broken. By checking
if glyph name in post table is predefined one in MacGlyphEncoding,
such problematic post table can be detected. By ignoring such
problematic post table, bug 689495 is fixed.

However, some TrueType fonts designed for Microsoft redefines
MacGlyphEncoding glyph name out of predefined range. To permit
such font, the post table in format 2.0 is checked by
ISOLatin1Encoding which is the cross section of MacGlyphEncoding
and WinAnsiEncoding. ISOLatin1Encoding is enought to fix the
bug 689495.

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2007-11-07T071345.310142Z"></a>
2007-11-07T07:13:45.310142Z Ralph Giles</strong></p>
<blockquote>
<pre>
Preliminary makefile for the expat third party library.

Can be used to link to the system expat with SHARE_EXPAT=1,
but compiling the source doesn't work on linux in this revision
because of missing configuration defines.
</pre>
<p>[src/gs.mak src/expat.mak]</p>
</blockquote>

<p><strong><a name="2007-11-07T050406.063702Z"></a>
2007-11-07T05:04:06.063702Z Ralph Giles</strong></p>
<blockquote>
<pre>
Copy the expat-2.0.1 tag source into the gs tree.

This 3rd party library is needed for XPS and eventually SVG support.
</pre>
<p>[expat]</p>
</blockquote>

<p><strong><a name="2007-11-07T041913.410191Z"></a>
2007-11-07T04:19:13.410191Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add a skeleton implementation of the text extraction device.
It doesn't do anything useful yet, only prints "Hello world" once per page.
</pre>
<p>[src/gdevtxtw.c src/bcwin32.mak src/openvms.mak src/macosx.mak src/watcw32.mak src/Makefile.in src/msvc32.mak src/unix-gcc.mak src/unixansi.mak src/macos-mcp.mak src/devs.mak src/os2.mak]</p>
</blockquote>

<p><strong><a name="2007-11-02T190903.093400Z"></a>
2007-11-02T19:09:03.093400Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Fix for Bug 689316.

On some systems XInitImage() appears to have
problems with images that are one pixel in height, so
if XInitImage() returns an error call XPutImage() instead.  

</pre>
<p>[src/gdevx.c]</p>
</blockquote>

<p><strong><a name="2007-11-02T181645.038692Z"></a>
2007-11-02T18:16:45.038692Z Ralph Giles</strong></p>
<blockquote>
<pre>
Document the interaction between a the vector device beginpage method
and gdev_vector_stream() more clearly.
</pre>
<p>[src/gdevvec.h]</p>
</blockquote>

<p><strong><a name="2007-11-01T204928.224038Z"></a>
2007-11-01T20:49:28.224038Z Ray Johnston</strong></p>
<blockquote>
<pre>
Make sure that errors are propogated to caller in the WTS device (such
as VMerror). Bug 689511 for customer 951.

DETAILS:

This doesn't really fix the underlying problem seen by the (embedded)
customer where the clist rendering uses a large amount of RAM.

</pre>
<p>[src/gdevwts.c]</p>
</blockquote>

<p><strong><a name="2007-11-01T172245.182105Z"></a>
2007-11-01T17:22:45.182105Z Igor Melichev</strong></p>
<blockquote>
<pre>
PS interpreter : Trace the executed operators' names (continued).

DETAILS :

Fix an inaccurate coding of the last patch.

</pre>
<p>[src/iinit.c]</p>
</blockquote>

<p><strong><a name="2007-11-01T162001.816428Z"></a>
2007-11-01T16:20:01.816428Z Igor Melichev</strong></p>
<blockquote>
<pre>
PS interpreter : Trace the executed operators' names.

DETAILS :

This change is syntactically equivalent for a default build.
For obtaining the new functionality Ghostscript must be compiled
with a new predefined macro DEBUG_TRACE_PS_OPERATORS.
The new debug switch '!' prints names of operators executed while the interpretation.
Note : Inline operators (which are expanded inside interp.c) are not printed. 

</pre>
<p>[src/iinit.c doc/Use.htm src/int.mak src/iinit.h src/interp.c]</p>
</blockquote>

<p><strong><a name="2007-11-01T155622.262417Z"></a>
2007-11-01T15:56:22.262417Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Move a 32K array from the stack to the heap to save stack space.

DETAILS:
Ghostscript is designed to run with 64K stack space for compatibility with
embedded environments. Unlike other MS systems, Windows NT enforces stack
space limit claimed by the application. MSVC 6 run-time uses about 8K
internally and remaining 56K stack was insufficient. 

</pre>
<p>[src/gdevpdfi.c]</p>
</blockquote>

<p><strong><a name="2007-10-31T170102.758539Z"></a>
2007-10-31T17:01:02.758539Z Ralph Giles</strong></p>
<blockquote>
<pre>
Rewrite gs_getdefaultdevice to avoid allocating memory.

The new version also skips tabs as whitespace and is more robust.
</pre>
<p>[src/gsdevice.c]</p>
</blockquote>

<p><strong><a name="2007-10-31T170059.582623Z"></a>
2007-10-31T17:00:59.582623Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a new GS_DEV_DEFAULT makefile variable for passing a preferred list
of default devices, in order of priority. These are passed through to
the C code, and searched for in gs_getdefaultdevice().
</pre>
<p>[src/gs.mak src/Makefile.in src/gscdefs.h src/gsdevice.c src/gscdef.c]</p>
</blockquote>

<p><strong><a name="2007-10-31T170055.551499Z"></a>
2007-10-31T17:00:55.551499Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add Postcript bindings to gs_getdefaultdevice() and use them to set the
default device in the interpreter. Bug 689273.
</pre>
<p>[doc/Language.htm src/zdevice.c lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2007-10-31T170051.435508Z"></a>
2007-10-31T17:00:51.435508Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a gs_getdefaultdevice() call and use it when printing the help
message. It just returns the first device as before. Bug 689273.
</pre>
<p>[src/gsdevice.h src/imainarg.c src/gsdevice.c]</p>
</blockquote>

<p><strong><a name="2007-10-30T234546.184301Z"></a>
2007-10-30T23:45:46.184301Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add missing dependencies to the contrib device build.
</pre>
<p>[contrib/contrib.mak]</p>
</blockquote>

<p><strong><a name="2007-10-30T192601.651347Z"></a>
2007-10-30T19:26:01.651347Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (banding) : Improving the debug trace about compositors (continued).

DETAILS :

This change is algorithmically equivalent for release build.
In the debug build it only improves debug printing
with distinguishing gs_ and gx_ operations.

</pre>
<p>[src/gstrans.c]</p>
</blockquote>

<p><strong><a name="2007-10-30T174749.373667Z"></a>
2007-10-30T17:47:49.373667Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (banding) : Improving the debug trace about compositors.

DETAILS :

This change is algorithmically equivalent for release build.
In the debug build it only adds more debug printing.

1. Added a debug printing for alpha, overprint and rop compositors
when writing/reading from/to clist.

2. (gxclrast.c) When printing a matrix with the 'L' switch,
use global page coordinates as rectangle operations do.
It allows to map reading operatrions to corresponding writeing operations.
  
</pre>
<p>[src/gsropc.c doc/Use.htm src/gsalphac.c src/gsovrc.c src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2007-10-30T005844.912591Z"></a>
2007-10-30T00:58:44.912591Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a cast to prevent a warning.
</pre>
<p>[src/zfjpx.c]</p>
</blockquote>

<p><strong><a name="2007-10-28T233359.326612Z"></a>
2007-10-28T23:33:59.326612Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Move "true .setaccuratecurves" to the PDF graphic state initialization
where it belongs. This fix enables accurate curve rendering by GSview
doesn't use some parts of Ghostscript startup code. Bug 688434.

</pre>
<p>[lib/pdf_main.ps lib/pdf_ops.ps]</p>
</blockquote>

<p><strong><a name="2007-10-28T182229.779063Z"></a>
2007-10-28T18:22:29.779063Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a typo.
</pre>
<p>[doc/Use.htm]</p>
</blockquote>

<p><strong><a name="2007-10-28T171747.899537Z"></a>
2007-10-28T17:17:47.899537Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change pdf_base.ps::.pdfrun and pdf_sec.ps::.decpdfrun to ensure
"PDFScanRules" == "true" while scanning the PDF, and if necessary revert
it back to "null" before returning. Thanks to SaGS for the patch. Bug 688598.

DETAILS:
The bug is triggered by the construct "//DeviceGray" found in  the sample PDF.
The following command fails with the same error as GSView, and for the
same reason:

    pdfopt.bat media_365163.pdf output.pdf

When Ghostscript interprets a PDF directly, most of the job is done by
LIB\pdf_main.ps::dopdfpages which sets "PDFScanRules" correctly. However,
the initial part of scanning the PDF (trailer dict, ...), and the rebuild
logic scan the PDF with wrong "PDFScanRules". Also GS's own various tools
and GSView don't set/ reset it as needed.

Implementation details:

(A) ".pdfrun" and ".decpdfrun" dinamically construct procedures that do the
real work and immediately execute them. The patch changes  these procedures
to include setting/ restoring "PDFScanRules". If "PDFScanRules" == "true"
already, then "setuserparams" is not called at all, so normally
(when ".[dec]pdfrun" executed during "dopdfpages") there's practically no
impact on performance.

There are also "token" calls outside these 2 procedures, but these calls are
for scanning the xref and "# # obj" lines, which don't contain PDF name
objects.

(B) ".getuserparam" GS-specific operator changed to recognize scanner options
too ("PDFScanRules" and "PDFScanInvNum"). This is needed by ".[dec]pdfrun"
for restoring "PDFScanRules"; also used for an optimization (to omit calling
"setuserparams" when not actually needed).

Note:
    For "Process[DSC]Comment" it returns "true" if a procedure 
    is set, and not the actual procedure. To retrive the 
    procedures (or null if none set), use "currentuserparams". 

(C) ".currentuserparams" is NOT modified, so it does not return scanner
options. If it did, these ended up being put into "userparams" and be
affected by "save"/ "restore" (see the  redefinition of "restore" in
gs_lev2.ps).

</pre>
<p>[src/itoken.h lib/pdf_base.ps lib/pdf_sec.ps src/zusparam.c src/ztoken.c]</p>
</blockquote>

<p><strong><a name="2007-10-28T141946.108672Z"></a>
2007-10-28T14:19:46.108672Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Stop reading the xref+trailer at the closing "&gt;&gt;" because PDF 1.7 Reference
made "startxref" optional in some cases. Thanks to SaGS for thr patch.
Bug 688283.

DETAILS:
The PDF 1.7 Reference, section F.2.3 "First-Page Cross-Reference 
Table and Trailer (Part 3)", 2nd paragraph on page 1031 states:

   "The first-page trailer may optionally end with startxref, an 
    integer, and %%EOF, just as in an ordinary trailer. This 
    information is ignored."

(note the word "optionally"), so in such a case a PDF interpreter 
cannot rely on anything particular (like "startxref"/ "startref"/ 
"xref") to follow the trailer dictionary. Now consider a linearized 
PDF being incrementally updated, and you get that in the general 
case a "previous trailer" may lack the "startxref". Apparently, 
Acrobat does a similar thing when creating hybrid-ref PDFs.

</pre>
<p>[lib/pdf_main.ps lib/pdf_rbld.ps]</p>
</blockquote>

<p><strong><a name="2007-10-27T195500.858126Z"></a>
2007-10-27T19:55:00.858126Z Igor Melichev</strong></p>
<blockquote>
<pre>
Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued 9).

DETAILS :

Bug 689526 "Regression: performance issues with r8118".

This patch clips triangles an trapezoids with band bbox
during the clist playback. The old code spends much time 
for rasterizes parts that fall outside the band,
espcially if the band height is small.

Also fixed an obsolete comment.
  
</pre>
<p>[src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2007-10-27T185514.195971Z"></a>
2007-10-27T18:55:14.195971Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Extract and process default PDF file from the PDF collection when
it is defined. Otherwise process the container PDF file.

DETAILS:
The procedure pdf_collection_files can be extended to select other
PDF files from the collection and extract them for processing.

</pre>
<p>[lib/pdf_main.ps lib/pdf2dsc.ps]</p>
</blockquote>

<p><strong><a name="2007-10-26T074130.826491Z"></a>
2007-10-26T07:41:30.826491Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite): Type 1 CharStrings could be converted to invalid 
type 2 CharStrings if the glyph program used implicit start points 
for subpaths.

DETAILS:
Bug #689055 "pdfwrite creates a bad Type1C font"

If a type 1 CharString used an implicit point, either the initial point 
(0,0) or the point resulting from a closepath, then the type 2 output 
code duplicated this. Unfortunately this is illegal in type 2 CharStrings
where each subpath must begin with one of the 'move' instructions.

(gdevpsfx.c) psf_convert_type1_to_type2, create a new boolean variable
'need_moveto' initialised to true. When we encounter a move operation,
set it to false. When we encounter a closepath, set it back to true.
Thus this variable is always true at the beginning of a subpath, and 
becomes false as soon as a move instruction is encountered.

While converting type 1 CharStrings, whenever the current instruction is 
a line drawing operation, if 'need_moveto' create a move instruction, 
taking account of any pending glyph widths.


This is only performed on the second (conversion) pass through the type 1 
CharSrtring as we don't need to worry about this during the first (hint 
collection) pass.

</pre>
<p>[src/gdevpsfx.c]</p>
</blockquote>

<p><strong><a name="2007-10-26T014956.180182Z"></a>
2007-10-26T01:49:56.180182Z Ralph Giles</strong></p>
<blockquote>
<pre>
Merge makeset.tcl into makehist.tcl.
</pre>
<p>[toolbin/makehist.tcl toolbin/makeset.tcl]</p>
</blockquote>

<p><strong><a name="2007-10-26T014954.293117Z"></a>
2007-10-26T01:49:54.293117Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove obsolete release and diff scripts.
</pre>
<p>[toolbin/3way.tcl toolbin/makefonts.tcl toolbin/maketars.tcl toolbin/makemaster.tcl toolbin/makeset.tcl toolbin/makewin.tcl]</p>
</blockquote>

<p><strong><a name="2007-10-26T010804.549848Z"></a>
2007-10-26T01:08:04.549848Z Ralph Giles</strong></p>
<blockquote>
<pre>
Document how to use -dTTYPAUSE with -dSAFER. Bug 687988.
</pre>
<p>[doc/Use.htm]</p>
</blockquote>

<p><strong><a name="2007-10-25T221422.288695Z"></a>
2007-10-25T22:14:22.288695Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct some gcc warnings.
</pre>
<p>[jbig2dec/config.h jbig2dec/jbig2_text.c jbig2dec/jbig2_image.h jbig2dec/jbig2_symbol_dict.c jbig2dec/jbig2_generic.c jbig2dec/jbig2_page.c jbig2dec/jbig2_refinement.c]</p>
</blockquote>

<p><strong><a name="2007-10-25T003018.383197Z"></a>
2007-10-25T00:30:18.383197Z Ralph Giles</strong></p>
<blockquote>
<pre>
Include an example of how to create non-ASCII font names in the cidfmap.
Bug 688203.
</pre>
<p>[doc/Use.htm]</p>
</blockquote>

<p><strong><a name="2007-10-24T233220.291355Z"></a>
2007-10-24T23:32:20.291355Z Ralph Giles</strong></p>
<blockquote>
<pre>
Append the CUPS font directory to the search path. Bug 689334.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-10-24T224628.083133Z"></a>
2007-10-24T22:46:28.083133Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add an XCFLAGS macro to the MSVC build to match the variable of the same
name in the unix builds. This is intended mainly for adding preprocessor
defines at make time. Bug 689530.
</pre>
<p>[src/msvc32.mak]</p>
</blockquote>

<p><strong><a name="2007-10-24T224625.428278Z"></a>
2007-10-24T22:46:25.428278Z Ralph Giles</strong></p>
<blockquote>
<pre>
Only add XLDFLAGS to LDFLAGS temporarily when checking for the
additional X libraries. Bug 689411.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-10-24T183955.448984Z"></a>
2007-10-24T18:39:55.448984Z Ralph Giles</strong></p>
<blockquote>
<pre>
Use the proper build machinery to link to cups.

DETAILS:

Previously, the configure script just appended the output of cups-config
to CFLAGS and LIBS which could confuse other parts of the build. The
LIBS setting was actually ignored by cups.mak which hard coded liking
to cups and cupsimage through the genconf -lib option, although it
depended on it for the search patch if cups was in a non-standard
location.

Instead, we parse the output of cups-config to separate the dependent
libraries and additional search paths if any, and pass those through
to genconf in the intended way. This destroys the order of the link
line, but GNU ld, at least, applies all -L paths to all -l libraries,
so that should not distrurb the build. We pass any extra include paths
in a special variable and use it directly when compiling gdevcups.c to
avoid confusing the search path for other components.

Configure also used to ignore cups-config if it found cups/raster.h in
the current search path. We now prefer cups-config.
</pre>
<p>[src/Makefile.in src/configure.ac cups/cups.mak]</p>
</blockquote>

<p><strong><a name="2007-10-24T183951.211490Z"></a>
2007-10-24T18:39:51.211490Z Ralph Giles</strong></p>
<blockquote>
<pre>
Abstract the autoconf build's link line flattening for generic use.

DETAILS:

The Ghostscript build system expects a list of bare library names
for specifying library dependencies through the .dev files to
genconf. The configure script had some code to decompose the usual
unix-style "-lX11 -lXt" link flags returned by AC_PATH_XTRA.

As we've added more optional external libraries to the autoconf
build, this has become a general need, so the code is now abstracted
into an autoconf macro for use elsewhere in the configure script.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-10-24T073109.815969Z"></a>
2007-10-24T07:31:09.815969Z Ken Sharp</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : An integer arithmetic overflow while converting Type 1 CharStrings into Type 2.

DETAILS :

Bug #689106 "Wrong charpath direction in PDF"
Patch from Rolf Becker with minor improvements.

A processing of big integers was implemented in gstype1.c
while rendering a glyph, but it was not implemented
in pdfwrite while converting a Type 1 font into Type 2.
It caused an incorrect glyph outlines embedded into PDF.
This patch factors out the old processing as a new
function gs_type1_check_float and applies it in gdevpsfx.c .
The function prototype is added to gxtype1.h as it needs to be public.

The patch also improves comments in code
because now we understand better what happens in there.
For more details see comments in code.

The change to gstype1.c is algorithmically equivalent
except inserting a new check for overflow in float2fixed.
The new check may fail when the old code
renders an incorrect outline.
We have no practical cases that demonstrate it.

</pre>
<p>[src/gstype1.c src/gdevpsfx.c src/gxtype1.h]</p>
</blockquote>

<p><strong><a name="2007-10-23T034859.052392Z"></a>
2007-10-23T03:48:59.052392Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Handle yet another type of broken PDF generated by Adobe Acrobat 8.1
that lacks startxref operator. Bug 689413, customer 531.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2007-10-21T204929.646397Z"></a>
2007-10-21T20:49:29.646397Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Process duplicate entries in PDF 1.5 context stream the same way as
the entries from regular streams: the first entry found (i.e. the last
in the xref chain) takes efferct. Keep rebuilding logic intact, where
the last entry wins. Bug 689513, customer 700.

</pre>
<p>[lib/pdf_main.ps lib/pdf_rbld.ps]</p>
</blockquote>

<p><strong><a name="2007-10-20T231430.016619Z"></a>
2007-10-20T23:14:30.016619Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Check for unbalanced q operators in the pattern stream and add Q as needed.
Bug 689523, customer 870.

</pre>
<p>[lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2007-10-20T191428.348994Z"></a>
2007-10-20T19:14:28.348994Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make IGC_PTR_STABILITY_CHECK an independent compile-time flag that can be set
from the command line without editing gxobj.h .

</pre>
<p>[src/gxobj.h]</p>
</blockquote>

<p><strong><a name="2007-10-20T163438.276462Z"></a>
2007-10-20T16:34:38.276462Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Relax ICCBased color space validation. Don't reject correct PDF files that have
ICCBased color space as an alternative color space to another ICCBased color
space. Bug 689524, customer 870.

</pre>
<p>[lib/gs_icc.ps]</p>
</blockquote>

<p><strong><a name="2007-10-20T005555.884848Z"></a>
2007-10-20T00:55:55.884848Z Ralph Giles</strong></p>
<blockquote>
<pre>
Pass the CFLAGS obtained for fontconfig from pkg-config separately
to avoid contaminating the general build.
</pre>
<p>[src/Makefile.in src/configure.ac src/unix-aux.mak]</p>
</blockquote>

<p><strong><a name="2007-10-20T003723.775560Z"></a>
2007-10-20T00:37:23.775560Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove a redundant check for pkg-config.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-10-20T003719.682121Z"></a>
2007-10-20T00:37:19.682121Z Ralph Giles</strong></p>
<blockquote>
<pre>
Look for fontconfig even if pkg-config doesn't find it.

DETAILS:

Like the comment says, pkg-config isn't universally installed,
so we should not depend on it. If pkg-config isn't available
or doesn't find fontconfig, check for the library and headers
it in the standard locations.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-10-18T185854.836534Z"></a>
2007-10-18T18:58:54.836534Z Ralph Giles</strong></p>
<blockquote>
<pre>
Install header files as data, not executables. Bug 689466.
</pre>
<p>[src/unix-dll.mak]</p>
</blockquote>

<p><strong><a name="2007-10-18T003637.403207Z"></a>
2007-10-18T00:36:37.403207Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove a spurious CFLAGS instance from the jasper compile line.

DETAILS:

The definition of CC_ passed from the top level makefile should
already include a copy of the CFLAGS for environment overrides,
so the duplicate copy here was unnecessary.

Furthermore, the second expansion of CFLAGS at the end of the
compiler command line could result in picking up a version of
the jasper headers installed elsewhere in the system instead
of the copy in JASSRC, causing the build to fail on undefined
preprocessor symbols, since upstream doesn't have our error
reporting callback.
</pre>
<p>[src/jasper.mak]</p>
</blockquote>

<p><strong><a name="2007-10-18T000555.933230Z"></a>
2007-10-18T00:05:55.933230Z Ralph Giles</strong></p>
<blockquote>
<pre>
Replace our included libpng with the new upstream 1.2.22 release.
</pre>
<p>[libpng]</p>
</blockquote>

<p><strong><a name="2007-10-18T000145.449158Z"></a>
2007-10-18T00:01:45.449158Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move the current copy of libpng out of the way for a pending update.
</pre>
<p>[libpng]</p>
</blockquote>

<p><strong><a name="2007-10-17T230450.954798Z"></a>
2007-10-17T23:04:50.954798Z Ralph Giles</strong></p>
<blockquote>
<pre>
Avoid memory corruption with broken files.

Patch from the Ubuntu libjasper package.
</pre>
<p>[jasper/src/libjasper/jpc/jpc_cs.c jasper/src/libjasper/jpc/jpc_dec.c jasper/src/libjasper/jp2/jp2_cod.c]</p>
</blockquote>

<p><strong><a name="2007-10-16T075408.209510Z"></a>
2007-10-16T07:54:08.209510Z Ken Sharp</strong></p>
<blockquote>
<pre>
ps2write: When encountering font names which contain unfortunate characters
such as white space, or delimiters, emit the name as an escaped string and 
'cvn' instead of a literal name.

DETAILS:
Bug #689420 "Errors with ps2write and special chars in FontName"

Patch from SaGS with some minor improvements.

Fonts whose name contains white space, or delimiter characters (eg /,(,[ etc)
were being written into the type 1 font stream using the name unchanged. This 
causes the resulting PostScript to fail on any PostScript interpreter. The 
exact error varies depending on the placement of the invalid character and 
the following data.

This is now handled by emitting the font name as a string, and using the cvn
operator to convert the string to a name, escaping characters if required. 
Note that both the C portion of the code needs to change, in order to write 
escaped names, and the PostScript prolog in order to undo any name escapement.

1. (gdevpsf1.c) write_font_name, check to see if the font name contains any
   characters which we need to escape. If so, then use the existing routine
   's_PSSE_template.process' to convert the name to an escaped character 
   sequence.

   Update the write_font_name routine so that it optionally writes a name
   to the output. If the name does not need escaping, then simply prepend a
   '/' to make a literal name, otherwise append a 'cvn' to convert the 
   escaped string to a name. When writing out the font header we just need
   the font name as a human readable string. When writing the /FontName
   entry in the font dictionary we need a PostScript name, either a literal
   or a PostScript escaped string converted to a name. (see below)

2. (gdevpsf1.c) psf_write_type1_font, alter the use of write_font_name in two
   places. Firstly to emit the name as part of the font comment, secondly to
   put the name as the value for the /FontName key in the fotn dictionary. In
   the first case we write it as a simple string, in the second as a name.

3. (opdfread.ps) The TypeDameons procedure extracts the FontName from the Font
   dictionary in the body of the job. Since the FontName can now be escaped,
   we need to undo the escapement before defining the font. Firstly we define
   a new procedure 'UnPDFEscape', secondly we call this when dealing with the
   FontName and the BaseFont keys, in order to convert the escaped name back
   to a normal name, so that the font can be found with findfont.

</pre>
<p>[src/gdevpsf1.c lib/opdfread.ps]</p>
</blockquote>

<p><strong><a name="2007-10-16T003628.849878Z"></a>
2007-10-16T00:36:28.849878Z Ralph Giles</strong></p>
<blockquote>
<pre>
Don't override the memory set by the caller in the JPXDecode stream.
</pre>
<p>[src/sjpx.c]</p>
</blockquote>

<p><strong><a name="2007-10-16T003627.806530Z"></a>
2007-10-16T00:36:27.806530Z Ralph Giles</strong></p>
<blockquote>
<pre>
It's the client's responsibility to call the set_defaults
method on a new stream. Bug 689362.

DETAILS:

The JPXDecode stream implementation was calling set_defaults
from within its own init method, clobbering the colorspace
request passed in through the stream's parameter dictionary.
</pre>
<p>[src/zfjpx.c src/sjpx.c]</p>
</blockquote>

<p><strong><a name="2007-10-15T223154.394164Z"></a>
2007-10-15T22:31:54.394164Z Henry Stiles</strong></p>
<blockquote>
<pre>
Error code from clist_decode_segment did not propagate back because
the inner automatic variable code shadowed the outer.

</pre>
<p>[src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2007-10-15T180918.231759Z"></a>
2007-10-15T18:09:18.231759Z Ray Johnston</strong></p>
<blockquote>
<pre>
Prevent C-stack overflow caused by infinite recursion. Related to
previous fix in same function to access the correct target color
procedure.

DETAILS:

Testing with other problem files detected the recursion. The previous
method to access the saved target get_color_comp_index is moved
before either use.

EXPECTED DIFFRENCES:

None.
</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-10-15T131116.778228Z"></a>
2007-10-15T13:11:16.778228Z Ken Sharp</strong></p>
<blockquote>
<pre>
pdfwrite: When writing the /CreationDate /ModDate keys in the Info dictionary,
properly write the system local time instead of UTC.

DETAILS:
Bug #688783 "commit 6892 mis-uses the TZ environmental"

A rather lengthy thread, but in essence quite simple. A change to calculate
the system local time as an offset from UTC, and store this information in 
the form described in the PDF Reference (Section 3.8.3 "Dates" on p133 of 
the 1.6 PDF Reference).

The patch uses code supplied by SaGS.

(gdevpdf.c) pdf_initialize_ids, use the C runtime 'time' and 'gmtime' to 
determine the difference between local system time and GMT. Use this to 
calculate the difference (positive, negative, or none) from GMT, and the
number of hours and minutes comprising the difference. Use 'localtime' to
find the local system date and time.

Take all of the information from above, and format the result according to
the specification in the PDF Reference:

(D:YYYYMMDDhhmmssZhh'mm')

Where YYYY=4 digit local time year
        MM=2 digit local time month
        DD=2 digit local time day
        hh=2 digit local time hours (24 hour)
        mm=2 digit local time minutes
        ss=2 digit local time seconds
         Z=offset of local time from UTC
           Z=no difference
           +=local time later than UTC
           -=local time earlier than UTC
       hh'=hours difference between local time and UTC
       mm'=minutes difference between local time and UTC

</pre>
<p>[src/gdevpdf.c]</p>
</blockquote>

<p><strong><a name="2007-10-15T064304.430544Z"></a>
2007-10-15T06:43:04.430544Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Added code to the pxlcolor device (gdevpx.c) to set the color space even
if the test for "portrait transformations" fails.

DETAILS:

The pclxl_begin_image() function performs a rather complicated test to
see if the image transformation can be "handled" (line 1434).  If this
test fails the routine falls through to using gx_default_begin_image().
However, in this case the pcl-xl color space is never set and if
the previous color space was eGray the pcl-xl stream will fail with
ExtraData (because 3 times as much data as expected will be written).
Presumably the inverse is also true, but I don't have a test case for it.

The solution is to call pclxl_set_color_space() in the use_default
case (a possibly more correct solution would be to call
pclxl_set_color_palette()).

</pre>
<p>[src/gdevpx.c]</p>
</blockquote>

<p><strong><a name="2007-10-12T202208.884187Z"></a>
2007-10-12T20:22:08.884187Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix SEGV when clist used with pdf14_cmykspot device.
Bug 689493 for customer #190.

DETAILS:

When the clist is used, the pdf14 device sets the clist color procs
(including get_color_comp_index) to it's own procedures, saving the
actual target procs. When the Separation name is new, we need to use
the saved target procs.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-10-12T163807.833396Z"></a>
2007-10-12T16:38:07.833396Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix divide by zero crash. Bug 689493 reported by customer #190.

DETAILS:

When new_width is 0, just use 1 in the test (works well enough
for checking overflow)

</pre>
<p>[src/gdevprn.c]</p>
</blockquote>

<p><strong><a name="2007-10-11T163626.031981Z"></a>
2007-10-11T16:36:26.031981Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix incorrect colors with transparency to cmyk+spot devices (such as tiffsep).
Bug 689494 for customer #190.

DETAILS:

CMYK + Spot colors are subtractive. The blending with the 'bg' color was
inverted, causing very strange colors.

Note that the pdf14_cmykspot_put_image is VERY inefficient and at the
very least should have logic added to write runs of the same color
as a wide rectangle (rather than the current 1x1 pixel rectangles).

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-10-10T230218.957895Z"></a>
2007-10-10T23:02:18.957895Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (stroking) : Prevent installing an extra clipper device, step 2.

DETAILS :

Bug 689427 "Superposed clippers".

The last patch doesn't fix the problem when stroking
a path with a shading color.

The new code distinguishes 3 cases :

1. When painting happens through low level device methods
which don't accept a clipping path. It happens inside 
stroke_fill, so the new code passes the clipper device to it.

2. When the painting happens through fill_path, 
which does handle a clipping path. It happens inside
FILL_STROKE_PATH, so the new code doesn't pass the clipper to it,
but passes the clipping path as it worked before the last patch.

3. When the stroking algorithm is called from 'strokepath',
don't need a clipping at all. This case works as before,
but the new code doesn't construct a clipping device.

Minor change : Added a new argument 'dev' to the macro
FILL_STROKE_PATH to simplify the code understanding and debugging.

</pre>
<p>[src/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2007-10-10T184235.474048Z"></a>
2007-10-10T18:42:35.474048Z Ralph Giles</strong></p>
<blockquote>
<pre>
Pass the results of calling cups-config to cups.mak from configure 
through the top-level makefile rather than calling cups-config directly, 
so that passing an alternate cups environment to configure works.
Bug 689496.

DETAILS:

This is more consistent, since configure and cups.mak were previously 
calling cups independently. However, setting the cups environment at
the make level my have accidentally worked before; it won't work now.
</pre>
<p>[src/Makefile.in src/configure.ac cups/cups.mak]</p>
</blockquote>

<p><strong><a name="2007-10-10T174038.235834Z"></a>
2007-10-10T17:40:38.235834Z Ralph Giles</strong></p>
<blockquote>
<pre>
Turn on keyword substitution on pdf_cslayer.ps. This is the correct fix 
for the issue mentinoed in r8283. Also set native line endings and 
remove some spurious executable properties.
</pre>
<p>[lib/EndOfTask.ps lib/PDFX_def.ps lib/PDFA_def.ps lib/dumphint.ps lib/pdf_cslayer.ps]</p>
</blockquote>

<p><strong><a name="2007-10-10T161923.023493Z"></a>
2007-10-10T16:19:23.023493Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Fixed Id line to make nightly regression run happy.
</pre>
<p>[lib/pdf_cslayer.ps]</p>
</blockquote>

<p><strong><a name="2007-10-10T152826.622499Z"></a>
2007-10-10T15:28:26.622499Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (stroking) : Prevent installing an extra clipper device.

DETAILS :

Bug 689427 "Superposed clippers".

The old code installs a clipper in gx_stroke_path_only_aux
and then (indirectly) calls gx_general_fill_path
with passing same clipping path. It caused gx_general_fill_path
to install a second clipper with same clipping path.
This patch simply passes down a NULL clipping path.

Minor change : Added a 'pcpath' argument to the macro
FILL_STROKE_PATH for easier understanding and debugging.

</pre>
<p>[src/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2007-10-10T101345.175824Z"></a>
2007-10-10T10:13:45.175824Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdf14 device) : Optimize the buffer backdropping, step 2.

DETAILS :

1. Intersect the backdrop rectangle with the bbox of a real painting to the transparebcy buffer,
which is accummulated from pdf14_fill_rectangle. It reduces the rectangle for a faster blending.
1.1. Removed min_int, max_int from pdf14_buf_new against an integer overflow when computing 
sizes of rectangles.
1.2. Do intersect rectangles in In pdf14_put_image, pdf14_cmykspot_put_image, pdf14_custom_put_image.

2. dump_planar_rgba still could access outside the buffer due to a recent patch is incomplete.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-10-10T093832.826812Z"></a>
2007-10-10T09:38:32.826812Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdf14 device) : Optimize the buffer backdropping, step 1.

DETAILS :

This change is algorithmically equivalent.
It only defines some local variables as a preparation to the next change.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-10-10T085939.164904Z"></a>
2007-10-10T08:59:39.164904Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdf14 device) : Don't allocate transparency buffer for bands that appear outside the transparency bounding box.

DETAILS :

This is an optimization, which should be algorithmically equivalent.

For bands outside the transparency bounding box the old code
allocated a zero length buffer and performed fake operations with it.

The main change is gdevp14.c ln 550.
Others prevent an access to the buffer when it is not allocated.

Note that in some cases the new check is excessive
because (width &lt;= 0 || height &lt;= 0) normally means no buffer.
We check for (buf-&gt;data == NULL) anyway to simplify the sefity proof
and documentation.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-10-10T081249.566532Z"></a>
2007-10-10T08:12:49.566532Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdf14 device) : Properly intersect rects when composing transparency buffers (continued 2).

DETAILS :

Bug 689498 "transparency: The buffer backdroping code can write outside bufers.".
Bug 688631 "PDF segfault".

This patch ports the revision 7064 changes from pdf14_put_image to
pdf14_cmykspot_put_image and pdf14_custom_put_image, which were added 
after the revision 7064. They need same improvement, which was mised
due to a development miscoordination.

This change is committed without any testing,
because the author has no test cases which involve
pdf14_cmykspot_put_image and pdf14_custom_put_image.
Possibly they need to build Ghostscript with special options 
and to run the test case of the bug 688631 with special devices.
The bug 689498 is passed to Suport for further processing and testing.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-10-09T193327.492485Z"></a>
2007-10-09T19:33:27.492485Z Till Kamppeter</strong></p>
<blockquote>
<pre>
On "make soinstall" some files did not get installed.
</pre>
<p>[src/unix-dll.mak]</p>
</blockquote>

<p><strong><a name="2007-10-09T170249.926924Z"></a>
2007-10-09T17:02:49.926924Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (FAPI / UFST bridge) : A crash when processing an embedded CIDFontType 11.

DETAILS :

Debugged with running the test case of the bug 689471 with FAPI.
Needs an additional change to lib/FAPIconfig for running the test case with FAPI :

- /HookDiskFonts        [1 2 9 11 42]  % FontType values for disk PS fonts to be redirected to FAPI.
- /HookEmbeddedFonts    [1 2 9 11 42]  % FontType values for embedded PS fonts to be redirected to FAPI.
+ /HookDiskFonts        [2 9 11 42]  % FontType values for disk PS fonts to be redirected to FAPI.
+ /HookEmbeddedFonts    [2 9 11 42]  % FontType values for embedded PS fonts to be redirected to FAPI.

because UFST still can't handle embedded Type 1.

This patch passes impl_PCLchId2ptr as p_PCLglyphID2Ptr argument.
We believe it is correct for True Type,
but we're not sure about Type 1,
because Type 1 composite glyphs refer subglyphs 
in an inobvious way - see Type 1 specification.

</pre>
<p>[src/fapiufst.c]</p>
</blockquote>

<p><strong><a name="2007-10-09T082849.108879Z"></a>
2007-10-09T08:28:49.108879Z Ken Sharp</strong></p>
<blockquote>
<pre>
pdfwrite: Allow downsampling of images in a /Indexed colour space, provided the
downsampling type is 'subsample'.

DETAILS:
Bug 689265 "PDF created by GS 8.57 is much larger than from competitive creator"

The original job contains several images, including one large one, which are in a 
/Indexed colour space. We can't use average or bicubic downsampling with /Indexed
colour space, because the colours in the space may not be linear. It ought to be
possible to use subsampling though.

Where we previously checked the image colour space and decided to disable downsampling
if the colour space was /Indexed, we now additionally check the downsampling type
and permit it if the type is 'Subsample'.

(gdevpdfi.c) pdf_begin_typed_image, check the downsample type as well as the colour 
space before deciding not to allow downsampling. 

(gdevpdsi.c) psdf_setup_image_filters, check if the colour space is /Indexed before 
deciding which set of image parameters to use (2 places). Also, if we do encounter a
/Indexed space, make the compression filter into Flate to ensure we don't try and use any 
kind of JPEG compression, which may not work properly with Indexed spaces, and in any case
is not the most appropriate type of compression in this situation.

</pre>
<p>[src/gdevpsdi.c src/gdevpdfi.c]</p>
</blockquote>

<p><strong><a name="2007-10-09T000624.193850Z"></a>
2007-10-09T00:06:24.193850Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (font emulation) : Could not handle unknown Ordering with FAPI.

DETAILS :

Debugged with running the test case of the bug 689471 with FAPI.

</pre>
<p>[lib/gs_fntem.ps]</p>
</blockquote>

<p><strong><a name="2007-10-08T100533.511010Z"></a>
2007-10-08T10:05:33.511010Z Ken Sharp</strong></p>
<blockquote>
<pre>
pdfwrite: Alter the AIIM URL emitted when creating PDF/A files.

DETAILS:
Bug #689375 ""

When writing PDF/A files we need to put a URL for the AIIM group in the metadata. Previously we were writing 'http://www.aiim.org/pdfa/ns/id.html' which is what Acrobat 7 does, now we write 'http://www.aiim.org/pdfa/ns/id/' which is what Acrobat 8 does.

(gzpdfe.c) pdf_write_document_metadata change the URL as above.

</pre>
<p>[src/gdevpdfe.c]</p>
</blockquote>

<p><strong><a name="2007-10-08T071332.510990Z"></a>
2007-10-08T07:13:32.510990Z Ken Sharp</strong></p>
<blockquote>
<pre>
pdfwrite: when encountering a glyph in a type 3 font for which no Charproc is defined 
emit a simple setcachedevice operation instead of an empty stream.

DETAILS:
Bug #688834 "Undefined characters in Type 3 fonts cause PDF conversion to fail"

The original report, based on an older version of pdfwrite, states that an error occurs with 
pdfwrite when using glyphs from a type 3 font where there is no charproc defined for the
glyphs.

In fact, with the current version of pdfwrite, no error occurs, but the resulting file
causes Acrobat to give warnings and display the result incorrectly. NB other PDF consumers
do not behave this way.

This appears to be caused by pdfwrite emitting an empty stream (length 0), because no charproc 
is captured for the glyph (since it has none). For some reason Acrobat takes exception to this.

A simple solution is to write a stream which is not empty. The sequence '0 0 0 0 0 0 d1'
, a

setcachedevice with arguments all 0, resolves the problem.

(gdevpdtt.c) In pdf_text_process, after capturing a Charproc for a type 3 font, check the length
of the stream. If it is 0 bytes, then emit '0 0 0 0 0 0 d1' and carry on.


</pre>
<p>[src/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2007-10-07T180911.121700Z"></a>
2007-10-07T18:09:11.121700Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Ignore font errors that do not belong to embedded subset.

DETAILS :

Bug 689068 "ps2pdf13 fails with Error: /invalidfont in --ashow--".

The document could successfully rasterize,
but failed with invalidfont when converting to PDF.
It happened due to a missed glyph,
which is not atually used in the doeument.

The patch skips font errors that do not belong to the font subset.
However if the user requests to embed a complete font,
a warning is printed to stderr and the document fails
due to the font error as before the patch.

Changes :

1. gdevpdtb.c : Process a coplete font copy error as explained above.

2. gsfont.c : Ignore missed glyphs when computing the "fixed width" font feature.

</pre>
<p>[src/gdevpdtb.c src/gsfont.c]</p>
</blockquote>

<p><strong><a name="2007-10-04T064654.927607Z"></a>
2007-10-04T06:46:54.927607Z Ralph Giles</strong></p>
<blockquote>
<pre>
Revert a change inadvertently included r8257. This broke the MSVC
build, which does not define CC_SHARED.
</pre>
<p>[src/lib.mak]</p>
</blockquote>

<p><strong><a name="2007-10-03T173735.315273Z"></a>
2007-10-03T17:37:35.315273Z Ray Johnston</strong></p>
<blockquote>
<pre>
Revert patch 8268 (restoring the FCOfontmap-* files) and add the Encoding/
directory to the RESOURCE_LIST so that it will be include in the %rom%
file system. This is the _real_ fix to bug #689050 and explains why the
symptoms appeared to be related to having Wingdings installed on the
system. Thanks to Henry and Igor in pointing out the incorrect Encoding
used in the previous patch that led me to the actual problem.
</pre>
<p>[lib/FCOfontmap-PCLPS3 lib/FCOfontmap-PS3 src/int.mak lib/FCOfontmap-PCLPS2]</p>
</blockquote>

<p><strong><a name="2007-10-03T044018.040901Z"></a>
2007-10-03T04:40:18.040901Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix FCOfontmap-* files so that Wingdings will be found.
Bug #689050 for customer #951.

</pre>
<p>[lib/FCOfontmap-PCLPS3 lib/FCOfontmap-PS3 lib/FCOfontmap-PCLPS2]</p>
</blockquote>

<p><strong><a name="2007-10-03T001812.256656Z"></a>
2007-10-03T00:18:12.256656Z Ralph Giles</strong></p>
<blockquote>
<pre>
Document the .IgnoreNumCopies device parameter. Bug 689491.
</pre>
<p>[doc/Use.htm doc/Language.htm]</p>
</blockquote>

<p><strong><a name="2007-10-02T235530.880679Z"></a>
2007-10-02T23:55:30.880679Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add extraction of layer information from Illustratir CS2/CS3 PDF files
to the code base but don't run it in the default configuration.

</pre>
<p>[src/int.mak doc/Develop.htm lib/pdf_cslayer.ps]</p>
</blockquote>

<p><strong><a name="2007-10-02T073158.125500Z"></a>
2007-10-02T07:31:58.125500Z Ken Sharp</strong></p>
<blockquote>
<pre>
pdfwrite: Convert 'text' followed by 'text charpath stroke' to a single text
operation by using text rendering mode 2.

DETAILS:
Bug #689310 "Offset between text and outline in pdfwrite.dev"

Emitting text, followed by the same text as an argument to charpath, and then stroking the
resulting path previously resulted in a large path being emitted and stroked in the PDF file. 

This is inefficient, but worse the path is not grid fitted, whereas the text is. When
used to stroke the outline of previously rendered text, either in a different colour or to
create a 'bold' effect, the emitted path did not always precisely match the rendered text.

This change is to emit this PostScript construct using the closest available match in PDF, 
which is the text rendering mode. There are two parts to this change, firstly to identify 
when a path is the result of a charpath, and secondly to merge text followed by charpath/stroke
operations into a single operation on output.

1. (gzpath.h) Add a new member 'last_charpath_segment' to the gx_path_s structure. Update the
   path garbage collection code for relocation of new variable.

2. (gxpath.c) Initialise the new member 'last_charpath_segment' to 0 in
   gx_path_init_contents, and also in path_alloc_copy to prevent copies being identified as
   the result of a charpath.

3. (gxchar.c) We need to be able to tell if a path was the result of a charpath. To do this
   we store the final segment of a path in 'last_charpath_segment' of the path
   structure during show_finish, if the current operation was a charpath. See also item 11.

4. (gdevpdfx.h) Add a new member 'last_charpath_op' to the gx_device_pdf_s structure, to
   hold the boolean argument associated with a charpath operation. Also add to the 
   pdf_substream_s structure to allow us to save and restore this value on entry to or
   exit from a PDF substream.

5. (gdevpdti.c) Save and restore the value of last_charpath_op in pdf_enter_substream
   and pdf_exit_substream.

6. (gdevpdfx.h) Add a new member variable 'last_charpath_op' to the 'pdf_substream_save_s' 
   structure to allow us to save and restore the last_charpath_op as noted above.

7. (gdevpdtt.c) During gdev_pdf_text_begin, if the operation is a charpath, check the
   following conditions, if met then store a copy of the charpath boolean variable in 
   a new member of the gx_device_pdf_s structure.
       1. Operation must be a charpath
       2. Current path must be empty (can't handle charpath concatenated to existing path)
       3. The font being used for the current text must be the same as the font used for
          the previous stored (but not yet emitted) text.
       4. The initial point of the text for the charpath must match the initial point of
          the previous stored text.
       5. The text bytes must be the same as the previous stored text.
       6. The point size of the text must match the previous stored text.
   Also, move the calculation of the font point size out of pdf_update_text_state so that
   we can calculate the size in pdf_compare_text_state_for_charpath' defined in 9 below
   without duplicating code.

8. (gdevpdtt.h) Prototype 'pdf_calculate_text_size'

9. (gdevpdts.c) Add a new function 'pdf_compare_text_state_for_charpath' to do the 
   checking noted above. The pdf_text_state_s structure is not defined publicly, so 
   we need code to access its members. Also add a function 'pdf_modify_text_render_mode'
   which will attempt to add a rendering mode (stroke, fill or clip) to existing text
   by updating the existing text rendering mode. Returns 0 if the existing text cannot
   be modified, and we fall back to emitting a path and stroke.

10. (gdevpdts.h) Add prototypes for the functions required in 9.

11. (gdevpdfd.c) In pdf_stroke_path, if the 'last_charpath_op' member of the pdf device
   structure is set, perform some more checks (below) and if passed, set the text render
   mode of the stored text, set the stroke colour, set the line width, and force the stored
   text to be emitted. This conveniently results in a gsave/grestore pair round the
   graphics state changes.
      1. The last charpath operation must have been 'false charpath'
      2. There must be a non-empty path (result of the charpath operation)
      3. The 'last_charpath_segment' stored in the path must match the actual last segment
         in the path. (can't handle path segments added to the result of a charpath)

12. (gdevpdfg.h) Make the pdf_reset_color routine public, as we need to be able to set the 
   colour from pdf_stroke_path.

13. (gddevpdfg.c) We need to be able to set a stroke colour while in a TEXT context,
   previously the routine pdf_reset_color, which emits colours and spaces, immediately
   switched to a STREAM context, which caused pending text to be flushed. pdf_reset_color
   was only called from two places, pdf_set_drawing_color and pdf_set_pure_color. The
   switch to a STREAM context has been moved to these routines, leaving pdf_reset_color to
   actually do the work without worrying about the context.
   It was found necessary to also reproduce some checks before switching context, to
   prevent unnecessary context switches.
   Removed unused local variable 'process_color' from pdf_reset_color.

There is scope for additional enhancement with this code. Presently there is no attempt to
deal with 'charpath gsave fill grestore stroke' constructs, nor to handle clipping paths 
resulting from charpath. There may be other possibilities.


</pre>
<p>[src/gdevpdfx.h src/gxchar.c src/gdevpdts.c src/gdevpdtt.c src/gzpath.h src/gdevpdfd.c src/gdevpdts.h src/gdevpdfg.c src/gdevpdti.c src/gdevpdtt.h src/gdevpdfg.h src/gxpath.c]</p>
</blockquote>

<p><strong><a name="2007-10-01T230253.086636Z"></a>
2007-10-01T23:02:53.086636Z Ralph Giles</strong></p>
<blockquote>
<pre>
Have mkromfs use &#36;(GS_INIT) instead of hard-coding gs_init.ps. It was
intended that this be part of r8257.
</pre>
<p>[src/int.mak]</p>
</blockquote>

<p><strong><a name="2007-10-01T230035.110412Z"></a>
2007-10-01T23:00:35.110412Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update pkg-config support in the ijs tree.
</pre>
<p>[ijs/Makefile.am]</p>
</blockquote>

<p><strong><a name="2007-10-01T225959.038063Z"></a>
2007-10-01T22:59:59.038063Z Ralph Giles</strong></p>
<blockquote>
<pre>
Improve portability in the autoconf build. Solaris doesn't support 'grep 
-q'. Bug 689490.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-10-01T062621.808008Z"></a>
2007-10-01T06:26:21.808008Z Suzuki Toshiya</strong></p>
<blockquote>
<pre>
Fix: (TT font handler) : Use given prebuilt_encoding when Apple Roman TrueType cmap subtable is chosen

DETAILS:
As current implementation assumes /prebuilt_encoding[] is
compatible with WinAnsiEncoding when Microsoft UCS2 TrueType
cmap subtable is chosen, current implementation assumes
/prebuilt_encoding[] is same with MacRomanEncoding when
Apple Roman TrueType cmap subtable is chosen.
/prebuilt_encoding[] is completely ignored and the inverse
of MacRomanEncoding is used. Therefore, when Apple Roman
TrueType cmap subtable is chosen but /Encoding is
StandardEncoding or PDFDocEncoding, some characters are
shown by wrong glyphs. This patch uses /prebuild_encoding[]
if it's given, when Apple Roman TrueType cmap subtable is
chosen.

According to PDF Ref 1.7 p. 431, MacRomanEncoding does not
cover all characters in Apple Roman TrueType cmap subtable,
16 characters are missing. To exploit the glyphs as many
as possible via Apple Roman TrueType cmap subtable, this
patch introduces "MacRomanEncodingForTrueType" including
missing 16 characters. By this change, 16 glyphnames
can be exploited via Apple Roman TrueType cmap subtable.

There might be broken TrueType fonts that use the names
in MacRomanEncoding at incompatible 8bit charcode. The
text drawn by such fonts would be broken, the results are
unexpected.

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2007-10-01T061918.139797Z"></a>
2007-10-01T06:19:18.139797Z Suzuki Toshiya</strong></p>
<blockquote>
<pre>
Fix: Preprocess the glyphnames in prebuilt_encoding by AdobeGlyphList for Microsft UCS2 cmap subtable

DETAILS:
According to PDF Ref 1.7 p. 430, Adobe modern products
always prioritize Microsoft UCS2 TrueType cmap subtable
regardless with /Encoding, as far as the font is declared
as Nonsymbolic by /Flags. For example, even if /Encoding
is MacRomanEncoding, Microsoft UCS2 TrueType cmap subtable
is prioritized than Apple Roman TrueType cmap subtable.
The encoding of Microsoft UCS2 TrueType cmap is not a
superset of MacRomanEncoding, see PDF Ref 1.7 Appendix D.
Current implementation expects the content of /Encoding 
is always compatible with chosen TrueType cmap subtable,
thus unexpected mismatching causes loss of glyph like:
bug 689351 "Content Loss for certain Embedded Type42 Glyphs with gs8.57"

When Microsoft UCS2 TrueType cmap subtable is chosen,
the glyphnames used in /prebuilt_encoding[] should be
preprocessed: the glyphnames changed to the charcode
compatible with Microsoft UCS2 encoding scheme, before
combining with charcode-glyph mapping table in Microsoft
UCS2 TrueType cmap subtable. The preprocessing should
be done by AdobeGlyphList that maps known glyphnames
to UCS2 charcode. The unknown glyphnames are left to
second processing in /.pdfmapchars. This preprocess
fixes bug 689351.

There might be broken TrueType fonts that use the names
in AdobeGlyphList at incompatible UCS2 charcode. The text
drawn by such fonts would be broken, the results are
unexpected.

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2007-09-30T194625.258028Z"></a>
2007-09-30T19:46:25.258028Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add an option that controls rendering of PDF annotations. By default
annotations are rendered as before.

</pre>
<p>[lib/pdf_main.ps doc/Use.htm]</p>
</blockquote>

<p><strong><a name="2007-09-29T055334.943145Z"></a>
2007-09-29T05:53:34.943145Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Following the PDF spec, don't use .notdef glyph in Type 3 font.
.notdef may not be present at all. Bug 689475

</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2007-09-27T230607.081517Z"></a>
2007-09-27T23:06:07.081517Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the mkromfs code under 'make clean'. Bug 689474.
Also, use the GS_INIT define instead of hard-coding gs_init.ps
as the root of the postscript library code.
</pre>
<p>[src/lib.mak src/gs.mak]</p>
</blockquote>

<p><strong><a name="2007-09-27T203039.973443Z"></a>
2007-09-27T20:30:39.973443Z Ralph Giles</strong></p>
<blockquote>
<pre>
Improve shared build support on MacOS X.
</pre>
<p>[src/configure.ac src/unix-dll.mak]</p>
</blockquote>

<p><strong><a name="2007-09-27T202651.405933Z"></a>
2007-09-27T20:26:51.405933Z Ralph Giles</strong></p>
<blockquote>
<pre>
Install iapi.h and ierrors.h as part of the soinstall makefile target.
Bug 689466.
</pre>
<p>[src/macosx.mak src/Makefile.in src/unix-dll.mak src/unix-gcc.mak]</p>
</blockquote>

<p><strong><a name="2007-09-27T202046.283268Z"></a>
2007-09-27T20:20:46.283268Z Ray Johnston</strong></p>
<blockquote>
<pre>
Prevent BandWidth from being set smaller than the page width. Fixes
crash reported in bug #688734.
</pre>
<p>[src/gxclist.c]</p>
</blockquote>

<p><strong><a name="2007-09-26T094855.994917Z"></a>
2007-09-26T09:48:55.994917Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (Windows installer) : MSVC can't build dwinst.c .

DETAILS :

A recent patch erroneusly replaced 'private' keyward in a C++ class definition.

</pre>
<p>[src/dwinst.h]</p>
</blockquote>

<p><strong><a name="2007-09-26T043720.025441Z"></a>
2007-09-26T04:37:20.025441Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix multiple inclusion of page objects in the optimized PDF file.
Extend special handling of page objects to Annots and AcroForm
object enumeration. Bug 689292, customer 932.

</pre>
<p>[lib/pdfopt.ps]</p>
</blockquote>

<p><strong><a name="2007-09-25T133124.199299Z"></a>
2007-09-25T13:31:24.199299Z Ralph Giles</strong></p>
<blockquote>
<pre>
Replace the 'private' define with the now standard C keyword 'static'.          

DETAILS:
                                                                                The compilers we support have supported static for some time now, so            
idiomatic, and removes one of the obstacles to compiling Ghostscript            
as C++.

The patch also removes support for compilation with -dNOPRIVATE, which          
is not longer necessary with modern debuggers.
</pre>
<p>[src/gdevm48.c src/idstack.c src/gdevmsxf.c src/gdevrinkj.c src/gdevmem.c src/gdevmem.h src/gdevwdib.c src/gxoprect.c src/gdevsunr.c src/zvmem.c src/gdevpdtc.c src/gstrap.c src/gsfcmap1.c src/gxxfont.h src/gswts.c src/gsstate.c src/gdevlbp8.c src/zcsdevn.c src/gdevdm24.c src/zcontext.c src/gxdhtserial.c src/gdevpdts.c src/gdevcljc.c src/iscanbin.c src/gdevmiff.c contrib/gdevlx7.c src/gxclutil.c src/gp_mshdl.c src/zfont.c contrib/japanese/gdevml6.c src/zarray.c src/gxdevcli.h src/gdevpe.c src/zchar42.c src/gsfont0.c src/gscscie.c contrib/lips4/gdevlips.c src/gdevwts.c src/zdfilter.c src/icfontab.c src/zht1.c src/zdevcal.c src/zpcolor.c src/gdevpdfi.c src/zcssepr.c src/sdcparam.c contrib/gdevcd8.c src/bcwin32.mak src/zdps1.c src/gdevokii.c src/gdevpdtd.c src/zcfont.c src/zhsb.c src/gdevprna.c src/zcolor.c src/gxhtbit.c src/sfxfd.c src/zupath.c contrib/lips4/gdevl4v.c src/gdevpdtt.c src/gpmisc.c src/gdevpbm.c src/ireclaim.c src/gdevmrun.c src/gconf.c contrib/japanese/gdevnpdl.c src/zfbcp.c contrib/japanese/gdevmag.c src/gserver.c src/gp_psync.c src/gdevcmap.c src/zht2.c src/gdevpdfj.c src/zfarc4.c src/gp_os2pr.c src/gdevwprn.c src/gdevpsd.c src/gsiomacres.c src/gxclfile.c src/gxpdash.c src/ztrap.c src/gxfilltr.h src/gdevpdte.c src/gdevdevn.c doc/Drivers.htm contrib/japanese/gdevalps.c src/gsgcache.c src/zfile.c src/gdev4693.c src/gsptype1.c src/gxchar.c src/gxclbits.c src/zfcid0.c src/gsfcid2.c src/zgstate.c contrib/gomni.c src/gsalloc.c src/zfontenum.c src/gdevmeds.c src/gdevmpla.c src/gdev4081.c src/gscicach.c src/watclib.mak src/gxclzlib.c src/istack.c src/zfont0.c src/zmath.c src/gdevpdfk.c src/gdevhit.c src/gxclimag.c src/gxhintn1.c src/gxfillts.h src/gdevpdtf.c src/gdevddrw.c src/gschar.c src/gxht.c src/gdevpsfm.c src/sarc4.c src/gdevpsdp.c src/gxcht.c src/gsptype2.c src/gdevpsu.c src/gdevxalt.c src/gdevclj.c src/zvmem2.c src/zfcid1.c src/gstrans.c contrib/gdevln03.c src/gstype2.c src/icontext.c src/zstring.c src/zfont32.c src/gzspotan.c src/gxclip2.c src/gdevdrop.c src/gp_macio.c src/sbhc.c src/scfd.c src/gsdps.c src/zfont1.c src/spngp.c src/gdevcgml.c src/gdevpx.c src/gsmatrix.c src/gdevl256.c src/igcref.c src/zcharx.c src/gxtype1.c src/zdouble.c src/spdiff.c src/gdevcp50.c src/gsmemret.c src/gdevpdtw.c src/gxclip.c src/sfilter1.c src/iname.c src/zmedia2.c src/gxiscale.c src/gxpcmap.c src/gdevnfwd.c src/zcontrol.c src/gdevxcmp.c src/gsfcmap.c src/scfe.c src/zfont2.c src/gdevlj56.c src/gxp1fill.c src/gsciemap.c src/gdevhl7x.c src/zdscpars.c src/gdevos2p.c src/gsparam.c src/gdevpdfm.c src/gp_unix_cache.c src/imain.c src/gdevwpr2.c src/zfilter2.c src/zfont42.c src/zchar.c src/smd5.c src/gdevsun.c src/ztrans.c src/sjpx.c src/zcsindex.c src/gdevrops.c src/gxipixel.c src/zcidtest.c src/sfilter2.c src/gdevijs.c src/gdevsnfb.c src/gdevifno.c src/gscrd.c src/gxmclip.c src/gdevjpx.c src/gdevcslw.c src/zfdctd.c src/zdps.c contrib/gdevhl12.c src/gdevdsp.c src/zmatrix.c src/gdevescp.c src/gsiodev.c src/igc.c src/gdevpipe.c src/msvc32.mak src/gdevmacxf.c src/gsfunc0.c src/gdevsvga.c src/gdevpdti.c src/zdosio.c src/gdevepsn.c src/gsparam2.c src/gdevpsf1.c src/gdevpsds.c src/zfsample.c src/zfdecode.c src/gsstruct.h src/siscale.c src/gxfill.c src/gsdsrc.c src/gximag3x.c src/gxclread.c src/dwtrace.c src/gdevmswn.c src/gdevjpeg.c src/siinterp.c src/gdevbbox.c src/gsdll.c src/gspath1.c src/gdevtfax.c src/gdevpjet.c src/gdevphex.c src/sjpegc.c src/gshtscr.c src/zfdcte.c src/gsnogc.c src/zfcmap.c src/gdevbit.c src/gdevfax.c src/gdevbmpa.c src/gsequivc.c src/gp_wsync.c src/gsdevice.c src/gxclmem.c src/gscparam.c src/gshtx.c src/gdevsj48.c src/gdevpdfo.c src/sdctd.c src/gsmemory.c contrib/japanese/gdevfmlbp.c src/gdevcdj.c src/scfdgen.c src/ttcalc.c src/gdevtknk.c src/gdevpsf2.c src/gxidata.c src/gsroptab.c src/gdevm1.c src/gsistate.c src/os2.mak src/sstring.c src/gscolor2.c src/gxpath.c src/scfparam.c src/gdevupd.c src/interp.c src/gsmalloc.c src/zcrd.c src/ttfmain.c doc/C-style.htm src/gdevm40.c contrib/japanese/dviprlib.c src/gsiodisk.c src/gdevpsim.c contrib/japanese/dviprlib.h src/gdevpcfb.c src/gdevvec.c src/gp_msprn.c src/gdevmgr.c src/sdeparam.c src/gxacpath.c src/gdevpdfp.c src/ziodev.c src/gslib.c src/gdevimgn.c src/gdevvglb.c src/sdcte.c src/gsovrc.c src/gxshade1.c src/gxccache.c src/gdevm32.c src/gxfdrop.c src/gp_unifs.c src/gsparams.c src/gxhintn.c src/gsiorom.c src/gdevbjcl.c src/dvx-gcc.mak src/gdevpsdu.c src/gp_mswin.c src/gdevm2.c src/gspath.c src/gdevwddb.c src/gp_os2.c src/zcolor1.c src/gxpcopy.c src/gdevdjet.c src/gdevstc.c src/ialloc.c src/gxfapiu.c contrib/japanese/gdevlbp3.c src/zpath1.c src/gdevm24.c contrib/eplaser/gdevescv.c contrib/gdevxes.c src/ilocate.c src/gxdcolor.c src/gdevpm.c src/gdevbmp.c src/gschar0.c src/gdevbmpc.c src/zdevice.c src/gscie.c src/gdevsppr.c src/igcstr.c src/gxi16bit.c src/gdevn533.c src/idebug.c src/gsht.c src/gsncdummy.c src/gsfunc3.c src/gdevm16.c src/gdevperm.c src/genconf.c src/zfilter.c src/gstype42.c src/sa85d.c src/sbcp.c src/zcolor2.c src/gdev3b1.c src/gdevtrac.c src/gp_ntfs.c src/gdevatx.c src/zfproc.c src/genht.c src/zgeneric.c src/gs.c src/gxclrect.c src/zdevice2.c src/gsshade.c src/sjbig2.c src/gdevpdfb.c src/gscrdp.c src/msvclib.mak src/sjbig2.h src/gxclrast.c src/gsicc.c src/zcid.c src/zfile1.c src/gdevp2up.c src/zimage3.c src/gdevo182.c src/zarith.c src/gdevpdfr.c src/zcspixel.c src/gximage1.c src/gdevppla.c src/zmisc1.c contrib/gdevop4w.c src/wccommon.mak src/gsfunc4.c src/gxclpath.c src/gxcmap.c src/gxfcopy.c src/gdevpsft.c src/gdevtfnx.c src/gsmisc.c src/gxicolor.c src/zpath.c src/gdevm4.c contrib/opvp/gdevopvp.c src/gxfillsl.h src/zcolor3.c src/gxpageq.c src/gsdparam.c src/gxcpath.c src/gdevprn.c src/gdevlxm.c contrib/japanese/gdevdmpr.c src/gdevcif.c src/gxdevndi.c src/gdevprn.h src/gdevpdfc.c contrib/gdevgdi.c src/gdevabuf.c src/gdevherc.c src/gdevsgi.c src/zcie.c src/gdevsco.c src/stream.c src/gdevdflt.c src/zcharout.c src/gdevepsc.c src/gdev8510.c src/gximage2.c src/srld.c src/zht.c src/zncdummy.c src/gxstroke.c src/gxshade4.c contrib/gdevlx32.c src/zmisc2.c src/iparam.c src/sjpx_luratech.c src/zrelbit.c src/iinit.c src/gdevxini.c src/gxclist.c contrib/japanese/gdevmjc.c src/watcw32.mak src/gxccman.c src/gsalphac.c src/gdevpsfu.c src/gxshade.c contrib/japanese/gdevmjc.h src/gdevlp8k.c src/zfunc.c src/gsclipsr.c src/idict.c src/ttfmemd.c src/gscoord.c contrib/japanese/gdevrpdl.c src/genarch.c src/ztype.c src/gdevxxf.c src/zshade.c src/gdevpdfd.c src/gdevdgbr.c src/gdevmr2n.c src/gdevxcf.c src/gdevcfax.c src/zicc.c src/zchar1.c src/vdtrace.c src/gscdevn.c src/iscan.c src/gsnotify.c src/gdevpdft.c src/gximage3.c src/gdevpsdi.c src/srle.c src/zfilterx.c contrib/gdevlx50.c src/shcgen.c src/zmisc3.c src/zfapi.c src/zfunc4.c contrib/gdevbjc_.c src/gscpixel.c src/ziodev2.c src/gsiodevs.c src/zmisc.c src/gdevplnx.c src/gxttfb.c src/simscale.c src/zfzlib.c src/Makefile.in src/dscparse.c src/gscsepr.c src/gdev3852.c src/iutil2.c src/dscparse.h src/gsimage.c src/gxwts.c src/gstext.c contrib/japanese/gdevj100.c src/msvccmd.mak src/gdevpdfe.c src/gsflip.c contrib/lips4/gdevlprn.c src/gdevadmp.c src/sidscale.c src/zchar2.c src/zdpnext.c src/geninit.c src/zusparam.c src/gdevjbig2.c src/gdevpdfu.c src/gximage4.c contrib/gdevdj9.c src/gxshade6.c src/gdevp14.c contrib/lips4/gdevl4r.c src/dwinst.h src/gdevpdf.c src/macosx.mak src/zpacked.c src/ifont.h src/zfmd5.c src/gp_dosfe.c src/iutil.c src/gdevpng.c src/zrop.c src/zalg.c src/zfjpx.c src/gzpath.h src/sfxstdio.c src/gspaint.c src/sjbig2_luratech.c contrib/japanese/gdev10v.c contrib/gdevmd2k.c src/sjbig2_luratech.h src/gdevccr.c src/gdevdcrd.c src/zbseq.c src/ziodevsc.c src/imainarg.c src/zfrsd.c src/gdevl31s.c src/gdevdjtc.c src/spprint.c src/gdevpcx.c src/zfileio.c src/zbfont.c src/slzwd.c contrib/japanese/gdevespg.c src/unix-gcc.mak src/gdevpdfv.c src/gxpflat.c src/gxifast.c src/zsysvm.c src/gsimpath.c src/gdevx.c contrib/gdevbjca.c src/gsmemlok.c src/sbwbs.c src/gximage.c src/gdevstc4.c src/ziodevs.c src/unixansi.mak src/gdevpsfx.c src/szlibd.c src/gscspace.c src/gdevimdi.c src/gdevdfax.c src/gdevm8.c src/gdevpnga.c src/gsropc.c src/zstack.c src/gsfcid.c src/gsfont.c src/isave.c src/zimage.c src/gdevm64.c src/gdevcgm.c src/zdict.c src/zfimscale.c src/gdevtsep.c src/gsfont0c.c src/iccfont.c src/gsht1.c src/gdevpdfg.c contrib/japanese/gdevp201.c src/gdevps.c src/gspcolor.c src/gxi12bit.c src/gxcllzw.c src/zfjbig2.c src/gdevpdtb.c src/gsdps1.c src/gdevs3ga.c src/slzwe.c src/gshsb.c src/gscolor.c src/smtf.c src/ztoken.c src/gxpaint.c src/x_.h src/gdevtifs.c src/zchar32.c src/seexec.c src/gdevm56.c src/spsdf.c src/gximono.c src/fapiufst.c src/szlibe.c src/gxctable.c src/gp_vms.c src/gp_iwatc.c src/gp_os9.c src/gdevbj10.c src/gxclipm.c src/zpaint.c src/gdevmac.c src/stdpre.h src/iplugin.c contrib/japanese/gdevfmpr.c src/gsgdata.c src/gdevmac.h]</p>
</blockquote>

<p><strong><a name="2007-09-24T035218.847453Z"></a>
2007-09-24T03:52:18.847453Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Ignore color operations in uncolored type 3 font in PDF files for
compatibility with Acrobat Reader 6 and higher.
Bug 689302, customer 870.

</pre>
<p>[src/int.mak lib/pdf_draw.ps src/zchar.c]</p>
</blockquote>

<p><strong><a name="2007-09-20T121552.643667Z"></a>
2007-09-20T12:15:52.643667Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : A crash in garbager after clist playback fails in image.

DETAILS :

This problem was occasionally detected when disk overflow happens with 
the test case of the bug 689440.

device_clist_enum_ptrs, device_clist_reloc_ptrs process
gx_device_clist::writer.clip_path when image_enum_id is not zero.
The clist playback code sets it when processing an image.
We guess it was done to avoid redundant clist writing,
and we think it's not a best way to do that.

If an image processing fails with an error,
the old code  does not reset image_enum_id.
Later (when the interpreter closes) 
the garbager processes gx_device_clist::writer.clip_path .
But in the test case it appears to be a pointer from global memory
to local memory, and its relocation appears wrong.
A crash happens while validating the heap after the relocation.

We're not sure why gx_device_clist::writer.clip_path
needs to be set between image plane data portions,
and why the garbager methods are coded to process it.
We guess all these manipulations are wrong,
and a right way should be to call cmd_check_clip_path
in clist_image_plane_data. 

See also comment in cmd_check_clip_path : 
"The clip path might have moved in memory".
We guess it assumes that the pointer is not relocated
when image_enum_id is zero and the ppointer is set.
We guess it should be regular assumption
for all cases, and the clist device garbager methods
must never process it.

This patch applies a minimal change to prevent the crash,
and does not close other suspections.
The change simply closes the image enumerator
when writing to it ends with an error.

</pre>
<p>[src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2007-09-20T084949.922199Z"></a>
2007-09-20T08:49:49.922199Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Allow image encoding filter initialization with no parameters passed from the client.

DETAILS :

Bug 689458 "pdfwrite image crash (pcl and xps)".

The change 6122 doesn't account that some client 
may pass no parameters for filter initialization.
Fixing it now and improve the documentation.

</pre>
<p>[src/gdevpsdi.c]</p>
</blockquote>

<p><strong><a name="2007-09-18T191121.591397Z"></a>
2007-09-18T19:11:21.591397Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the build instructions to reflect current practice of shipping 
all the 3rd party libraries we depend on. Bug 689446.
</pre>
<p>[doc/Make.htm]</p>
</blockquote>

<p><strong><a name="2007-09-18T190134.199941Z"></a>
2007-09-18T19:01:34.199941Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct some documentation errors. Bug 689433.
</pre>
<p>[doc/Projects.htm lib/ps2pdf.cmd doc/Use.htm lib/ps2pdf.bat doc/Ps2pdf.htm]</p>
</blockquote>

<p><strong><a name="2007-09-18T173231.734909Z"></a>
2007-09-18T17:32:31.734909Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove obsolete font encoding and compilation instructions from the 
documentation. Bug 689432.
</pre>
<p>[doc/Fonts.htm]</p>
</blockquote>

<p><strong><a name="2007-09-18T154108.152952Z"></a>
2007-09-18T15:41:08.152952Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : The interpolation of imagemask must not apply to high resolution images (continued).

DETAILS :

Fixing an inaccuracy in a comment in the last patch.

</pre>
<p>[lib/gs_img.ps]</p>
</blockquote>

<p><strong><a name="2007-09-18T153351.055573Z"></a>
2007-09-18T15:33:51.055573Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : The interpolation of imagemask must not apply to high resolution images.

DETAILS :

Bug 689249 "Major performance degradation rendering PDF",

The revision 7123 implements a conversion of imagemask 
into a bigger image with a smoother pixel granularity. 
Actually the conversion isn't useful for high resolution images
which map an image pixel into a small number of device pixels.
This patch implements such check and it apparently helps for pdfwrite.

Note it includes an arbitrary threshold,
which may need further adjustment.
See comment in code.

</pre>
<p>[lib/gs_img.ps]</p>
</blockquote>

<p><strong><a name="2007-09-14T101707.152885Z"></a>
2007-09-14T10:17:07.152885Z Igor Melichev</strong></p>
<blockquote>
<pre>
Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued 8).

DETAILS :

Bug 689436 "pattern rendering regression with revision 8095".

Do not write tile phase to clist before trying to write the color.
If the latter fails, the phase may become wrong due to 
overloading cmd_opv_set_tile_phase with tile phase and device halftone phase.

With the test case the old code, when writing a trapezoid to clist, 
first writes halftone phase, then fails to write the pattern color 
and falls back to gx_default_fill_trapezoid.
The latter writes strip_copy_rop with it own phases.
But the clist reader expects strip_copy_rop phase to be written
*after* the tile header, so the reader misses the phase sychronizm.

The fix simply delays writing the phase after the color is written.

</pre>
<p>[src/gxclpath.c]</p>
</blockquote>

<p><strong><a name="2007-09-14T052352.359324Z"></a>
2007-09-14T05:23:52.359324Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add recognition of a CFF file fith the extended header = &lt;01000C02&gt;.
Bug 689449, customer 1110.

</pre>
<p>[lib/pdf_font.ps lib/gs_cff.ps]</p>
</blockquote>

<p><strong><a name="2007-09-13T083048.823871Z"></a>
2007-09-13T08:30:48.823871Z Ken Sharp</strong></p>
<blockquote>
<pre>
Update pdfwrite to handle type 0 fonts with type 1 or type 2 descendant fonts (continued).

DETAILS:
Bug #689212 "irregular baselines - gs pdfwrite changes CFF to Type 3". There are no functional changes, the new code behaves the same as the old. The
temporary buffer allocated in pdf_text_process is used to hold the list of glyph
name indices, and the working buffer of indices for pdf_obtain_font_resource_unencoded,
rather than allocating new memory. This considerably simplifies the clean-up on
error in scan_cmap_text.

1. gdevpdtt.c In pdf_text_process, ensure that enough memory is available in the
   temporary buffer. We need to promote character codes to glyph name indices, so
   we need storage for as many glyph name indices as there were input character
   codes. In addition, we need a temporary buffer of the same size for
   pdf_obtain_font_resource_unencoded (maximum required) so we need to double this amount.

2. Update process_cmap_text to pass the buffer allocated in pdf_text_process, and
   passed as an argument to process_cmap_text, to scan_cmap_text.

3. Alter the definition of scan_cmap_text to take the temporary buffer as an
   argument. Modify the code in scan_cmap_text to use the temporary buffer rather
   than allocating new space. Remove all the code for allocating and especially freeing
   the temporary memory. Some corrections to indenting also performed here.

</pre>
<p>[src/gdevpdtc.c src/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2007-09-11T192917.888456Z"></a>
2007-09-11T19:29:17.888456Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (filling algorithm) : Split big segments before filling a path.

DETAILS :

Bug 689397 "Infinite loop is PS ATS file tp pcxcmyk device."

The old code didn't split big segments due to an inaccurate coding.
It caused a fixed overflow with in a coordinate compitation
and a loop of about 2^30 steps.

</pre>
<p>[src/gxpcopy.c]</p>
</blockquote>

<p><strong><a name="2007-09-10T083142.651229Z"></a>
2007-09-10T08:31:42.651229Z Ken Sharp</strong></p>
<blockquote>
<pre>
Update pdfwrite to handle type 0 fonts with type 1 or type 2 descendant fonts.

DETAILS
Bug #689212 "irregular baselines - gs pdfwrite changes CFF to Type 3"

There was previously no code in pdfwrite to handle type 0 fonts with type 1 descendant 
fonts. This caused pdfwrite to 'fall back' to the default implementartion which converts
glyphs to a type 3 bitmap font.

This change is to enable scalable fonts to be embedded in the output. NB it is not 
possible, in PDF, to construct a type 0 font with anything other than CIDFonts as 
descendants, and we must therefore output one or more type 1 fonts to do the job.

1. (gdevpdtt.c) in scan_cmap_text add a case to handle a type 1 descendant font. The main
    work is done in this routine; we create a list of glyph name indices representing 
    each of the input character codes and later we use pdf_obtain_font_resource_unencoded
    and the TEXT_FROM_GLYPHS operation to mark the font usage, and create an 'encoded'
    string for output.

    If font-&gt;procs.next_char_glyph returns a glyph name index, then we simply add it to
    our list, if it returns a character code (a CMap can map a character code in the type
    0 font to a character code in a descendant font) then we use the descendant font
    'procs.encode_char' to get a glyph.

    Once we have a complete list of glyphs, we pass it to
    pdf_obtain_font_resource_unencoded to add the glyphs to the encoding, and return a
    string where the character codes match the newly created/modified encoding.

    Finally we pass the encoded string and glyph list to process_text_modify_width, using
    the descendant font.

    A couple of minor points; its possible to change descendant fonts in the middle of a
    string, and we need to cope with that, hence the copying of the last glyph in the list
    when a font_change occurs. Its possible to return a different pdfont if we run out of
    encoding positions in the current one, which can result in multiple type 1 fonts in
    the output.

2. We need to use the function adjust_first_last_char, which was defined private in
   gdevpdte.c, so this has been made public.

3. A prototype for adjust_first_last_char has been added to gdevpdtt.h

4. The function reserve_char_code_in_pdfont was written to handle single glyphs, it can
   now be called with multiple glyphs. The loop for re-using positions in the encoding
   with /.notdef codes didn't use the 'last_reserved_char' argument, which meant that it
   kept returning the same position. To prevent this it now pays attention to the
   'last_reserved_char' argument.

5. Finally, the routine pdf_make_text_glyphs_table_unencoded, which calls
   reserve_char_code_in_pdfont also did not previously expect to be called with multiple
   glyphs. The loop below do_unkown has been modified to use a local variable, instead of
   pdfont-&gt;u.simple.last_reserved_char. THis means that, should an error occur, the value
   of pdfont-&gt;u.simple.last_reserved_char will not be modified.


</pre>
<p>[src/gdevpdtc.c src/gdevpdtt.c src/gdevpdte.c src/gdevpdtt.h]</p>
</blockquote>

<p><strong><a name="2007-09-09T005312.649192Z"></a>
2007-09-09T00:53:12.649192Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make pswrite and epswrite devices generate proper line-interleaved image
stream even when they receive several scan lines at once. This happens when
the source image operator takes large strings as multiple data sources.
Bug 688200, customer 632.

</pre>
<p>[src/gdevps.c]</p>
</blockquote>

<p><strong><a name="2007-09-08T223120.200765Z"></a>
2007-09-08T22:31:20.200765Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Declare Ghostscript as _LARGEFILE64_SOURCE program, i.e. request transitional
interface to large file support. Check for mkstemp64() availability specially.
</pre>
<p>[src/Makefile.in src/configure.ac src/stdpre.h src/gp_unifs.c]</p>
</blockquote>

<p><strong><a name="2007-09-08T215954.482448Z"></a>
2007-09-08T21:59:54.482448Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Include our std.h header first to ensure consistent type definitions in
contributed files. This is required on HP-UX with aC++ compiler.
</pre>
<p>[contrib/gomni.c contrib/pcl3/eprn/pagecount.c contrib/pcl3/src/pclcap.c contrib/gdevlx50.c contrib/opvp/gdevopvp.c contrib/pcl3/eprn/mediasize.c]</p>
</blockquote>

<p><strong><a name="2007-09-08T170559.540260Z"></a>
2007-09-08T17:05:59.540260Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Reflect in the PPD files that the CUPS support comes with GPL Ghostscript now and not with ESP Ghostscript.
</pre>
<p>[cups/pxlmono.ppd cups/pxlcolor.ppd]</p>
</blockquote>

<p><strong><a name="2007-09-05T192105.959793Z"></a>
2007-09-05T19:21:05.959793Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Replace non-standard function call fdopen64() with fdopen(). The former
is not available on most platforms and not needed anyway because O_LARGEFILE
flag is set earlier in the code. Bug 689175.

</pre>
<p>[src/gpmisc.c]</p>
</blockquote>

<p><strong><a name="2007-09-05T075454.782032Z"></a>
2007-09-05T07:54:54.782032Z Suzuki Toshiya</strong></p>
<blockquote>
<pre>
Fix (TT fonts) : Suppress loading trailing data after chosen cmap subtable.

DETAILS:

The current cmap selector/loader tries to load a subtable
for Microsoft platform &amp;&amp; UCS2 encoding with anything
in trailer, although only MS+UCS2 subtable is used.
Thus, if the cmap table has several additional subtables
after MS+UCS2 subtable (e.g. multiple 16bit cmap subtable
for Shift-JIS/Big5/GB2312/Wansung/Johab, or very long
32bit subtable in format 8/10/12, or simple junk data),
cmap subtable loader tries to load MS+UCS2 subtable and
trailing garbage, and tries to define /cmaptab for
concatenated string of them. So, rangecheck or limitcheck
error can occur due to too-long string. Typical example
is found in bug 688337 which is caused by TrueType font
including cmap subtable in format 12.

If we restrict the scope to MS+UCS2 subtable, it must
not be greater than 0xFFFF bytes. Because cmap subtable
headers in format 0,2,4,6 define these tables length in
16bit. The cmap parser is fixed to check the subtable
header content and read exact length of chosen subtable,
to exclude trailing garbage.

In addition, /getinterval_from_stringarray has a bug
that appears when the end of requested string just fits
to the gap of member strings. The bug is fixed, too.

By this patch, bug 688337 is fixed.

DIFFERENCE:

None.
</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2007-09-03T131911.511212Z"></a>
2007-09-03T13:19:11.511212Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix reference counting logic for clip stack elements. The reference counter
now shows the number of gstates that point to a given element directly or
indirectly. Bug 689429.

</pre>
<p>[src/gsclipsr.c src/gsstate.c]</p>
</blockquote>

<p><strong><a name="2007-08-31T205342.169700Z"></a>
2007-08-31T20:53:42.169700Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics library) : Always set HWResolution to clipper device.

DETAILS :

Fixes the bug 689365 
"Clipper device may have a wrong HWResolution".

</pre>
<p>[src/gxfill.c src/gxclip.c]</p>
</blockquote>

<p><strong><a name="2007-08-31T190947.125231Z"></a>
2007-08-31T19:09:47.125231Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics library) : Distinguish two methods gx_make_clip_device_on_stack, gx_make_clip_device_in_heap.

DETAILS :

This is a preparation for fixing the bug 689365 
"Clipper device may have a wrong HWResolution",
step 2.

This change is algorithmically equivalent.

1. Drop tx, ty,arguments, because they always zero.

2. There are 2 different cases in code:
allocation on stack or in heap.
Now we define them explicitely.

3. Adding the 'target' argument,
and adjust reference counters inside the "in heap" method.
The call to open_device is moved inside the methods.

Note that the old code in some cases calls open_device 
after doing some settings (2 occurances in gxfill.c). 
The new code does before that.
We belirvr it is algorithmically equivalent,
because we checked open_device against using the
data being set there.

</pre>
<p>[src/gdevbbox.c src/gxcpath.h src/gximask.c src/gxccache.c src/gxfill.c src/gxclip.c src/gxstroke.c src/gxclrast.c src/gdevdbit.c src/gxipixel.c]</p>
</blockquote>

<p><strong><a name="2007-08-31T172221.775099Z"></a>
2007-08-31T17:22:21.775099Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (graphics library) : Expand gx_make_clip_path_device, gx_make_clip_device.

DETAILS :

This is a preparation for fixing the bug 689365 
"Clipper device may have a wrong HWResolution".

This change is algorithmically equivalent.

The old code defines a function gx_make_clip_path_device,
and a macro gx_make_clip_device similar as a small wrappers for 
gx_make_clip_translate_device. This patch expands
and removes them as FOR a standardization.

The 'list' argument of gx_make_clip_translate_device is replaced with
'pcpath' argument, because the old code always extract the list
from pcpath. The extraction is now done inside gx_make_clip_translate_device.

</pre>
<p>[src/gdevbbox.c src/gxcpath.h src/gximask.c src/gxccache.c src/gxfill.c src/gxclip.c src/gxstroke.c src/gxclrast.c src/gdevdbit.c src/gxipixel.c]</p>
</blockquote>

<p><strong><a name="2007-08-31T153106.557286Z"></a>
2007-08-31T15:31:06.557286Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Remove the pdfwrite/NODISPLAY nonsense from the documentation.

DETAILS :

That statement was always false.

</pre>
<p>[doc/Use.htm]</p>
</blockquote>

<p><strong><a name="2007-08-31T082955.996410Z"></a>
2007-08-31T08:29:55.996410Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A wrong encoding of Metadata (continued).

DETAILS :

The revision 8181 added a bug which caused an infinite loop 
with -dPDFA Altona-Testsuite_p2_S_x3.pdf

</pre>
<p>[src/gdevpdfe.c]</p>
</blockquote>

<p><strong><a name="2007-08-31T082716.425671Z"></a>
2007-08-31T08:27:16.425671Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A crash with incorrect shading.

DETAILS :

Bug 689394  "SEGV with MSVC7 run time checking in Type 7 shading."
See comment in code. 

</pre>
<p>[src/gdevpdfi.c]</p>
</blockquote>

<p><strong><a name="2007-08-31T054344.869532Z"></a>
2007-08-31T05:43:44.869532Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (Type 1 hinter) : Infinite loop in t1_hinter__fix_subglyph_contour_signs.

DETAILS :

Bug 689298 "Infinite loop in t1_hinter__fix_subglyph_contour_signs()".

Well it's a student level error in the algorithm.
Thanks to Alex for the test case with 5 nesting contours.

</pre>
<p>[src/gxhintn1.c]</p>
</blockquote>

<p><strong><a name="2007-08-31T044758.034291Z"></a>
2007-08-31T04:47:58.034291Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (font rendering) : alloc_char_bits could fall into infinite loop.

DETAILS :

Bug 689036 "infinite loop in char cache logic".

The character cache algorithm assumes that a pointer to
any allocated cached_char instance appears somewhere in ccache.table .
However from the old experience we know that
this obvious invariant appears frequently broken due 
to inaccurate manipulation with cache by clients.
For example, a client sometimes reserves and initializes 
a cached_char instance and then fail due to another error 
before storing the pointer to ccache.table.

In the old code a cycle in alloc_char_bits 
strongly depends on this invariant, 
and therefore it is potentially harmful.
In the past we have got a lot of bugs about it.
Now we restrict the cycle with the cache size.
Changed few function prototypes with returning error
if the invariant is broken.
Note that the graphics library interface changes,
so other interpreters must update the calls to 
alloc_char_bits.

</pre>
<p>[src/gxchar.c src/gxccman.c src/gxchar.h src/gxccache.c]</p>
</blockquote>

<p><strong><a name="2007-08-30T055342.339598Z"></a>
2007-08-30T05:53:42.339598Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Uninitialized data after converting a Type 42 font into CID font.

DETAILS :

Bug 689399 "PDFA-Option cause gswin32 to crash".

This change is important with -dPDFA only,
and doesn't change the behavior otherwise.
Some font descriptor fields were not initialized.


</pre>
<p>[src/gdevpdtd.c]</p>
</blockquote>

<p><strong><a name="2007-08-30T023652.268008Z"></a>
2007-08-30T02:36:52.268008Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Properly handle FontMatrix of a Type 3 font.

DETAILS :

Bug 689267 "File converted to PDF displays badly in Acrobat".

Patch from SaGS. His explanation is quoted below.

Part #1: pdfwrite fixes (gdevpdti.c, gdevpdte.c, gdevpdtt.h, gdevpdtt.c :

- Generalize pdfwrite computations for glyph widths and placement, 
  which currently assume an [s 0 0 s tx ty]-type original (= ignoring 
  changes made by makefont &amp; similar) FontMatrix, to work with an 
  arbitrary matrix.

- Fix: the "wy" operand of "d0"/"d1" in Type 3 charproc streams must 
  be zero. Note: other parts of the code already consider wy == 0, 
  and don't need to be changed.

- Remove font_orig_scale() and pdf_font3_scale(), which are not used 
  anymore. Their simple presence is a sign of the assumption that 
  font matrices are simple scalings.

- Minor: remove a dead variable ("int code = 0; ... return code;"). 
  This variable is never changed, because there's another "int code" 
  inside the "for", but it is confusing and takes a lot of research 
  to figure out the behaviour is OK and no usefull error code is 
  lost (it's the 2nd time I stumble against this...)

Notes:
  - All non-Adobe PDF viewers that I tested (Evince/ Fedora 7, 
    Foxit Reader 2.0/ Windows, Jaws PDF Editor 3.5/ Windows, and 
    Ghostscript -r8204) have problems with "weird" font matrices.
    The bug in ghostscript is addressed below.
  - I do have an alternate patch, which "normalises" the 
    FontMatrix, for better viewers compatibility . But this method 
    cannot work when fonts are not embedded: cannot "normalize" 
    something stored in an external file.

 part #2: PDF interpreter fixes (pdf_font.ps, pdf_ops.ps) :

- Force the "wy" parameter of "d0", not only of "d1", in Type 3 
  charproc streams to 0. Comment changed to suggest this is an action 
  is expected to be done as part of enforcing the metrics stored in 
  the PDF (which always imply wy == 0), and not some strange 
  behaviour in Reader.

- A detail in PDF1.7 Ref 5.3.3 "Text Space Details" states that "wy" 
  (or "wx" in WMode 1) must be forced to 0 in PDF text space too, not 
  only in PDF glyph space. To implement this with non-[s 0 0 s tx ty] 
  font matrices, a different method is used: decode "show" strings 
  and extract glyph widths with "cshow", put these into an array, 
  then render the text with "x/yshow".
  - since "wy/x" = 0 in glyph space, the code does not need to use 
    "idtransform", a "div" by "FontMatrix.xx" is sufficient;
  - use a trick (see comment in code) when "FontMatrix.xx" = 0.

CIDFonts are not changed. Those with a "straight" matrix continue to 
work, but there's no improvement if they have a weird "/FontMatrix". 
I think this would require a radical change, and the result will be 
much slower than it is now.

part #3: supplemental ps2write fixes (in opdfread.ps).

- opdfread.ps assumed the FontMatrix is a simple scaling by 0.001;
  generalize the computations to work with an arbitrary matrix.

- Implement a detail of PDF1.7 Ref 5.3.3 "Text Space Details" (nuking 
  the "wy" in text space) if a non-[s 0 0 s tx ty] "/FontMatrix". 
  Similar to the change in the main PDF interpreter, but shorter 
  because opdfread.ps does not handle vertical writing or CID fonts. 

Also "wy" in "d0"/"d1" is already 0 (see patch for pdfwrite), so 
needs no adjustment.

</pre>
<p>[lib/pdf_font.ps src/gdevpdtt.c src/gdevpdte.c lib/opdfread.ps src/gdevpdti.c src/gdevpdtt.h lib/pdf_ops.ps]</p>
</blockquote>

<p><strong><a name="2007-08-29T173636.852840Z"></a>
2007-08-29T17:36:36.852840Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT font handling) : pdfwrite recieved meanless font names.

DETAILS :

Bug 688006 "Font names used with pdfwrite are strange with GS, OK with Adobe Distiller".

This is a continuation for the Revision 5862 change 
made on Wed Apr 20 20:05:41 2005 UTC (2 years, 4 months ago) by ray.

Thanks to Edward for a code sample for accounting font style string.

1. (zbfont.c) When a Postscript file is generated with Adobe printer driver for Windows,
the old code (sinse Revision 5862) extracts OrigFintName 
for building a meanful FontName.
This patch adds an use of OrigFontStyle as suggested by Edward,
so the FontName is created in the form "Arial,Bold".

2. (zfcid1.c) The old code sometimes dropped the good FontName in zbuildfont11 
due to an extra call to get_font_name. Few lines above
the function build_gs_TrueType_font creates the good font name
during an indirect call to sub_font_params, so the call to  
get_font_name is not necesary when OrigFontName presents.
However it is still necessary with regular FontType 11
because they have no FontName and sub_font_params
doesn't use CIDFontName.

3. (zfcid0.c) Applying the (2) change to FontType 9 as for symmetry.
We're tested it a few, but we have no untrivial examples
when a FontType 9 is embedded with OrigFontName.
Maybe (just guessing) ones could be obtained with installing
Adobe Type Library and printing with Adobe printer driver.

4. After doing all above, we unexpectedly detected a regression 
with comparefiles/korea.ps : all Korean glyphs were replaced with
hollow boxes. Analyzing it we found that the document defines a 
composite font with to CIDFontType 2 descendent,
which both appears to be same font. In same time,
the CMap supplies different CIDs for those 2
descendents for a half of code space. While the old code
used meanless unique font names, those 2 descendents
were converted to 2 PDF fonts. When we switched to the meanful name,
which of course is same for both descendents,
pdfwrite tries to merge the descendents.
However doing so it assumed same character mapping
for both descendents.

To fix this problem more changes are done to pdfwrite :

4.1. (gdevpdtf.h) The font descriptor of a type 0 font now stores font_index,
which is the index of its descendent font in the DescendentFonts array
of the source Type 0 font. This happens because in PDF type 0 fonts
always have a single descendent.

4.2. (gdevpdtf.c) Added an initialization for the new field.

4.2. (gdevpdtt.c, gdevpdtt.h) pdf_obtain_parent_type0_font_resource creates
unique type 0 fonts for each descendent in spite of same font name.

4.3 (gdevpdtc.c) pdf_obtain_parent_type0_font_resource needs 
font index as a new argument.

4.4. (gdevpdtt.c) pdf_find_type0_font_resource also takes the new parameter.

With Korea.ps we create 2 font subsets where a single font
would be enough. An optimization may be done with a dynamic
check for encoding conflicts rather than creating another font
for each font index of the CMap. Delaying it for better times.

</pre>
<p>[src/zfcid0.c src/gdevpdtc.c src/zfcid1.c src/gdevpdtt.c src/zbfont.c src/gdevpdtf.c src/gdevpdtt.h src/gdevpdtf.h]</p>
</blockquote>

<p><strong><a name="2007-08-29T094215.384249Z"></a>
2007-08-29T09:42:15.384249Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT font handler) : Place thr True Type interpreter and its data into stable memory (continued 2).

DETAILS :

Bug 688429 "Crash on vmreclaim".

The revision 8209 change is incorrect 
because it effectively frees a memory allocator instance.
Thanks to Henry for pointing this out.

This is the second attempt to fix that...

</pre>
<p>[src/gxttfb.c]</p>
</blockquote>

<p><strong><a name="2007-08-29T093629.695665Z"></a>
2007-08-29T09:36:29.695665Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT font handler) : Place thr True Type interpreter and its data into stable memory (continued).

DETAILS :

Bug 688429 "Crash on vmreclaim".

The revision 8209 change is incorrect 
because it effectively frees a memory allocator instance.
Thanks to Henry for pointing this out.

</pre>
<p>[src/gxttfb.c]</p>
</blockquote>

<p><strong><a name="2007-08-29T070901.667008Z"></a>
2007-08-29T07:09:01.667008Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (font rendering) : CIDFontType 9 missed PaintType.

DETAILS :

Bug 687970 "PaintType and StrokeWidth ignored with CIDFonts".

To make a decision about filling or stroking,
the old code uses PaintType of the current font,
However with CIDFont 9 it is a Type 1 subsidiary,
which has no PaintType.

The patch implements the 'or' logic for the PaintType of the root font
and the PaintType of the current font. We believe it should 
correctly handle cases when PaintType 2 is set to
a root font or to its descendent. However we have not enough 
practical test cases to test all varuiants.

Particularly, we would like to test a Type 0 font with
2 descendents, each of which is CIDFontType 9
and they have didfferent PaintType.
In such case this patch may need a further improvement.

The desision about filling or stroking a character is done in type1exec_bbox
and in nobbox_finish. The patch also passes a pointer to gs_text_enum_t instance 
to type1exec_bbox to provide the data for the decision.

</pre>
<p>[src/zfcid0.c src/zchar1.c]</p>
</blockquote>

<p><strong><a name="2007-08-28T161827.199037Z"></a>
2007-08-28T16:18:27.199037Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Uninitialized defaultWidthXwhile while converting a Type 1 font into Type 2.

DETAILS :

Bug 689406 "Valgrind: Uninitialised defaultWidthX in psf_convert_type1_to_type2()".

The last patch appears incomplete and doesn't compile. 
Fixing now.

</pre>
<p>[src/gdevpsf2.c src/gdevpsf.h src/gdevpsfx.c]</p>
</blockquote>

<p><strong><a name="2007-08-28T160612.766158Z"></a>
2007-08-28T16:06:12.766158Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Uninitialized defaultWidthXwhile while converting a Type 1 font into Type 2.

DETAILS :

Bug 689406 "Valgrind: Uninitialised defaultWidthX in psf_convert_type1_to_type2()".

Thanks to Alex for the problem localization and for the suggested patch.
This change is equivalent to Alex's patch
expect the better documentation. 
See comment in code.

The old code accessed pfont-&gt;data.defaultWidthX,
which is never used or initialized elsewhere with a Type 1 font,
because defaultWidthX is a Type 2 feature.

</pre>
<p>[src/gdevpsfx.c]</p>
</blockquote>

<p><strong><a name="2007-08-28T063408.453844Z"></a>
2007-08-28T06:34:08.453844Z Ray Johnston</strong></p>
<blockquote>
<pre>
Correct obvious typo in default rgb to cmyk color mapping. It makes
no sense to use the 'g' component to calculate the 'k' for black
generation and undercolorremoval.
</pre>
<p>[src/gxcmap.c]</p>
</blockquote>

<p><strong><a name="2007-08-27T204427.984183Z"></a>
2007-08-27T20:44:27.984183Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT font handler) : Place the True Type interpreter and its data into stable memory.

DETAILS :

Bug 688429 "Crash on vmreclaim".

With the old code gx_ttfReader and ttfInterpreter instances
were prematurely released by 'restore' while 
gs_font_dir and cached_fm_pair instances contain
references to them. Since TT interpreter is a global singleton,
we're safe to store it in stable memory.

</pre>
<p>[src/gxttfb.c src/gxccman.c]</p>
</blockquote>

<p><strong><a name="2007-08-27T011647.532710Z"></a>
2007-08-27T01:16:47.532710Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change the order of include files to define a macro before it's used.
The undefined macro in the old code passed as a function declaration.

</pre>
<p>[src/gxshade1.c]</p>
</blockquote>

<p><strong><a name="2007-08-27T005359.301536Z"></a>
2007-08-27T00:53:59.301536Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add HP-UX to the long list of systems that need both time.h and sys/time.h

</pre>
<p>[src/time_.h]</p>
</blockquote>

<p><strong><a name="2007-08-26T233221.633797Z"></a>
2007-08-26T23:32:21.633797Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Cast the pointers to the same type because aC++ compiler cannot compare
pointers of different types.

</pre>
<p>[contrib/japanese/gdevmjc.c]</p>
</blockquote>

<p><strong><a name="2007-08-26T232457.663909Z"></a>
2007-08-26T23:24:57.663909Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a typo in a contributed driver for HP color printers detected by aC++
compiler. Assuming that pointers compare as unsigned values, the fix doesn't
have any run-time effects.

</pre>
<p>[contrib/gdevcd8.c]</p>
</blockquote>

<p><strong><a name="2007-08-23T180019.425565Z"></a>
2007-08-23T18:00:19.425565Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
When the same name maps to more than one glyph change the name.
Don't treat /.notdef names specially because glyphs corresponding
to /.notdef names can look different. Bug 689408, customer 770.

DIFFERENCE:
None
</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2007-08-22T063836.487276Z"></a>
2007-08-22T06:38:36.487276Z Suzuki Toshiya</strong></p>
<blockquote>
<pre>
Fix (TT fonts) : Ignore invalid entries in loca table.

DETAILS : 

Some problematic TrueType fonts have loca table that
the offset to a data in glyf table is larger than
the size of glyf table. In previous implementation
since trunk revision 5707 (ghostscript-8.57), when
such invalid entry is found, the font loading procedure
is immediately aborted and invalid font error is
returned. To continue the problematic TrueType object,
the invalid entries of loca tables now are ignored and
the font loading procedure is continued. If all entries
are invalid, the invalid font error is returned.

After the sorting of loca table entries by their values,
the invalid entries with too large offsets are collected
in the end of the sorted loca entries (psortary[]).
By this patch, the sorted loca entries are scanned from
from the end to the beginning, and the number of valid
entry is counted (num_valid_loca_elm). By this number,
the invalid loca entries are initialized to have null
glyph (the data size of glyph is set to 0).

By this patch, bug 689347 is fixed.

</pre>
<p>[src/gstype42.c]</p>
</blockquote>

<p><strong><a name="2007-08-21T222658.681438Z"></a>
2007-08-21T22:26:58.681438Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct more changelog substitution errors. Bug 689388.
</pre>
<p>[doc/History8.htm doc/Details8.htm]</p>
</blockquote>

<p><strong><a name="2007-08-20T171522.306956Z"></a>
2007-08-20T17:15:22.306956Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix command list-based devices on 64-bit platforms. Ghostscript always writes
int values to the command list but old code interpreted the bit pattern as a
long int, causing conversion of the negative values to large positive ones.
Bug 689353.

</pre>
<p>[src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2007-08-20T171051.151066Z"></a>
2007-08-20T17:10:51.151066Z Ray Johnston</strong></p>
<blockquote>
<pre>
Use the color lookup cache in wtsimdi_contone_get_bits_rectangle.
This results in a 6% overall performance improvement on the 12
performance test files, and up to a 38% improvement on WW2KA122.prn
Also clean up the MSVC and gcc warnings.  Customer #951.

DETAILS:

There is a note about the allocation of cmyk_buffer relying on
the alignment when using gs_malloc. The note also describes the
method to remove this reliance on the alignment assumption.

</pre>
<p>[src/gdevwts.c]</p>
</blockquote>

<p><strong><a name="2007-08-17T185033.373530Z"></a>
2007-08-17T18:50:33.373530Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix stdint.h related problems with the Cygwin build (gcc 3.4.4)

DETAILS:

There was a workaround for an obsolete version of Cygwin tools that had
u_int32_t (and other types) instead of uint32_t that is standard on linux
and Cygwin stdint.h now. These changes were needed for the PCL, XPS and
language_switch builds -- the gs build worked thanks to autoconf.
</pre>
<p>[src/unix-gcc.mak src/stdint_.h]</p>
</blockquote>

<p><strong><a name="2007-08-17T135812.668319Z"></a>
2007-08-17T13:58:12.668319Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fully initialize pdf_resource_t object allocated in pdf_alloc_aside()
to avoid a Valgrind warning. Bug 688907.

</pre>
<p>[src/gdevpdfu.c]</p>
</blockquote>

<p><strong><a name="2007-08-17T130219.679286Z"></a>
2007-08-17T13:02:19.679286Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add missing initialization of txy_fixed_valid field. Since the fixed
coordinates are valid, the patch eliminates possible re-calculation of the
fixed coordinates but doesn't affect the end result. Bug 688914.

</pre>
<p>[src/gdevpdfv.c]</p>
</blockquote>

<p><strong><a name="2007-08-17T044922.864920Z"></a>
2007-08-17T04:49:22.864920Z Ray Johnston</strong></p>
<blockquote>
<pre>
This set of changes is an example for users or Artifex customers
that want to intercept the color spaces and perform their own
color space conversion for the CIEBased or ICCBased color spaces,
converting all of these spaces to the PostScript color management
link space "CIE XYZ". There were changes needed to implement this
that transcended the original custom color callback scheme, but
the approach taken is intended to minimize changes to the color
space processing.

Artifex customer #330

DETAILS:

Rather than rely on the hack in gx_cie_to_xyz_alloc that sets the
pis-&gt;cie_render to ~0, we establish a separate boolean for this,
cie_to_xyz which indicates that we don't need a CRD (gxistate.h,
gsistate.c, gsciemap.c, gscie.c). Note that the gx_cie_to_xyz_alloc
function is also used in the lab_range function in gdevpdfk.c
to construct an L*a*b* ICC conversion space for the pdfwrite
device.

The 'pclient_color_space_data' is now handled in the ENUM and
RELOC procedures for the gs_color_space base structure shared
by all color spaces (gscspace.c). A side effect of this is that
the pclient_color_space_data structure MUST be allocated with
appropriate GC structure calls an with an appropriate GC type
of macro to identify the structure for the GC and establish
the ENUM and RELOC hooks. This was needed to allow a gs_imager_state
structure to be allocated for the CIE color spaces and to have
both structures to be 'known' to the GC logic.

The CIE_LOAD_CACHE_BODY macro and the gx_install_cie_abc function
are now exported in gscie.h rather than local to gscie.c so that
gsncdummy.c and other custom callback clients can use them.

Finally, the gsncdummy.c module now includes example handling
that allow the graphics library to convert colors to XYZ if
the original color space was one of the CIEBased or ICCBased
spaces. Since CIE XYZ to L*a*b* is a direct conversion, this
allows clients to work with device independent color.

The conversion from XYZ to ICC L*a*b* code exists in gdevpdfk.c
in the function xyz_to_lab() which might be useful enough to
export in the future. For the short term clients can 'clone'
this small function if needed into their own color callback
processing.

Note that -dUseCIEColor (or &lt;&lt; /UseCIEColor true &gt;&gt; setpagedevice
PostScript sequence) will mean that all Device* colorspaces also
get mapped through the Default* colorspaces to XYZ (DeviceGray,
DeviceRGB and DeviceCMYK).

</pre>
<p>[src/gxistate.h src/gscie.h src/gsistate.c src/gsncdummy.c src/gsciemap.c src/gscspace.c src/gscie.c]</p>
</blockquote>

<p><strong><a name="2007-08-14T212855.383671Z"></a>
2007-08-14T21:28:55.383671Z Ralph Giles</strong></p>
<blockquote>
<pre>
Revert r8187, which is part of the CJKV patch set reverted in r8190.
</pre>
<p>[src/int.mak]</p>
</blockquote>

<p><strong><a name="2007-08-14T204829.233978Z"></a>
2007-08-14T20:48:29.233978Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Removed CJK patches.
</pre>
<p>[examples/cjk src/zchar42.c lib/gs_cidtt.ps src/gxfont42.h src/gstype42.c src/unixinst.mak src/zchar1.c lib/cjkv lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2007-08-14T185348.875152Z"></a>
2007-08-14T18:53:48.875152Z Ralph Giles</strong></p>
<blockquote>
<pre>
Throw an diagnostic error if the wts_plane_* halftone files cannot
be opened. Propagate the error and clean up properly to avoid a 
segfault.

Also #ifdef DEBUG protects some debug printouts to reduce noise.
</pre>
<p>[src/gdevwts.c src/gdevimdi.c]</p>
</blockquote>

<p><strong><a name="2007-08-14T161828.564745Z"></a>
2007-08-14T16:18:28.564745Z Ralph Giles</strong></p>
<blockquote>
<pre>
Change the path to the icc link profile to the current working 
directory, the same path used for the wts_* halftone files and
for link.icc in gdevimdi.c. Motivated by simplifying running
the device in regression testing.
</pre>
<p>[src/gdevwts.c]</p>
</blockquote>

<p><strong><a name="2007-08-13T170758.742285Z"></a>
2007-08-13T17:07:58.742285Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add the library files from the cjkv to the romfs file list. This 
restores executability of the build with COMPILE_INITS=1 which
was broken by r8185.
</pre>
<p>[src/int.mak]</p>
</blockquote>

<p><strong><a name="2007-08-13T160016.465824Z"></a>
2007-08-13T16:00:16.465824Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Fixed DESTDIR support in Koji Otani's CJK patches
</pre>
<p>[src/unixinst.mak]</p>
</blockquote>

<p><strong><a name="2007-08-13T100805.772194Z"></a>
2007-08-13T10:08:05.772194Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Added CJK patches from Koji Otani
</pre>
<p>[src/zchar42.c examples/cjk lib/gs_cidtt.ps src/gxfont42.h src/gstype42.c lib/cjkv/cjkcidcm.ps lib/cjkv/baseutil.ps src/zchar1.c lib/cjkv/cjkvttcf.ps examples/cjk/all_ac1.ps lib/cjkv lib/cjkv/cjkvinit.ps examples/cjk/all_ag1.ps examples/cjk/iso2022.ps examples/cjk/all_aj1.ps examples/cjk/gscjk_ac.ps examples/cjk/all_ak1.ps examples/cjk/all_aj2.ps lib/cjkv/tt11util.ps lib/cjkv/cjkfnmap.ps examples/cjk/gscjk_ag.ps lib/cjkv/tt42util.ps src/unixinst.mak examples/cjk/gscjk_aj.ps examples/cjk/gscjk_ak.ps examples/cjk/article9.ps lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2007-08-12T172929.699921Z"></a>
2007-08-12T17:29:29.699921Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use inline and intristic functions to improve the speed of CIE cache set-up.
Bug 689153, customer 850.

</pre>
<p>[src/gscie.h src/gscie.c]</p>
</blockquote>

<p><strong><a name="2007-08-11T035731.402230Z"></a>
2007-08-11T03:57:31.402230Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change stream keyword handling to accommodate yet another kind of a broken PDF.
Bug 689400, customer 580.

DETAILS:
Valid stream keyword can be followed by (\n) or (\r\n). Invalid PDF files
accepted by Acrobat Reader can insert blank characters or terminate the stream
with (\r). Old code tolerated ( \r) termination, but didn't tolerate ( \r\n).
New code assumes blank characters and (\r) termination at the same time are not
probable and tolerates ( \r\n) or (\r) but not ( \r).

</pre>
<p>[lib/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2007-08-10T081558.076010Z"></a>
2007-08-10T08:15:58.076010Z Henry Stiles</strong></p>
<blockquote>
<pre>
This code change should have been committed in tandem with the change
in revision 8055 (see 8055 log for details).
</pre>
<p>[src/gxclpath.c]</p>
</blockquote>

<p><strong><a name="2007-08-09T181259.257962Z"></a>
2007-08-09T18:12:59.257962Z Ray Johnston</strong></p>
<blockquote>
<pre>
Update the testing.cfg.example to match the current (after rev 7854) of
the regression scripts in toolbin/tests. The r7854 had included a
testing.cfg file instead of the example file (see comment for rev 7862).

DETAILS:

I don't really like the difficulty of changing the comparegs directory in
the current way gsconf.py processes the testing.cfg. IMHO, it would make
sense to allow for some of the higher level directory variables to be
used, simplifying changing it for testing from a particular gs checkout
that has been modified. Also having some of the other values able to
be relative to 'root' (for the comparefiles, database, etc.) would be
handy.

A task for later along with better documentation.

</pre>
<p>[toolbin/tests/testing.cfg.example]</p>
</blockquote>

<p><strong><a name="2007-08-08T001249.260263Z"></a>
2007-08-08T00:12:49.260263Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Updating CMAP files as per bug report #689386

DETAILS:

See:

ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/00README

for more details.

</pre>
<p>[Resource/CMap/UniJIS2004-UTF16-V Resource/CMap/UniJIS2004-UTF32-H Resource/CMap/UniJIS2004-UTF8-V Resource/CMap/UniJIS2004-UTF16-H Resource/CMap/UniJIS2004-UTF8-H Resource/CMap/ETenms-B5-V Resource/CMap/ETenms-B5-H Resource/CMap/UniCNS-UTF32-H Resource/CMap/UniCNS-UTF16-H Resource/CMap/UniCNS-UTF8-H Resource/CMap/UniJISX02132004-UTF32-V Resource/CMap/UniJIS2004-UTF32-V Resource/CMap/UniJISX02132004-UTF32-H]</p>
</blockquote>

<p><strong><a name="2007-08-07T004018.162968Z"></a>
2007-08-07T00:40:18.162968Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Pacify MSVC 7 run time checks. Change the order of condition checking to avoid
returning an uninitialized value. The code is algorithmically equivalent,
except it doesn't assign anything instead of assigning an uninitialized value.
Bug 689387

</pre>
<p>[src/gdevpdfd.c]</p>
</blockquote>

<p><strong><a name="2007-08-05T135526.215718Z"></a>
2007-08-05T13:55:26.215718Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A wrong encoding of Metadata.

DETAILS :

Bug 689244 "Wrong encoding of title in metadata for PDF/A".

Thanks to mpsuzuki for preliminary analyzis.

1. See the documentation change.
2. gs_pdfwr.ps converts the specified name into a translation table.
   We believe that popolar encodings translate into single Unicode
   characters, so we don't implement Unicode compositions now.
   This may be a subject of further improvements. In this case
   the generated integer array should use a complex format
   for representing the translation table.
3. The translation table is passed to pdfwrite 
   as a new device parameter DSCEncodingToUnicode.
4. When it is specified, gdevpdfe.c performs the translation
   first into UTF-8, then into XML.
5. The new modules ConvertUTF.c, ConvertUTF.h are obtained from
   Unicode Inc.

</pre>
<p>[src/gdevpdfx.h src/ConvertUTF.c src/gdevpdfp.c doc/Ps2pdf.htm src/ConvertUTF.h src/gdevpdfe.c src/gdevpdfb.h src/devs.mak lib/gs_pdfwr.ps lib/gs_agl.ps]</p>
</blockquote>

<p><strong><a name="2007-08-04T214253.446406Z"></a>
2007-08-04T21:42:53.446406Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change the order of tests to identify fonts with FID attribute that have been
both scaled and copied. Bug 689390

DETAILS:
Prior to this revision Ghostscript mis-recognized such fonts as scaled-only
in build_gs_font() and rejected with /invalidfont during font validation.

</pre>
<p>[src/zfont.c src/zbfont.c]</p>
</blockquote>

<p><strong><a name="2007-08-04T143004.276917Z"></a>
2007-08-04T14:30:04.276917Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Take rendering intent type from the /Intent key of the CRD created by Adobe
ProcSet "Adobe_AGM_Core 2.0 0" and pass it to the graphic state. Bug 689379

</pre>
<p>[lib/gs_lev2.ps lib/pdf_ops.ps lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2007-08-03T162944.050173Z"></a>
2007-08-03T16:29:44.050173Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Fix for seg fault caused by undersized buffer as reported in bug report #687397

DETAILS:

Although the patch submitted by the reporter did appear to fix the problem,
it was more masking it than fixing it. While the analysis of the problem
being that ss-&gt;Items was too small was correct, the real cause was a rounding
problem in siscale.c/contrib_pixels(). The problem did not happen on my Mac,
but was reproduced up on peeves because of differnces in the way the two
systems perform rounding.

</pre>
<p>[src/siscale.c]</p>
</blockquote>

<p><strong><a name="2007-08-03T154603.840774Z"></a>
2007-08-03T15:46:03.840774Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a substitution script error in the change logs.
</pre>
<p>[doc/Changes.htm doc/History8.htm doc/Details8.htm doc/Details.htm]</p>
</blockquote>

<p><strong><a name="2007-08-02T085309.078741Z"></a>
2007-08-02T08:53:09.078741Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (transparency in clist) : Write transparent paths and images to clist as high level objcts.

DETAILS :

Bug 689186 "PDF segfaults or exits with no output".

With the test case the old code creates a 2.5Gb clist file, 
because it transformes transparent paths and images into rectangles.
The new code writes them as high level objects,
so that the clist file reduces to 477Mb.

1. (gdevp14.c) The old code appears to provide all necessary
methods for writing paths and images to clist as high level objects,
but doesn't call them. To activate them we simply replace default implementations
with forwarding methods in pdf14_clist_*_device.

2. (gdevp14.c) The old code sets the lop_pdf14 flag to
the clist reader's imager state. Particularly
it may be set when calling p14dev-&gt;pdf14_procs-&gt;put_image.
It causes gx_image_enum_begin to fail,
and the image silently dissappers from the output.
We fixed it with resetting the flag immediately before
calling p14dev-&gt;pdf14_procs-&gt;put_image.
A better way would be to synchronize log_op
in clist_create_compositor, but we don't like to
write it to all bands as other compoitor commands do.

3. (gdevp14.h, gdevp14.c) New fields inserted into pdf14_device_t
to provide a synchronization of encode_color, decode_color, get_color_mapping_procs,
get_color_comp_index with changing color_info. Debugged with pkmraw -r300 Bug688631.pdf .
Without them the 1bpc color conversions 
were called from pdf14_cmap_cmyk_direct with an 8bpc color,
causing an almost white page instead blue axial and radial shadings.

4. (gdevm4.c) The old code defines a wrong color_info for mem_mapped4_device.
It defines 3 components instead the correct value 4 (3 colored and 1 gray).

5. (gdevp14.c) During the clist playback the new code does not change color_info
for the clist writer (p14dev-&gt;target-&gt;color_info). We marked this change
with the comment :
/* Disabled because *p14dev has no forwarding methods during the clist playback. */
We ise #if 0 because we're not sure why the old code does so.
We suspect it was done by a mistake and has no any effect.
#if 0 will keep it for a while.

More possible optimization :

1. Use pdf14_buf::bbox when back dropping a transparency buffer.
2. Use pdf14_buf::rect to restrict bands which set up the transparency compositor.
   Now it is written to all bands.
3. Write text to clist as high level object.    

</pre>
<p>[src/lib.mak src/gdevp14.h src/gdevm4.c src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-08-02T040811.471770Z"></a>
2007-08-02T04:08:11.471770Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Pacify Valgrind - initialise both operands of the product. Valgrind considers
a product of 0 and an uninitialized value to be uninitialized. Bug 689384.

</pre>
<p>[src/gximage3.c]</p>
</blockquote>

<p><strong><a name="2007-08-02T012214.242094Z"></a>
2007-08-02T01:22:14.242094Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the interpreter library version number to match the one in 
version.mak. The previous commit just improved the comments.
</pre>
<p>[lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2007-08-01T235658.305050Z"></a>
2007-08-01T23:56:58.305050Z Ralph Giles</strong></p>
<blockquote>
<pre>
Bump the revision number post release.
</pre>
<p>[doc/News.htm lib/gs_init.ps src/gscdef.c src/version.mak]</p>
</blockquote>

<p><strong><a name="2007-08-01T223801.441981Z"></a>
2007-08-01T22:38:01.441981Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct some cut-and-paste typos in the change log update.
</pre>
<p>[doc/Changes.htm doc/History8.htm]</p>
</blockquote>

<p><strong><a name="2007-08-01T221056.427930Z"></a>
2007-08-01T22:10:56.427930Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update change logs and the open bug list or final release.
</pre>
<p>[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]</p>
</blockquote>

<h2><a name="Version8.60"></a>Version 8.60 (2007-08-01)</h2>

<p>This is a new stable release of the Ghostscript codebase. The most 
significant change is the merge of drivers and other patches from
ESP Ghostscript. This version of Ghostscript work with CUPS and is 
intended to be a replacement for the Easy Software fork going forward.
We extend a special thanks to Till Kamppeter and Mike Sweet for making 
this happen.

<p>In addition to CUPS support, the ESP merge includes a number of other 
notable changes. The contrib directory of the GPL Ghostscript source 
tree now includes a much larger complement of drivers. These are not
maintained by Artifex Software, Inc. and are not included in the 
commercially licensed version, but are of great assistance maintaining 
support for older printers in Linux distribution. The X11 device is now 
modularized on Linux and Solaris systems when built with GNU ld, meaning 
this device is compiled as a separate shared object which can be 
optionally loaded at runtime, allowing the main binary to work on 
systems without X client support installed.

<p>This release also includes numerous important bug fixes over the 
previous stable version, as well as improvements to performance, memory 
footprint, shading and image handling. We recommend upgrading to all 
users.

<p> The following <a href="http://bugs.ghostscript.com/">bugs</a> were
open at the time of release: <blockquote>
226943,
430175,
465936,
493348,
535932,
578865,
610478,
614298,
626295,
686747,
686853,
686865,
687011,
687039,
687084,
687095,
687108,
687146,
687193,
687196,
687257,
687271,
687280,
687295,
687297,
687303,
687327,
687342,
687345,
687346,
687375,
687397,
687414,
687475,
687492,
687514,
687520,
687531,
687536,
687559,
687561,
687593,
687595,
687608,
687630,
687650,
687666,
687674,
687677,
687695,
687697,
687702,
687715,
687721,
687728,
687729,
687731,
687775,
687780,
687782,
687793,
687796,
687805,
687814,
687844,
687850,
687887,
687903,
687904,
687907,
687915,
687931,
687950,
687957,
687970,
687974,
687981,
687983,
687988,
688006,
688007,
688022,
688024,
688026,
688032,
688035,
688036,
688042,
688058,
688061,
688064,
688066,
688075,
688081,
688095,
688129,
688130,
688134,
688151,
688152,
688159,
688166,
688184,
688187,
688200,
688203,
688204,
688207,
688210,
688215,
688227,
688239,
688243,
688267,
688269,
688280,
688282,
688283,
688288,
688312,
688317,
688318,
688320,
688333,
688337,
688342,
688358,
688360,
688361,
688363,
688372,
688375,
688378,
688386,
688387,
688389,
688395,
688413,
688427,
688428,
688429,
688434,
688436,
688437,
688440,
688446,
688448,
688468,
688473,
688474,
688475,
688483,
688490,
688495,
688500,
688515,
688517,
688526,
688528,
688533,
688539,
688540,
688542,
688543,
688557,
688565,
688573,
688580,
688581,
688588,
688598,
688601,
688604,
688605,
688610,
688616,
688617,
688619,
688626,
688627,
688633,
688634,
688636,
688637,
688638,
688643,
688646,
688647,
688651,
688653,
688655,
688673,
688674,
688683,
688696,
688697,
688699,
688708,
688709,
688710,
688711,
688714,
688717,
688728,
688731,
688734,
688736,
688739,
688757,
688762,
688770,
688774,
688777,
688778,
688783,
688796,
688797,
688806,
688807,
688811,
688813,
688815,
688818,
688829,
688830,
688834,
688843,
688845,
688846,
688871,
688872,
688876,
688899,
688903,
688904,
688907,
688908,
688909,
688914,
688915,
688916,
688917,
688918,
688919,
688923,
688926,
688928,
688933,
688940,
688942,
688943,
688945,
688949,
688952,
688958,
688969,
688970,
688976,
688978,
688979,
688981,
688983,
688986,
688990,
688992,
688994,
688999,
689003,
689011,
689013,
689014,
689022,
689025,
689028,
689031,
689032,
689036,
689040,
689044,
689046,
689048,
689050,
689053,
689055,
689057,
689058,
689060,
689065,
689068,
689070,
689076,
689077,
689078,
689080,
689081,
689085,
689090,
689092,
689093,
689094,
689098,
689101,
689103,
689104,
689106,
689107,
689111,
689114,
689115,
689116,
689117,
689127,
689128,
689129,
689130,
689132,
689133,
689136,
689137,
689138,
689145,
689146,
689148,
689150,
689153,
689154,
689155,
689159,
689161,
689164,
689167,
689169,
689172,
689174,
689175,
689181,
689182,
689184,
689186,
689188,
689195,
689198,
689199,
689206,
689209,
689210,
689212,
689222,
689224,
689230,
689232,
689236,
689241,
689242,
689244,
689246,
689247,
689248,
689249,
689252,
689253,
689256,
689264,
689265,
689266,
689267,
689273,
689278,
689279,
689280,
689281,
689282,
689283,
689289,
689290,
689291,
689292,
689294,
689295,
689298,
689302,
689304,
689305,
689306,
689308,
689310,
689313,
689316,
689326,
689327,
689331,
689333,
689334,
689335,
689338,
689339,
689340,
689341,
689343,
689347,
689349,
689350,
689351,
689352,
689353,
689354,
689356,
689358,
689359,
689361,
689362,
689363,
689364,
689365,
689367,
689368,
689369,
689370,
689372,
689373,
689374,
689375,
689376,
689378,
689379,
689380,
689381,
689382,
689384,
689385,
689386.
</blockquote>

<h3><a name="8.60_Incompatible_changes"></a>Incompatible changes</h3>

<p>
The default device on unix-oriented builds has temporarily switched to 
the <tt>bbox</tt> device, and is not the <tt>x11</tt> device as in the 
past. The means that running gs from the commandline with no options 
will no longer display a file. Specify -sDEVICE=x11alpha instead. The 
change is a side effect of the X11 modularization patch, and will
be remedied in a future release.

<h3><a name="8.60_changelog"></a>Changelog</h3>

<p><strong><a name="2007-08-01T212057.253476Z"></a>
2007-08-01T21:20:57.253476Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix problem seen with stcolor device where the get_color_mapping_procs
device proc was NULL, causing SEGV. Bug #689371.

DETAILS:

The fix was local to gdevstc.c. The other modules were changed to
add protection in case other devices (such as all of the new devices
in contrib) don't manage to change the get_color_mapping_procs from
the usual default of NULL in the device structure. Rather than
dprintf or error messages that may be supressed with #if DEBUG.
I elected to use eprintf.

Note that the get_color_mapping_procs is usually set up by gdevdflt
gx_device_fill_in_procs, but there are several cases where we don't
know what to do, so we set the gx_error_get_color_mapping_procs.

The detection in gs_fillpage will usually result in a single error
message then we return gs_error_Fatal (-100).

</pre>
<p>[src/gdevdflt.c src/gdevstc.c src/gxcmap.c src/gspaint.c]</p>
</blockquote>

<p><strong><a name="2007-08-01T191812.034589Z"></a>
2007-08-01T19:18:12.034589Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update release date and product name for final release.
</pre>
<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm src/gscdef.c doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Ps2ps2.htm doc/Fonts.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp doc/Htmstyle.htm man/font2c.1 man/gsnd.1 man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Testing.htm doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]</p>
</blockquote>

<p><strong><a name="2007-08-01T171950.181574Z"></a>
2007-08-01T17:19:50.181574Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for gv hang, where an application sends (less than 1023 bytes)
PostScript and expects a response. AppleTalk PAP and some other
interactive viewer front ends may run into this. Bug #689237.

DETAILS:

The autosense is still sort of fragile in that we only process
PostScript immediately without waiting for the .peekstring of
1023 bytes to complete if it begins with "%!" or "%%". The
check for "%%" is needed for gv, conventionally "%!" is more
widely used. Note this really only affects applications using
gs as a process getting data from stdin and expecting immediate
action (response or other processing).

Also note that the %! or %% is only looked for as the first
two characters so that the presence of this in garbage before
an actual PDF won't cause confusion.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2007-08-01T041013.989117Z"></a>
2007-08-01T04:10:13.989117Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a misleading typo in an error message: s/UseCUEColor/UseCIEColor/
</pre>
<p>[src/gdevpdfp.c]</p>
</blockquote>

<p><strong><a name="2007-08-01T040106.081994Z"></a>
2007-08-01T04:01:06.081994Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Remove inappropriate PNG_CONST qualifier from a few libpng arrays, where it
adds 2nd const qualifier, which is rejected by MSVC 6. Bug 689383.
</pre>
<p>[libpng/pngtrans.c libpng/pngerror.c]</p>
</blockquote>

<p><strong><a name="2007-07-31T141945.536400Z"></a>
2007-07-31T14:19:45.536400Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use a correct name for the absolute colorimetric rendering intent. Change the
encoding of the rendering intents in the graphic state to use ICC numbers
from Table 18 (section 6.1.11) instead of the PDF order to reduce re-coding
and confusion. Bug 689377.

</pre>
<p>[src/gxistate.h lib/pdf_ops.ps src/gsstate.c src/zcolor3.c]</p>
</blockquote>

<p><strong><a name="2007-07-31T033113.074828Z"></a>
2007-07-31T03:31:13.074828Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update changelogs for the release candidate.
</pre>
<p>[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]</p>
</blockquote>

<p><strong><a name="2007-07-30T201356.963379Z"></a>
2007-07-30T20:13:56.963379Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the libpng version in the top level makefiles to match the new 
1.2.18 source.
</pre>
<p>[src/bcwin32.mak src/openvms.mak src/ugcclib.mak src/macosx.mak src/watcw32.mak src/dvx-gcc.mak src/msvc32.mak src/unix-gcc.mak src/unixansi.mak src/macos-mcp.mak src/msvclib.mak src/all-arch.mak src/os2.mak src/watclib.mak]</p>
</blockquote>

<p><strong><a name="2007-07-30T201059.397769Z"></a>
2007-07-30T20:10:59.397769Z Ralph Giles</strong></p>
<blockquote>
<pre>
Include the libpng 1.2.18 source.
</pre>
<p>[libpng]</p>
</blockquote>

<p><strong><a name="2007-07-30T200922.151026Z"></a>
2007-07-30T20:09:22.151026Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the old included libpng-1.2.16 to make way for the newer release.
This revision will not build!
</pre>
<p>[libpng]</p>
</blockquote>

<p><strong><a name="2007-07-30T200241.610054Z"></a>
2007-07-30T20:02:41.610054Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the release notes for the upcoming release.
</pre>
<p>[doc/News.htm src/version.mak]</p>
</blockquote>

<p><strong><a name="2007-07-29T161145.078740Z"></a>
2007-07-29T16:11:45.078740Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Ignore named actions in PDF link annotations that refer to a page outside
of the document page range. Bug 689286.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2007-07-28T161312.033906Z"></a>
2007-07-28T16:13:12.033906Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a bug in the "LastPage" named action handler that pushed an extra operand
to the stack causing "/rangecheck in pdfmark". Thanks to Heiko Oberdiek for
the patch. Bug 688311.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2007-07-27T201435.951213Z"></a>
2007-07-27T20:14:35.951213Z Ray Johnston</strong></p>
<blockquote>
<pre>
Apply a long pending patch that only affects an ancient 'alphaimage'
operator (Next display PostScript extension). Bug #592160.

DETAILS:

The bug report didn't include a test file, but reading the spec on
this operator found at:

http://objc.toodarkpark.net/AppKit/Functions/PSOperators.html

it seems that the number of components provided does not account
for the alpha channel. The relevant excerpt is:

Synopsis: pixelswide pixelshigh bits/sample matrix datasrc0 [...datasrcn] multiproc ncolors alphaimage -

Renders an image whose samples include an alpha component. This
operator is similar to the standard colorimage operator. However,
note the following:

    * When supplying the data components, alpha is always given
      last-either as the last data source (datasrcn) if the data
      is given in separate vectors, or as the last element in a
      set of interleaved data.

    * The ncolors operand doesn't account for alpha -- the
      value of ncolors is the number of color components only.

This final note is the justification for the patch.
</pre>
<p>[src/gxipixel.c]</p>
</blockquote>

<p><strong><a name="2007-07-27T042736.603967Z"></a>
2007-07-27T04:27:36.603967Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add a missing member to the initialiser macro for the device structure of
japanese laser printer vector PDLs. Fix a FPE crash. Bug 689366.

</pre>
<p>[contrib/lips4/gdevlprn.h]</p>
</blockquote>

<p><strong><a name="2007-07-25T051245.877915Z"></a>
2007-07-25T05:12:45.877915Z Ray Johnston</strong></p>
<blockquote>
<pre>
Revert patch for rev 7904 which caused regressions (bug 689215).
The fix for this will be committed in a following patch that
fixes 688543 and 689364. Fixes bug 689215.

DETAILS:

The root of the problem is that the filled/stroked areas are
too large (from the fill_adjust value). Unfortunately changing
this to fix these problems causes MANY differences that need
to be examined. Initial examination shows many PROGRESSIONS,
i.e., we are closer to Adobe and from 200 files examined so
far, has not caused dropout (which is consistent with the
analysis).

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-07-24T222924.445810Z"></a>
2007-07-24T22:29:24.445810Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Removed duplicate usage of DESTDIR in cups/cups.mak
</pre>
<p>[cups/cups.mak]</p>
</blockquote>

<p><strong><a name="2007-07-24T222334.891503Z"></a>
2007-07-24T22:23:34.891503Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Fixed installation of data files from the contrib/ directory
</pre>
<p>[src/Makefile.in src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-07-24T211853.099055Z"></a>
2007-07-24T21:18:53.099055Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for the clip mask of images being too wide for the fixed size
buffer. New size wide enough for 54 inches at 2400 dpi. Problem
seen at 600 dpi with AC405122 from the PS ATS for customer #951.
</pre>
<p>[src/gxmclip.h]</p>
</blockquote>

<p><strong><a name="2007-07-24T200220.813265Z"></a>
2007-07-24T20:02:20.813265Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (shadings) : Decomposition limit could be too small.

DETAILS :

Bug 689225 "Regression: major differences in 470-01.ps in block 470-03".

This patch improves the tolerance of the shading code to 
a wrong device resolution, which can apparently happen 
when installing a clipper device. Thus is closes a symptom,
but the bottom of the problem is left unfixed.
We do so due to incoming scheduled release.
We opened a separate bug 689365 about a wronmg HWResolution of clipper device.
  
</pre>
<p>[src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2007-07-17T095556.457439Z"></a>
2007-07-17T09:55:56.457439Z Igor Melichev</strong></p>
<blockquote>
<pre>
Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued 8).

DETAILS :

This fixes (some) gcc warnings in the recently added code (part 2).
  
</pre>
<p>[src/lib.mak src/gxclrast.c src/gdevpdfi.c src/gxshade6.c src/gxclpath.c src/gxclrect.c]</p>
</blockquote>

<p><strong><a name="2007-07-16T213548.939836Z"></a>
2007-07-16T21:35:48.939836Z Igor Melichev</strong></p>
<blockquote>
<pre>
Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued 6).

DETAILS :

This fixes (some) gcc warnings in the recently added code.
  
</pre>
<p>[src/gxclrect.c]</p>
</blockquote>

<p><strong><a name="2007-07-16T212442.764396Z"></a>
2007-07-16T21:24:42.764396Z Igor Melichev</strong></p>
<blockquote>
<pre>
Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued 6).

DETAILS :

This is an initial commit for decomposition of linear color triangles
that the target device can't handle while a clist playback.

The new code is not called with practical cases
because currently we have no devices 
with an intrivial implementation of fill_linear_color_triangle.
We commit this code for future if someone will want
to implement that function in hardware with a smaller number of bits.

To force an execution of the new code
one can change this switch in gxclrast.c :

	if 1 /* Disable to debug gx_fill_triangle_small. */

We debugged the new code with setting this switch to 0.
In this case the decomposition code starts, and calls 
fill_linear_color_triangle again with same arguments
(except converting frac31 colors to 'float', 
rather it doesn't miss precision with comparefiles).
This test works fine with comparefiles.
If the device method would request a further decomposition,
an earlier debugged code works, so we didn't test it now
(Testing it with available implementations would require an additional effort
for rejecting regular triangles by the target device).

For more details see comments in code.

Note the clist playback now calls gxshade6.c .
  
</pre>
<p>[src/gxshade4.h src/lib.mak src/gxclrast.c src/gxshade6.c src/gxdevcli.h]</p>
</blockquote>

<p><strong><a name="2007-07-16T173909.809376Z"></a>
2007-07-16T17:39:09.809376Z Ray Johnston</strong></p>
<blockquote>
<pre>
Prevent potential (although unlikely) divide by zero.
</pre>
<p>[src/gximag3x.c]</p>
</blockquote>

<p><strong><a name="2007-07-16T172530.726967Z"></a>
2007-07-16T17:25:30.726967Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix a divide by zero that would show up on linux, but not cygwin.
Seen with 001-01.ps to the x11 device.
</pre>
<p>[src/gdevmem.c]</p>
</blockquote>

<p><strong><a name="2007-07-16T170658.964025Z"></a>
2007-07-16T17:06:58.964025Z Igor Melichev</strong></p>
<blockquote>
<pre>
Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued 5).

DETAILS :

This change is algorithmically equivalent.
It provides methods for decomposition of triangles written to clist.
The purpose is to fix possible gs_error_unregistered in gxclrast.c ln 1498.
The fix itself will be done separately.
  
</pre>
<p>[src/gxshade4.h src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2007-07-16T165811.366089Z"></a>
2007-07-16T16:58:11.366089Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make failed dictionary look-up return /undefined instead of /dictfull.
Bug 689360

</pre>
<p>[src/idict.c src/zfcid1.c]</p>
</blockquote>

<p><strong><a name="2007-07-15T172707.515793Z"></a>
2007-07-15T17:27:07.515793Z Igor Melichev</strong></p>
<blockquote>
<pre>
Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued 4).

DETAILS :

Provide a better compression when writing frac31 values to clist.
The new method is based on fact that fractional color values have many zeros in lower bits.
  
</pre>
<p>[src/gxcldev.h src/gxclrast.c src/gxclrect.c src/gxclutil.c]</p>
</blockquote>

<p><strong><a name="2007-07-14T191842.392348Z"></a>
2007-07-14T19:18:42.392348Z Henry Stiles</strong></p>
<blockquote>
<pre>
Changes from Neil Muller to support tumble duplex in several deskjet
printers (see 687978).  We have done no testing of these changes.
</pre>
<p>[src/gdevdjet.c src/gdevdljm.c src/gdevdljm.h contrib/gdevhl12.c]</p>
</blockquote>

<p><strong><a name="2007-07-13T184805.145075Z"></a>
2007-07-13T18:48:05.145075Z Igor Melichev</strong></p>
<blockquote>
<pre>
Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued 3).

DETAILS :

1. Use fa-&gt;clip for a better Y-range for computing which bands are covered with fill_linear_color_triangle.

2. Provide a right raster op for linear color methods. Currently this change isn't
important because shadings don't use untrivial raster ops.
  
</pre>
<p>[src/gxclrect.c]</p>
</blockquote>

<p><strong><a name="2007-07-13T162903.411589Z"></a>
2007-07-13T16:29:03.411589Z Igor Melichev</strong></p>
<blockquote>
<pre>
Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued 2).

DETAILS :

This fixes Comment #4 of Bug 689344 "Regression: cmyk output broken with banding".

The revision 8020 of gxfill.h doesn't account a case of pcpath==NULL
in gx_default_fill_path.
However the clist reader does such calls with halftoned colors.

</pre>
<p>[src/gxfill.c]</p>
</blockquote>

<p><strong><a name="2007-07-13T120729.877199Z"></a>
2007-07-13T12:07:29.877199Z Igor Melichev</strong></p>
<blockquote>
<pre>
Banding : Extend clist language with trapezoids, linear color trapezoids and linear color triangles (continued).

DETAILS :

This fixes the clist expansion problem for shadings.

The last patch was committed with a wrong revision of gxclrast.c,
which disabled some shading components for development purpose.
  
</pre>
<p>[src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2007-07-13T011056.469571Z"></a>
2007-07-13T01:10:56.469571Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make PDF post-processing utilities tolerant to missing Length attribute in
the strean dictionary. Our PDF parser undefines incorrect Length attributes.
</pre>
<p>[lib/pdfwrite.ps]</p>
</blockquote>

<p><strong><a name="2007-07-12T133424.493291Z"></a>
2007-07-12T13:34:24.493291Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add a few dummy system parameters for compatibility with Adobe products.
Bug 689272, customer 411.

</pre>
<p>[lib/gs_lev2.ps]</p>
</blockquote>

<p><strong><a name="2007-07-11T211739.855676Z"></a>
2007-07-11T21:17:39.855676Z Igor Melichev</strong></p>
<blockquote>
<pre>
Banding : Exten\d clist language with trapezoids, linear color trapezoids and linear color triangles.

DETAILS :

This fixes the clist expansion problem for shadings.

1. New functions clist_fill_linear_color_trapezoid, clist_fill_linear_color_triangle
   provide the writing of shading parts into clist
   without a further decomposition into rectangles.

2. gxclrast.c is enhanced with reading the data from 1.

3. gxfill.c needs a special interaction with the clipper device
   for passing the clipping path as a high level object.
   The new request pattern_manage__handles_clip_path
   checks whether the target device can handle a clipping path.
   The clist writer can, so the graphics library first sends the
   clipping path, and then decomposes the shading into
   trapezoids without installing a clipper device.
   Doing so because clipper device can't handle trapezoids.
   See comments in gxclpath.c, gxfill.c .

4. The clist reader installs a clipper device when processes
   trapezoids and linear color triangles. 
   The new flag clipper_dev_open controls that.

5. A new flag gx_device_clist_writer_s::cropping_by_path 
   controls an additional cropping of shading components,
   which fall outside the shading path's bands.
   See comment in gxclpath.c .

6. R_fill_rect_with_const_color is rewritten with linear color functions,
   because the old implementation creates a rectangle, which is not clipped with
   4,5. It gives an invisible slowdown for unbanded rasters.

There are few things, which need further improvements :

1. A better compression for frac31 values in clist. 
   Such values usually have many zeros in ending bits.

2. Crop bands with ybot, ytop, fa-&gt;ystart, fa-&gt;yend in
   clist_write_fill_trapezoid.

3. The clist reader must handle cases when linear color functions return 0.
   It must perform a decomposition of areas with calling
   appropriate parts of gxshade6.c . The current code returns error,
   which does not happen in practice.
  
</pre>
<p>[src/gxshade4.h src/lib.mak src/gxclist.c src/gxcldev.h src/gxclist.h src/gdevnfwd.c src/gxshade1.c src/gxfill.c src/gxclrast.c src/gxclread.c src/gxshade6.c src/gxclpath.c src/gxdevcli.h src/gxclrect.c]</p>
</blockquote>

<p><strong><a name="2007-07-11T002624.274026Z"></a>
2007-07-11T00:26:24.274026Z Ralph Giles</strong></p>
<blockquote>
<pre>
Replace to includes of the system stdlib.h for malloc() with malloc_.h. 
Bug 689320.
</pre>
<p>[src/gxwts.c src/fapi_ft.c]</p>
</blockquote>

<p><strong><a name="2007-07-11T001927.467323Z"></a>
2007-07-11T00:19:27.467323Z Ralph Giles</strong></p>
<blockquote>
<pre>
Document that we don't make use of the autoconf function tests, or 
implement any fallbacks.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-07-10T233047.849258Z"></a>
2007-07-10T23:30:47.849258Z Ralph Giles</strong></p>
<blockquote>
<pre>
Complete support for DESTDIR in staged installs with the unix makefiles. 
Bug 689277.
</pre>
<p>[src/unix-dll.mak cups/cups.mak src/unixinst.mak]</p>
</blockquote>

<p><strong><a name="2007-07-10T230051.455586Z"></a>
2007-07-10T23:00:51.455586Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove unused and inappropriate ps interpreter includes from the windows
polling interface implementation.
</pre>
<p>[src/gp_mspol.c src/winlib.mak]</p>
</blockquote>

<p><strong><a name="2007-07-10T171409.247898Z"></a>
2007-07-10T17:14:09.247898Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Fixed bug 689323: bjc600's gs_closedevice breaks get_page_device and causes NumCopies to barf
</pre>
<p>[src/gdevcdj.c]</p>
</blockquote>

<p><strong><a name="2007-07-07T025908.708092Z"></a>
2007-07-07T02:59:08.708092Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add a shebang line to afmdiff.awk and use more portable option ( -3 ) to
request 3-column listing. Bug 688621.
</pre>
<p>[lib/afmdiff.awk]</p>
</blockquote>

<p><strong><a name="2007-07-06T164218.448176Z"></a>
2007-07-06T16:42:18.448176Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Explicitly bind setscreen, setcolorscreen, and sethalftone pseudo-operators.
When a pseudo-operator is redefined several times, the last definition is
bound in a final sweep over the systemdict but other definitions aren't.
Bug 689254, customer 661.

</pre>
<p>[lib/gs_dps2.ps lib/gs_ll3.ps]</p>
</blockquote>

<p><strong><a name="2007-07-06T121801.891965Z"></a>
2007-07-06T12:18:01.891965Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Restoring high level objects in clist.

DETAILS :

This patch is a part of the clist expansion problem.
With Henry's test foo4.ps it reduces the clist size in 10+ times.

The clist expansion problem appears to be caused by an old unintentional
change, which was done 3 years ago within the psdcmyk project.
The revision 5056 effectively disabled a big part of the clist language:
all high level objects (text, images, paths) were written to clist 
as lots of rectangles. Undoing it now because it is incorrect.
Note that this patch doesn't undo other parts of 5056 change.

With enabling high level objects the psdcmyk device becomes broken.
At least it has problems with text when rendering foo4.ps .
We'll open a separate bug about that. 

Rather this fix is a progression, it causes some regressions with
band devices due to other unknown problems.
There are single pixel differences with comparefiles,
which are not visible to users, but they are important
for regression testing. Since the clist size
is a highly important problem now, we commit this fix, 
and open a new bug about raster differences.

</pre>
<p>[src/gdevprn.c]</p>
</blockquote>

<p><strong><a name="2007-07-06T065015.857933Z"></a>
2007-07-06T06:50:15.857933Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Improving documentation for gxclpath.c .

DETAILS :

Bug 689317 "A wrong rendering of a path", Comment #3.

The revision 2948 change to gxclpath.c is not properly documented.
This patch stores assumptions, which are necessary for the
change to be correct.

</pre>
<p>[src/gxclpath.c]</p>
</blockquote>

<p><strong><a name="2007-07-06T060017.432528Z"></a>
2007-07-06T06:00:17.432528Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : A wrong path filling.

DETAILS :

Bug 689317 "A wrong rendering of a path".

gx_path_merge_contacting_contours didn't account implicit closepath
with non-zero length. Due to that the filling algorithm could
recieve a path with a missed segment. It caused some areas
are missed while filling.

This fix is important for restoring high level clist objects,
which were disabled with rev 5056 change to gdevprn.c .

This fix inserts a line segments at the place of implicit closepath
before merging contours.

Minor change : improving documentation about
gx_path_merge_contacting_contours. 

</pre>
<p>[src/gxpcopy.c]</p>
</blockquote>

<p><strong><a name="2007-07-05T190429.604836Z"></a>
2007-07-05T19:04:29.604836Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Let scripts search Ghostscript (or subscripts) in the same directory where they reside, bug 689318.
</pre>
<p>[lib/printafm lib/eps2eps lib/pdf2dsc lib/gsbj lib/ps2epsi lib/gsdj lib/dumphint lib/gsnd lib/font2c lib/pdfopt lib/pdf2ps lib/ps2pdf lib/gslj lib/pfbtopfa lib/bdftops lib/ps2pdf12 lib/ps2pdf13 lib/ps2pdf14 lib/gslp lib/wftopfa lib/ps2pdfwr lib/ps2ps lib/pphs lib/pf2afm lib/gsdj500]</p>
</blockquote>

<p><strong><a name="2007-07-05T181259.492244Z"></a>
2007-07-05T18:12:59.492244Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Fix for bug #689312.

DETAILS:

Ghostscript would fail with "Unrecoverable error, exit code 255" when
PaintType 2 tiling patterns were used in jobs run with GraphicsAlphaBits set
to 2 or 4. Fixed by not returning an error from pattern_accum_get_bits_rectangle
when called for a PaintType 2 pattern and the gx_device_pattern_accum bits
field is NULL as the bits field is only used with PaintType 1 patterns.

</pre>
<p>[src/gxpcmap.c]</p>
</blockquote>

<p><strong><a name="2007-07-05T105700.783595Z"></a>
2007-07-05T10:57:00.783595Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Let dvipdf support "-R" option, bug  689328.
</pre>
<p>[lib/dvipdf]</p>
</blockquote>

<p><strong><a name="2007-07-05T104152.033081Z"></a>
2007-07-05T10:41:52.033081Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Allow spaces in the input file names for pv.sh, bug 689329.
</pre>
<p>[lib/pv.sh]</p>
</blockquote>

<p><strong><a name="2007-07-05T103106.013010Z"></a>
2007-07-05T10:31:06.013010Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Use mktemp in ps2epsi, bug 689324.
</pre>
<p>[lib/ps2epsi]</p>
</blockquote>

<p><strong><a name="2007-07-04T225257.119341Z"></a>
2007-07-04T22:52:57.119341Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove an obsolete cvs housekeeping file.
</pre>
<p>[toolbin/tests/.cvsignore]</p>
</blockquote>

<p><strong><a name="2007-07-04T195215.096425Z"></a>
2007-07-04T19:52:15.096425Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for local ExtGState values that would caused invalidaccess on
printers or RIPS that have any of blackgeneration, undercolorremoval,
colortransfer or halftone in local VM. Customer #534.

DETAILS:

The 'cp2g' procedures used may be useful elsewhere. The version here
uses only "standard" Level 2 PostScript (it cannot use Ghostscript
extensions). Performance isn't critical since it is only used at
initialization.

</pre>
<p>[lib/opdfread.ps]</p>
</blockquote>

<p><strong><a name="2007-07-04T190909.181743Z"></a>
2007-07-04T19:09:09.181743Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add a newline to a debug printf. Bug 689330.
</pre>
<p>[src/gdevdflt.c]</p>
</blockquote>

<p><strong><a name="2007-07-04T173044.235393Z"></a>
2007-07-04T17:30:44.235393Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix a typo in the jpeg config that resulted in MAX_ALLOC_CHUNK being
too small (0xfff0). Bug 689321.

DETAILS:

While ARCH_SIZEOF_INT was set to '4', it is done in std.h, not arch.h.
Changing to use ARCH_LOG2_SIZEOF_INT instead since this is defined.

</pre>
<p>[src/gsjconf.h]</p>
</blockquote>

<p><strong><a name="2007-07-04T141122.971272Z"></a>
2007-07-04T14:11:22.971272Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make sed in pstoepsi correctly work independent of the current locale.
In LC_COLLATE=en_US{,.UTF-8} and a bunch of other locales '~' comes before '!'
when sorting, so you really cannot write !-~ but ~-! in those locales.
Bug 689325.
</pre>
<p>[lib/ps2epsi]</p>
</blockquote>

<p><strong><a name="2007-07-03T182138.196871Z"></a>
2007-07-03T18:21:38.196871Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make the top dictionary in the file generated by pswrite device writable.
Reportedly, setpagedevice writes to a top directory on an Epson printer.
Bug 689315, attachment 3108.
</pre>
<p>[src/gdevpsu.c]</p>
</blockquote>

<p><strong><a name="2007-07-03T120018.641724Z"></a>
2007-07-03T12:00:18.641724Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a harmless typo, replace bitwise '&amp;' with logical '&amp;&amp;' in a couple of
logical expressions. Bug 689315, attachment 3115.

</pre>
<p>[src/scfd.c src/gdevps.c]</p>
</blockquote>

<p><strong><a name="2007-07-02T080903.552980Z"></a>
2007-07-02T08:09:03.552980Z Igor Melichev</strong></p>
<blockquote>
<pre>
Extend the clist language with fill_trapezoid. 

DETAILS :

It saves the clist file size with writing a higher level objects.
The old code expands trapezoids with lots of rectangles.


</pre>
<p>[src/gxclist.c src/gxclpath.h src/gxcldev.h src/gxclrast.c src/gxclrect.c]</p>
</blockquote>

<p><strong><a name="2007-07-01T171818.933670Z"></a>
2007-07-01T17:18:18.933670Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Include the system headers first to avoid name conflict between Cygwin
headers and a Ghostscript macro. This works because (1) we don't use
the affected structure, (2) system header files are protected from double
inclusion. Bug 689276.

</pre>
<p>[src/zimage.c src/zvmem.c src/int.mak src/zfproc.c src/zfile.c src/ztoken.c]</p>
</blockquote>

<p><strong><a name="2007-06-30T234618.087581Z"></a>
2007-06-30T23:46:18.087581Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Compare the type of the object cached in the font descriptot with the expected
type and ignore the cache when the types mismatch. The same descriptor can
refer to Font and CIDFont resources if they happen to have the same name and
are not embedded. Bug 689301, customer 870.

DETAILS:
tx_pdf 12.0.112.500 created quite strange PDF file. The file refers to
Palatino font and Palatino CIDFont through the same font descriptor.
Both the font and CIDFont versions are not embedded. There's no rule in PDF
against merging equal objects from unrelated contexts.

Old code cached the font or CIDFont file in the font descriptor.
Re-using the font descriptor for a different type of the object caused the
wrong object to be retrieved from the cache. In turn, this causes /undefined
error later on.

The patch compares the type of the cached object with the expected type
and ignores the cache when the types mismatch. In our case this results in
an attempt to find Palatino CIDFont resource. Since this resource is not
available, the CMap name is used as a default CIDFont resource name for
the given CMap. In this case, /Adobe-Japan1 /CIDFont resource is searched.
When this resource is available, the file finishes normally. Otherwise the
file fails with /undefinedresource in findresource.

</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2007-06-30T122522.298902Z"></a>
2007-06-30T12:25:22.298902Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Replase setglobal operator with .setglobal in Type 1 font support code to make
it bindable during start-up. Bind other standard executable names in the file.
Bug 689311, customer 411.

</pre>
<p>[lib/gs_type1.ps]</p>
</blockquote>

<p><strong><a name="2007-06-30T065744.535512Z"></a>
2007-06-30T06:57:44.535512Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Expanding gxcldev.h macros, part 7.

DETAILS :

This change is algorithmically equivalent.
The purpose is to eliminate gxcldev.h macros
to simplify the debugging of the clist writer methods.

This 7th step removes obsolete contours.

</pre>
<p>[src/gxclimag.c src/gxclrect.c]</p>
</blockquote>

<p><strong><a name="2007-06-30T064155.227485Z"></a>
2007-06-30T06:41:55.227485Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Expanding gxcldev.h macros, part 6.

DETAILS :

This change is algorithmically equivalent.
The purpose is to eliminate gxcldev.h macros
to simplify the debugging of the clist writer methods.

This 6th step simplifies the flow control
with removing unuseful goto and labels.
Also it updates the documentation
in gxcldev.h .


</pre>
<p>[src/gxcldev.h src/gxclpath.c src/gxclimag.c src/gxclrect.c]</p>
</blockquote>

<p><strong><a name="2007-06-29T204457.917902Z"></a>
2007-06-29T20:44:57.917902Z Henry Stiles</strong></p>
<blockquote>
<pre>
Temporarily disable the band complexity code and use the existing
"color used" code to detect non trivial raster operations.

DETAILS:

The band complexity code is to be removed entirely.  It is not correct
and (apparently) the person who implemented it did not realize there
was code in the system to accomplish the same task.  For now we fill
in the band complexity array with (correct) values from
gdev_prn_colors_used().  We are not removing all of the band
complexity now because there are other banding projects in the works.

</pre>
<p>[src/gxclread.c]</p>
</blockquote>

<p><strong><a name="2007-06-29T202142.242166Z"></a>
2007-06-29T20:21:42.242166Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix optimization for 0 and 0xff (non-dithered) colors in the wtsimdi_copy_mono
routine. Also add a (temporary) change to force color==0 to cmyk=0x000000ff
(only 100% black). This would be done differently if the input color were
tagged RGB where presumably text objects would map. This is a reasonable
temporary approach since copy_mono is used for bitmapped text.

Also remove the "SKIP_OUTPUT" compile time #define and add "output_is_nul"
detection of the OutputFile name being nul: or /dev/null to make it easier
to go back and forth between timing runs (to /dev/null) and runs where we
want to look at the output.

DETAILS:

Both the copy_mono optimizations and the mapping of color 0 can be disabled
by removing (or commenting) the #defines above wtsimdi_copy_mono. These are
on by default.

</pre>
<p>[src/gdevwts.c]</p>
</blockquote>

<p><strong><a name="2007-06-29T153825.753618Z"></a>
2007-06-29T15:38:25.753618Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Expanding gxcldev.h macros, part 5.

DETAILS :

This change is algorithmically equivalent.
The purpose is to eliminate gxcldev.h macros
to simplify the debugging of the clist writer methods.

This 5th step eliminates FOR_RECTS and END_RECTS macros.
So now all control flow statements are outside macros.

</pre>
<p>[src/gxcldev.h src/gxclpath.c src/gxclimag.c src/gxclrect.c]</p>
</blockquote>

<p><strong><a name="2007-06-29T145420.698917Z"></a>
2007-06-29T14:54:20.698917Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Expanding gxcldev.h macros, part 4.

DETAILS :

This change is algorithmically equivalent.
The purpose is to eliminate gxcldev.h macros
to simplify the debugging of the clist writer methods.

This 4nd step eliminates the general form of
END_RECTS_ON_ERROR. Since it is used at once,
we simply expand it and perform some syntactic
simplifications.

Besides that, 2 new macros RECT_ENUM_INIT
and RECT_STEP_INIT prepare further simplifications.

</pre>
<p>[src/gxcldev.h src/gxclimag.c]</p>
</blockquote>

<p><strong><a name="2007-06-29T092827.467512Z"></a>
2007-06-29T09:28:27.467512Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Expanding gxcldev.h macros, part 3.

DETAILS :

This change is algorithmically equivalent.
The purpose is to eliminate gxcldev.h macros
to simplify the debugging of the clist writer methods.

This 3nd step collects local variables
of a rectangle enumerator in a single structure
cmd_rects_enum_s.

In the old code the macro FOR_RECTS modifies
function arguments 'y' and 'height'.
It doesn't comply with C-style.htm .
For fixing that this patch renames
function arguments x,y,width,height with
rx,ry,rwidth,rheight.

</pre>
<p>[src/gxcldev.h src/gxclpath.c src/gxclimag.c src/gxclrect.c]</p>
</blockquote>

<p><strong><a name="2007-06-28T221645.367783Z"></a>
2007-06-28T22:16:45.367783Z Ralph Giles</strong></p>
<blockquote>
<pre>
Pass -DHAVE_FONTCONFIG through CAPOPT so the fontconfig patch is 
actually enabled by the autoconf build.

DETAILS:

Previously, it was passed through ACDEFS which we don't currently use. 
This line is getting longer; probably we should move to 
platform-specific config files, and manage the autoconf one with 
autoheader.
</pre>
<p>[src/Makefile.in src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-06-28T220846.177663Z"></a>
2007-06-28T22:08:46.177663Z Ralph Giles</strong></p>
<blockquote>
<pre>
Pass EXTRALIBS when linking mkromfs. This is a hack, but the dependency 
on the gp library pulls in a number of other things, and this seems 
safer for the time being.
</pre>
<p>[src/unix-aux.mak]</p>
</blockquote>

<p><strong><a name="2007-06-27T231942.317364Z"></a>
2007-06-27T23:19:42.317364Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Lower the PDF version searched for transparency features to 1.2 to handle
broken PDF files generated by SPIRIT 14.22. Bug 689288, customer 850.
</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2007-06-27T164822.479129Z"></a>
2007-06-27T16:48:22.479129Z Ralph Giles</strong></p>
<blockquote>
<pre>
Enable dynamic driver support on Solaris. Patch from Norm Jacobs, Bug 
689307.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-06-27T015229.856489Z"></a>
2007-06-27T01:52:29.856489Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix an out of bounds buffer write in the wts_load_halftone logic and fine
tune the wts_resolve_one color conversion cache hashing for 4K (the default).
Bug 689255 for customer 951.

DETAILS:

Besides fixing the out of bounds logic, I added a 'bufsize' parameter to the
gs_wts_from_buf logic so that we can detect OOB conditions. Note that the
1+hdr_size+cell_size in gx_ht_read_component_wts is retained by this patch
even though it looks bogus (we want to commit the fix so we can send to a
customer, and will look at this later).

In refining the cache stats in the wtsimdi device, the 'fill_empty' case
and the 'collision' case were split to make sure that the hash is decent,
but even 1M cache hits (on ACDsee.prn) only save about 1.5 seconds (out
of 9 seconds). The hash algorithm for smaller collision rates won't really
matter much.


</pre>
<p>[src/gswts.h src/gxdhtserial.c src/gdevwts.c src/gswts.c]</p>
</blockquote>

<p><strong><a name="2007-06-26T204303.119310Z"></a>
2007-06-26T20:43:03.119310Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Expanding gxcldev.h macros, part 2.

DETAILS :

This change is algorithmically equivalent.
The purpose is to eliminate gxcldev.h macros
to simplify the debugging of the clist writer methods.

This 2nd step replaces HANDLE_RECT_UNLESS
with macros that don't include goto or return statements.

Besides that, the pattern :

		if (code &lt; 0) {
		    band_code = code;
		    goto error_in_rect; /* ERROR_RECT(code); */
 		}

is replaced with the smaller one :

		if (code &lt; 0 &amp;&amp; SET_BAND_CODE(code))
		    goto error_in_rect;

for a better readability.

Some compilers may claim unreferenced label error_in_rect.
To be fixed in the next step.

</pre>
<p>[src/gxcldev.h src/gxclimag.c src/gxclrect.c]</p>
</blockquote>

<p><strong><a name="2007-06-26T162542.642877Z"></a>
2007-06-26T16:25:42.642877Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Expanding gxcldev.h macros, part 1.

DETAILS :

This change is algorithmically equivalent.
The purpose is to eliminate gxcldev.h macros
to simplify the debugging of the clist writer methods.

This first step removes simple macros and optimized macro duplicates.
Removing others to be done in the next step.

Some compilers may claim unreferenced label error_in_rect.
To be fixed in the next step.

</pre>
<p>[src/gxcldev.h src/gxclpath.c src/gxclimag.c src/gxclrect.c]</p>
</blockquote>

<p><strong><a name="2007-06-26T155826.994368Z"></a>
2007-06-26T15:58:26.994368Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Replaced the &#36;(install_prefix) from ESP Ghostscript by &#36;(DESTDIR).
</pre>
<p>[contrib/contrib.mak cups/cups.mak]</p>
</blockquote>

<p><strong><a name="2007-06-26T070817.110301Z"></a>
2007-06-26T07:08:17.110301Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add logic for a configurable color lookup cache to the wts* devices.
Currently set to 4K (4096 entries). Testing indicates this is a 
reasonable value, adequate for all synthetic/graphics arts pages
and adequate for photos/scanned images.


DETAILS:

The hash function is rather arbitrary, but some experimentation with
more sophisticated hashing doesn't really show much difference since
the color lookup isn't such a high CPU load even on the performance
files which are entirely images. A 4K CLUT achieves 1.4M hits and
even a 64K CLUT size only gets 1.6M hits (out of ~6M pixels) .

</pre>
<p>[src/gdevwts.c]</p>
</blockquote>

<p><strong><a name="2007-06-25T235629.899646Z"></a>
2007-06-25T23:56:29.899646Z Ralph Giles</strong></p>
<blockquote>
<pre>
Report the result of the GTK-2.0 configure test. Normalize indentation 
in this section.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-06-23T024331.980612Z"></a>
2007-06-23T02:43:31.980612Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Replace exponential format of a real number with a decimal point format
in PDF writing utilities because PDF doesn't support exponential format.
Bug 689293, customer 932.
</pre>
<p>[lib/pdfwrite.ps]</p>
</blockquote>

<p><strong><a name="2007-06-22T220556.668720Z"></a>
2007-06-22T22:05:56.668720Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Small corrections on "./configure" checks for pkg-config.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-06-22T154443.448105Z"></a>
2007-06-22T15:44:43.448105Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Added the fontconfig support from ESP Ghostscript
</pre>
<p>[src/Makefile.in src/configure.ac src/gp_unix.c]</p>
</blockquote>

<p><strong><a name="2007-06-20T224608.189858Z"></a>
2007-06-20T22:46:08.189858Z Ralph Giles</strong></p>
<blockquote>
<pre>
Clarify the license situation with the ETS patents in the GPL 
distribution.
</pre>
<p>[src/rinkj/evenbetter-rll.c LICENSE]</p>
</blockquote>

<p><strong><a name="2007-06-20T194652.216039Z"></a>
2007-06-20T19:46:52.216039Z Ralph Giles</strong></p>
<blockquote>
<pre>
Hack in some support for comparing WX fields with --diff. Incomplete.
</pre>
<p>[toolbin/afmutil.py]</p>
</blockquote>

<p><strong><a name="2007-06-19T165920.420492Z"></a>
2007-06-19T16:59:20.420492Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : MSVC8 compiler warnings.

DETAILS :

The revision 8075 causes an unuseful type cast.

</pre>
<p>[src/gsdparam.c]</p>
</blockquote>

<p><strong><a name="2007-06-19T164429.490746Z"></a>
2007-06-19T16:44:29.490746Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PS interpreter) : "undef" data change was not properly saved.

DETAILS :

Bug 689284 "Abnormal dependence of 'known' on name hash indices".

The "undef" algorithm has an "optimization" branch for packed keys,
which replaces "deleted" elements with "empty" (i.e. unused).
However this data change was not tracked for "restore".
In some rare cases it causes a wrong result for "known", "get", "bind"
and others. Interesting that "dictforall" doesn't miss such keys
when "known" does, but it could enumerate same key several times
with older values.

The bug persists since the repository was created in March 2000.

This change simply saves the changed data for restore.

</pre>
<p>[src/idict.c]</p>
</blockquote>

<p><strong><a name="2007-06-19T113606.688290Z"></a>
2007-06-19T11:36:06.688290Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add version and revision numbers to %%BeginResource DSC comment generated by
epswrite and pswrite devices. Bug 689285.
</pre>
<p>[src/gdevpsu.c]</p>
</blockquote>

<p><strong><a name="2007-06-19T071620.368343Z"></a>
2007-06-19T07:16:20.368343Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix: Setting a right property on gscicach.c gscicach.h .
</pre>
<p>[src/gscicach.c src/gscicach.h]</p>
</blockquote>

<p><strong><a name="2007-06-19T071243.707003Z"></a>
2007-06-19T07:12:43.707003Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix: Setting a right property on idicttpl.h .
</pre>
<p>[src/idicttpl.h]</p>
</blockquote>

<p><strong><a name="2007-06-19T070942.151414Z"></a>
2007-06-19T07:09:42.151414Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PS interpreter) : Replace packed_search_* macros with a template (continued).

DETAILS :

This change is algorithmically equivalent.
The purpose is to improve the debugging technology.
The new variable 'start' allows to observe the value of the starting search index.

</pre>
<p>[src/idicttpl.h]</p>
</blockquote>

<p><strong><a name="2007-06-19T055101.853658Z"></a>
2007-06-19T05:51:01.853658Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (The filling algorithm) : Improving a condition for visual trace.

DETAILS :

This change affects the debug painting only.
The old code wrongly accounts the case when fill adjustment is set to -1, which means "none".

</pre>
<p>[src/gxfill.c]</p>
</blockquote>

<p><strong><a name="2007-06-19T054558.839755Z"></a>
2007-06-19T05:45:58.839755Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PS interpreter) : Replace packed_search_* macros with a template.

DETAILS :

This change is algorithmically equivalent.
The purpose is to improve the debugging technology.
It allows to trace through the packed search code
with Microsoft Developer Studio.

We define a new variable 'wrap'
for reducing 3 macros to a single template.
We believe it shouldn't cause a sensible slowdown.
An alternative is 2 (nested) templates and no new variables.

We noticed that the missing key case is not optimized well.
When the key is missing, the algorithm scans the 
left part of the array 2 times. One time should be enough.
It should be optimized in a separate patch.

</pre>
<p>[src/idict.c src/idictdef.h src/int.mak src/idicttpl.h doc/Develop.htm src/idstack.c]</p>
</blockquote>

<p><strong><a name="2007-06-19T023915.345882Z"></a>
2007-06-19T02:39:15.345882Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use newly created operator .getpath to implement PDF path handling without
64K limit on the user path imposed by upath, which we had before.
Bug 689123, customer 870.

</pre>
<p>[lib/pdf_draw.ps doc/Language.htm lib/pdf_ops.ps src/zupath.c]</p>
</blockquote>

<p><strong><a name="2007-06-18T170728.482467Z"></a>
2007-06-18T17:07:28.482467Z Ray Johnston</strong></p>
<blockquote>
<pre>
Remove the bmpa devices from some builds where it either was left
over (macos-mcp) or snuck back in (configure.ac).
</pre>
<p>[src/configure.ac src/macos-mcp.mak]</p>
</blockquote>

<p><strong><a name="2007-06-18T170533.466587Z"></a>
2007-06-18T17:05:33.466587Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix bmpa and gomni devices to account for changes to mem_*_size
function calling sequences (rev 8056). These were missed since they
were not part of the 'standard' build on most platforms and will
be the 'async' method of gdevprna etc. will be deprecated.

</pre>
<p>[contrib/gomni.c src/gdevbmpa.c]</p>
</blockquote>

<p><strong><a name="2007-06-18T163750.173337Z"></a>
2007-06-18T16:37:50.173337Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Need to use maximum of max_gray and max_color to know how many bits are
supported.

DETAILS:

For determining the device color depth, one must check both max_gray and
max_color and use the maximum of the two. For example, with rgb devices
max_gray will be equal to zero. Thanks to Ray for catching my oversite here.

EXPTECTED DIFFERENCES:

None. No alpha bit testing is done in the regression suite.

</pre>
<p>[src/gsdparam.c]</p>
</blockquote>

<p><strong><a name="2007-06-18T152047.700377Z"></a>
2007-06-18T15:20:47.700377Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Changing from using log10(x) / Log10(2) to iLog2(x) to compute the base 2 log.

DETAILS:

Making change to conform to gs style.

</pre>
<p>[src/gsdparam.c]</p>
</blockquote>

<p><strong><a name="2007-06-18T063758.394295Z"></a>
2007-06-18T06:37:58.394295Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fixes for ulong overflow in memory device buffer sizing that caused
problems with very large (&gt;4Gb on 32-bit machines) page buffer sizes
not invoking clist mode. Also the internal 'mask' image allocation
in ImageType3 would silently wrap around, causing SEGV crashes.

Lastly, the tiff*nc devices are fixed so that they never write to
file when the file will exceed 2Gb (max signed int) since the device
uses 'ftell' to calculate offsets in the file. This last case could
be fixed to use 64 bit file I/O or at least to keep an internal
offset so that multipage tiffs could be &gt; 2Gb as long as each page
was less than 2Gb. Other TIFF devices that compress were not changed
since the probability of overflow is less and we don't want to be
overly agressive about throwing a 'rangecheck' on the basis of the
uncompressed size.

Bugs 688808, 688815 and 689080 for customer 190 (and others).

DETAILS:

The buf_device/bitmap sizing functions now return a success code,
setting the size using a pointer passed as a parameter. A bitmap
that overflows max_ulong now throws gs_error_VMerror so that the
caller can take appropriate recovery action (such as gdevprn using
a clist instead of a page buffer).

The ImageType 3 mask probably needs an internal clist method (such
as was done for the pattern accumulator) to avoid this overflow.

As mentioned above, the TIFF devices, particularly the '*nc' type
(not compressed) could benefit from using 64-bit file I/O calls
for those that want to fill up large hard drives quickly.

</pre>
<p>[src/gdevdsp.c src/gdevxini.c src/gxclist.c src/gxpcmap.c src/gxccman.c src/gxdevmem.h src/gdevppla.c src/gxmclip.c src/gdevmem.c src/gdevprn.c src/gximag3x.c src/gdevdrop.c]</p>
</blockquote>

<p><strong><a name="2007-06-17T175526.407602Z"></a>
2007-06-17T17:55:26.407602Z Henry Stiles</strong></p>
<blockquote>
<pre>
Fix 689275.  The slow rop flag was not set to true for ROP 170 (paint
with destination), this is an unexpected problem because it is the
most basic rop that requires setting the "slow rop" flag.  In addition
to fixing the tests in the bug resport The following CETS recorded
differences in automated testing, but only a few have been visually
verified as fixes.

tests/pcl/pcl5ccet/22-13.BIN 
tests/pcl/pcl5ccet/22-20.BIN 
tests/pcl/pcl5ccet/23-11.BIN 
tests/pcl/pcl5ccet/25-04.BIN 
tests/pcl/pcl5ccet/25-05.BIN 
tests/pcl/pcl5ccet/25-06.BIN 
tests/pcl/pcl5efts/fts.2400 
tests/xl/pxlfts2.0/t106.bin 
tests/xl/pxlfts2.0/t202.bin 
tests/xl/pxlfts2.0/t328.bin 
tests/xl/pxlfts3.0/A007.BIN 
tests/xl/pxlfts3.0/A008.BIN 
tests/xl/pxlfts3.0/T106.BIN 
tests/xl/pxlfts3.0/T202.BIN 
tests/xl/pxlfts3.0/T328.BIN 
tests/xl/pxlfts3.0/T336.BIN 
tests/xl/pxlfts3.0/T419.BIN 
tests/xl/pcl6cet/c207.bin 
tests/xl/pcl6cet/c311.bin 
tests/xl/pcl6cet/c313.bin 
tests/xl/pcl6cet/c327.bin 
tests/xl/pcl6cet/c328.bin 
tests/xl/pcl6cet/c419.bin 
tests/xl/pcl6cet/c420.bin 
tests/xl/pcl6cet/c427.bin 
tests/xl/pxlfts/t106.bin 
tests/xl/pxlfts/t202.bin 
tests/xl/pxlfts/t328.bin 
tests/xl/pxlfts/t419.bin 
tests/xl/pcl6cet3.0/C207.bin 
tests/xl/pcl6cet3.0/C311.bin 
tests/xl/pcl6cet3.0/C313.bin 
tests/xl/pcl6cet3.0/C327.bin 
tests/xl/pcl6cet3.0/C328.bin 
tests/xl/pcl6cet3.0/C419.bin 
tests/xl/pcl6cet3.0/C420.bin 
tests/xl/pcl6cet3.0/C427.bin 
tests/xl/pcl6cet3.0/C701.bin 
tests/xl/pcl6cet3.0/C702.bin 
tests/xl/pcl6cet3.0/C704.bin 
tests/customer_tests/Fc707oj2.bin.xl 
tests/customer_tests/Fc70foj3.bin.xl 
tests/customer_tests/cie.out 
tests/customer_tests/circle1.pcl 
tests/customer_tests/fp309oa2.bin 
tests/customer_tests/lj.pcl 
tests/customer_tests/wd309dwf.pcl 
tests/customer_tests/wd30ddwf.pcl 


</pre>
<p>[src/gxclrect.c]</p>
</blockquote>

<p><strong><a name="2007-06-17T000102.174467Z"></a>
2007-06-17T00:01:02.174467Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix misleading error message from runlibfile0 that always referred to the last
libfile that was ever STARTED, even if it finished and control returned to
another file. Bug 688738.

DETAILS:
Change runlibfile0 to define ".currentfilename" again after the libfile ends.
The  correct value is kept on the exec stack, by constructing and executing a
procedure with the filename bound into it. Thanks to SaGS for the patch.

</pre>
<p>[lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2007-06-16T192422.647261Z"></a>
2007-06-16T19:24:22.647261Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Fix to limit GraphicsAlphaBits and TextAlphaBits to legal values.

DETAILS:

Bug 688020 reported that when a user set the GraphicsAlphaBits and TextAlphaBits
to values not supported by the current device unexpected images would be
generated. This fix limits the internal values used to those which are supported
by the current output device.

</pre>
<p>[src/gsdparam.c]</p>
</blockquote>

<p><strong><a name="2007-06-15T185534.118706Z"></a>
2007-06-15T18:55:34.118706Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Comment change to reflect name change of the module gsncdemo.c to gsncdummy.c

DETAILS:

See above.

</pre>
<p>[src/gsnamecl.h]</p>
</blockquote>

<p><strong><a name="2007-06-14T220625.996646Z"></a>
2007-06-14T22:06:25.996646Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Implement quoting in GS_OPTIONS environment variable. Bug 688965.

DETAILS:
Old code treated quotes in GS_OPTIONS as regular characters
and not used them for quoting spaces. New code distinguish
between a single already parsed argument, retrieved by a previous
call to arg_next() and unparsed list of arguments from GS_OPTIONS.
Thanks to SaGS for the patch.

</pre>
<p>[src/gsargs.c src/imainarg.c src/gsargs.h]</p>
</blockquote>

<p><strong><a name="2007-06-13T232111.020971Z"></a>
2007-06-13T23:21:11.020971Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A crash when comparing resources of different types.
Bug 689269 for customer 411. Fix by Ray Johnston.

DETAILS :

pdf_find_same_resource assumed same resource type.
However PDF allows for functions to be either array or dictionary.
Need to compare resource types before comparing their contents.

</pre>
<p>[src/gdevpdfu.c]</p>
</blockquote>

<p><strong><a name="2007-06-13T192147.294205Z"></a>
2007-06-13T19:21:47.294205Z Ralph Giles</strong></p>
<blockquote>
<pre>
The translib module now depends on crd decoding and cie support.
Patch from Henry Stiles, needed for the gslt build.
</pre>
<p>[src/lib.mak]</p>
</blockquote>

<p><strong><a name="2007-06-13T162733.371102Z"></a>
2007-06-13T16:27:33.371102Z Timothy Osborn</strong></p>
<blockquote>
<pre>
This is a fix for regression bug report 689263.

DETAILS:

Some versions of PhotoShop generate documents that place an extra value on the operand stack and tintTransform replaces it - see bug 549307 for details. Also see the test case of bug 689263. Since GS invokes setcolor as a side-effect of setcolorspace, we must prevent Adobe's hack from pop'ing an extra (significant) item from the operand stack when setcolor is invoked from a setcolorspace context.

The previous patch for bug report 688584, which was committed before I was done with it, was too broad and was undoing Adobe's hack whenever setcolor was invoked (from setcolorspace or otherwise). This change also undoes the previous patch, which was the cause of the error:

Error: /rangecheck in --image--

under the conditions specified in bug report 689263.

</pre>
<p>[lib/gs_devn.ps lib/gs_cspace.ps]</p>
</blockquote>

<p><strong><a name="2007-06-13T024204.178728Z"></a>
2007-06-13T02:42:04.178728Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix false detection of circular references in the resource chain. Valid PDF
resource references form a directed acyclic graph but the old code was
checking for a tree. Bug 688479.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2007-06-12T205518.217413Z"></a>
2007-06-12T20:55:18.217413Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Avoid an invalidaccess error. Skip execstack elements in the execstack_lookup
procedure for which rcheck returns false. Bug 688934.

</pre>
<p>[lib/gs_resmp.ps]</p>
</blockquote>

<p><strong><a name="2007-06-12T171208.917597Z"></a>
2007-06-12T17:12:08.917597Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : MSVC8 warnings.

</pre>
<p>[src/gconf.c src/gdevdjet.c]</p>
</blockquote>

<p><strong><a name="2007-06-12T024144.494784Z"></a>
2007-06-12T02:41:44.494784Z Ralph Giles</strong></p>
<blockquote>
<pre>
Set native line endings.
</pre>
<p>[src/gsncdummy.c src/gsncdummy.h]</p>
</blockquote>

<p><strong><a name="2007-06-12T020618.488766Z"></a>
2007-06-12T02:06:18.488766Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove LDFLAGS and EXTRALIBS from the mkromfs build line. These were 
inadvertently added during the esp merge and are no longer needed.
</pre>
<p>[src/unix-aux.mak]</p>
</blockquote>

<p><strong><a name="2007-06-11T215813.269101Z"></a>
2007-06-11T21:58:13.269101Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Don't leave ccolor.pattern uninitialized for the null pattern because
this field is enumerated by GC. Bug 689002.

</pre>
<p>[src/gspcolor.c]</p>
</blockquote>

<p><strong><a name="2007-06-10T201202.226861Z"></a>
2007-06-10T20:12:02.226861Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix processing of very small PDF files ( &lt; 1024 bytes) that was broken by
rev. 7834 that increased the size of look-ahead buffer to 1024 bytes.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2007-06-10T052102.102146Z"></a>
2007-06-10T05:21:02.102146Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add a work-around for malloc(0) returning a 0 pointer - call malloc(1)
instead. Bug 688532, customer 870.

DETAILS:
This behavior was observer on IBM 4.3 and 5.1. IEEE 1003.1 spec,
which is aligned with ISO C, states:
If the size of the space requested is 0, the behavior is implementation-defined:
the value returned shall be either a null pointer or a unique pointer.

malloc(0) happens when libjasper reads optional tags in the embedded ICC
profile. This doesn't happen too frequently and we can afford to allocate
a few extra bytes.

</pre>
<p>[jasper/src/libjasper/base/jas_malloc.c]</p>
</blockquote>

<p><strong><a name="2007-06-10T050141.885957Z"></a>
2007-06-10T05:01:41.885957Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a memory corruption and a SEGV after applying a filter to a closed stream.
Don't replace an closed stream with invalid_file_stream, which is an open,
0-length stream. Bug 688712.

</pre>
<p>[src/zfilter.c]</p>
</blockquote>

<p><strong><a name="2007-06-10T015133.615609Z"></a>
2007-06-10T01:51:33.615609Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Port recent changes in MSVC build to Borland C build. Fix minor compilation
problems in the components that has not been compiled by Borland C before.

DETAILS:
Although nobody seems to use Borland C, having an alternative compiler
on Windows helps to separatr MSVC errors from Microsoft SDK quirks.

</pre>
<p>[jasper/src/libjasper/include/jasper/jas_types.h jasper/src/libjasper/jpc/jpc_qmfb.c jbig2dec/os_types.h jasper/src/libjasper/include/jasper/jas_config.h src/bcwin32.mak jbig2dec/config_win32.h src/gdevtsep.c src/genarch.c ijs/unistd_.h src/dwuninst.cpp]</p>
</blockquote>

<p><strong><a name="2007-06-09T120812.529992Z"></a>
2007-06-09T12:08:12.529992Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix incorrect decompression of large files (&gt;= 16M) by JPXDecode filter
on Windows. Don't open the temporary file in text mode.

</pre>
<p>[jasper/src/libjasper/include/jasper/jas_stream.h]</p>
</blockquote>

<p><strong><a name="2007-06-09T001634.537278Z"></a>
2007-06-09T00:16:34.537278Z Ralph Giles</strong></p>
<blockquote>
<pre>
The cups-config script can be installed without the libcupsimage headers.
Check for this and disable gdevcups if the required header isn't available.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-06-08T181246.977956Z"></a>
2007-06-08T18:12:46.977956Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the unix persistent cache implementation to use the new md5 namespace.
This file should have been included in r8032.
</pre>
<p>[src/gp_unix_cache.c]</p>
</blockquote>

<p><strong><a name="2007-06-08T180334.577571Z"></a>
2007-06-08T18:03:34.577571Z Ralph Giles</strong></p>
<blockquote>
<pre>
Tell svn to ignore the generated cups scripts.
</pre>
<p>[cups]</p>
</blockquote>

<p><strong><a name="2007-06-08T180205.168482Z"></a>
2007-06-08T18:02:05.168482Z Ralph Giles</strong></p>
<blockquote>
<pre>
Namespace the interface calls of our md5 implementation to avoid conflict
with other implementations, for example the one exported by libcups on
MacOS X, or one used by a client which also links to gs as a library.
</pre>
<p>[src/smd5.h src/gdevpdf.c src/gdevpdfu.c src/md5.c src/smd5.c src/md5.h src/md5main.c]</p>
</blockquote>

<p><strong><a name="2007-06-07T045246.418386Z"></a>
2007-06-07T04:52:46.418386Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove an unused clean action.

DETAILS:

This was added as part of the x11 device modularization patch, which
doesn't appear to add any generation of _temp_* files. The Desqview
makefile does, and wctail.mak makes such files in the GLOBJ path,
but cleaning these shouldn't be part of this target regardless.
</pre>
<p>[src/gs.mak]</p>
</blockquote>

<p><strong><a name="2007-06-07T044452.072188Z"></a>
2007-06-07T04:44:52.072188Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove generated cups scripts from the repository.
</pre>
<p>[cups/pstoraster cups/pstopxl]</p>
</blockquote>

<p><strong><a name="2007-06-07T044042.736213Z"></a>
2007-06-07T04:40:42.736213Z Ralph Giles</strong></p>
<blockquote>
<pre>
Minor cleanup of the CC_SHARED flag specification.
</pre>
<p>[src/lib.mak src/unix-gcc.mak]</p>
</blockquote>

<p><strong><a name="2007-06-07T030916.997726Z"></a>
2007-06-07T03:09:16.997726Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add the new CC_SHARED define to other top-level makefiles that include 
the new modular x11 or vga devices. This corrects the build issue with
ghostpcl.
</pre>
<p>[src/openvms.mak src/ugcclib.mak src/watcw32.mak src/dvx-gcc.mak src/unixansi.mak src/openvms.mmk src/os2.mak]</p>
</blockquote>

<p><strong><a name="2007-06-06T224638.753757Z"></a>
2007-06-06T22:46:38.753757Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add gomni.c, which was omitted by the EPS branch merge.
</pre>
<p>[contrib/gomni.c]</p>
</blockquote>

<p><strong><a name="2007-06-06T220327.059105Z"></a>
2007-06-06T22:03:27.059105Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Finally merged in extra functionality of ESP Ghostscript (from branch "gs-esp-gpl-merger")
</pre>
<p>[libpng/projects/netware.txt libpng/scripts/makefile.gcmmx libpng/contrib/gregbook/writepng.c src/configure.ac contrib/eplaser libpng/contrib/pngminus/makevms.com libpng/contrib/gregbook/readpng2.c libpng/contrib/gregbook/writepng.h libpng/contrib/gregbook/Makefile.unx libpng/scripts/makefile.msc libpng/scripts/makefile.sgi libpng/contrib/gregbook/readpng2.h libpng/contrib/visupng/VisualPng.dsp libpng/projects/beos/x86-shared.txt libpng/KNOWNBUG src/gdevpx.c src/gdevl256.c libpng/projects/cbuilder5/libpng.readme.txt src/gdevvglb.c libpng/scripts/makefile.watcom libpng/contrib/visupng/VisualPng.dsw libpng/scripts/makefile.nommx libpng/scripts/makefile.linux contrib/chp2200 libpng/scripts/CMakeLists.txt contrib/gdevlx50.c libpng/scripts/makefile.acorn lib/gs_init.ps src/gdevlbp8.c libpng/contrib/pngsuite/basn3p01.png libpng/projects/visualc71/zlib.vcproj contrib/gdevbjc_.c libpng/scripts/makefile.elf libpng/scripts/pngw32.rc contrib/japanese libpng/contrib/gregbook/toucan.png libpng/scripts/makefile.mips libpng/projects/visualc71/libpng.sln contrib/gdevbjc_.h libpng/pngrio.c libpng/contrib/gregbook/makevms.com libpng/contrib/gregbook/rpng-win.c libpng/projects/cbuilder5/libpngstat.bpf src/devs.mak libpng/projects/visualc6 contrib/pcl3 contrib/gdevlx7.c libpng/scripts/libpng.pc-configure.in src/gdevdjet.c contrib/defs.h src/gs.mak libpng/contrib/pngsuite/basn0g02.png libpng/README src/Makefile.in libpng/contrib/pngsuite/basn0g04.png libpng/contrib/gregbook libpng libpng/contrib libpng/projects/cbuilder5/libpngstat.bpr libpng/contrib/pngsuite/basn4a08.png libpng/libpngpf.3 libpng/contrib/pngsuite/basn0g08.png src/unixinst.mak libpng/contrib/pngminus/makefile.tc3 libpng/TODO src/gp_unix.c libpng/scripts/descrip.mms contrib/gdevxes.c libpng/contrib/visupng/VisualPng.ico libpng/scripts/makefile.solaris libpng/projects/cbuilder5/zlib.readme.txt libpng/pngwtran.c src/gdevlj56.c libpng/scripts/makefile.hp64 src/gdevdljm.c contrib/gdevcd8.c libpng/contrib/pngminus/png2pnm.sh libpng/contrib/pngminus/pnm2png.sh libpng/contrib/gregbook/wpng.c libpng/pngnow.png libpng/scripts/makefile.bc32 libpng/contrib/gregbook/README contrib/contrib.mak libpng/projects/visualc71/pngtest.vcproj src/gdevdljm.h libpng/scripts/makefile.vcwin32 contrib/gdevcd8.h contrib/gdevdj9.c libpng/contrib/gregbook/rpng2-win.c libpng/scripts/pngw32.def libpng/projects/beos/x86-static.proj libpng/pngget.c libpng/scripts/makefile.os2 libpng/contrib/pngminus/makefile.std libpng/projects/cbuilder5 libpng/scripts/makefile.sunos libpng/projects/wince.txt libpng/contrib/visupng/cexcept.h libpng/libpng.3 libpng/scripts/makefile.ibmc libpng/contrib/gregbook/rpng2-x.c libpng/pngtrans.c libpng/pngwrite.c libpng/contrib/gregbook/LICENSE libpng/pngset.c libpng/scripts/makefile.dj2 libpng/projects/visualc71/README.txt libpng/LICENSE libpng/projects/visualc71/libpng.vcproj libpng/contrib/visupng/VisualPng.png libpng/png.5 src/gconf.c libpng/pngwutil.c libpng/scripts/makefile.openbsd libpng/scripts/makefile.gcc contrib/md2k_md5k libpng/contrib/visupng/VisualPng.rc libpng/scripts/makevms.com libpng/scripts/libpng.pc.in contrib/gdevmd2k.c libpng/contrib/pngminus/pngminus.sh libpng/pngrtran.c libpng/scripts/makefile.freebsd src/unix-dll.mak contrib/lips4 contrib/gdevhl12.c libpng/scripts/makefile.hpgcc libpng/scripts libpng/scripts/makefile.sco src/lib.mak libpng/scripts/makefile.tc3 libpng/scripts/pngos2.def libpng/contrib/gregbook/Makefile.sgi libpng/contrib/pngminus/README cups libpng/scripts/makefile.vcawin32 libpng/contrib/pngsuite/basn2c16.png libpng/contrib/gregbook/readpng.c libpng/contrib/pngminus src/unix-gcc.mak libpng/contrib/pngsuite/basn6a16.png libpng/pngmem.c libpng/png.c contrib/gdevop4w.c libpng/contrib/gregbook/readpng.h libpng/scripts/makefile.64sunu src/version.mak libpng/contrib/pngsuite/basn3p02.png contrib/opvp libpng/projects/beos/x86-static.txt libpng/scripts/libpng-config-head.in libpng/png.h libpng/contrib/pngsuite/basn3p04.png contrib/gdevbjca.c libpng/contrib/pngsuite/basn3p08.png libpng/pngpread.c libpng/Y2KINFO libpng/scripts/makefile.netbsd libpng/projects/beos/x86-shared.proj libpng/pngwio.c lib/gs_setpd.ps libpng/pngrutil.c libpng/projects/visualc6/libpng.dsp libpng/contrib/pngminus/pnm2png.bat libpng/contrib/gregbook/Makefile.w32 libpng/contrib/pngminus/png2pnm.bat libpng/scripts/makefile.darwin libpng/scripts/makefile.hpux libpng/pngbar.jpg libpng/projects/cbuilder5/libpng.bpf libpng/projects libpng/projects/cbuilder5/libpng.bpg libpng/scripts/makefile.sggcc libpng/contrib/gregbook/rpng-x.c libpng/contrib/pngsuite/basn0g01.png libpng/projects/visualc6/libpng.dsw contrib/uniprint libpng/scripts/makefile.std libpng/contrib/pngsuite libpng/contrib/pngminus/pnm2png.c libpng/contrib/pngminus/png2pnm.c libpng/projects/visualc71/README_zlib.txt libpng/scripts/makefile.32sunu libpng/projects/cbuilder5/libpng.bpr libpng/contrib/pngminus/pngminus.bat libpng/contrib/visupng/README.txt libpng/projects/visualc71/PRJ0041.mak libpng/pngerror.c contrib/gdevgdi.c libpng/configure libpng/pngvcrd.c libpng/contrib/visupng/VisualPng.c libpng/scripts/makefile.aix libpng/scripts/makefile.mingw libpng/scripts/makefile.bor libpng/scripts/SCOPTIONS.ppc libpng/contrib/visupng libpng/scripts/makefile.beos libpng/contrib/visupng/PngFile.c libpng/contrib/pngsuite/basn4a16.png libpng/projects/visualc6/README.txt libpng/pngread.c libpng/scripts/makefile.ne12bsd libpng/contrib/pngsuite/basn0g16.png src/gdevpxut.c src/gdevcdj.c contrib/gdevlx32.c libpng/contrib/visupng/PngFile.h libpng/scripts/libpng-config-body.in libpng/INSTALL libpng/pngtest.png libpng/pnggccrd.c libpng/contrib/visupng/resource.h libpng/CHANGES src/gdevpxut.h libpng/scripts/libpng-config.in src/gdevxalt.c libpng/libpng-1.2.16.txt libpng/example.c contrib/lxm3200-tweaked libpng/scripts/makefile.so9 libpng/scripts/makefile.intel libpng/pngconf.h libpng/projects/beos libpng/scripts/makefile.amiga src/contrib.mak contrib/gdevln03.c libpng/contrib/pngsuite/README libpng/pngbar.png libpng/scripts/makefile.knr libpng/projects/visualc6/pngtest.dsp libpng/scripts/makefile.dec libpng/scripts/libpng.icc libpng/contrib/pngsuite/basn2c08.png src/unix-aux.mak libpng/contrib/pngsuite/basn6a08.png libpng/projects/cbuilder5/libpng.cpp libpng/scripts/makefile.atari libpng/scripts/makefile.cygwin contrib/epson740 libpng/pngtest.c libpng/ANNOUNCE libpng/projects/visualc71 libpng/scripts/smakefile.ppc]</p>
</blockquote>

<p><strong><a name="2007-06-05T230849.369051Z"></a>
2007-06-05T23:08:49.369051Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove additional artofcode references and the obsolete Maintain.htm.
</pre>
<p>[doc/Projects.htm doc/Issues.htm doc/Use.htm doc/Make.htm doc/Readme.htm doc/Testing.htm doc/Develop.htm doc/Maintain.htm]</p>
</blockquote>

<p><strong><a name="2007-06-05T230412.844617Z"></a>
2007-06-05T23:04:12.844617Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove artofcode references and update the release process 
documentation.
</pre>
<p>[doc/Release.htm]</p>
</blockquote>

<p><strong><a name="2007-06-05T222338.874733Z"></a>
2007-06-05T22:23:38.874733Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update licence headers. Copyright has been transfered from artofcode LLC 
to Artifex Software, Inc.
</pre>
<p>[src/iplugin.h ijs/ijs_server.h src/gdevm48.c src/gsgdata.h src/configure.ac src/gsropt.h src/gdevmsxf.c src/gdevmem.c src/gdevmem.h src/zvmem.c src/write_t1.c src/gstrap.c src/icstate.h src/gxxfont.h src/write_t1.h src/gstrap.h src/gzacpath.h src/gdevcgmx.h src/gscssub.c src/gp_msdos.c src/gdevlbp8.c src/gdevpdfx.h src/gdevdm24.c src/zcsdevn.c src/dwsetup.rc src/zcontext.c src/gscssub.h src/icie.h src/gxdhtserial.c src/gdevpdts.c src/ccfont.h src/gxdhtserial.h src/gxdither.h src/gdevpdts.h src/macsystypes.h src/gxclutil.c src/gxcomp.h src/echogs.c src/oper.h doc/History7.htm src/zchar42.c toolbin/tests/cmpi.py src/gsfont0.c src/gscscie.c src/zchar42.h src/gdevwts.c src/icfontab.c src/zht1.c src/zpcolor.c src/zdevcal.c src/gdevpdfi.c src/zcssepr.c src/ifont42.h src/sdcparam.c doc/Install.htm src/bcwin32.mak doc/Issues.htm src/sdcparam.h src/gdevokii.c src/gdevpdtd.c src/zcfont.c src/gdevpdtd.h src/gdevprna.c src/zcolor.c src/oparc.h src/gxhtbit.c src/sfxfd.c src/gdevprna.h src/gp_mspol.c src/dwuninst.h src/ttconfig.h src/gpmisc.c src/ireclaim.c src/gxstdio.h lib/gs_cidcm.ps src/gsmemraw.h toolbin/split_changelog.py src/gpmisc.h doc/Lib.htm src/gxline.h doc/Ps-style.htm man/gslp.1 src/ijs.mak src/gserver.c src/gp_psync.c man/de/pdfopt.1 src/gp_os2pr.c src/gdevpsd.c src/gsiomacres.c src/gxclfile.c src/gxfilltr.h man/de/wftopfa.1 man/de/ps2ps.1 src/gdebug.h src/zfile.c src/gxchar.c src/gxchar.h src/gsline.c src/gsfcid2.c src/gsalloc.c src/gsline.h src/gsiparm2.h src/gsalloc.h src/gxfont0.h src/gdevmeds.c src/gdev4081.c src/gdevmeds.h src/srdline.h src/dpmain.c src/wctail.mak src/winlib.mak doc/History8.htm src/szlibx.h src/zmath.c jbig2dec/jbig2_image_png.c src/gdevpdfk.c src/gxfont0c.h src/gxhintn1.c src/iimage.h src/gxpcolor.h src/gdevpdtf.c src/gp_unifn.c doc/Xfonts.htm src/gdevddrw.c src/gschar.c src/gdevpdtf.h src/gdevpsfm.c src/gdevddrw.h src/gschar.h src/sarc4.c src/gdevpsu.c src/gsptype2.c src/zfcid1.c src/gstrans.c src/sarc4.h src/gdevpsu.h src/gsptype2.h src/gstrans.h src/iestack.h src/gxbitfmt.h src/gxclio.h lib/pdf_rbld.ps src/gstype2.c src/itoken.h src/inameidx.h src/gxhldevc.c src/gxhldevc.h src/sfxboth.c src/gp_macio.c src/wrfont.c src/sbhc.c src/gsdps.c src/zfont1.c jbig2dec/jbig2_priv.h src/wrfont.h doc/Maintain.htm src/sbhc.h man/de/gsnd.1 src/gsdps.h src/spngp.c src/ghost.h jbig2dec/jbig2dec.c src/gxalloc.h src/gsmatrix.c src/gxsamplp.h src/istruct.h src/gdevpsf.h src/gsmatrix.h src/zdouble.c src/dwreg.c src/spdiff.c src/gxfcmap1.h src/dwreg.h src/scommon.h src/gdevpdtw.c src/gdevpdtw.h src/gsiparm4.h src/unixhead.mak src/gxiscale.c src/gxbcache.c src/dwinst.cpp src/gxbcache.h src/ibnum.c src/gdevxcmp.c src/estack.h src/ibnum.h ijs/configure.ac src/scfe.c src/gsdcolor.h src/gscompt.h src/gdevxcmp.h src/gxdtfill.h lib/stocht.ps src/gdevlj56.c src/gdevhl7x.c src/gdevos2p.c src/gdevmr8n.c src/gsbitops.c src/gsparam.c src/gxftype.h src/gdevpdfm.c src/gp_unix_cache.c src/imain.c src/gsbitops.h src/gsparam.h src/zfilter2.c src/imain.h src/ifilter.h src/zfont42.c doc/Language.htm src/spdiffx.h src/smd5.c src/smd5.h src/gxhttype.h src/gspenum.h src/sjpx.c src/gxipixel.c src/sjpx.h src/sfilter2.c src/gdevsnfb.c src/gscrd.c src/gxmclip.c src/gxcie.h src/gsio.h src/gscrd.h toolbin/tests/fuzzy.c src/gxmclip.h src/unix-end.mak toolbin/tests/run_parallel src/inobtokn.c toolbin/afmutil.py src/gp_mslib.c src/gdevescp.c src/gsiodev.c src/igc.c src/msvc32.mak src/gdevmacxf.c src/gsfunc0.c jbig2dec/jbig2_arith.c src/igc.h src/jerror_.h src/zdosio.c src/gsfunc0.h jbig2dec/jbig2_arith.h toolbin/jpxtopdf.c src/gdevpsf1.c src/gdevpsds.c src/siscale.c src/gdevpsds.h src/ilevel.h src/gxfill.c src/gsdsrc.c src/siscale.h src/gxclread.c src/gsdsrc.h ijs/ijs_exec_unix.c src/gxfill.h src/iostack.h src/gsdll.c src/gdevmr1.c src/gspath1.c src/gsdll.h src/sjpegc.c src/zfdcte.c src/zfcmap.c doc/Readme.htm toolbin/tests/check_source.py src/gdevbit.c src/gdevfax.c src/gsequivc.c src/gdevfax.h src/gsdevice.c src/gp_wsync.c src/gsequivc.h src/gxclmem.c src/gsdll32.rc src/gshtx.c src/gscparam.c src/gsdevice.h src/gdevpdfo.c src/gdevsj48.c src/gsbittab.c src/sdctd.c src/macos_carbon_pre.h src/gxclmem.h src/gshtx.h src/gsmemory.c src/gdevpdfo.h src/gsbittab.h src/ifwpred.h src/gdevcdj.c doc/Devices.htm src/files.h man/de/ps2ascii.1 src/gsmemory.h src/gxband.h src/scfdgen.c src/ttinterp.c src/ttcalc.c src/gsbitmap.h src/gdevtknk.c toolbin/genfontmap.ps src/idsdata.h src/ttinterp.h src/ttcalc.h src/gxfont42.h src/scf.h src/inames.h src/gxidata.c src/gsroptab.c lib/gs_fntem.ps src/gdevm1.c src/gsistate.c src/os2.mak src/gscolor2.c lib/gs_cidfm.ps src/gzline.h src/gscolor2.h src/gsmalloc.c src/ttfmain.c src/ivmem2.h src/gsmalloc.h src/gscindex.h src/gxiodev.h src/gp_macpoll.c src/dwmain.c jasper/configure.ac src/gdevpcfb.c src/gdevvec.c src/dwmain.h src/gdevpcfb.h src/gdevvec.h toolbin/pscet_status.pl src/ostack.h jasper/src/libjasper/jpc/jpc_qmfb.c src/gsrect.h src/sdeparam.c src/idosave.h src/ifrpred.h src/gdevimgn.c src/gdevvglb.c src/gsmdebug.h src/gsovrc.c src/gxshade1.c jbig2dec/jbig2_symbol_dict.c src/gdevm32.c src/scfx.h src/gsovrc.h src/all-arch.mak lib/gs_init.ps jbig2dec/jbig2_symbol_dict.h src/bfont.h src/idparam.c src/gsparams.c src/gdevbjcl.c src/gdevpsdu.c src/dvx-gcc.mak src/idparam.h src/gsparams.h src/gxblend.c src/gdevdsp2.h src/gp_mswin.c src/gdevbjcl.h src/gxblend.h src/gp_mswin.h src/gp_os2.c src/zcolor1.c src/math_.h src/gp_os2.h lib/gs_resmp.ps src/gxfunc.h src/gdevstc.c jbig2dec/jbig2_segment.c src/macos-fw.mak src/ialloc.c src/gdevstc.h src/ialloc.h src/gserrors.h src/sjpege.c src/gxsample.c src/gxfarith.h src/dxmainc.c src/gdevbmp.c src/gxsample.h src/gserror.h src/gdevbmp.h src/gdevsppr.c src/igcstr.c src/gdevn533.c src/idebug.c src/igcstr.h src/iccinit1.c src/idebug.h src/gsht.c src/ifont2.h src/gdevpsdf.h src/gdevm16.c src/gsht.h src/scantab.c src/strmio.c src/zfilter.c src/gstype42.c src/strmio.h src/iutilasm.asm src/gsfunc.c src/sbcp.c src/iref.h src/gsfunc.h jbig2dec/jbig2_mmr.c toolbin/encs2c.ps src/sbcp.h jbig2dec/jbig2_mmr.h src/gdevtrac.c src/gp_ntfs.c src/libpng.mak src/gdevatx.c src/zfproc.c src/gs_dll_call.h src/dmmain.c src/istream.h src/gs.c doc/Ps2epsi.htm src/zdevice2.c jasper/src/libjasper/include/jasper/jas_types.h src/iscannum.c src/sjbig2.c src/gdevpdfb.c src/gscrdp.c src/gspmdrv.c src/iscannum.h src/dmmain.r src/sjbig2.h src/gsfemu.c src/gdevpdfb.h src/gscrdp.h src/gspmdrv.h src/inamestr.h src/gxclrast.c src/gdevxres.c src/zfile1.c src/zimage3.c src/gdevo182.c src/istkparm.h src/zarith.c src/zcspixel.c src/gximage1.c src/msvctail.mak src/gsfunc4.c src/isdata.h src/gxclpath.c src/gsfunc4.h src/gxcmap.c src/gxclpath.h src/icsmap.h src/gxcmap.h src/gpgetenv.h src/zpath.c src/gsnorop.c src/ttload.c src/gdevmrop.h src/gxfillsl.h src/zcolor3.c src/ttload.h src/gxcpath.c src/tttype.h doc/Unix-lpr.htm src/gxcpath.h src/gdevlxm.c src/gxp1impl.h man/ps2ps.1 jbig2dec/jbig2_generic.c src/rinkj/rinkj-epson870.c jbig2dec/jbig2_generic.h src/rinkj/rinkj-epson870.h jbig2dec/jbig2_image.c src/gxgetbit.h src/gdevabuf.c doc/Source.htm src/md5.c jbig2dec/jbig2_image.h src/gp_mac.c src/zcie.c src/gdevsco.c src/md5.h src/gp_mac.h src/stream.c src/gdevdflt.c src/stream.h src/gsdpnext.h src/gdev8510.c src/gxstroke.c src/gdevpxut.c src/zncdummy.c src/zmisc2.c src/ttmisc.h src/zfunc3.c src/iparam.c lib/jobseparator.ps src/zrelbit.c src/gdevpxut.h src/gxclist.c src/gdevxini.c src/iparam.h Resource/ColorSpace/DefaultCMYK src/gxclist.h src/jbig2.mak src/gdevpsfu.c src/gdevlp8k.c jbig2dec/jbig2_arith_iaid.c src/gdevpdt.c man/font2c.1 src/ttfmemd.c jbig2dec/jbig2_arith_iaid.h src/gdevpdt.h src/gp_dosfs.c ijs/ijs_exec_win.c src/ttfmemd.h src/gpcheck.h src/jasper.mak src/gdevxxf.c src/dwuninst.cpp src/ztype.c src/shc.c src/zshade.c man/ps2ascii.1 Resource/ColorSpace/DefaultGray doc/Use.htm src/opcheck.h src/shc.h src/gdevpdfd.c src/gdevcfax.c src/vdtrace.c src/zicc.c src/gxdda.h src/iscan.c src/vdtrace.h src/gsnotify.c src/iscan.h src/gximage3.c src/srle.c src/zfilterx.c src/gsnotify.h Resource/ColorSpace/TrivialCMYK src/gximage3.h src/gsdll2.rc man/gs.1 src/iparray.h src/memory_.h src/gsuid.h src/wtsimdi.c src/gdevstc2.c src/ziodev2.c src/gsiodevs.c man/eps2eps.1 src/zmisc.c src/gsargs.c src/devs.mak src/gp_win32.c src/gsargs.h src/gsinit.c src/gxttfb.c src/simscale.c src/wmin.mak src/gxttfb.h src/dscparse.c src/winplat.mak src/simscale.h src/gdev3852.c src/dscparse.h src/gp_getnv.c src/gp_wgetv.c src/gdevpxen.h src/gdevadmp.c src/gdevpxat.h src/errno_.h src/zchar2.c src/slzwc.c src/gdevpdfu.c src/ttcommon.h src/gdevp14.c doc/Ps2ps2.htm src/dwinst.h src/sfilter.h src/gdevp14.h src/ifcid.h src/ifont.h src/sisparam.h src/zfmd5.c src/unixlink.mak doc/Psfiles.htm src/zrop.c src/zfjpx.c src/gdevegaa.asm src/gspaint.c src/gspaint.h src/sa85x.h src/gsalpha.c src/int.mak src/gsalpha.h src/icremap.h src/imainarg.c src/gp_dvx.c src/imainarg.h jbig2dec/os_types.h src/spprint.c src/gxcldev.h src/zbfont.c src/unix-gcc.mak src/spprint.h src/igstate.h src/unistd_.h src/version.mak src/dwtext.c src/sbwbs.c src/gxdevmem.h src/icharout.h src/gdevstc4.c src/dwtext.h src/sbwbs.h src/szlibd.c src/gdevdfax.c src/gdevdbit.c src/gdevpccm.c ijs/ijs_client_example.c src/gdevpccm.h src/strimpl.h src/gsutil.c src/opextern.h src/gsutil.h src/zimage.c src/gdevcgm.c src/zfimscale.c jbig2dec/jbig2_metadata.c src/gdevtsep.c src/gsfont0c.c doc/Deprecated.htm jbig2dec/jbig2_metadata.h man/de/font2c.1 src/gsht1.c src/gspcolor.c src/gxi12bit.c src/gsht1.h src/iddstack.h src/gspcolor.h src/rinkj/rinkj-config.c src/zfjbig2.c src/std.h src/rinkj/rinkj-config.h src/gdevs3ga.c src/slzwe.c src/scfdtab.c src/gscolor.c src/stdint_.h src/ztoken.c src/gxpaint.c src/seexec.c src/zchar32.c src/icid.h src/gscolor.h src/gdevm56.c src/spsdf.c src/gxpaint.h src/gsfname.c src/spsdf.h src/gsfname.h src/gxalpha.h jbig2dec/jbig2_refinement.c jasper/src/libjasper/base/jas_debug.c src/srlx.h src/gxclipsr.h toolbin/pdf_info.ps src/gdevmac.c src/idisp.c src/jpeg.mak src/gdevmac.h src/idisp.h src/idstack.c src/gdevrinkj.c src/idstack.h src/gdevwdib.c src/gxoprect.c src/gdevsunr.c src/gdevpdtc.c src/gxoprect.h src/gsfcmap1.c Resource/Decoding/StandardEncoding src/gswts.c src/gsstate.c src/gswts.h src/ichar1.h src/gxiparam.h src/gsstate.h src/gdevcljc.c doc/Ps2pdf.htm lib/pdf_base.ps src/iscanbin.c src/gdevmiff.c src/iscanbin.h src/gp_mshdl.c src/zfcid.c src/zfont.c src/unixinst.mak src/iminst.h src/zarray.c src/gxdevcli.h src/fcntl_.h src/gdevpe.c doc/Humor.htm src/zdfilter.c lib/prfont.ps src/write_t2.c src/zdps1.c doc/Commprod.htm src/write_t2.h src/zhsb.c src/gxsync.c src/zupath.c src/dstack.h toolbin/gen_ldf_jb2.py src/gsccolor.h src/gxsync.h src/gdevpdtt.c src/gdevpbm.c src/gdevpdtt.h src/gdevmrun.c src/gsdllwin.h src/gconf.c src/gdevmrun.h src/gconf.h src/sdct.h src/zfbcp.c src/gsipar3x.h src/gzcpath.h src/scfetab.c jbig2dec/jbig2.c jbig2dec/jbig2.h src/gxstate.h src/gdevpcl.c src/gdevcmap.c src/zht2.c src/gxfmap.h src/gdevpdfj.c src/zfarc4.c src/gdevpcl.h src/ichar.h src/gdevcmap.h src/zht2.h src/gdevwprn.c src/gxpdash.c src/ztrap.c src/gxlum.h doc/Drivers.htm src/gdevdevn.c src/gdevpdte.c jbig2dec/configure.ac src/gsgcache.c src/gdevdevn.h src/gsgcache.h src/gsptype1.c src/gxclbits.c src/zfcid0.c src/gsptype1.h src/macos_classic_d_pre.h src/zgstate.c src/zfontenum.c src/ctype_.h src/inouparm.c src/rinkj/rinkj-screen-eb.c src/slzwx.h src/gstype1.c src/gxdhtres.h src/gdevmpla.c src/rinkj/rinkj-screen-eb.h man/pdf2ps.1 lib/gs_fonts.ps doc/Testing.htm src/gstype1.h src/dwmain.rc src/gxcspace.h src/gscicach.c src/gdevmpla.h src/rinkj/evenbetter-rll.c man/wftopfa.1 src/gscicach.h src/watclib.mak src/rinkj/evenbetter-rll.h src/gxfcache.h src/gxclzlib.c src/istack.c src/zfont0.c src/gstparam.h src/istack.h src/gdevevga.c src/gdevhit.c src/gxclimag.c src/gsdfilt.c src/gxfillts.h src/gsdfilt.h src/gxht.c src/gxdcconv.c src/gdevpsdp.c src/gxcht.c src/openvms.mak src/gdevxalt.c src/gdevclj.c src/gxht.h src/gxdcconv.h src/zvmem2.c ijs/ijs_client.c src/gdevpdtv.c ijs/ijs_client.h src/contrib.mak src/rinkj/rinkj-device.c src/gdevpdtv.h src/lwf_jp2.mak src/gsiparm3.h src/gxclpage.c src/gxfont1.h src/rinkj/rinkj-device.h src/icontext.c src/gsdllos2.h src/gxclpage.h src/zstring.c src/icontext.h src/unix-aux.mak src/gzspotan.c src/zfont32.c src/ttfoutl.h src/gxclip2.c src/szlibxx.h src/gdevdrop.c src/gzspotan.h src/gxclip2.h man/dvipdf.1 src/scfd.c src/cfonts.mak src/gxiclass.h src/gdevcgml.c src/gdevcgml.h src/gdevpx.c src/windows_.h src/gdevl256.c doc/DLL.htm src/igcref.c src/zcharx.c src/gxtype1.c src/gxtype1.h src/gdevcp50.c src/idictdef.h src/gsmemret.c src/gxclip.c src/gsmemret.h src/sfilter1.c src/iname.c src/sddparam.c src/gxclip.h src/zmedia2.c src/iname.h src/gs.mak src/gxpcmap.c doc/News.htm src/gp_msdll.c src/gxcid.h src/gdevnfwd.c src/macos-mcp.mak src/ttobjs.c doc/History1.htm src/zcontrol.c src/ttobjs.h src/icclib.mak src/gsfcmap.c src/zfont2.c src/iimage2.h src/gxrplane.h src/gsfcmap.h src/gxp1fill.c src/imemory.h src/gsciemap.c src/dos_.h src/zdscpars.c src/gscdef.c src/gdevwpr2.c src/gxtmap.h src/setjmp_.h src/gsbitcom.c src/zchar.c src/gdevsun.c src/gscrypt1.c doc/Fonts.htm src/gscrypt1.h src/ztrans.c src/dwmainc.c src/gxdht.h src/dvx-head.mak src/zcsindex.c src/zcidtest.c src/gdevrops.c src/gdevpdtx.h src/gdevijs.c src/icolor.h src/stdpn.h src/store.h src/gxfixed.h src/gstypes.h src/gdevjpx.c src/gsserial.c src/string_.h src/gdevcslw.c src/gsjmorec.h src/gsserial.h src/zfdctd.c src/zdps.c src/scanchar.h src/gxpcache.h man/de/pdf2ps.1 src/lib.mak src/gdevdsp.c src/zmatrix.c src/sdctc.c src/gdevdsp.h src/gdevpipe.c src/gspmdrv.rc src/gdevsvga.c src/gdevpdti.c ijs/unistd_.h src/gdevsvga.h src/gdevpdti.h src/gdevepsn.c src/gsparam2.c src/gp_mktmp.c src/stat_.h src/zfsample.c src/zfdecode.c src/gsstruct.h jbig2dec/jbig2_huffman.c src/gximag3x.c src/gsgc.h jbig2dec/jbig2_huffman.h src/gscolor1.c src/gsnamecl.c src/dwtrace.c src/gdevmswn.c src/ierrors.h src/gxfcmap.h src/gdevjpeg.c src/gximag3x.h src/siinterp.c src/gscolor1.h src/gsnamecl.h src/dwtrace.h src/gdevmswn.h src/gdevbbox.c src/siinterp.h src/opdef.h lib/opdfread.ps src/gximask.c src/gdevbbox.h src/iddict.h doc/History2.htm src/gp_stdin.c src/gdevtfax.c src/gdevpjet.c src/gsexit.h src/gendev.c src/gximask.h src/gdevphex.c src/gp.h src/gslparam.h src/ivmspace.h src/gdevtfax.h src/gshtscr.c jbig2dec/jbig2_image_pbm.c src/bench.c src/gsnogc.c ijs/ijs.c src/gdevbmpa.c src/gsnogc.h src/stdio_.h src/tttables.h src/gdevemap.c ijs/ijs.h src/gp_sysv.c jasper/src/libjasper/include/jasper/jas_debug.h src/gsrefct.h src/iastruct.h man/de/dvipdf.1 src/gdevbjc.h src/gdevpsf2.c jbig2dec/jbig2_arith_int.c src/gzht.h doc/Develop.htm src/gxcvalue.h jbig2dec/jbig2_arith_int.h src/sstring.c lib/mkcidfm.ps src/gxpath.c src/scfparam.c src/sstring.h src/gdevupd.c src/iconf.c src/gxpath.h src/interp.c src/zcrd.c src/dwnodll.c src/iconf.h doc/C-style.htm src/gdevm40.c src/dwdll.c src/interp.h man/ps2pdfwr.1 src/dwdll.h src/gsiodisk.c src/sjpegd.c src/gspath2.h src/dvx-tail.mak src/gdevpsim.c src/errors.h src/gp_msprn.c src/gxino12b.c src/gdevmgr.c src/gxacpath.c src/gdevpdfp.c src/gslib.c src/ziodev.c src/gdevmgr.h src/iccinit0.c src/sdcte.c doc/Release.htm src/zfunc0.c src/ifont1.h src/gxccache.c src/gslib.h src/gxmatrix.h src/ifunc.h src/gxfdrop.c src/gp_unifs.c src/gxobj.h src/gxfdrop.h src/gxhintn.c src/gsiorom.c src/isstate.h jbig2dec/jbig2_hufftab.h jbig2dec/jbig2_text.c src/gdevm2.c src/gxhintn.h src/gsiorom.h src/ifilter2.h src/gspath.c src/gdevwddb.c src/gxpcopy.c src/gspath.h src/gscolor3.c src/gdevdjet.c man/gsnd.1 src/gscolor3.h src/gxfapiu.c src/zpath1.c src/rinkj/rinkj-dither.c doc/History3.htm src/gxfapiu.h src/gdevm24.c src/gp_unix.c src/rinkj/rinkj-dither.h src/inamedef.h jbig2dec/config_win32.h src/ilocate.c src/gxdcolor.c src/gdevpm.c src/gscdefs.h src/vmsmath.h src/gscencs.c src/gxdcolor.h src/gzstate.h src/gdevpm.h src/gdevbmpc.c src/gschar0.c Resource/ColorSpace/DefaultRGB src/iht.h src/zdevice.c src/gscie.c src/gscencs.h src/gxi16bit.c src/ifapi.h src/zimage2.c src/gscie.h src/iastate.h src/pipe_.h src/gxbitops.h src/ipacked.h src/gsncdummy.c src/gpsync.h src/gsfunc3.c src/gswin.rc src/gdevperm.c src/gsncdummy.h src/gsccode.h src/gxpath2.c src/gsfunc3.h src/gp_strdl.c src/gxdevbuf.h src/genconf.c src/sa85d.c src/gscsel.h src/openvms.mmk src/sa85d.h src/gp_stdia.c src/zcolor2.c src/gdev3b1.c src/gxttf.h src/ttconf.h src/genht.c src/zgeneric.c man/de/printafm.1 src/gxclrect.c src/gxarith.h src/gsshade.c src/gsshade.h src/msvclib.mak src/gsicc.c src/zcid.c src/dwsetup.cpp src/gdevp2up.c src/dwuninst.rc src/gsicc.h src/gdevpdfr.c src/gdevppla.c src/zmisc1.c src/gdevppla.h src/gsdevmem.c src/wccommon.mak src/gxfcopy.c src/gdevpsft.c src/gxfcopy.h src/gdevtfnx.c src/gsmisc.c src/gxicolor.c src/gdevm4.c src/ldf_jb2.mak src/gxpageq.c src/winint.mak src/gsdparam.c man/ps2pdf.1 doc/Details8.htm doc/Make.htm src/gxpageq.h src/gxdevrop.h src/gsstype.h src/gdevprn.c src/gdevcif.c lib/gs_resst.ps src/gxdevndi.c doc/History4.htm toolbin/tests/check_comments.py src/gdevprn.h src/gxdevndi.h src/iesdata.h src/dxmain.c src/gdevpdfc.c src/iapi.c ijs/ijs_server_example.c src/spngpx.h src/gdevpdfc.h src/gdevherc.c src/iapi.h src/btoken.h src/zcharout.c toolbin/tests/gscheck_fuzzypdf.py src/gdevepsc.c src/gxdevice.h src/gximage2.c src/srld.c src/zht.c src/gxshade4.c src/sjpx_luratech.c src/gxshade4.h src/iinit.c src/watcw32.mak src/gdevstc1.c src/gxbitmap.h src/sjpx_luratech.h src/gxccman.c src/iinit.h src/gsalphac.c src/gxshade.c src/sbtx.h src/zfunc.c src/gsclipsr.c src/gsalphac.h src/gxshade.h src/gsrop.c src/gsclipsr.h src/idict.c src/gxistate.h src/gsrop.h jbig2dec/memcmp.c src/gscoord.c src/idict.h src/gxcolor2.h src/macos_carbon_d_pre.h toolbin/pre.tcl src/gscoord.h src/genarch.c src/gscedata.c doc/Projects.htm src/gxcindex.h src/gscpm.h src/gp_nsync.c src/gscedata.h src/gdevmr2n.c src/gdevdgbr.c src/gdevdsha.c src/zlib.mak src/gdevxcf.c lib/gs_fapi.ps src/gxtext.h src/zchar1.c src/gscdevn.c src/gscdevn.h src/gdevpdft.c src/gdevpsdi.c src/shcgen.c src/gsiparam.h src/zmisc3.c src/zfapi.c src/zfunc4.c src/malloc_.h src/shcgen.h src/gscpixel.c src/gscpixel.h src/gdevplnx.c src/dirent_.h src/gdevplnx.h src/zfzlib.c src/Makefile.in src/gscsepr.c src/iutil2.c doc/History5.htm src/gscsepr.h src/gxwts.c src/gsimage.c src/ipcolor.h src/sjpeg.h src/iutil2.h src/gstext.c src/gxwts.h src/gsimage.h src/msvccmd.mak src/gstext.h src/gdevpdfe.c src/rinkj/rinkj-byte-stream.c src/gsflip.c src/sidscale.c src/rinkj/rinkj-byte-stream.h src/gsflip.h src/sidscale.h src/gdevdljm.c src/zdpnext.c src/geninit.c src/gdevdljm.h src/zusparam.c src/gdevjbig2.c man/pfbtopfa.1 src/gxchrout.c src/gximage4.c src/gxchrout.h src/gxshade6.c src/gxcoord.h jbig2dec/jbig2_page.c src/gdevpdf.c src/macosx.mak src/tttypes.h src/zpacked.c src/gdevstc3.c src/gsparamx.c src/gp_dosfe.c src/iutil.c src/szlibc.c src/gsparamx.h src/gdevpng.c src/iutil.h src/zalg.c src/gzpath.h src/sfxstdio.c src/gxcdevn.h src/sjbig2_luratech.c src/gxropc.h src/gxfcid.h src/gxfont.h src/sjbig2_luratech.h src/gdevccr.c src/mkromfs.c src/gslibctx.c src/gdevdcrd.c src/unix-dll.mak src/gslibctx.h src/zbseq.c src/ziodevsc.c src/gdevdcrd.h man/de/ps2pdf.1 src/gdevl31s.c src/zfrsd.c src/iosdata.h src/gdevdjtc.c src/gdevmacpictop.h src/gxino16b.c src/gdevpcx.c src/gdevpxop.h src/zfileio.c src/slzwd.c src/gdevpdfv.c src/gxpflat.c src/gxifast.c src/dwimg.c src/fapi_ft.c src/zsysvm.c src/gsimpath.c src/dwimg.h src/gdevx.c src/gsmemlok.c lib/gs_cidtt.ps src/gsos2.rc src/gximage.c man/printafm.1 src/gdevx.h src/gsmemlok.h src/ziodevs.c src/unixansi.mak ijs/Makefile.am src/gdevpsfx.c src/gximage.h src/gscspace.c src/gdevmacttf.h src/gdevm8.c src/gdevpnga.c src/gscspace.h src/gsropc.c src/gsxfont.h src/ttfsfnt.h man/pdfopt.1 src/gsjconf.h src/gsfcid.c src/zstack.c src/gsfont.c src/gsropc.h src/gsfont.h lib/gs_ttf.ps src/isave.c doc/History6.htm src/isave.h src/gdevm64.c src/zdict.c jbig2dec/sha1.c src/gxfrac.h src/gx.h src/iccfont.c src/gdevpdfg.c src/png_.h src/gdevps.c src/gxcllzw.c src/gdevpdfg.h src/gxhttile.h doc/API.htm src/gdevpdtb.c src/gsdps1.c src/time_.h src/gdevpdtb.h src/ttfinp.c src/gshsb.c src/pcwin.mak src/vms_x_fix.h src/smtf.c src/ttfinp.h src/x_.h src/gdevtifs.c src/gshsb.h man/pf2afm.1 src/smtf.h src/gdevtifs.h src/gximono.c src/fapiufst.c Resource/Decoding/Latin1 src/szlibe.c src/gxctable.c src/main.h src/gp_vms.c src/gp_iwatc.c src/ugcclib.mak src/gxctable.h src/gdev8bcm.c src/dwsetup.h src/gp_os9.c src/gdevbj10.c src/gxclipm.c src/gdev8bcm.h src/zpaint.c src/stdpre.h src/iplugin.c src/gxclipm.h ijs/ijs_server.c src/gsgdata.c]</p>
</blockquote>

<p><strong><a name="2007-06-05T212832.480500Z"></a>
2007-06-05T21:28:32.480500Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (shadings) : Optimize path manipulations for shading fill (continued 3).

DETAILS :

This patch finaly removes gs_shading_fill_path and its relatives.
Also gx_dc_shading_path_add_box is now private.
This change is algorithmically equivalent.

</pre>
<p>[src/gsptype2.c src/gsshade.c src/gsptype2.h src/gsshade.h src/gscolor3.c]</p>
</blockquote>

<p><strong><a name="2007-06-05T211017.034292Z"></a>
2007-06-05T21:10:17.034292Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (shadings) : Optimize path manipulations for shading fill (continued 2).

DETAILS :

This is the 2nd step for the elimination of gs_shading_fill_path.
It excludes that function from high level devices.

After the last patch, ps2write is only device that calls gs_shading_fill_path
while converting a shading into an image.
This patch replaces that call with a call to gs_shading_do_fill_rectangle.

This patch also fixes the revision 8017 regression
with the change to gdevpdfi.c .

Minor changes :

1. lcvd_fill_rectangle_shifted_from_mdev appears to be same as lcvd_fill_rectangle_shifted.
   Removing the 1st one.

2. path_scale appears almost same as gx_path_scale_exp2_shared.
   Removing the 1st one.

3. In gdevpdfd.c, when the scale isn't dividing by 4,
   the old code chooses a smaller scale by X.
   The new code dies by Y for a better view.
   It may cause minor differences in raster.
   
4. We're not sure why lcvd_get_clipping_box_from_target was used sometimes.
   It looks incorrect. Replaced with lcvd_get_clipping_box_shifted_from_mdev. 

5. gx_cpath_scale_exp2_shared didn't scale list-&gt;xmin, list-&gt;xmax.

6. gx_cpath_copy is defined and not used.
   Saving it from a dead branch, because it may be useful in future.

</pre>
<p>[src/gsptype2.c src/gsshade.c src/gxcpath.c src/gxpath.h src/gdevpdfd.c src/gsshade.h src/gxfill.c src/devs.mak src/gdevpdfi.c]</p>
</blockquote>

<p><strong><a name="2007-06-03T223312.851834Z"></a>
2007-06-03T22:33:12.851834Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (shadings) : Optimize path manipulations for shading fill (continued).

DETAILS :

The last patch breaks 'clippath'. Fixing it now.

</pre>
<p>[src/gxcpath.c]</p>
</blockquote>

<p><strong><a name="2007-05-31T172552.270926Z"></a>
2007-05-31T17:25:52.270926Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (shadings) : Optimize path manipulations for shading fill.

DETAILS :

This partially improves performance for the test case of 
the bug 689189 "PDF fails with /unregistered in --shfill--".

While filling a shading, the old code 
converts the clipping path into a path, then 
converts it to a clipping path for intersecting it
with the filling path and with the shading BBox.
These manipulations are neccessary due to the
interface restrictions for gs_shading_fill_path,
which doesn't pass a clipping path.
It causes (1) a bad performance and (2)
a wrong fill adjustment, because the conversion 
of a path to a clipping path and back to path 
is not identity due to fill adjustment.

The new code is a 1st step for the elimination of gs_shading_fill_path.
This patch excludes this function for raster devices.
Excluding it for higth level devices will be a next step.

The new code moves path manipulation outside the
shading color painting. Now all 3 pathes
(the filling path, the clipping patrh, and the shading BBox)
are processed in gxfill.c . The painting 
is done with gs_shading_do_fill_rectangle,
which does not manipulate with pathes.

The patch modifies gx_image_fill_masked_end
to comply with the new inplementation of
gs_shading_do_fill_rectangle when a mask
is converted into a clipping path. 

Another optimization avoids the generation
of a filling path for 'shfill'.
Accorgong to PLRM, shfill deals with clipping path,
but it was converted into a path due to 
internal Ghostscript constraint for the device interface.
When the device implements fill_path with
the default method gx_default_fill_path,
the conversion to a path is not necessary.

To make use of this fact for optimization, the graphics library
needs to know, whether the output device uses the default
function gx_default_fill_path. This patch introduces a new response
for pattern_manage, which is named 'pattern_manage__shfill_doesnt_need_path'.
The device must respond with 1 if it does not need a path.
The patch provides implementations for raster devices and
for forwarding devices. If some device provides an instandard
fill_path method, the optimization won't work for it
(i.e. it will work as before - will recieve a path for shfill)
unless it provides a proper response to pattern_manage__shfill_doesnt_need_path . 

A minor change to gdevpdfb.c fixes a paranoid compiler warning
about a possible use of unubnitialized data.

</pre>
<p>[src/lib.mak src/gsptype2.c src/gsshade.c src/gxcpath.c src/gdevdflt.c src/gxpath.h src/gdevpdfb.c src/gsptype2.h src/gsshade.h src/gximask.c src/gdevnfwd.c src/gxfill.c src/gxdevcli.h src/gscolor3.c]</p>
</blockquote>

<p><strong><a name="2007-05-30T060543.128239Z"></a>
2007-05-30T06:05:43.128239Z Ray Johnston</strong></p>
<blockquote>
<pre>
Change built-in compression threshold for memory based clist to
improve performance.

DETAILS:

The (example) compression threshold used with BAND_LIST_STORAGE=memory
is much to small to represent current embedded devices (where we expect
to not have a disk). On one customer's (#951) performance test files,
this change shows an overall 9.2% performance increase, ranging as high
as 20% on one file. For this test suite, even 22M is enough to avoid
compression.

The intent is that the compression threshold be a dynamic value that
uses current "real time" memory available in the printer rather than
some arbitrary fixed value. If the clist writer logic waits for all
potential renderer/reader tasks to stop and free their clist RAM,
then the need to compress becomes even less likely.

</pre>
<p>[src/gxclmem.c]</p>
</blockquote>

<p><strong><a name="2007-05-28T184729.004635Z"></a>
2007-05-28T18:47:29.004635Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for Segv with psdcmyk device when a job specifies DeviceGray.
Test file 477-04.ps, Bug #689179.

DETAILS:

Thanks for this patch from "fatty" at po'twenty-nine'.lcv.ne.jp (email
mangled to avoid this being harvested for spam.

</pre>
<p>[src/gdevpsd.c]</p>
</blockquote>

<p><strong><a name="2007-05-28T165807.064568Z"></a>
2007-05-28T16:58:07.064568Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix indeterministic behavior in fuzzy raster match that can cause premature
exit and miss all the differences. Encountered on GNU+Linux, i686, GCC 4.1.2.
</pre>
<p>[toolbin/tests/fuzzy.c]</p>
</blockquote>

<p><strong><a name="2007-05-28T053514.685193Z"></a>
2007-05-28T05:35:14.685193Z Ray Johnston</strong></p>
<blockquote>
<pre>
Primarily fix for wtsimdi problem with wts dithering phase shift at
band boundaries (add band_offset_x, band_offset_y), adding band_offset_x
and band_offset_y to the device structure and corresponding initializer
changes. Also clean up gdevwts.c MSVC warnings, and add a fast check to
gdevbit.c for /dev/null (mirroring a much older change for Windows
"nul:" device) OutputFile that aids in benchmarking. Fixes bug #689245
for customer #951.

DETAILS:

Running with the wtsimdi device at default banding now matches the
results with a single band (the wtsimdi device sets BandingAlways,
so this can only be verified if the -dBandHeight= and -dBufferSpace=
options are set large enough for a full page.

</pre>
<p>[src/gdevwts.c src/gxdevice.h src/gdevbit.c src/gxclread.c src/gxdevcli.h]</p>
</blockquote>

<p><strong><a name="2007-05-28T051325.622030Z"></a>
2007-05-28T05:13:25.622030Z Ray Johnston</strong></p>
<blockquote>
<pre>
Change names of some functions so that NOPRIVATE still works.
</pre>
<p>[src/gdevdevn.c]</p>
</blockquote>

<p><strong><a name="2007-05-27T191504.334298Z"></a>
2007-05-27T19:15:04.334298Z Ray Johnston</strong></p>
<blockquote>
<pre>
Use standard __WIN32__ predefined macro along with NT to identify
Microsoft compiler based builds.
</pre>
<p>[imdi/arch.h]</p>
</blockquote>

<p><strong><a name="2007-05-27T191152.872937Z"></a>
2007-05-27T19:11:52.872937Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add missing default definition of IMDI source. Add conditional
to watcw32.mak to allow build command line override.
</pre>
<p>[src/openvms.mak src/watcw32.mak]</p>
</blockquote>

<p><strong><a name="2007-05-27T190352.349026Z"></a>
2007-05-27T19:03:52.349026Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix missing dependencies for the witsimdi.dev
</pre>
<p>[src/devs.mak]</p>
</blockquote>

<p><strong><a name="2007-05-27T185135.172106Z"></a>
2007-05-27T18:51:35.172106Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (shadings) : Account inner poles for computing a tensor shading flattening.

DETAILS : 

While computing the neccessary decomposition level by
the parameter u, the old code ony accounted the curvity
of the patch boundary. However tensor patches may have 
a very curved interior with a slightly curved boundary.
This patch improves the raster in such cases.

</pre>
<p>[src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2007-05-27T175943.657554Z"></a>
2007-05-27T17:59:43.657554Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : More tolerance for bogus tintTransform.

DETAILS : 

Bug 688584 provides a test case, when tintTransform
replaces an extra value on operand stack. 
It allows to know whether tintTransform is called.
We believe it is an incorrect Postscript,
but the file is created QuarkXPress: pictwpstops filter 1.0,
from customer 582, so we need to be tolerant.

</pre>
<p>[lib/gs_devn.ps]</p>
</blockquote>

<p><strong><a name="2007-05-27T163919.788230Z"></a>
2007-05-27T16:39:19.788230Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (shadings) : Optimize filling a radial shading extension.

DETAILS : 

This partially improves performance for the test case of 
the bug 689189 "PDF fails with /unregistered in --shfill--".

The test case includes multiple radial shadings, 
which paint an extansion only.
This patch optimizes the case when the paint area is
strongly inside the radial shading extension.
In this case the shading rasterization is replaced with
painting a pure color.

1. The new function R_fill_rect_with_const_color is the main worker.
2. The old patch_color_to_device_color function is renamed into 
   patch_color_to_device_color_inline.
3. patch_color_to_device_color is made public for R_fill_rect_with_const_color.

</pre>
<p>[src/gxshade4.h src/gxshade1.c src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2007-05-26T131333.983826Z"></a>
2007-05-26T13:13:33.983826Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Dont't enumerate /Threads attribute when it has null value.
Bug 689250
</pre>
<p>[lib/pdfopt.ps]</p>
</blockquote>

<p><strong><a name="2007-05-24T220557.168544Z"></a>
2007-05-24T22:05:57.168544Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (shadings) : A bug in tensor patch size formula caused extra or missewd subdivisions.

DETAILS : 

See the formula for L.
Also inserted some debug drawing, which are disabled.

As a secondary effect, this patch may close problems
related to wedge vertex buffer overflow.

</pre>
<p>[src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2007-05-24T184603.324950Z"></a>
2007-05-24T18:46:03.324950Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Remove a redunDan Cobyt definition of gs_error_interrupt.

DETAILS : 

Also fixed MSVC warning in gsncdummy.c .

</pre>
<p>[src/int.mak src/interp.c src/ierrors.h]</p>
</blockquote>

<p><strong><a name="2007-05-24T180657.635194Z"></a>
2007-05-24T18:06:57.635194Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (shadings) : Reuse shadings while a PDF interpretation.

DETAILS : 

Bug 689211 "PDF interpreter creates redunDan Cobyt shadings".

This partially improves performance for the test case of 
the bug 689189 "PDF fails with /unregistered in --shfill--".

The test case defines 79 shadings. While interpreting it 
the old code calls zbuildshading2 9600+ times.

1. Improved resolveshading with reusing old shadings (pdf_draw.ps).
2. Improved 'sh' with reusing old shading dictionaries (pdf_draw.ps).
3. Renamed gx_currentciecaches with gx_unshare_cie_caches,
   because the old name does not comply to the function body.
4. Defined a new function gx_currentciecaches.
5. The macro CIE_CHECK_RENDERING is replaced with a new function 
   gx_cie_check_rendering_inline. The new code also checks 
   the consistency of cie_joint_caches with the color space
   by checking the id, and requests refilling the cache if necessary.
   Note it can cause the PS interpreter callout with EncodeLMN, etc.
6. IMPORTANT: The new field gs_shading_params_t::cie_joint_caches
   saves the pointer to gs_state::cie_joint_caches.
   It is used in .shfill - see zshade.c .
   Debugged with Bug688631.pdf .
7. NOTE: *gs_shading_params_t::cie_joint_caches may be left unreleased
   when the shading releases. The garbager will release it.
   This happens with PS interpreter only.
8. NOTE: We do not make cie_joint_caches be a property of color space,
   rather it would look natural. The reason is that this large structure 
   is needed to save with shadings only. Saving it for any color space
   would spend too big RAM.
9. NOTE: Due to historic reason gs_setcolorspace leaves cie_joint_caches
   unchanged. It may cause problems when gx_color_space_needs_cie_caches
   is true. Postscript interpreter has a special workaround for it in
   gs/lib/gs_cspace.ps . Other interpreters may need an additional support
   when they use CIE spaces directly or indirectly. 
   Likely this feature is not properly documented.
10. NOTE: The change to pdf_draw.ps cases an additional RAM expence for
   PDF interpretation. It is caused by saving all built shadings
   until the document finishes. It includes the expence for extra copies of
   cie_joint_caches. The new procedure .free_page_resources frees
   shadings from page Resources after page finishes.
   However this patch does not implement that for 
   other local resources, such as form Resources, etc.
   It may need a further improvement.

</pre>
<p>[lib/pdf_main.ps src/lib.mak src/gsshade.c src/zshade.c src/gscie.h src/int.mak src/zcrd.c src/gsshade.h src/gxcie.h lib/pdf_draw.ps src/gsciemap.c src/gsicc.c src/gscie.c src/gscolor3.c]</p>
</blockquote>

<p><strong><a name="2007-05-23T233345.298718Z"></a>
2007-05-23T23:33:45.298718Z Ray Johnston</strong></p>
<blockquote>
<pre>
Change the .ppm output from the wtsimdi device to write a P6 with
a max value of 255 (instead of 1). Some viewers assume a max value
of 255, so the previous output looked all black. A max value of 255
works with all known viewers.
</pre>
<p>[src/gdevwts.c]</p>
</blockquote>

<p><strong><a name="2007-05-23T202742.841035Z"></a>
2007-05-23T20:27:42.841035Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add support for /UserUnit. Also fix some related bugs that stayed
in the way while testing it. Patch from SaGS.
Bug 688124 from customet 870, bug 688359.

</pre>
<p>[lib/pdf_main.ps doc/Use.htm lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2007-05-23T185155.128091Z"></a>
2007-05-23T18:51:55.128091Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix handling of uncompressed contect streams with incorrect Length parameter
or missing endstream operator. Use operator obj as one more way to detect
the end of the stream. Bug 689239.

</pre>
<p>[lib/pdf_main.ps lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2007-05-22T205015.623551Z"></a>
2007-05-22T20:50:15.623551Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Adding missing header line.

DETAILS:

gsncdummy.c needs to include ierrors.h in order to use errors defined therein.

</pre>
<p>[src/gsncdummy.c]</p>
</blockquote>

<p><strong><a name="2007-05-21T220807.611194Z"></a>
2007-05-21T22:08:07.611194Z Ralph Giles</strong></p>
<blockquote>
<pre>
Define IMDISRCDIR in the top level makefiles and pass this through to
the compile lines in devs.mak. This the the correct fix for the issue
addressed in revisions 7970 and 7971.
</pre>
<p>[src/bcwin32.mak src/ugcclib.mak src/gs.mak src/macosx.mak src/Makefile.in src/dvx-gcc.mak src/msvc32.mak src/unix-gcc.mak src/unixansi.mak src/macos-mcp.mak src/msvclib.mak src/devs.mak src/os2.mak src/watclib.mak]</p>
</blockquote>

<p><strong><a name="2007-05-21T151152.121008Z"></a>
2007-05-21T15:11:52.121008Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix uninitialized cxs.present as detected By Valgring on Bug687846.ps test file
and nullpage device.

</pre>
<p>[src/zchar1.c]</p>
</blockquote>

<p><strong><a name="2007-05-21T144853.469788Z"></a>
2007-05-21T14:48:53.469788Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Corrected imdi path
</pre>
<p>[src/devs.mak]</p>
</blockquote>

<p><strong><a name="2007-05-21T143822.247440Z"></a>
2007-05-21T14:38:22.247440Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Made the definitions of IMDISRC and IMDISRCDIR platform-independent and also
working when the source tree is in a directory not named "gs".
</pre>
<p>[src/devs.mak]</p>
</blockquote>

<p><strong><a name="2007-05-21T064028.742110Z"></a>
2007-05-21T06:40:28.742110Z Henry Stiles</strong></p>
<blockquote>
<pre>
Back out the changes associated with 7715 and 7773.  This fix is
probably wrong, it only masks an underlying problem by disabling high
level images and it slows down many jobs.  I believe the problem was
misunderstood from the outset but I don't clearly understand the svn
change log, it reads:

   Fix for banding of some images not matching non-banding output.
   Added check for an invariant that the translation matches in the 
   two matrixes used in rendering.  In this case the non-high level image
   path is taken.  A better solution would be to a single matrix, as this will
   increase the display list size for some files.

It is not clear what "single matrix" means.  There is one ctm
associated with the image and one associated with the graphics state,
both must be used by either the high level image code or the default
image machinery.  The change checked that graphics (imager) state ctm
translation components matched the translation components that map
image space to device space.

</pre>
<p>[src/gxclimag.c]</p>
</blockquote>

<p><strong><a name="2007-05-19T170804.593395Z"></a>
2007-05-19T17:08:04.593395Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Remove unused and incorrect definitions of stdin, stdout, stderr buffer sizes.

</pre>
<p>[src/iminst.h]</p>
</blockquote>

<p><strong><a name="2007-05-16T210435.033996Z"></a>
2007-05-16T21:04:35.033996Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (shadings) : Shorten a radial shading when it is larger than paint area.

DETAILS : 

This partially improves performance for the test case of 
the bug 689189 "PDF fails with /unregistered in --shfill--".

The test case includes multiple radial shadings, 
which are 100+ times larger than the path bbox.
This patch replaces such shadings with a smaller shading,
which paints the bbox with same color
(a minor color difference is possible due to rounding errors).

See comment in code.

</pre>
<p>[src/gxshade1.c]</p>
</blockquote>

<p><strong><a name="2007-05-16T025612.508768Z"></a>
2007-05-16T02:56:12.508768Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Don't issue a warning for PDF TrueType fonts without /Encoding because
it is optional even for non-symbolic fonts. Bug 689205.

</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2007-05-15T131202.777397Z"></a>
2007-05-15T13:12:02.777397Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use operator oforce instead of exec to evaluate indirect references to
/OutputIntents members for consistency with the existing code. Bug 689233.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2007-05-14T185103.604183Z"></a>
2007-05-14T18:51:03.604183Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct keyword substitution.
</pre>
<p>[src/gdevwts.c]</p>
</blockquote>

<p><strong><a name="2007-05-14T163623.969410Z"></a>
2007-05-14T16:36:23.969410Z Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : Failed with an indirect OutputIntents element.

DETAILS : 

Debugged with running debug build of ppmraw with the test file of Bug 689189.
The test case includes this :

	/OutputIntents[1135 0 R]

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2007-05-14T152229.642029Z"></a>
2007-05-14T15:22:29.642029Z Ralph Giles</strong></p>
<blockquote>
<pre>
Revert the gs-esp merge down, as there are still some build issues.
</pre>
<p>[contrib/gdevmd2k.c contrib/gdevxes.c contrib/gdevgdi.c src/configure.ac contrib/lips4 contrib/eplaser contrib/gdevhl12.c src/gdevlj56.c src/gdevdljm.c src/lib.mak contrib/gdevcd8.c src/gdevpx.c src/gdevl256.c contrib/contrib.mak src/gdevvglb.c src/gdevdljm.h contrib/gdevcd8.h cups src/unix-gcc.mak contrib/gdevdj9.c src/gdevcdj.c src/gdevpxut.c contrib/chp2200 contrib/gdevlx50.c contrib/gdevlx32.c contrib/gdevop4w.c src/gdevpxut.h lib/gs_init.ps src/gdevlbp8.c contrib/gdevbjc_.c contrib/opvp contrib/japanese contrib/gdevbjca.c src/gdevxalt.c contrib/lxm3200-tweaked contrib/gdevbjc_.h contrib/gomni.c src/contrib.mak src/devs.mak lib/gs_setpd.ps contrib/pcl3 contrib/gdevlx7.c contrib/gdevln03.c src/gdevdjet.c src/gconf.c contrib/defs.h src/gs.mak contrib/uniprint src/Makefile.in src/unix-aux.mak contrib/md2k_md5k src/unixinst.mak contrib/epson740 src/gp_unix.c]</p>
</blockquote>

<p><strong><a name="2007-05-14T093452.443458Z"></a>
2007-05-14T09:34:52.443458Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Merged in extra functionality of ESP Ghostscript (from branch "gs-esp-gpl-merger")
</pre>
<p>[contrib/gdevmd2k.c contrib/gdevxes.c contrib/gdevgdi.c src/configure.ac contrib/lips4 contrib/eplaser contrib/gdevhl12.c src/gdevlj56.c src/gdevdljm.c src/lib.mak contrib/gdevcd8.c src/gdevpx.c src/gdevl256.c contrib/contrib.mak src/gdevvglb.c src/gdevdljm.h contrib/gdevcd8.h cups src/unix-gcc.mak contrib/gdevdj9.c src/gdevcdj.c src/gdevpxut.c contrib/chp2200 contrib/gdevlx50.c contrib/gdevlx32.c contrib/gdevop4w.c src/gdevpxut.h lib/gs_init.ps src/gdevlbp8.c contrib/gdevbjc_.c contrib/opvp contrib/japanese contrib/gdevbjca.c src/gdevxalt.c contrib/lxm3200-tweaked contrib/gdevbjc_.h contrib/gomni.c src/contrib.mak src/devs.mak lib/gs_setpd.ps contrib/pcl3 contrib/gdevlx7.c contrib/gdevln03.c src/gdevdjet.c src/gconf.c contrib/defs.h src/gs.mak contrib/uniprint src/Makefile.in src/unix-aux.mak contrib/md2k_md5k src/unixinst.mak contrib/epson740 src/gp_unix.c]</p>
</blockquote>

<p><strong><a name="2007-05-12T182557.733948Z"></a>
2007-05-12T18:25:57.733948Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Avoid a Valgrind warning about uninitialized memory and fix a potential
memory access violation where look-up of the last value of the interpolation
table caused access past the end of the table.

</pre>
<p>[src/gscie.h]</p>
</blockquote>

<p><strong><a name="2007-05-12T170918.524416Z"></a>
2007-05-12T17:09:18.524416Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Avoid a Valgrind warning and fix an error in debugging statistics collection,
where 0-th element of the table can be used before being assigned a value.

</pre>
<p>[src/gdevm24.c]</p>
</blockquote>

<p><strong><a name="2007-05-12T154644.945538Z"></a>
2007-05-12T15:46:44.945538Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Avoid a Valgrind warning about overlapping argumemts of memcpy().
Don't assign a structure to itself.

</pre>
<p>[src/gxhintn.c]</p>
</blockquote>

<p><strong><a name="2007-05-12T145502.729921Z"></a>
2007-05-12T14:55:02.729921Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fully initialize stream_jpxd_state structure to avoid Valgrind warnings and
bogus results when the state is printed on error. Bug 688877.

</pre>
<p>[toolbin/vg_bugs.supp src/sjpx.c]</p>
</blockquote>

<p><strong><a name="2007-05-12T100530.414975Z"></a>
2007-05-12T10:05:30.414975Z Russell Lang</strong></p>
<blockquote>
<pre>
Recognise another variant of nmake when building for Windows x64 with MSVC 8
Restore documentation about building for Windows 64-bit,
erroneously removed by an earlier commit.
</pre>
<p>[doc/Make.htm src/msvc32.mak]</p>
</blockquote>

<p><strong><a name="2007-05-11T222909.072983Z"></a>
2007-05-11T22:29:09.072983Z Ralph Giles</strong></p>
<blockquote>
<pre>
Bump the version number and date after the 8.57 release. We're skipping
to 8.60 for the next release because of some reorganization to the 
source tree and the merge of the ESP Ghostscript patch set, both 
scheduled for the next release.
</pre>
<p>[doc/News.htm lib/gs_init.ps src/gscdef.c src/version.mak]</p>
</blockquote>

<p><strong><a name="2007-05-11T185129.956384Z"></a>
2007-05-11T18:51:29.956384Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update release notes and changelog.
</pre>
<p>[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]</p>
</blockquote>

<hr>


<h2><a name="Version8.57"></a>Version 8.57 (2007-05-11)</h2>

<p>This is a stable release in the 8.5x series of Ghostscript.
In addition to the usual bug fixes, there are specific performance 
and quality improvements in the areas of patterns, shading and
image filtering.

<p>Also new in this release is an implementation of the Well Tempered 
Screening algorithm in an output device, using Graeme Gill's IMDI 
library for efficient color mapping.

<p> The following <a href="http://bugs.ghostscript.com/">bugs</a> were
open at the time of release: <blockquote>
226943,
430175,
465936,
493348,
530011,
535932,
578865,
592160,
610478,
614298,
626295,
686747,
686853,
686865,
687011,
687039,
687084,
687095,
687108,
687146,
687193,
687196,
687257,
687271,
687280,
687295,
687297,
687303,
687327,
687342,
687345,
687346,
687375,
687397,
687414,
687445,
687475,
687484,
687492,
687514,
687520,
687531,
687536,
687559,
687561,
687593,
687595,
687608,
687630,
687650,
687666,
687674,
687677,
687680,
687695,
687697,
687702,
687715,
687721,
687728,
687729,
687731,
687775,
687780,
687782,
687793,
687796,
687805,
687814,
687844,
687850,
687887,
687903,
687904,
687907,
687915,
687931,
687950,
687957,
687960,
687970,
687974,
687978,
687981,
687983,
687988,
688006,
688007,
688020,
688022,
688024,
688026,
688032,
688035,
688036,
688042,
688054,
688058,
688061,
688064,
688066,
688075,
688081,
688095,
688124,
688129,
688130,
688134,
688151,
688152,
688159,
688166,
688184,
688187,
688200,
688203,
688204,
688207,
688210,
688215,
688227,
688239,
688243,
688267,
688269,
688280,
688282,
688283,
688288,
688295,
688311,
688312,
688317,
688318,
688320,
688323,
688332,
688333,
688337,
688339,
688342,
688358,
688359,
688360,
688361,
688363,
688372,
688375,
688378,
688386,
688387,
688389,
688395,
688400,
688410,
688413,
688427,
688428,
688429,
688434,
688436,
688437,
688440,
688446,
688448,
688468,
688473,
688474,
688475,
688477,
688479,
688483,
688490,
688493,
688495,
688500,
688515,
688517,
688518,
688526,
688528,
688532,
688533,
688539,
688540,
688542,
688557,
688565,
688573,
688580,
688581,
688584,
688588,
688598,
688601,
688604,
688605,
688610,
688616,
688617,
688619,
688621,
688626,
688627,
688633,
688634,
688636,
688637,
688638,
688643,
688646,
688647,
688651,
688653,
688655,
688671,
688673,
688674,
688683,
688696,
688697,
688699,
688708,
688709,
688710,
688711,
688712,
688714,
688717,
688728,
688730,
688731,
688734,
688736,
688738,
688739,
688757,
688762,
688770,
688774,
688777,
688778,
688783,
688796,
688797,
688806,
688807,
688808,
688811,
688813,
688815,
688818,
688829,
688830,
688834,
688843,
688845,
688846,
688870,
688871,
688872,
688876,
688877,
688878,
688899,
688903,
688904,
688907,
688908,
688909,
688914,
688915,
688916,
688917,
688918,
688919,
688923,
688926,
688928,
688933,
688934,
688940,
688942,
688943,
688945,
688949,
688952,
688958,
688965,
688969,
688970,
688976,
688977,
688978,
688979,
688981,
688983,
688986,
688990,
688992,
688994,
688999,
689002,
689003,
689011,
689013,
689014,
689022,
689025,
689028,
689031,
689032,
689036,
689040,
689044,
689046,
689048,
689050,
689053,
689055,
689056,
689057,
689058,
689060,
689065,
689068,
689070,
689076,
689077,
689078,
689080,
689081,
689085,
689090,
689092,
689093,
689094,
689098,
689101,
689103,
689104,
689106,
689107,
689111,
689114,
689115,
689116,
689117,
689123,
689127,
689128,
689129,
689130,
689132,
689133,
689136,
689137,
689138,
689145,
689146,
689147,
689148,
689150,
689153,
689154,
689155,
689159,
689161,
689164,
689167,
689169,
689170,
689172,
689174,
689175,
689179,
689181,
689182,
689184,
689186,
689188,
689189,
689195,
689198,
689199,
689205,
689206,
689209,
689210,
689211,
689212,
689215,
689216,
689221,
689222,
689223,
689224,
689225,
689230.
</blockquote>

<h3><a name="8.57_Incompatible_changes"></a>Incompatible changes</h3>

<p>
There are no known incompatible changes at this point.

<h3><a name="8.57_changelog"></a>Changelog</h3>

<p><strong><a name="2007-08-01T212057.253476Z"></a>
2007-08-01T21:20:57.253476Z ray</strong></p>
<blockquote>
<pre>
Fix problem seen with stcolor device where the get_color_mapping_procs
device proc was NULL, causing SEGV. Bug #689371.

DETAILS:

The fix was local to gdevstc.c. The other modules were changed to
add protection in case other devices (such as all of the new devices
in contrib) don't manage to change the get_color_mapping_procs from
the usual default of NULL in the device structure. Rather than
dprintf or error messages that may be supressed with #if DEBUG.
I elected to use eprintf.

Note that the get_color_mapping_procs is usually set up by gdevdflt
gx_device_fill_in_procs, but there are several cases where we don't
know what to do, so we set the gx_error_get_color_mapping_procs.

The detection in gs_fillpage will usually result in a single error
message then we return gs_error_Fatal (-100).

</pre>
<p>[src/gdevdflt.c src/gdevstc.c src/gxcmap.c src/gspaint.c]</p>
</blockquote>

<p><strong><a name="2007-08-01T191812.034589Z"></a>
2007-08-01T19:18:12.034589Z giles</strong></p>
<blockquote>
<pre>
Update release date and product name for final release.
</pre>
<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm src/gscdef.c doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Ps2ps2.htm doc/Fonts.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp doc/Htmstyle.htm man/font2c.1 man/gsnd.1 man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Testing.htm doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]</p>
</blockquote>

<p><strong><a name="2007-08-01T171950.181574Z"></a>
2007-08-01T17:19:50.181574Z ray</strong></p>
<blockquote>
<pre>
Fix for gv hang, where an application sends (less than 1023 bytes)
PostScript and expects a response. AppleTalk PAP and some other
interactive viewer front ends may run into this. Bug #689237.

DETAILS:

The autosense is still sort of fragile in that we only process
PostScript immediately without waiting for the .peekstring of
1023 bytes to complete if it begins with "%!" or "%%". The
check for "%%" is needed for gv, conventionally "%!" is more
widely used. Note this really only affects applications using
gs as a process getting data from stdin and expecting immediate
action (response or other processing).

Also note that the %! or %% is only looked for as the first
two characters so that the presence of this in garbage before
an actual PDF won't cause confusion.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2007-08-01T041013.989117Z"></a>
2007-08-01T04:10:13.989117Z alexcher</strong></p>
<blockquote>
<pre>
Fix a misleading typo in an error message: s/UseCUEColor/UseCIEColor/
</pre>
<p>[src/gdevpdfp.c]</p>
</blockquote>

<p><strong><a name="2007-08-01T040106.081994Z"></a>
2007-08-01T04:01:06.081994Z alexcher</strong></p>
<blockquote>
<pre>
Remove inappropriate PNG_CONST qualifier from a few libpng arrays, where it
adds 2nd const qualifier, which is rejected by MSVC 6. Bug 689383.
</pre>
<p>[libpng/pngtrans.c libpng/pngerror.c]</p>
</blockquote>

<p><strong><a name="2007-07-31T141945.536400Z"></a>
2007-07-31T14:19:45.536400Z alexcher</strong></p>
<blockquote>
<pre>
Use a correct name for the absolute colorimetric rendering intent. Change the
encoding of the rendering intents in the graphic state to use ICC numbers
from Table 18 (section 6.1.11) instead of the PDF order to reduce re-coding
and confusion. Bug 689377.

</pre>
<p>[src/gxistate.h lib/pdf_ops.ps src/gsstate.c src/zcolor3.c]</p>
</blockquote>

<p><strong><a name="2007-07-31T033113.074828Z"></a>
2007-07-31T03:31:13.074828Z giles</strong></p>
<blockquote>
<pre>
Update changelogs for the release candidate.
</pre>
<p>[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]</p>
</blockquote>

<p><strong><a name="2007-07-30T201356.963379Z"></a>
2007-07-30T20:13:56.963379Z giles</strong></p>
<blockquote>
<pre>
Update the libpng version in the top level makefiles to match the new 
1.2.18 source.
</pre>
<p>[src/bcwin32.mak src/openvms.mak src/ugcclib.mak src/macosx.mak src/watcw32.mak src/dvx-gcc.mak src/msvc32.mak src/unix-gcc.mak src/unixansi.mak src/macos-mcp.mak src/msvclib.mak src/all-arch.mak src/os2.mak src/watclib.mak]</p>
</blockquote>

<p><strong><a name="2007-05-11T170615.247707Z"></a>
2007-05-11T17:06:15.247707Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the product name for release.
</pre>
<p>[src/gscdef.c]</p>
</blockquote>

<p><strong><a name="2007-05-11T170351.074953Z"></a>
2007-05-11T17:03:51.074953Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update release date.
</pre>
<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm doc/Maintain.htm man/ps2epsi.1 doc/Install.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Ps2ps2.htm doc/Fonts.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp doc/Htmstyle.htm man/font2c.1 man/gsnd.1 man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Testing.htm doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]</p>
</blockquote>

<p><strong><a name="2007-05-11T170229.404037Z"></a>
2007-05-11T17:02:29.404037Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the libpng version listed in the top-level makefiles.
</pre>
<p>[src/bcwin32.mak src/openvms.mak src/ugcclib.mak src/macosx.mak src/watcw32.mak src/dvx-gcc.mak src/msvc32.mak src/unix-gcc.mak src/unixansi.mak src/macos-mcp.mak src/msvclib.mak src/all-arch.mak src/os2.mak src/version.mak src/watclib.mak]</p>
</blockquote>

<p><strong><a name="2007-05-11T165333.148016Z"></a>
2007-05-11T16:53:33.148016Z Ralph Giles</strong></p>
<blockquote>
<pre>
Install the libpng 1.2.16 source release.
</pre>
<p>[libpng]</p>
</blockquote>

<p><strong><a name="2007-05-11T164803.952583Z"></a>
2007-05-11T16:48:03.952583Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move the included libpng out of the way.
</pre>
<p>[libpng]</p>
</blockquote>

<p><strong><a name="2007-05-11T153341.202626Z"></a>
2007-05-11T15:33:41.202626Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct the keyword substitution property key.
</pre>
<p>[toolbin/pscet_status.pl]</p>
</blockquote>

<p><strong><a name="2007-05-11T133333.031639Z"></a>
2007-05-11T13:33:33.031639Z Ralph Giles</strong></p>
<blockquote>
<pre>
Try again to fix the Id keyword line.
</pre>
<p>[toolbin/pscet_status.pl]</p>
</blockquote>

<p><strong><a name="2007-05-11T093941.369263Z"></a>
2007-05-11T09:39:41.369263Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Removing a dead code from radial shadings.

DETAILS : 

It's a rudiment from an antique annula-based radial shading algorithm.
R_fill_state_t was filled and never used.
This change is algorithmically equivalent.

</pre>
<p>[src/gxshade1.c]</p>
</blockquote>

<p><strong><a name="2007-05-09T215825.788526Z"></a>
2007-05-09T21:58:25.788526Z Ralph Giles</strong></p>
<blockquote>
<pre>
Covert gdevwts.c to native line endings and turn on keywork 
substitution.

Also convert a C++-style comment. It looks like this line
can actually be removed.
</pre>
<p>[src/gdevwts.c]</p>
</blockquote>

<p><strong><a name="2007-05-09T215157.598496Z"></a>
2007-05-09T21:51:57.598496Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add Id lines and associated properties to some recent script additions.
</pre>
<p>[toolbin/ocheck.py toolbin/pscet_status.pl]</p>
</blockquote>

<p><strong><a name="2007-05-09T214700.539315Z"></a>
2007-05-09T21:47:00.539315Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add recent new files to the documenation index.
</pre>
<p>[doc/Develop.htm src/gscicach.c src/gscicach.h]</p>
</blockquote>

<p><strong><a name="2007-05-09T195501.401845Z"></a>
2007-05-09T19:55:01.401845Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make AcroForm rendering a non-default option because it is not yet 
fully implemented and causes raster differences. Bug 689197.

</pre>
<p>[lib/pdf_main.ps doc/Use.htm]</p>
</blockquote>

<p><strong><a name="2007-05-09T184556.177217Z"></a>
2007-05-09T18:45:56.177217Z Ralph Giles</strong></p>
<blockquote>
<pre>
Point to bugzilla instead of the old bug-report email address in the 
help text. Also remove the unused constant defining the address.
</pre>
<p>[src/imainarg.c]</p>
</blockquote>

<p><strong><a name="2007-05-09T154554.143921Z"></a>
2007-05-09T15:45:54.143921Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : The decomposition limit must depend on resolution.

DETAILS : 

This partially improves performance for the test case of 
the bug 689189 "PDF fails with /unregistered in --shfill--".

The old code limits the decomposition of a shading with 1 pixel.
It gives a good precision for low resolution devices,
such as display with 72dpi. However for high resolution devices the
decomposition limit may be bigger, because tinny parts are not visible.
Now we make it be dependent on the device resolution.
It speeds up the high resolution rendering with quickly varying colors.
The worker formula is :

	decomposition_limit = float2fixed(HWResolution / 72)

With 300 dpi the file "self-intersect2.ps" renders a few worse 
near the self-intersection. It may be visible when viewing the 
ppmraw output with a monitor. We think it's a reasonable tradeof
for the performance. Actually the monitor performs 
a significant zoom when viewing "actual pixels",
because the monitor's resolution is much smaller.
The quality degradation shouldn't be visible with a 300 dpi printer.

</pre>
<p>[src/gxshade4.h src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2007-05-09T101229.054433Z"></a>
2007-05-09T10:12:29.054433Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Protect expression "&#36;Id: ... &#36;" against being replaced by SubVersion (bug #689093).
</pre>
<p>[doc/gsdoc.el]</p>
</blockquote>

<p><strong><a name="2007-05-09T063744.288003Z"></a>
2007-05-09T06:37:44.288003Z Marcos H. Woehrmann</strong></p>
<blockquote>
<pre>
Added entries to alias Arial to ArialMT and TimesNewRoman to TimesNewRomanPSMT.  This is useful when running on 
windows.
</pre>
<p>[lib/Fontmap.GS]</p>
</blockquote>

<p><strong><a name="2007-05-09T032139.704394Z"></a>
2007-05-09T03:21:39.704394Z Ralph Giles</strong></p>
<blockquote>
<pre>
Temporarily revert the KRGB support patch for the IJS device. There
were some build problems, and also there's a known segfault in some
situations. This will be worked on after the 8.57 release.
</pre>
<p>[src/gdevijs.c]</p>
</blockquote>

<p><strong><a name="2007-05-08T194748.994751Z"></a>
2007-05-08T19:47:48.994751Z Ralph Giles</strong></p>
<blockquote>
<pre>
Implement KRGB raster support in the IJS device. Patch from David 
Suffield.

Details:

This patch implements a separate black plane and does simple text and 
line art detection based on the drawing source. This results in cleaner 
output for IJS drivers which support it.
</pre>
<p>[src/gdevijs.c]</p>
</blockquote>

<p><strong><a name="2007-05-08T182647.239521Z"></a>
2007-05-08T18:26:47.239521Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Makes ijs/ working with automake 1.10

DETAILS:

This is a pure bug fix, so lets get this into 8.57.

</pre>
<p>[ijs/autogen.sh]</p>
</blockquote>

<p><strong><a name="2007-05-08T182354.589216Z"></a>
2007-05-08T18:23:54.589216Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Fixed file properties
</pre>
<p>[src/version.mak]</p>
</blockquote>

<p><strong><a name="2007-05-08T181310.044227Z"></a>
2007-05-08T18:13:10.044227Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Back out everything after rev 7909
</pre>
<p>[contrib/gdevmd2k.c contrib/gdevxes.c contrib/gdevgdi.c src/configure.ac contrib/lips4 contrib/eplaser contrib/gdevhl12.c src/gdevlj56.c ijs/autogen.sh src/gdevdljm.c src/lib.mak contrib/gdevcd8.c src/gdevpx.c src/gdevl256.c contrib/contrib.mak src/gdevvglb.c src/gdevdljm.h contrib/gdevcd8.h contrib/cups src/unix-gcc.mak contrib/gdevdj9.c src/gdevpxut.c src/gdevcdj.c contrib/chp2200 contrib/gdevlx32.c contrib/gdevlx50.c contrib/gdevop4w.c src/gdevpxut.h lib/gs_init.ps src/gdevlbp8.c src/version.mak contrib/opvp contrib/gdevbjc_.c contrib/japanese contrib/gdevbjca.c src/gdevxalt.c contrib/lxm3200-tweaked src/version.mak.in contrib/gdevbjc_.h contrib/gomni.c src/contrib.mak src/devs.mak lib/gs_setpd.ps contrib/pcl3 contrib/gdevlx7.c contrib/gdevln03.c src/gdevdjet.c src/gconf.c contrib/defs.h src/gs.mak contrib/uniprint src/Makefile.in src/unix-aux.mak contrib/md2k_md5k src/unixinst.mak contrib/epson740 src/gp_unix.c]</p>
</blockquote>

<p><strong><a name="2007-05-08T174446.931200Z"></a>
2007-05-08T17:44:46.931200Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Makes ijs/ working with automake 1.10
</pre>
<p>[ijs/autogen.sh]</p>
</blockquote>

<p><strong><a name="2007-05-08T174312.186735Z"></a>
2007-05-08T17:43:12.186735Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Added duples support to the PCL-XL ("pxlmono"/"pxlcolor") output devices

</pre>
<p>[src/gdevpx.c src/gdevlj56.c src/gdevpxut.c src/gdevpxut.h]</p>
</blockquote>

<p><strong><a name="2007-05-08T174129.378446Z"></a>
2007-05-08T17:41:29.378446Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Support for the CUPS Raster output device in the lib/*.ps files

DETAILS:

CUPS-related changes, overtaken from ESP Ghostscript:

Define option "-dNOMEDIAATTRS" to turn off the default (but
unimplementable) media selection policies for setpagedevice. This is
used by CUPS to support the standard Adobe media attributes. Without
this option the behavior of Ghostscript stays as before.

Due to the fact that it is not possible to properly implement the
selection policies from a Ghostscript driver, the default policy was
changed to "7" (impose) to avoid numerous problems with printing
within CUPS...

Bug fix:

Martin Lottermoser, author of the "pcl3" driver writes in
contrib/pcl3/doc/gs-mods.txt, section C1:

There is a bug in ghostscript's default configuration for the
undercolour removal and black generation functions. It shows up when
printing PostScript documents using the RGB colour space ("setrgbcolor" or
"sethsbcolor") on a device where the CMYK space is the native colour space;
this is the case for pcl3 if you specify "-sColourModel=CMYK". The bug
results in black being printed as a mixture of cyan, magenta, and yellow.

The bug is simply fixed by replacing the line
   { pop 0 } dup setblackgeneration setundercolorremoval
with the following line:
   {} dup setblackgeneration setundercolorremoval


</pre>
<p>[lib/gs_setpd.ps lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2007-05-08T173026.894961Z"></a>
2007-05-08T17:30:26.894961Z Till Kamppeter</strong></p>
<blockquote>
<pre>
src/version.mak --&gt; src/version.mak.in (part of build system patch)
</pre>
<p>[src/version.mak.in src/version.mak]</p>
</blockquote>

<p><strong><a name="2007-05-08T172931.725620Z"></a>
2007-05-08T17:29:31.725620Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Build system extensions for support of CUPS Raster, OpenPrinting
Vector, X11 driver modularizationm, and for easy selection of drivers

DETAILS:

The build system has all necessary checks added for the additional
drivers (especially for CUPS Raster and OpenPrinting Vector) and has
functionality to easily select the drivers to be built in. Especially
one can also build a Ghostscript with none of the extra drivers from
the contrib/ directory by supplying the option "--disable-contrib" to
"./configure".

Other additional options are "--with-drivers" to select drivers and
"--with-fontpath" to easily add the system's font locations (call the
system's Ghostscript with "gs -h" and add the paths shown in the end
of the output),

"./configure" also auto-detects whether the X drivers can be
modularized.

For correct building of the CUPS filters the definition of the version
number was moved from src/version.mak to ./configure (or
src/configure.ac).

The build rules for Omni are removed from src/contrib.mak, as
gdevomni.c is present in the contrib/ directory. So its build rules
belong into contrib/contrib.mak.

Use "./configure --disable-contrib" to make a Ghostscript without
anything from the contrib/ directory, for example for commercially
licensed distribution.

</pre>
<p>[src/Makefile.in src/configure.ac src/contrib.mak src/unixinst.mak src/gdevlbp8.c src/version.mak]</p>
</blockquote>

<p><strong><a name="2007-05-08T171647.444481Z"></a>
2007-05-08T17:16:47.444481Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Conditionals to avoid conflicts with the drivers "bjc880j", "lips2p",
"lips4", and "lips4v" in contrib/

DETAILS:

some data structures in src/gdevlbp8.c got extended for the
above-mentioned drivers. To avoid conflicts the original structures
need to be deactivated. This patch adds the needed conditionals for
that.

</pre>
<p>[src/gdevlbp8.c]</p>
</blockquote>

<p><strong><a name="2007-05-08T165211.701719Z"></a>
2007-05-08T16:52:11.701719Z Till Kamppeter</strong></p>
<blockquote>
<pre>
All third-party built-in and Uniprint drivers listed in the OpenPrinting database

DETAILS:

To avoid the users or the distribution package maintainers to patch
Ghostscript for getting support for a certain printer model this patch
contains all known (by OpenPrinting) built-in and Uniprint printer
drivers. So compiling Ghostscript with all these drivers gives a
complete Ghostscript without need of recompilation for adding support
for a printer.

Also the OpenPrinting Vector ("opvp", "oprp") and CUPS Raster output
("cups") are included, to have all the three current interfaces (the
third is the already included IJS) for modular drivers as required by
the upcoming LSB 3.2.

Notes:

Built-in printer drivers for Ghostscript are obsolete. Do not write
any new built-in drivers for Ghostscript. Use the interfaces IJS, CUPS
Raster, or OpenPrinting Vector for your new printer
drivers. Volunteers for moving these third-party drivers into
OpenPrinting Vector modules are welcome.

Do not compile the contrib/ directory for commercial-licensed
distribution of Ghostscript, the licenses of many of these drivers do
not allow this.

</pre>
<p>[contrib/japanese/doc/gs261j.txt contrib/japanese/dviprlib.h contrib/cups/pxlmono.ppd contrib/japanese/doc/gdevmjc.txt contrib/pcl3/doc/gs-pcl3.ref contrib/eplaser contrib/japanese/doc contrib/japanese/doc/gdevcd8.txt contrib/uniprint/Stc680pl.upp contrib/pcl3/eprn/mediasize.c contrib/pcl3/BUGS contrib/japanese/doc/README.gs550j contrib/pcl3/eprn/mediasize.h contrib/pcl3/ppd/gs-6.50.ppd contrib/pcl3/ppd/gs-pcl3-unspecold.ppd contrib/pcl3/src/contrib.mak-7.00.add contrib/lxm3200-tweaked/LICENSE contrib/lxm3200-tweaked/Z12-Z31-QuickSetup contrib/japanese/dmp_init.ps contrib/pcl3/eprn/pagecount.c contrib/chp2200 contrib/uniprint/Stc740p.upp contrib/gdevlx50.c contrib/lxm3200-tweaked/RELEASE_NOTES contrib/pcl3/src/pcl3opts.c contrib/pcl3/src/gdevpcl3.c contrib/pcl3/eprn/pagecount.h contrib/pcl3/src/pclsize.c contrib/pcl3/ps/margins-LetterRotated.ps contrib/gdevbjc_.c contrib/pcl3/ppd/gs-pcl3-hpdj400.ppd contrib/epson740/printerdb_rh6.0 contrib/japanese contrib/pcl3/src/pclsize.h contrib/gdevbjc_.h contrib/pcl3/ppd/gs-pcl3-hpdjportable.ppd contrib/cups/cups.mak contrib/uniprint/Stc670pl.upp contrib/cups/pxlcolor.ppd contrib/pcl3/ppd/gs-pcl3-hpdj660c.ppd contrib/pcl3 contrib/gdevlx7.c contrib/uniprint/bjc6000a1.upp contrib/pcl3/eprn/eprnrend.c.orig contrib/pcl3/ppd/gs-5.50.ppd contrib/defs.h contrib/pcl3/eprn/eprnparm.c contrib/pcl3/doc/how-to-report.txt contrib/japanese/doc/dj505j.txt contrib/japanese/gdevml6.c contrib/japanese/escp_24.src contrib/japanese/gdevlbp3.c contrib/uniprint/stc740ih.upp contrib/eplaser/gdevescv.c contrib/uniprint/Stc680p.upp contrib/uniprint/s400a1.upp contrib/epson740/upp-HowTo-to-be contrib/gdevxes.c contrib/japanese/gdevj100.c contrib/eplaser/gdevescv.h contrib/lips4/gdevlips.c contrib/japanese/doc/gdevj100.txt contrib/lips4/gdevlprn.c contrib/uniprint/Stc760pl.upp contrib/lips4/gdevlips.h contrib/pcl3/ppd/fonts.ppd contrib/uniprint/Stp870p.upp contrib/uniprint/PM820p.upp contrib/pcl3/ps/dumppdd.ps contrib/pcl3/src/zmedia2.c-6.51.diff contrib/lips4/gdevlprn.h contrib/pcl3/ppd/gs-common.ppd contrib/gdevcd8.c contrib/contrib.mak contrib/pcl3/ppd/gs-pcl3-hpdj1120c.ppd contrib/japanese/doc/cdj880.txt contrib/gdevcd8.h contrib/japanese/dmp_site.ps contrib/cups/gdevcups.c contrib/pcl3/src/contrib.mak-6.50.add contrib/japanese/doc/gdevmd2k.txt contrib/gdevdj9.c contrib/cups/pstoraster contrib/japanese/doc/gdevmag.txt contrib/lips4/gdevl4r.c contrib/lxm3200-tweaked/README contrib/lips4/gdevl4v.c.orig contrib/lips4/gdevl4v.c contrib/pcl3/ps/margins-A4Rotated.ps contrib/pcl3/ppd/gs-pcl3-hpdj540.ppd contrib/pcl3/doc/notes.bbl contrib/epson740/ps-to-printer.fpi_rh5.2 contrib/pcl3/doc/notes.tex contrib/pcl3/README contrib/pcl3/LGPL contrib/pcl3/ppd/gs-6.01.ppd contrib/chp2200/AUTHORS contrib/uniprint/PM760p.upp contrib/opvp/opvp_media.def contrib/uniprint/Stc777pl.upp contrib/uniprint/Stp720pl.upp contrib/japanese/gdevnpdl.c contrib/pcl3/src/contrib.mak-5.50.add contrib/epson740/README contrib/md2k_md5k contrib/pcl3/ps/margins-Env10Rotated.ps contrib/uniprint/PM760pl.upp contrib/uniprint/Stc670p.upp contrib/japanese/gdevmag.c contrib/cups/pstopxl contrib/japanese/gdev10v.c contrib/gdevmd2k.c contrib/cups/pstoraster.in contrib/chp2200/COPYING contrib/pcl3/ppd/gs-pcl3-hpdj510.ppd contrib/uniprint/Stc740pl.upp contrib/lips4 contrib/pcl3/src/zmedia2.c-6.01.diff contrib/gdevhl12.c contrib/pcl3/ppd/gs-pcl3-hpdj550c.ppd contrib/md2k_md5k/README.jis contrib/pcl3/ppd/catppd contrib/japanese/doc/Gdevlips.htm contrib/pcl3/ppd/gs-6.51.ppd contrib/pcl3/doc contrib/pcl3/pcl3.tar.sig contrib/cups contrib/japanese/gdevespg.c contrib/japanese/gdevalps.c contrib/pcl3/NEWS contrib/japanese/doc/gdevml6.txt contrib/gdevop4w.c contrib/pcl3/ppd/README contrib/uniprint/Stc760p.upp contrib/pcl3/eprn/eprnfs.c contrib/opvp contrib/gdevbjca.c contrib/pcl3/ppd/gs-pcl3-hpdj600.ppd contrib/gomni.c contrib/uniprint/Stp720p.upp contrib/pcl3/doc/gs-mods.txt contrib/uniprint/sipixa6.upp contrib/opvp/gdevopvp.c contrib/pcl3/src/zmedia2.c-5.50.diff contrib/pcl3/src/zmedia2.c-6.50.diff contrib/pcl3/ppd/gs-pcl3-hpdj680c.ppd contrib/pcl3/eprn/eprnrend.c contrib/pcl3/ps/margins-A4.ps contrib/pcl3/src/contrib.mak-6.01.add contrib/uniprint contrib/pcl3/src/pcl3opts-de.msg contrib/japanese/doc/djgpp.txt contrib/japanese/gdevdmpr.c contrib/japanese/doc/gdevlbp3.txt contrib/pcl3/doc/pcl3opts.html contrib/japanese/doc/gdevdmpr.txt contrib/japanese/doc/gs261j.euc contrib/chp2200/INSTALL contrib/pcl3/ppd contrib/cups/pstopxl.in contrib/pcl3/src contrib/pcl3/ppd/gs-pcl3-hpdj500c.ppd contrib/uniprint/Stc777p.upp contrib/gdevgdi.c contrib/pcl3/ps/margins-EnvDLRotated.ps contrib/japanese/gdevp201.c contrib/japanese/doc/gdevp201.txt contrib/pcl3/ppd/gs-7.00.ppd contrib/pcl3/ps/margins-Letter.ps contrib/uniprint/bjc6000b1.upp contrib/pcl3/lib/if-pcl3 contrib/pcl3/eprn contrib/opvp/opvp_common.h contrib/cups/pstoraster.convs contrib/pcl3/lib contrib/pcl3/src/pclcap.c contrib/uniprint/Stp870pl.upp contrib/pcl3/doc/gs-pcl3.1 contrib/japanese/gdevfmlbp.c contrib/pcl3/src/contrib.mak-6.51.add contrib/japanese/doc/gdevalps.txt contrib/gdevlx32.c contrib/pcl3/src/pclcap.h contrib/pcl3/src/pclgen.c contrib/pcl3/ps contrib/pcl3/src/pcl3opts-en.msg contrib/uniprint/s400b1.upp contrib/japanese/doc/gdev10v.txt contrib/japanese/gdevmjc.c contrib/epson740/printerdb_rh5.2 contrib/pcl3/ppd/gs-pcl3-hpdj500.ppd contrib/pcl3/src/pclgen.h contrib/lxm3200-tweaked contrib/pcl3/doc/pcl3opts.ref contrib/uniprint/sharp.upp contrib/japanese/gdevmjc.h contrib/pcl3/src/pclscan.c contrib/pcl3/src/zmedia2.c-7.00.diff contrib/pcl3/eprn/gdeveprn.c contrib/pcl3/ps/calign.ps contrib/pcl3/src/pclscan.h contrib/gdevln03.c contrib/pcl3/ppd/gs-pcl3-common.ppd contrib/pcl3/ppd/gs-pcl3-hpdj3xx.ppd contrib/pcl3/eprn/gdeveprn.h contrib/pcl3/lib/example.mcf contrib/pcl3/src/pclcomp.c contrib/pcl3/ppd/gs-pcl3-unspec.ppd contrib/pcl3/ps/levels-test.ps contrib/pcl3/doc/pcl3opts.1 contrib/pcl3/ppd/gs-pcl3-hpdj8xxc.ppd contrib/uniprint/PM820pl.upp contrib/japanese/gdevrpdl.c contrib/epson740 contrib/japanese/doc/gdevfmlbp.txt contrib/pcl3/lib/cups-pcl3 contrib/pcl3/doc/gs-pcl3.html contrib/japanese/gdevfmpr.c contrib/pcl3/doc/reports.txt contrib/japanese/dviprlib.c]</p>
</blockquote>

<p><strong><a name="2007-05-08T163345.043492Z"></a>
2007-05-08T16:33:45.043492Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Addition of support for some older japanese-market PCL Printers

DETAILS:

Adds the output devices:

dj505j: HP DeskJet 505J
ljet4pjl, lj4dithp: HP LaserJet 4V/4LJ
picty180: NEC PICTY180 (PC-PR101J/180)

This patch was part of ESP Ghostscript for several years and did not
cause any problems there.

</pre>
<p>[src/gdevdjet.c src/gdevdljm.c src/gdevdljm.h src/contrib.mak src/gdevcdj.c]</p>
</blockquote>

<p><strong><a name="2007-05-08T162619.557957Z"></a>
2007-05-08T16:26:19.557957Z Till Kamppeter</strong></p>
<blockquote>
<pre>
Modularization of the X11 output devices into dynamic libraries

DETAILS:

This patch allows to compile Ghostscript in a way that the X11 screen
display output devices can be seperated into a dynamically linkable
library, so that these devices can be put in a separate binary package
in Linux distributions. This way the distributions can be installed
with GhostScript and without the X libraries, which is important for
headless print servers.

This feature is only available for Unix with GCC (selected by the
Makefile).

Ghostscript will be compiled without built-in X11 support and with an
extra X11.so file containing the X11 support. One can install
Ghostscript with or without X11.so then, it will always work. It
detects the presence of X11.so automatically and makes the X11 output
devises available if X11.so is present (see "gs -h").

Small disadvantage: With modularized X11 support the "x11" device will
not stay the default one. "bbox" will be the default then. Use "gs
-sDEVICE=x11 ..." then.

This patch is used since mid 2001 in ESP Ghostscript and has never
caused any problems or bugs related to the modularization.

</pre>
<p>[src/gconf.c src/lib.mak src/gdevl256.c src/gdevxalt.c src/gs.mak src/gdevvglb.c src/Makefile.in src/unix-gcc.mak src/unix-aux.mak src/devs.mak src/unixinst.mak src/gp_unix.c]</p>
</blockquote>

<p><strong><a name="2007-05-07T215344.031582Z"></a>
2007-05-07T21:53:44.031582Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove unneeded header references to the interpreter. This file is part 
of the graphics library. Also clean up the dependencies in the makefile.
</pre>
<p>[src/lib.mak src/gsncdummy.c src/gsncdummy.h]</p>
</blockquote>

<p><strong><a name="2007-05-07T213143.787169Z"></a>
2007-05-07T21:31:43.787169Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Implement a color index cache.

DETAILS : 

This partially improves performance for the test case of 
the bug 689189 "PDF fails with /unregistered in --shfill--".

This change is algorithmically equivalent.
The old code redundantly converts client colors
to device colors. This patch implements a cache for 
the conversion in the new module gscicach.h .
It works for contone devices only.

For the test case it reduces the number of color conversions 
in 20+ times. However a rocket speeding up is not obtained.

This patch is an experimental one.
We have got an alternative approach,
which is more complicated but works for any device.
The alternative is to pass converted colors through the decomposition recursion.
We commit this now mainly for archiving purpose.
To disable it replace the call to gs_color_index_cache_create with NULL.

</pre>
<p>[src/gxshade4.h src/lib.mak src/gscicach.c src/gscicach.h src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2007-05-07T194503.500615Z"></a>
2007-05-07T19:45:03.500615Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Trap input errors when reading PDF content streams and issue a warning.
Acrobat Reader silently ignores such errors. Bug 689026, customer 850.

</pre>
<p>[lib/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2007-05-07T174200.368595Z"></a>
2007-05-07T17:42:00.368595Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Fixing a bounding box pixel rounding issue in pdf14_begin_transparency_group.

DETAILS:

The transparency group bounding box calculation was using a different rounding
method than is being used for images. This caused the problem file in bug
report #688543 to display unwanted gray vertical lines to the left and right of
a transparency group. This fix is to use the same "Center-of-pixel Filling Rule"
that is applied to images to avoid this type of problem.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-05-07T103300.607664Z"></a>
2007-05-07T10:33:00.607664Z leonardo</strong></p>
<blockquote>
<pre>
Fix (functions) : Improving the documentation for make_interpolation_tensor.

</pre>
<p>[src/gsfunc0.c]</p>
</blockquote>

<p><strong><a name="2007-05-07T084812.997512Z"></a>
2007-05-07T08:48:12.997512Z leonardo</strong></p>
<blockquote>
<pre>
Documenting how to profile Ghostscript with MSVC6 (continued).

DETAILS :

Fixing a misprint.

It's still a preliminary edition.
A documentation specialist should improve it.

</pre>
<p>[doc/Develop.htm]</p>
</blockquote>

<p><strong><a name="2007-05-07T081013.225741Z"></a>
2007-05-07T08:10:13.225741Z leonardo</strong></p>
<blockquote>
<pre>
Documenting how to profile Ghostscript with MSVC6.

DETAILS :

It's a preliminary edition.
A documentation specialist should improve it.

</pre>
<p>[doc/Develop.htm]</p>
</blockquote>

<p><strong><a name="2007-05-05T192034.952465Z"></a>
2007-05-05T19:20:34.952465Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Undefine /Length in the stream dictionary when the value is incorrect to
distinguish streams of 0 and unknown length. Old code re-defined incorrect
length as 0. Bug 689208, customer 770.

</pre>
<p>[lib/pdf_base.ps toolbin/pdf_info.ps]</p>
</blockquote>

<p><strong><a name="2007-05-04T212303.556389Z"></a>
2007-05-04T21:23:03.556389Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Minor change to make the source code more accurate.

DETAILS:

A parameter was being moved into the pdf buffer structure under a comment that
indicated the parameter wasn't being used. During my testing for bug #688543
I discovered the parameter was being used. Therefore I moved the line to be
above the comment to better reflect reality.

</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-05-04T041847.247543Z"></a>
2007-05-04T04:18:47.247543Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Move allocation of a large structure from the stack to the heap to avoid
C stack overflow on Windows NT that allocates 12K less of the stack
space than requested by the application. Bug 688998.

</pre>
<p>[src/gdevpdfp.c lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2007-05-04T001508.895805Z"></a>
2007-05-04T00:15:08.895805Z Ray Johnston</strong></p>
<blockquote>
<pre>
Previous version was too aggresive with image interpolation to
1-bit per component (bpc) devices. Now we downsample using the
'special' image filter that prevents dropout on 1bpc devices and
use the "Mitchell" image filter for upscaling to those devices
when the scale factor (in X and Y) is at least 4:1. This prevents
upscaling on 1:1 images as well as near 1:1 where the results
would probably be poor quality.

</pre>
<p>[src/gxiscale.c]</p>
</blockquote>

<p><strong><a name="2007-05-03T151326.865969Z"></a>
2007-05-03T15:13:26.865969Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Avoid a Valgrind warning about ovelapping arguments in memcpy().
Don't assign a structure to itself.

</pre>
<p>[src/gxhintn.c]</p>
</blockquote>

<p><strong><a name="2007-05-02T212041.869528Z"></a>
2007-05-02T21:20:41.869528Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Extra subdivision of axial and radial shadings.

DETAILS : 

This partially improves performance for the test case of 
the bug 689189 "PDF fails with /unregistered in --shfill--".

The old code wrongly mapped shading function arguments
fro axial and radial shadings. It caused an
extra subdivision by U when the color function requires
to subdivide by V.

</pre>
<p>[src/gxshade4.h src/gxshade1.c src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2007-05-02T191252.030634Z"></a>
2007-05-02T19:12:52.030634Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : The color space linearity check didn't account the color precision.

DETAILS : 

This partially improves performance for the test case of 
the bug 689189 "PDF fails with /unregistered in --shfill--".

Since the color space represents color with precision 1/255,
the shadings code must not try to obtain a better precision.
This patch accounts the color quantum in is_dc_nearly_linear.

</pre>
<p>[src/gscspace.c]</p>
</blockquote>

<p><strong><a name="2007-05-02T181829.002307Z"></a>
2007-05-02T18:18:29.002307Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Always adjust smoothness according to the minimal color precision.

DETAILS : 

Since the color space represents color with precision 1/255,
the shadings code must not try to obtain a better precision.
However the old code sometimes used the unadjusted value.
This patch defines an uniform way to access the adjusted smoothness.

</pre>
<p>[src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2007-05-02T123309.355227Z"></a>
2007-05-02T12:33:09.355227Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Early skip parts that fall outside the clipping box.

DETAILS : 

This improves performance for the test case of 
the bug 689189 "PDF fails with /unregistered in --shfill--".

The patch implements a bbox intersection code pattern to
several decomposition functions. It speeds up those shadings, 
in which the shading area is significantly larger 
than the clipping box.

Rather it speeds up the test case,
it needs a further improvement for shading functions.
A small noize (being lesser than shading smoothness) to be ignored
while a function monotonity check.

Minor changes :
1. In some functions the old bbox intersection code 
   becomes more uniform.
2. bbox_of_points moved up.

</pre>
<p>[src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2007-05-01T235523.394938Z"></a>
2007-05-01T23:55:23.394938Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Pacify Valgrind. Initialize an uninitialized variable that is used in
conditional expression but doesn't affect the end result. Bug 688910.

</pre>
<p>[toolbin/vg_bugs.supp toolbin/vg_okay.supp src/gxipixel.c]</p>
</blockquote>

<p><strong><a name="2007-05-01T225127.306035Z"></a>
2007-05-01T22:51:27.306035Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Pacify Valgrind. Initialize an uninitialized variable that is used in
calculations but doesn't affect the end result in this case.

</pre>
<p>[src/gximono.c]</p>
</blockquote>

<p><strong><a name="2007-05-01T205258.020607Z"></a>
2007-05-01T20:52:58.020607Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : wedge_vertex_list_elem_buffer overflow.

DETAILS : 

Bug 689189 "PDF fails with /unregistered in --shfill--".

The estimation for wedge_vertex_list_elem_count_max
assumed a division of 1 side per level.
However triangle_by_4 divides 3 sides at once. 
Now we increase the buffer size according to that,
see comment in code for details.
It increases the buffer size from 110K to 220K.

We tried to implement a new function triangle_by_2
to keep the old buffer size,
triangle_by_2 must be the topmost worker for fill_triangle.
This function appears almost same as triangle_by_4,
except it divides the biggest side only.
We discontinued this effort because
we don't like the code duplication,
which only saves 100K of RAM,
and gives lots of minor raster differences.

This patch fixes the failure,
but the performance with the test case appears unsatisfactory.
It sould be a subject of a separate patch.

</pre>
<p>[src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2007-04-30T190816.584376Z"></a>
2007-04-30T19:08:16.584376Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix typo in 7887. Local regression testing missed this -- was seen in 
nightly run. This was part of the "optimization" in the 4 component
source color case.
</pre>
<p>[src/gxiscale.c]</p>
</blockquote>

<p><strong><a name="2007-04-29T003416.918957Z"></a>
2007-04-29T00:34:16.918957Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix structure problem (this could have caused out-of-bounds access).
</pre>
<p>[src/gdevwts.c]</p>
</blockquote>

<p><strong><a name="2007-04-28T221719.957831Z"></a>
2007-04-28T22:17:19.957831Z Ray Johnston</strong></p>
<blockquote>
<pre>
Implementation of a new non-linear image filter that prevents dropout
when images are scaled down to a 1-bit per component device. Bugs
689147 for customer 531 and image quality problem for customer 780.
This filter is used whenever /Interpolate == true (or -dDOINTERPOLATE
command line option is used) and the image is being scaled down on
a 1-bit per component device.

Interpolation throughput of gray or cmyk images is also improved by
a factor of about 2:1 (depending on the data content) even when
the standard Mitchell filter is used. The performance improvement
when using this new filter is even higher since the filter itself
uses less CPU time.

DETAILS:

This filter uses the darkest of the image pixels that are within a
device pixel, rather than the default behaviour which uses the PS
'center of pixel' rule (i.e., whichever image pixel covers the
center of the device pixel is used to color the device pixel).

The center of pixel rule can result in missing narrow black
lines or single dots in patterns when a source image is scaled down.

One side effect of this filter is that narrow white features or
small white areas in patterns can be lost, effectively darkening
the result. For now the customers needing this are not concerned
with small white-on-black areas becoming solid black. Many real
world printers tend to do this anyway due to 'dot gain'.

If we encounter the need for preserving small white areas, we
can change the filter somewhat to prevent this effect.

</pre>
<p>[src/sidscale.h src/gxdda.h src/lib.mak src/siinterp.c src/gxiscale.c doc/Develop.htm src/sisparam.h src/sidscale.c]</p>
</blockquote>

<p><strong><a name="2007-04-28T215523.077958Z"></a>
2007-04-28T21:55:23.077958Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add missing comment (brief description line).
</pre>
<p>[src/gdevwts.c]</p>
</blockquote>

<p><strong><a name="2007-04-26T234630.659099Z"></a>
2007-04-26T23:46:30.659099Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix regression tools to remove dependency on PYTHONPATH since
the environment variable method isn't very convenient for those
running local regressions and add those python files from
peeves:/home/regression/python to this directory (under svn).
</pre>
<p>[toolbin/tests/README toolbin/tests/run_nightly toolbin/tests/myoptparse.py toolbin/tests/main.py]</p>
</blockquote>

<p><strong><a name="2007-04-25T200000.200965Z"></a>
2007-04-25T20:00:00.200965Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Fix for slow PDF performance reported in bug report #688830.

DETAILS:

The function read_create_compositor was calling top_up_cbuf every time it was
called. For some jobs this caused a large number of relatively large memory
movements in the memmove call of top_up_cbuf. By only calling top_up_buf
when actually necessary, the problem job took approximately 1/2 the time it
did previously.

</pre>
<p>[src/gstparam.h src/gxclrast.c src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-04-25T055033.064031Z"></a>
2007-04-25T05:50:33.064031Z leonardo</strong></p>
<blockquote>
<pre>
Fix (TT fonts) : Allow sfnts string breaks inside TT tables.

DETAILS : 

The old code is based on an antique Adobe constraint
"the strings must begin at TrueType table boundaries, or
at individual glyph boundaries within the glyf table".
In novadays many of 3d party software do not follow it.
We're dropping this constraint from GS code
because we tired fixing user problems with it. 

This change is algorithnically equivalent for fonts,
which follow the constraint.

This change replaces ACCESS macro 
(sll 3 definitions through Ghostscript sources)
with a new macro READ_SFNTS, which copies data to a local buffer,
and checks the length of the buffer.
We believe that the performance flaw is not sensible
and it worths the improved stability.
Correspondingly local pointer variables,
which were used with ACCESS macro,
are replaced with local buffers.
Sorry for keeping old names inspite of the popular convention -
we do not want too many changes in a single patch 
to simplify its review.

In some places the new data copying could be eliminated because
the old code already copies the data. 
We do not optimize it now,
becauase we want to simplify the patch review.
We believe that modern compilers can optimize it.

The new code still have few points,
which are based on the antique constraint.
One example is names in name table.
Will do further improvements someday.
The new code signals an error if
the constraint is used and not satisfied
(the old code doesn't with unpredictable result).

</pre>
<p>[src/gxfcopy.c src/gxfont42.h src/gsfcid2.c src/gstype42.c src/gdevpsft.c]</p>
</blockquote>

<p><strong><a name="2007-04-25T032832.022759Z"></a>
2007-04-25T03:28:32.022759Z leonardo</strong></p>
<blockquote>
<pre>
Fix (TT fonts) : Allow 'loca' elements to be broken into parts with 'sfnts' strings.

DETAILS : 

Bug 689038 "GS doesn't display T42 font correctly.".

The Type 42 specification reads that 'sfnts' strings must not break TT tables.
Exactly, "the strings must begin at TrueType table boundaries, or
at individual glyph boundaries within the glyf table".
However the test case is another example when a 3d party software 
"LilyPond 2.11.10" doesn't follow this constraint. 
We prefer to handle such font data, 
because we have not enough control for fonts in wild.

The new function gs_type42_read_data is factored out
from the old code of default_get_outline.
Due to that we believe that the change to default_get_outline
is algorithmically equivalent.

This patch does not propagate error codes from
gs_type42_read_data in get_glyph_offset. 
This is done intentionally for keeping the patch simpler, 
and for keeping the behavior closer to the old one. 
It simplifies the regression testing.
Propagating the error codes should be a next step.

</pre>
<p>[src/gstype42.c]</p>
</blockquote>

<p><strong><a name="2007-04-24T162121.866752Z"></a>
2007-04-24T16:21:21.866752Z leonardo</strong></p>
<blockquote>
<pre>
Fix (TT fonts) : Could write past len_glyphs array.

DETAILS : 

This is a partial fix for bug 688971 
"huge performace problem (with large TT font?)".
Thanks to SaGS for noticing this problem.

</pre>
<p>[src/gstype42.c]</p>
</blockquote>

<p><strong><a name="2007-04-24T001614.934585Z"></a>
2007-04-24T00:16:14.934585Z leonardo</strong></p>
<blockquote>
<pre>
Fix (TT fonts) : Do not consider overlapped glyps while computing glyph length.

DETAILS : 

This is a partial fix for bug 688971 
"huge performace problem (with large TT font?)".
Thanks to SaGS for idea to drop an old hewristic
after a *stable* sorting is applied.
See comment in code.

</pre>
<p>[src/gstype42.c]</p>
</blockquote>

<p><strong><a name="2007-04-23T235901.979981Z"></a>
2007-04-23T23:59:01.979981Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Partly implement AcroForm feature: all fields that provire appearance
streams and text fields with variable text. Bug 687498.

DETAILS:
Although the sample file renders identically to Adobe Acrobat, many things
are not yet coded.
- other types of annotations without appearance streams
- XML formatted text
- multi-line text
- combed text
- right-aligned or centered text with non-0 word and character spacing.

</pre>
<p>[lib/pdf_main.ps lib/pdf_draw.ps lib/pdf_ops.ps]</p>
</blockquote>

<p><strong><a name="2007-04-23T214619.686175Z"></a>
2007-04-23T21:46:19.686175Z leonardo</strong></p>
<blockquote>
<pre>
Fix (TT fonts) : A faster computation of glyph lengthes.

DETAILS : 

This is a partial fix for bug 688971 
"huge performace problem (with large TT font?)".
Thanks to SaGS for idea to apply a *stable* sorting algorithm
for computing len_glyphs. See comment in code.

</pre>
<p>[src/gstype42.c]</p>
</blockquote>

<p><strong><a name="2007-04-23T193120.353885Z"></a>
2007-04-23T19:31:20.353885Z Henry Stiles</strong></p>
<blockquote>
<pre>
Margin adjustments courtesy of jbrown@cs.ucsd.edu.  We have no way of
testing this change since we do not have a Laserjet II.  Bug #688054.
</pre>
<p>[src/gdevdjet.c]</p>
</blockquote>

<p><strong><a name="2007-04-23T180455.781264Z"></a>
2007-04-23T18:04:55.781264Z leonardo</strong></p>
<blockquote>
<pre>
Fix (p*mraw devices) : Removing an incorrect debug printing (continued 2).

DETAILS : 

See comment in code.

</pre>
<p>[src/gdevpbm.c]</p>
</blockquote>

<p><strong><a name="2007-04-23T173816.893357Z"></a>
2007-04-23T17:38:16.893357Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Provide alternative char codes in a CIDDecoding resource (continued).

DETAILS : 

Removing an unused variable.

</pre>
<p>[src/zcid.c]</p>
</blockquote>

<p><strong><a name="2007-04-23T132747.091654Z"></a>
2007-04-23T13:27:47.091654Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Provide alternative char codes in a CIDDecoding resource.

DETAILS : 

Bug 689168 "Wrong Symbol displayed from MS-PGothic".
See the documentation change.

Note : FAPI implemented this feature with Decoding resource a long ago,
but it was not documented in Language.htm .

The old documentation about CIDDecoding in Language.htm appears incorrect.
The dictionary values were not strings.
They were arrays of integers.

</pre>
<p>[lib/gs_ciddc.ps doc/Language.htm src/zcid.c]</p>
</blockquote>

<p><strong><a name="2007-04-23T064208.584860Z"></a>
2007-04-23T06:42:08.584860Z leonardo</strong></p>
<blockquote>
<pre>
Fix (p*mraw devices) : Removing an incorrect debug printing (continued).

DETAILS : 

Revision 7869 fails with any PDF file.
Fixing it now.
See comment in code.

</pre>
<p>[src/gdevpbm.c]</p>
</blockquote>

<p><strong><a name="2007-04-22T220022.158968Z"></a>
2007-04-22T22:00:22.158968Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix MSVC 7 warnings about unused variables and unreferenced labels.
</pre>
<p>[src/zalg.c]</p>
</blockquote>

<p><strong><a name="2007-04-22T202522.439569Z"></a>
2007-04-22T20:25:22.439569Z leonardo</strong></p>
<blockquote>
<pre>
Implementing high level patterns, step 10.

DETAILS : 

gx_pattern_tile_is_clist crashed with empty tile.
Debugged with CET 09-34.PS .

</pre>
<p>[src/gxpcmap.c]</p>
</blockquote>

<p><strong><a name="2007-04-22T201902.249842Z"></a>
2007-04-22T20:19:02.249842Z leonardo</strong></p>
<blockquote>
<pre>
Fix (p*mraw devices) : Removing an incorrect debug printing.

DETAILS : 

Since revision 7795 the debug build of the old code prints "0 strings:" 
to stderr when interpreting any PDF file.
The release code doesn't do that. This printing is not controlled by any option.
Besides that, if a device parameter OutputIntent is specified,
the debug printing code accesses string parts by constant indices 
with no checking the string length, so it causes a potential crash.

Removing this code portion now because (1) we believe that
the debug and release build must generate same stderr by default,
and (2) we need a stable code with no dependence on the OutputIntent value.

Since Use.htm doesn't specify an useful -Z option to control this printing,
we believe that the device must implement anothe device parameter to control it.

</pre>
<p>[src/gdevpbm.c]</p>
</blockquote>

<p><strong><a name="2007-04-22T175556.827285Z"></a>
2007-04-22T17:55:56.827285Z leonardo</strong></p>
<blockquote>
<pre>
Implementing the PS operator .sort in C language.

DETAILS : 

This is a partial fix for bug 688971 
"huge performace problem (with large TT font?)".
Patch from SaGS.

The old PS implementation of lib\gs_init.ps::.sort uses a 
slow O(n^2) algorithm. Plus, array indexing operations are lenghty 
in PostScript. It seems to me this was initially written to sort 
the very few "%disk*%" names, so speed was irrelevant. Now, it is 
used to sort 'loca' tables (in some damaged TTFs). 

The patch implements the heap sort algorithm from the programmer's 
bible. This algorithm is guaranteed to be O(n log n) in the worst 
case. Variable's names are those from Knuth's book. Labels denote the 
algorithm's steps.

The implementation retains the maximum generality for the predicate, 
i.e. it can be anything that is able to compare 2 objects on the 
o-stack and leave a bool in their place. The predicate is not 
restricted to what's available to a FunctionType 4 function.

</pre>
<p>[src/zalg.c src/int.mak lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2007-04-22T115025.863066Z"></a>
2007-04-22T11:50:25.863066Z leonardo</strong></p>
<blockquote>
<pre>
Fix (TT fonts) : A faster seeking through 'sfnts' array.

DETAILS : 

This is a partial fix for bug 688971 
"huge performace problem (with large TT font?)".
Patch from SaGS.

src\zfont42.c::string_array_access_proc() is now caches
the string index used last, and starts the next search from there. 
This info in stored together with the ref to 'sfnts', and 
consists of index of the string (.mru_sfnts_index) and total number 
of data bytes that precede this string (.mru_sfnts_pos).

If passing NULL for the 2 new parameters, string_array_access_proc() 
beheaves at it did before and starts the search from the beginning.

Otherwise it does one of:
- search forward from the mru string (possibly returning data from 
  it, without actually skipping anything), if new position &gt;= 
  current's string starting position;
- search backwards from current string if requested position is in 
  the 2nd half of the fragment before the current string;
- search forward from the beginning if in 1st half.

The old garbager descriptor for gs_type42_data_s assumed
'ref' fields only. Now it is changed to account new fields,
which are not 'ref'.

</pre>
<p>[src/zfcid1.c src/zbfont.c src/ifont.h src/zfont42.c src/ifont42.h]</p>
</blockquote>

<p><strong><a name="2007-04-21T023344.148360Z"></a>
2007-04-21T02:33:44.148360Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix all warnings generated by MSVC 6 &amp; 7 except the warnings matching
"C4018|C4244|jbig2dec|jasper" regular expression.

</pre>
<p>[src/dwimg.h src/lib.mak src/iscannum.c src/windows_.h src/gdevwpr2.c src/gp_mswin.c src/sfxstdio.c src/gdevpdfe.c src/gp_msprn.c src/dwdll.c ijs/unistd_.h src/dwsetup.cpp]</p>
</blockquote>

<p><strong><a name="2007-04-19T150451.253884Z"></a>
2007-04-19T15:04:51.253884Z Thomas DiGennaro</strong></p>
<blockquote>
<pre>
Integrate make_testdb.py with new environment,
including testing.cfg and python procedures in other scripts.
make_testdb.py supports creation of a testdata.db with checksums
generated by running gs build in HEAD/ and installed in gshead/.
</pre>
<p>[toolbin/tests/README toolbin/tests/make_testdb toolbin/tests/make_testdb.py]</p>
</blockquote>

<p><strong><a name="2007-04-18T002349.202468Z"></a>
2007-04-18T00:23:49.202468Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a few warnings generated by GCC 4.1.2.

</pre>
<p>[src/gxttfb.c src/gdevpbm.c src/gdevpsdi.c src/gspath1.c src/zchar.c src/ttinterp.c]</p>
</blockquote>

<p><strong><a name="2007-04-17T183939.936412Z"></a>
2007-04-17T18:39:39.936412Z leonardo</strong></p>
<blockquote>
<pre>
Fix : A bug in device_cpath_accum_enum_ptrs.

DETAILS : 

Bug 689177 Another heap corruption (issue 2).

gx_device_clip::list.head was never enumerated.
The bug was intriduced in rev 7120 (5 months, 3 weeks ago) by leonardo.

</pre>
<p>[src/gxacpath.c]</p>
</blockquote>

<p><strong><a name="2007-04-17T175743.141720Z"></a>
2007-04-17T17:57:43.141720Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the inadvertently added instance of testing.cfg; it clobbers 
local configs. Changes should instead be made to testing.cfg.example, 
with the expectation that users will copy that to testing.cfg and
edit to suit.
</pre>
<p>[toolbin/tests/testing.cfg]</p>
</blockquote>

<p><strong><a name="2007-04-17T142846.266428Z"></a>
2007-04-17T14:28:46.266428Z leonardo</strong></p>
<blockquote>
<pre>
Implementing high level patterns, step 9.

DETAILS : 

This fixes the bug 688396, step 9
It switches on the clist-based implementation of patterns.
We arbitrary set the 1Mb threshold for large patterns.
The threshold is not perfect - see (3) below.

Rather it fixes the bug, we would like to do further improvements someday :

1. Large uncolored patterns are not implemented. Need a color substitution forwarding device.
2. Get rid of non_gc_memory in the pattern clist.
3. For CET tests the choice of image-based or clist-based representation must be smarter than 
   MAX_BITMAP_PATTERN_SIZE threshold. While rendering a small pattern to memory device,
   check whether PaintProc applies another apttern. If so, discard the image and
   convert to the clist representation with running PaintProc at second time.
   Need a special forwarding device for the pattern color detection.
4. When compiled with MAX_BITMAP_PATTERN_SIZE 0,
   a wrong rendering of imagemask inside a pattern stream with ppmraw -r600 245-13.ps, 269-01.ps
5. When compiled with MAX_BITMAP_PATTERN_SIZE 0,
   a wrong rendering of image inside a pattern stream with pkmraw -r600 035-07.ps
6. When compiled with MAX_BITMAP_PATTERN_SIZE 0,
   a minor coordinate difference (+-1 pixel) appeared with pkmraw -r600 244-01.ps
7. When compiled with MAX_BITMAP_PATTERN_SIZE 0,
   the rendeting is slow with pkmraw -r600 245-13.ps, 269-01.ps 
8. (time optimization) clist_init is called twice when creating a clist-based pattern.
9. (time optimization) While a clist playback for a large pattern cell,
   set the bbox for the current clipping path for the clist device,
   to allow a faster skipping of elements outside the bbox.
10. (space optimization) Store pattern stream in the pattern cache memory; properly 
   account the stream size while computing the cache memory usage.
11. (space optimization, 32K per pattern) Purge and free clist buffer 
   (which includes a tile cache) when a clist-based pattern is not active
   between reading and writing. Why the tile cace is a property of a clist object ?
   We would like to have a single global tile cache.

</pre>
<p>[src/gxpcmap.c]</p>
</blockquote>

<p><strong><a name="2007-04-17T140950.996301Z"></a>
2007-04-17T14:09:50.996301Z leonardo</strong></p>
<blockquote>
<pre>
Implementing high level patterns, step 8.

DETAILS : 

This is a preparation for fixing the bug 688396, step 8

This change is algorithmically equivalent :
the new behavior is temporarily disabled with 
MAX_BITMAP_PATTERN_SIZE macro.

The revision 7856 appears incorrect in the part 
"Disables tile cache for clist-based patterns.".
As a consequence, the revision 7855 appears incorrect in the part 
"2. Releases the clist buffer when the clist writer completes with a pattern stream.".

This patch fixes that.
It allocates a half of 32K buffer for clist writer stream,
and another half for tile cache.

When building with MAX_BITMAP_PATTERN_SIZE 0,
the clist-based pattern code pased the testing with 
ppmraw -r600 comparefiles 
and pkmraw -r600 comparefiles. 
Rather this testing detected few problems,
we believe that they're not important for the bug 688396.

This code needs further improvements :
1. Large uncolored patterns are not implemented. Need a color substitution forwarding device.
2. Get rid of non_gc_memory in the pattern clist.
3. For CET tests the choice of image-based or clist-based representation must be smarter than 
   MAX_BITMAP_PATTERN_SIZE threshold. While rendering a small pattern to memory device,
   check whether PaintProc applies another apttern. If so, discard the image and
   convert to the clist representation with running PaintProc at second time.
   Need a special forwarding device for the pattern color detection.
4. When compiled with MAX_BITMAP_PATTERN_SIZE 0,
   a wrong rendering of imagemask inside a pattern stream with ppmraw -r600 245-13.ps, 269-01.ps
5. When compiled with MAX_BITMAP_PATTERN_SIZE 0,
   a wrong rendering of image inside a pattern stream with pkmraw -r600 035-07.ps
6. When compiled with MAX_BITMAP_PATTERN_SIZE 0,
   a minor coordinate difference (+-1 pixel) appeared with pkmraw -r600 244-01.ps
7. When compiled with MAX_BITMAP_PATTERN_SIZE 0,
   the rendeting is slow with pkmraw -r600 245-13.ps, 269-01.ps 
8. (time optimization) clist_init is called twice when creating a clist-based pattern.
9. (space optimization) Store pattern stream in the pattern cache memory; properly 
   account the stream size while computing the cache memory usage.
10. (space optimization, 32K per pattern) Purge and free clist buffer 
   (which includes a tile cache) when a clist-based pattern is not active
   between reading and writing. Why the tile cace is a property of a clist object ?
   We would like to have a single global tile cache.

</pre>
<p>[src/gxclist.c src/gxclbits.c src/gxpcmap.c]</p>
</blockquote>

<p><strong><a name="2007-04-17T065536.784240Z"></a>
2007-04-17T06:55:36.784240Z leonardo</strong></p>
<blockquote>
<pre>
Implementing high level patterns, step 7.

DETAILS : 

This is a preparation for fixing the bug 688396, step 7.

This patch fixes the Bug 689176  
"Infinite loop in gxpcmap.c ln 680.",
which was introduced with revision 7853
In gx_pattern_cache_add_entry mbits was reset
before revision 7853 when "the pattern completely fills its box",
and it was not after the revision 7853.
Thus the revision 7853 appears not algorithmically equivalent
rathen than expected.

This change restores the correct behavior,
and improves gx_pattern_cache_free_entry
for an easier monitoring of a pattern cell memory size
with a C debugger.

This code needs further improvements :
1. Large uncolored patterns are not implemented.
2. Get rid of non_gc_memory in the pattern clist writer.
3. clist_init is called twice when creating a clist-based pattern.

</pre>
<p>[src/gxpcmap.c]</p>
</blockquote>

<p><strong><a name="2007-04-17T002538.792981Z"></a>
2007-04-17T00:25:38.792981Z Timothy Osborn</strong></p>
<blockquote>
<pre>
This is a patch for bug report #689171.

DETAILS:
With this fix, DeviceN colors with a DeviceCMYK base color, will be treated as
DeviceCMYK in regards to overprint.

</pre>
<p>[src/gscdevn.c]</p>
</blockquote>

<p><strong><a name="2007-04-17T000210.771224Z"></a>
2007-04-17T00:02:10.771224Z leonardo</strong></p>
<blockquote>
<pre>
Fix : gs_copydevice2 crashed on error.

DETAILS : 

This problem has been occasionally detected while working on large patterns.
If an error happens in finish_copydevice, the function gs_copydevices
first closes the device copy, then releases its stype.
However a device usually provides a finalization method,
which releases stype automatically. Thus it has been released twice,
causing a crash in gs_free_object.

</pre>
<p>[src/gsdevice.c]</p>
</blockquote>

<p><strong><a name="2007-04-16T235559.056841Z"></a>
2007-04-16T23:55:59.056841Z leonardo</strong></p>
<blockquote>
<pre>
Implementing high level patterns, step 6.

DETAILS : 

This is a preparation for fixing the bug 688396, step 6.

This change is algorithmically equivalent :
the new behavior is temporarily disabled with 
MAX_BITMAP_PATTERN_SIZE macro.

This patch :
1. Implements the memory cleanup when a clist-based pattern cache entry purges.
2. Disables tile cache for clist-based patterns.
3. Disables the processing of uncolored patterns as large patterns.

This code needs improvements :
2. Large uncolored patterns are not implemented.
3. Get rid of non_gc_memory in the pattern clist writer.

</pre>
<p>[src/gxclist.c src/gxpcmap.c]</p>
</blockquote>

<p><strong><a name="2007-04-16T185312.628313Z"></a>
2007-04-16T18:53:12.628313Z leonardo</strong></p>
<blockquote>
<pre>
Implementing high level patterns, step 5.

DETAILS : 

This is a preparation for fixing the bug 688396, step 5.

This change is algorithmically equivalent :
the new behavior is temporarily disabled with 
MAX_BITMAP_PATTERN_SIZE macro.

This patch :
1. Implements the tiling.
2. Releases the clist buffer when the clist writer completes with a pattern stream.
3. Cleans warnings from Cygwin/gcc build.
4. Fixes a compilation error in gxpageq.c .

This code needs improvements :
1. The memory cleanup is not done when the clist-based pattern cache entry purges.
2. Large uncolored patterns work as colored (not tested yet).
3. Get rid of non_gc_memory in the pattern clist writer.

</pre>
<p>[src/gsptype1.c src/gxpageq.c src/lib.mak src/gxpcmap.c src/gsptype1.h src/gxpcolor.h src/gxfill.c src/gxp1fill.c]</p>
</blockquote>

<p><strong><a name="2007-04-16T144542.497063Z"></a>
2007-04-16T14:45:42.497063Z Thomas DiGennaro</strong></p>
<blockquote>
<pre>
Checkin the work on regression, search, testfiles.  Mostly Python scripts.
See README files for documentation of use and structure.
</pre>
<p>[toolbin/tests/dump_checksum.py toolbin/python toolbin/tests/gscheck_testfiles.py toolbin/tests/dump_checksum_plus.py toolbin/tests/update_baseline toolbin/tests/check_source.py toolbin/tests/gssum.py toolbin/tests/gscheck_all.py toolbin/tests/dump_checksum_raw.py toolbin/tests/find_unique_file.py toolbin/tests/rasterdb.py toolbin/tests/gscheck_fuzzypdf.py toolbin/search/README toolbin/testfiles toolbin/search toolbin/tests/get_baselines toolbin/tests/build_revision.py toolbin/tests/run_regression toolbin/tests/compare_checksumdb.py toolbin/tests/gsconf.py toolbin/tests/testdiff toolbin/tests/dump_testdb toolbin/tests/gsvalidate.py toolbin/tests/update_baseline.py toolbin/tests/make_baselinedb.py toolbin/tests/gscheck_raster.py toolbin/tests/update_pdfbaseline toolbin/tests/gsparamsets.py toolbin/tests/validate.py toolbin/tests/gstestutils.py toolbin/tests/compare_checksums.py toolbin/tests/regen_filelist.py toolbin/tests/run_nightly.py toolbin/tests/regen_baseline.py toolbin/tests/gstestgs.py toolbin/tests/run_regression.py toolbin/tests/get_baselines.py toolbin/tests/testdiff.py toolbin/tests/updatelistpdf.py toolbin/tests/gscheck_pdfwrite.py toolbin/tests/updatelist.py toolbin/tests/run_series.py toolbin/tests/get_baseline_log.py toolbin/tests/collate.py toolbin/tests/testing.cfg]</p>
</blockquote>

<p><strong><a name="2007-04-16T110219.661421Z"></a>
2007-04-16T11:02:19.661421Z leonardo</strong></p>
<blockquote>
<pre>
Implementing high level patterns, step 4.

DETAILS : 

This is a preparation for fixing the bug 688396, step 4.

This change is algorithmically equivalent :
the new behavior is temporarily disabled with 
MAX_BITMAP_PATTERN_SIZE macro.

The patch implements patterns with clist.
The choice between the old and the new implementation
is being controlled with MAX_BITMAP_PATTERN_SIZE macro.
When the pattern tile size is bigger, it writes the pattern
command stream into a clist object, which then
is stored into the pattern cache.
The pattern instantiation is done with the clist playback.

This code needs improvements :
1. It does not perform the tiling. Just renders a single instance of the pattern cell.
2. The memory cleanup is not done when the pattern cache entry purges.
3. Uncolored patterns work as colored.
4. Need to optimize with releaseing the clist buffer when
   the pattern clist writer completes.
5. Get rid of non_gc_memory in the pattern clist writer.

We commit this patch now because we need to merge 
data structures with the "band_complexity_array patch" (see rev 7847).

</pre>
<p>[src/gxclmem.c src/lib.mak src/gxclist.c src/gxpcmap.c src/gxcldev.h src/gxclmem.h src/gxclist.h src/gxpcolor.h src/gxp1fill.c src/zpcolor.c src/gxclread.c]</p>
</blockquote>

<p><strong><a name="2007-04-16T025057.803705Z"></a>
2007-04-16T02:50:57.803705Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use right capitalization for compiled resources: s/Procset/ProcSet/
</pre>
<p>[src/openvms.mak src/int.mak src/Makefile.in]</p>
</blockquote>

<p><strong><a name="2007-04-16T022614.232909Z"></a>
2007-04-16T02:26:14.232909Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Scan numbers in the range of 2147483648..4294967295 in PDF Encrypt dictionary
as unsigned integers for compatibility with Acrobat Reader.
Bug 689010, customer 870.

</pre>
<p>[lib/pdf_main.ps src/iscan.c src/iscannum.c src/int.mak src/iscan.h src/iscannum.h src/ztoken.c]</p>
</blockquote>

<p><strong><a name="2007-04-15T070159.507361Z"></a>
2007-04-15T07:01:59.507361Z Henry Stiles</strong></p>
<blockquote>
<pre>
This fix is associated with closed bug 689139 and was not checked in
when that bug was closed due to a bookkeeping mistake.  It adds
attributes needed to parse the pxl color treatment operator.  There is
no implementation associated with these new attributes so no change is
expected.
</pre>
<p>[src/gdevpxen.h]</p>
</blockquote>

<p><strong><a name="2007-04-15T063802.809649Z"></a>
2007-04-15T06:38:02.809649Z Henry Stiles</strong></p>
<blockquote>
<pre>
The paper size was hard coded to A4 instead of using the paper size in the
printer device state.  Thanks to Leif Harcke for the patch.  The HP
and Canon color printer drivers are not tested so there are no
expected regression differences.
</pre>
<p>[src/gdevcdj.c]</p>
</blockquote>

<p><strong><a name="2007-04-15T054243.102974Z"></a>
2007-04-15T05:42:43.102974Z Henry Stiles</strong></p>
<blockquote>
<pre>
The range of runcode32 was not correct.  The specification says 3
(not 2) should be added to the run length.  See the JBIG2 spec, Table
29 in section 7.4.3.1.7 (Symbol ID Huffman table decoding).  Fixes
688009 for customer 670.
</pre>
<p>[jbig2dec/jbig2_text.c]</p>
</blockquote>

<p><strong><a name="2007-04-14T140804.439060Z"></a>
2007-04-14T14:08:04.439060Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Fix for the band_complexity_array overflow issue. First reported in bug
report #689165. Also encountered by me when running the test file for bug
report #688830.

DETAILS:
The band_complexity_array array of a clist reader device was being statically
allocated with 100 elements. As the requirement is 1 element per band,
jobs requiring more than 100 bands could cause an abnormal termination
of ghostscript or some other failure. The array is now allocated dynamically
with 1 element per band.

</pre>
<p>[src/lib.mak src/gxclist.c src/gxcldev.h src/gxclist.h src/gdevprn.c src/gxclread.c]</p>
</blockquote>

<p><strong><a name="2007-04-11T182107.628832Z"></a>
2007-04-11T18:21:07.628832Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Adding src/gsncdummy.[ch] and src/zncdummy.c to the Color Mapping section of Develop.htm</pre>
<p>[doc/Develop.htm]</p>
</blockquote>

<p><strong><a name="2007-04-11T181535.603892Z"></a>
2007-04-11T18:15:35.603892Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Adding svn keywords</pre>
<p>[src/gsncdummy.h]</p>
</blockquote>

<p><strong><a name="2007-04-11T180802.032998Z"></a>
2007-04-11T18:08:02.032998Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Adding svn keywords</pre>
<p>[src/gsncdummy.c src/zncdummy.c src/gsncdummy.h]</p>
</blockquote>

<p><strong><a name="2007-04-11T152552.638692Z"></a>
2007-04-11T15:25:52.638692Z Timothy Osborn</strong></p>
<blockquote>
<pre>
svn newbie mistake. Did not mean to grab the lib folder items.*</pre>
<p>[lib/pdf_main.ps lib/pdf_draw.ps lib/pdf_ops.ps lib/pdfopt.ps]</p>
</blockquote>

<p><strong><a name="2007-04-11T152044.560137Z"></a>
2007-04-11T15:20:44.560137Z Timothy Osborn</strong></p>
<blockquote>
<pre>
gsncdemo.* are now named gsncdummy.*</pre>
<p>[lib/pdf_main.ps src/gsncdemo.c lib/pdf_draw.ps lib/pdf_ops.ps lib/pdfopt.ps]</p>
</blockquote>

<p><strong><a name="2007-04-10T171341.025532Z"></a>
2007-04-10T17:13:41.025532Z leonardo</strong></p>
<blockquote>
<pre>
Implementing high level patterns, step 3.

DETAILS : 

This is a preparation for fixing the bug 688396, step 3.
This change is algorithmically equivalent.
It encapsulates the initialization of gx_device_pattern_accum fields 
inside gx_pattern_accum_alloc, so that its clients must not deal
with a specific type of a pattern accumulation device.

Note: the 2 previous steps has a different title than
"Implementing high level patterns". 
They to be renamed.

</pre>
<p>[src/gxpcmap.c src/gxpcolor.h src/zpcolor.c]</p>
</blockquote>

<p><strong><a name="2007-04-10T065436.984146Z"></a>
2007-04-10T06:54:36.984146Z leonardo</strong></p>
<blockquote>
<pre>
Make the memory clist implementation to build always.

DETAILS : 

This is a preparation for fixing the bug 688396, step 2.
The memory clist implementation now builds unconditionally,
because it will be used for large patterns.
The file clist implementation builds if and only if it is requested with 
BAND_LIST_STORAGE=file .
See comment added into lib.mak .
clist_init_io_procs implements the choice.

Minor changes : io_procs are made const.
clist_io_procs_file, clist_io_procs_memory, allocateWithReserve are made local.

</pre>
<p>[src/gxclmem.c src/lib.mak src/gxclfile.c src/gxclist.c src/gxband.h src/gxclread.c src/gxclio.h]</p>
</blockquote>

<p><strong><a name="2007-04-09T205020.646460Z"></a>
2007-04-09T20:50:20.646460Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Interpret PDF PageLabels dictionary and include the labels in %%Page comments
in the PS file. Thanks to Jason McCarty for the patch. Bug 688071.
</pre>
<p>[lib/pdf2dsc.ps]</p>
</blockquote>

<p><strong><a name="2007-04-09T085430.839959Z"></a>
2007-04-09T08:54:30.839959Z leonardo</strong></p>
<blockquote>
<pre>
Implementing clist i/o virtual functions.

DETAILS : 

This is a preparation for fixing the bug 688396.
This change is algorithmically equivalent.

The old code defines macros for substituting
memfile_* procs to clist_* procs when 
the makefile option BAND_LIST_STORAGE is set to 'memory'.
Instead that, the new code defines a new structure clist_io_procs_t,
stores the procs into it, and chooses 
an implementation by the module initialization mechanizm.
The new function clist_init_io_procs works for that.

We would like to define the procs as virtual methods
of *clist_file_ptr, but it needs to change the logics
of clist_fopen, clist_fclose with allocating an
auxiliary structure. We would like to make this improvement 
as a separate patch in order to simplify the
regression testing and debugging.

</pre>
<p>[src/gxclmem.c src/gxpageq.c src/lib.mak src/gxclfile.c src/gxclist.c src/gxclmem.h src/gxpageq.h src/gxclist.h src/gdevprn.c src/gdevprna.c src/gxband.h src/gxclread.c src/gxclio.h src/gxclpage.c src/gxclutil.c]</p>
</blockquote>

<p><strong><a name="2007-04-09T031838.528054Z"></a>
2007-04-09T03:18:38.528054Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Remove unused static rendering procedures for 16-bit samples identical to the
corresponding 12-bit procedures. Fix bug 687399.

</pre>
<p>[src/gxi16bit.c]</p>
</blockquote>

<p><strong><a name="2007-04-08T184558.681482Z"></a>
2007-04-08T18:45:58.681482Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make annotation handler more robust. Ignore annotations without /Subtype
entry and issue a warning.

</pre>
<p>[lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2007-04-08T182338.107786Z"></a>
2007-04-08T18:23:38.107786Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Increase the size of %stdin buffer to support larger lookahead requests and
look for for %PDF- tag in the first 1024 bytes of the file. Fix bug 687125,

</pre>
<p>[lib/pdf_main.ps lib/pdf_base.ps src/ziodevs.c src/ziodevsc.c]</p>
</blockquote>

<p><strong><a name="2007-04-08T175540.402009Z"></a>
2007-04-08T17:55:40.402009Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Improving assignments.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-04-07T200746.466482Z"></a>
2007-04-07T20:07:46.466482Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add missing calls needed to properly send data to the printer on
Windows. Thanks to Luke Bakken for this fix. Bug 687250.

DETAILS:

Tested on Windows XP, built with MSVC 8 (Visual Studio 2005).
As Luke writes in the bug comment #5, this patch is derived
from Microsoft documentation at:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/prntspol_93g2.asp

</pre>
<p>[src/gp_msprn.c]</p>
</blockquote>

<p><strong><a name="2007-04-07T015838.533291Z"></a>
2007-04-07T01:58:38.533291Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make the spot function in the high resolution halftone a readable procedure
to accomodate CET 29-05-01. Move Berthold K.P. Horn's copyright message into
the body of the function to keep them together at all times.

</pre>
<p>[doc/pscet_status.txt lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2007-04-06T155856.468981Z"></a>
2007-04-06T15:58:56.468981Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Following Adobe implementation don't restore the operand of --begin--
when it overflows the dictionary stack. Fix CET 20-02-02.

DETAILS:
Implement the approach suggested by L. Peter Deutsch.

- Change the check_dstack macro in dstack.h so it works the same as
  check_estack in estack.h -- i.e., if the current dstack block is full,
  call ref_stack_extend and then only return an error if
  ref_stack_extend fails.
- Change the handling of e_dictstackoverflow in interp.c so it works
  the same as e_execstackoverflow -- i.e., it doesn't try to extend the
  stack.
- Change the implementation of zbegin in zdict.c to work like
  check_dstack. I.e., if the current dstack block is full, call
  ref_stack_extend; if ref_stack_extend returns e_dictstackoverflow, pop
  the operand from the ostack before returning the error code.

With this approach, the interpreter does not have to know anything about
special handling of dictstackoverflow, and the right thing happens in
the special case of the 'begin' operator.

</pre>
<p>[doc/pscet_status.txt src/zdict.c src/dstack.h src/interp.c]</p>
</blockquote>

<p><strong><a name="2007-04-06T101736.503282Z"></a>
2007-04-06T10:17:36.503282Z leonardo</strong></p>
<blockquote>
<pre>
Fix : MSVC8 warnings.
Also replaced cumbersome type casts and fixed ambiguous naming in gxclread.c .

</pre>
<p>[src/gxwts.c src/gswts.c src/gxclread.c]</p>
</blockquote>

<p><strong><a name="2007-04-06T041748.623209Z"></a>
2007-04-06T04:17:48.623209Z Henry Stiles</strong></p>
<blockquote>
<pre>
make gdevdevn a dependency of the transparency library since it
gdevp14 now depends on it.
</pre>
<p>[src/lib.mak]</p>
</blockquote>

<p><strong><a name="2007-04-06T041132.256255Z"></a>
2007-04-06T04:11:32.256255Z Henry Stiles</strong></p>
<blockquote>
<pre>
force the wts device to always band.
</pre>
<p>[src/gdevwts.c]</p>
</blockquote>

<p><strong><a name="2007-04-06T041100.512053Z"></a>
2007-04-06T04:11:00.512053Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Accept a perfectly valid 0-length pattern stream. Work around a strange
restriction on 0-length target string in the readstring operator.
Fix bug 689162.

</pre>
<p>[lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2007-04-06T024319.702262Z"></a>
2007-04-06T02:43:19.702262Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Splitting graphics library from interpreter portion of the sample custom color callback</pre>
<p>[src/gsncdummy.c src/zncdummy.c src/gsncdummy.h]</p>
</blockquote>

<p><strong><a name="2007-04-06T023931.953398Z"></a>
2007-04-06T02:39:31.953398Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Splitting graphics library from interpreter portion of the sample custom color callback</pre>
<p>[src/lib.mak src/gsnamecl.h src/int.mak]</p>
</blockquote>

<p><strong><a name="2007-04-05T213409.306348Z"></a>
2007-04-05T21:34:09.306348Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add #ifdef protection to some new debug printouts for the OutputIntent 
parameter.
</pre>
<p>[src/gdevpbm.c]</p>
</blockquote>

<p><strong><a name="2007-04-05T173643.783101Z"></a>
2007-04-05T17:36:43.783101Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix compilation on MSVC 6. Add a best effort simulation of C99 __func__
keyword on older compilers.
</pre>
<p>[src/lib.mak src/gdevdbit.c src/gserror.h]</p>
</blockquote>

<p><strong><a name="2007-04-05T012914.432997Z"></a>
2007-04-05T01:29:14.432997Z Henry Stiles</strong></p>
<blockquote>
<pre>
fixes a UMR that was caused by a typo.
</pre>
<p>[src/gdevwts.c]</p>
</blockquote>

<p><strong><a name="2007-04-03T160849.165033Z"></a>
2007-04-03T16:08:49.165033Z Stefan Kemper</strong></p>
<blockquote>
<pre>
Committing Raph's wtsimdi device

DETAILS:

-r600 -sDEVICE=wtsimdi does a performance optimized clist reader that either directly halftones 
or uses an intermediate rgb buffer to do non-trivial ROPS correctly then post halftones 
on a per band basis.

Uses icc color profiles to convert to device color.  
Uses wts halftone algorithm.

The device reads in a link icc profile from "link.icc", and WTS
halftone files from wts_plane_[0123]. It generates a ppm file that
can be used to visualize the halftoned file (it is prepared from the
CMYK bits in the procedure write_pkmraw_row in gdevwts.c - if an
actual device is available, that routine should be modified to produce
data for the device).

  This device _does_ switch on a per-band basis between continuous
tone pathways (true branch of the "if" statement in
wtsimdi_create_buf_device) and halftone, based on whether there are
rops. That is the major point of the work.

This is not yet production ready, but is useful for performance and integration work.

Known issues:

1. Banding only, low res non-banding will crash,
the device is intended for printer resolution halftoning, at 600dpi
The halftones are designed for 600dpi.

2. Color profiles and halftone screens are not in romfs,
These need to be copied into the same object/binary directory
that the application is in for now.
./pspcl6 and ./wts_* and ./*.icc in the same directory.
Failure to find these files will crash.

3. Halftone phase not set correctly in halftone band.

4. copy_mono doesn't optimize all-0 and all-1 colors as much as it
should - it can avoid processing the screen at that point.

5. halftone mode implemented only for rgb color model, not CMYK.

6. size of band_colors_used[] array is statically determined

</pre>
<p>[src/gxwts.c src/gxclist.c src/gxdevbuf.h src/gxwts.h src/gxclist.h src/gxgetbit.h src/gdevwts.c src/gdevdbit.c src/gxbitfmt.h src/gxclread.c src/gdevpng.c src/gxclutil.c src/gxclimag.c src/gxcldev.h src/gdevppla.c src/gdevprn.c src/gdevppla.h src/gswts.c src/gdevprn.h src/gxclpath.c src/gxclrect.c]</p>
</blockquote>

<p><strong><a name="2007-04-02T223451.451596Z"></a>
2007-04-02T22:34:51.451596Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change CET 17-06-02 to AOK. Ghostscript generates correct results
at 300 dpi and above.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-04-02T214337.719440Z"></a>
2007-04-02T21:43:37.719440Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change CET 17-04-02 and 17-05-02 to AOK. Ghostscript generates correct results
at 300 dpi and above.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-04-02T182544.568365Z"></a>
2007-04-02T18:25:44.568365Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : a composite font with a Type 3 descendent and FMapType 2 (continued).

DETAILS :

Patch from SaGS with minor improvements.
Bug 688639 " pdfwrite: a composite font with a Type 3 descendent and FMapType 2".
The last patch deosn't correctly accommodate the code from SaGS.

</pre>
<p>[src/gdevpdtc.c]</p>
</blockquote>

<p><strong><a name="2007-04-01T214650.065374Z"></a>
2007-04-01T21:46:50.065374Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : a composite font with a Type 3 descendent and FMapType 2 

DETAILS :

Patch from SaGS with minor improvements.
Bug 688639 " pdfwrite: a composite font with a Type 3 descendent and FMapType 2".
See comment #13 in the bug report.

</pre>
<p>[src/gdevpdtc.c]</p>
</blockquote>

<p><strong><a name="2007-04-01T191449.835812Z"></a>
2007-04-01T19:14:49.835812Z leonardo</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Device initialization problems.

DETAILS :

Patch from SaGS with a minor improvement.
See bug 688856 comments 11,12,13 for details.

</pre>
<p>[src/gdevpdfx.h src/gdevpdfp.c src/gdevpdfd.c src/gdevpdfb.h lib/gs_pdfwr.ps]</p>
</blockquote>

<p><strong><a name="2007-04-01T182755.285455Z"></a>
2007-04-01T18:27:55.285455Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Closing 11-16-8, which appears eventually fixed; Passing 17-04-2 to Alex.	
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-04-01T073925.772162Z"></a>
2007-04-01T07:39:25.772162Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix typo that caused undefined during build.
</pre>
<p>[src/gdevrops.c]</p>
</blockquote>

<p><strong><a name="2007-04-01T070600.179365Z"></a>
2007-04-01T07:06:00.179365Z leonardo</strong></p>
<blockquote>
<pre>
Fix : MSVC warnings.

DETAILS :

The custom color callback patch was not accommodated to
the color space reference count patch.

</pre>
<p>[src/gscie.h src/gscscie.c src/gxcspace.h src/gscsepr.c src/gscspace.c src/gsicc.c src/gspcolor.c src/gscdevn.c src/gscie.c src/gscolor2.c]</p>
</blockquote>

<p><strong><a name="2007-03-29T232610.038260Z"></a>
2007-03-29T23:26:10.038260Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change CET 09-56-03 to OK. Ghostscript matches Tek360 checksum. CPSI-based
PhotoPrint product is wrong again.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-03-29T005336.234691Z"></a>
2007-03-29T00:53:36.234691Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Don't store part of the state of readhexstring in not yet written bytes
of the target string to avoid the string modification when the operator
fails and the stack is restored. Fix CET 23-20-01.

DETAILS:
Pack the state into a single 32-bit word for the convenience of reusing
the procedures that take a single integer value as a state.

DIFFERENCE:
No other CET or Comparefiles differences.
</pre>
<p>[doc/pscet_status.txt src/zfileio.c]</p>
</blockquote>

<p><strong><a name="2007-03-28T160331.220336Z"></a>
2007-03-28T16:03:31.220336Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Propagate CloseSource or CloseTarget flags to the temporary stream
created by filter_ensure_buffer(). Fix CET 23-12k-02.

DIFFERENCE:
No other CET or Comparefiles differences.
</pre>
<p>[doc/pscet_status.txt src/zfilter.c]</p>
</blockquote>

<p><strong><a name="2007-03-27T224440.516433Z"></a>
2007-03-27T22:44:40.516433Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change the status of CET 17-01-07, 17-02-06, and 17-02-07 to AOK.
Ghostscript matches Tek and Distiller 5, CPSI is wrong here.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-03-27T173951.715201Z"></a>
2007-03-27T17:39:51.715201Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make FontBBox a required attribute in CPSI compatibility mode.
PLRM says that it's a required attribute and recent Adobe interpreters
enforce this. Fix CET 15-11.

</pre>
<p>[doc/pscet_status.txt src/zchar.c]</p>
</blockquote>

<p><strong><a name="2007-03-27T025514.620042Z"></a>
2007-03-27T02:55:14.620042Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change the status of CET 11-18-6 to AOK. Adobe interpreters have obvious
rendering bugs that are hard to simulate in Ghostscript.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-03-26T003609.521618Z"></a>
2007-03-26T00:36:09.521618Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Clear a Purify warning. Fix yet another case where a non-0-terminated string
was directly used as a sscanf() argument, causing an access to the wild core.

</pre>
<p>[src/gdevpdfm.c]</p>
</blockquote>

<p><strong><a name="2007-03-25T215801.514677Z"></a>
2007-03-25T21:58:01.514677Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add a new option for ignoring an Encoding entry of a True Type font dictionary.
Work around the bug 688596.

DETAILS:
This patch provides a workaround for PDF documents that include an incorrect
Encoding entry for a True Type font dictionary. Using the new command line
option -dIgnoreTTEncoding one can force the PDF interpreter to use an encoding
specified in the 'cmap' table of embedded True Type fonts. When it is
specified, the Encoding dictionary is not tested for PDF comformity.

</pre>
<p>[lib/pdf_font.ps doc/Use.htm]</p>
</blockquote>

<p><strong><a name="2007-03-25T201659.028603Z"></a>
2007-03-25T20:16:59.028603Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Clear a Purify warning. Search for the EOD marher not earlier than
the start of the data buffer.

</pre>
<p>[src/sa85d.c]</p>
</blockquote>

<p><strong><a name="2007-03-25T174716.863668Z"></a>
2007-03-25T17:47:16.863668Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Don't check current row position in the mask of the image type 3x
when the mask is not defined. Fix an infinite loop.
Fix the bug 688912, and a part of the bug 689138.

</pre>
<p>[src/gximag3x.c]</p>
</blockquote>

<p><strong><a name="2007-03-25T144819.599692Z"></a>
2007-03-25T14:48:19.599692Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix an off-by-one error in the glyph array sorting logic detected by Purify.

</pre>
<p>[src/gxfcopy.c]</p>
</blockquote>

<p><strong><a name="2007-03-25T041856.724059Z"></a>
2007-03-25T04:18:56.724059Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Clear a Valgrind warning. Initialize a buffer overshot area in CCITTFaxDecode
filter. Bug 688905.

</pre>
<p>[src/scfd.c]</p>
</blockquote>

<p><strong><a name="2007-03-24T172822.209822Z"></a>
2007-03-24T17:28:22.209822Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Changing C++ comments to C format comments</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2007-03-24T163123.728641Z"></a>
2007-03-24T16:31:23.728641Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix C++ -style variable definition introduced by the previous commit,
which is not supported by older compilers: MSVC 6, gcc 2.96.
</pre>
<p>[src/gscspace.c]</p>
</blockquote>

<p><strong><a name="2007-03-23T135611.260385Z"></a>
2007-03-23T13:56:11.260385Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Custom color hooks code merge</pre>
<p>[src/gsimage.c src/gstext.c src/gscscie.c src/gdevtsep.c src/gxdcolor.h src/gsciemap.c src/gsicc.c src/gscdevn.c src/gscie.c lib/pdf_main.ps src/gdevdsp.c src/gdevpsd.c src/lib.mak src/gdevdflt.c src/gsncdemo.c src/gsdps1.c src/gdevdevn.c src/zusparam.c src/gxdevice.h src/gdevdevn.h src/iparam.c src/zfapi.c lib/pdf_ops.ps src/gsstate.c src/gdevp14.c src/gxclist.c src/gxcmap.c src/gsstate.h src/gdevp14.h src/ztrans.c src/gstrans.c src/gxblend.c src/gdevpbm.c src/gstrans.h src/gxclip.c src/gxblend.h src/gscspace.c src/gsnamecl.c src/gdevrops.c src/gscolor2.c src/zcolor3.c src/gdevpnga.c src/gscspace.h src/gxistate.h src/gsnamecl.h src/gsdparam.c src/gdevbbox.c src/gxclipm.c src/gxcie.h src/gdevnfwd.c src/gdevprn.c src/gspaint.c src/gscsepr.c src/gsutil.c src/gxclip2.c src/gxdevcli.h]</p>
</blockquote>

<p><strong><a name="2007-03-21T014830.497976Z"></a>
2007-03-21T01:48:30.497976Z leonardo</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter, pdfwrite) : Transparently pass unusialrenedering modes.

DETAILS :

Bug 689124 "Converting PDF to PDF makes text non-selectable"

The old code transformed a text with unusual rendering mode
into outlines.

1. When the current device is pdfwrite,
   the new code of PDF interpreter doesn't emulate 
   unusual rendering modes. (Patch from Alex).

2. pdfwrite transparently passes unusual rendering modes.

</pre>
<p>[src/gdevpdtt.c lib/pdf_ops.ps]</p>
</blockquote>

<p><strong><a name="2007-03-19T042734.509606Z"></a>
2007-03-19T04:27:34.509606Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a typo in the indexed colorspace support for the luratech JPX 
decoder.
</pre>
<p>[src/sjpx_luratech.h]</p>
</blockquote>

<p><strong><a name="2007-03-15T021309.397460Z"></a>
2007-03-15T02:13:09.397460Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Reset the dashed line array at initgraphics. Fix CET 09-28-01.

</pre>
<p>[doc/pscet_status.txt src/zgstate.c]</p>
</blockquote>

<p><strong><a name="2007-03-15T004911.591683Z"></a>
2007-03-15T00:49:11.591683Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update an additional version number.
</pre>
<p>[doc/News.htm]</p>
</blockquote>

<p><strong><a name="2007-03-15T004421.345487Z"></a>
2007-03-15T00:44:21.345487Z Ralph Giles</strong></p>
<blockquote>
<pre>
Bump the revision number after the 8.56 release.
</pre>
<p>[doc/News.htm lib/gs_init.ps src/gscdef.c src/version.mak]</p>
</blockquote>


<h2><a name="Version8.56"></a>Version 8.56 (2007-03-14)</h2>

<p>This is a stable release in the 8.5x series of Ghostscript.
It contains a numerous bug fixes and improvements. Most significantly,
comformance with the Quality Logic CET suite for Postscript has been
improved, and a special 'gs_cet.ps' prefix file can be sent with a
job to produce output closer to that of the reference implementation.

<p>This is our first release since Ghostscript 8.54. The 8.55 version
number was skipped to avoid confusion with a GNU release.

<p> The following <a href="http://bugs.ghostscript.com/">bugs</a> were
open at the time of this release: <blockquote>
226943,
405501,
430175,
465936,
493348,
530011,
535932,
578865,
592160,
610478,
614298,
626295,
686747,
686853,
686865,
687011,
687039,
687084,
687095,
687108,
687125,
687146,
687193,
687196,
687219,
687229,
687231,
687250,
687257,
687271,
687280,
687295,
687297,
687303,
687316,
687327,
687342,
687345,
687346,
687375,
687397,
687399,
687414,
687445,
687460,
687475,
687484,
687492,
687498,
687514,
687520,
687531,
687536,
687559,
687561,
687593,
687595,
687608,
687630,
687650,
687666,
687674,
687677,
687679,
687680,
687695,
687697,
687702,
687715,
687721,
687728,
687729,
687731,
687775,
687780,
687782,
687793,
687796,
687805,
687814,
687844,
687850,
687863,
687887,
687899,
687903,
687904,
687907,
687915,
687919,
687931,
687950,
687957,
687960,
687970,
687974,
687977,
687978,
687981,
687983,
687988,
688006,
688007,
688009,
688020,
688022,
688024,
688026,
688032,
688035,
688036,
688042,
688054,
688058,
688061,
688064,
688066,
688071,
688072,
688075,
688081,
688095,
688108,
688124,
688129,
688130,
688134,
688151,
688152,
688159,
688166,
688184,
688187,
688200,
688203,
688204,
688207,
688210,
688215,
688225,
688227,
688239,
688243,
688267,
688269,
688274,
688280,
688282,
688283,
688288,
688291,
688295,
688311,
688312,
688317,
688318,
688320,
688323,
688332,
688333,
688337,
688338,
688339,
688342,
688358,
688359,
688360,
688361,
688363,
688372,
688375,
688378,
688383,
688386,
688387,
688389,
688395,
688396,
688400,
688410,
688413,
688425,
688427,
688428,
688429,
688434,
688436,
688437,
688440,
688446,
688448,
688468,
688473,
688475,
688477,
688479,
688483,
688490,
688493,
688495,
688500,
688515,
688517,
688518,
688526,
688528,
688532,
688533,
688539,
688540,
688542,
688543,
688557,
688565,
688573,
688580,
688581,
688584,
688588,
688596,
688598,
688601,
688604,
688605,
688610,
688616,
688617,
688619,
688621,
688626,
688627,
688633,
688634,
688635,
688636,
688637,
688638,
688639,
688643,
688646,
688647,
688651,
688653,
688655,
688671,
688672,
688673,
688674,
688683,
688696,
688697,
688699,
688708,
688709,
688710,
688711,
688712,
688714,
688717,
688728,
688730,
688731,
688734,
688736,
688738,
688739,
688740,
688755,
688757,
688762,
688770,
688777,
688778,
688796,
688797,
688806,
688807,
688808,
688809,
688811,
688813,
688814,
688815,
688818,
688826,
688828,
688829,
688830,
688834,
688843,
688845,
688846,
688856,
688858,
688870,
688871,
688872,
688876,
688877,
688878,
688899,
688903,
688904,
688905,
688906,
688907,
688908,
688909,
688910,
688912,
688914,
688915,
688916,
688917,
688918,
688919,
688920,
688923,
688924,
688925,
688926,
688928,
688933,
688934,
688940,
688942,
688943,
688945,
688949,
688952,
688954,
688958,
688965,
688969,
688970,
688971,
688976,
688977,
688978,
688979,
688981,
688983,
688986,
688990,
688991,
688992,
688994,
688998,
688999,
689001,
689002,
689003,
689010,
689011,
689013,
689014,
689016,
689021,
689022,
689025,
689026,
689028,
689031,
689032,
689036,
689038,
689040,
689041,
689044,
689046,
689048,
689050,
689053,
689055,
689056,
689057,
689058,
689060,
689065,
689068,
689070,
689076,
689077,
689078,
689080,
689081,
689085,
689090,
689092,
689093,
689094,
689098,
689101,
689103,
689104,
689105,
689106,
689107,
689111,
689114,
689115,
689116,
689117,
689122,
689123,
689124,
689126,
689127,
689128,
689129,
689130,
689131,
689132,
689133,
689134,
689136,
689137,
689138.
</blockquote>

<h3><a name="8.56_Incompatible_changes"></a>Incompatible changes</h3>

<p>
There are no known incompatible changes at this point.

<h3><a name="8.56_changelog"></a>Changelog</h3>

<p><strong><a name="2007-03-15T000210.064485Z"></a>
2007-03-15T00:02:10.064485Z Ralph Giles</strong></p>
<blockquote>
<pre>
Handle empty log messages.
</pre>
<p>[toolbin/split_changelog.py]</p>
</blockquote>

<p><strong><a name="2007-03-14T213545.571769Z"></a>
2007-03-14T21:35:45.571769Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove romfs.dev from FEATURE_DEVS_ALL. It is no longer optional.
</pre>
<p>[src/Makefile.in]</p>
</blockquote>

<p><strong><a name="2007-03-14T211500.798517Z"></a>
2007-03-14T21:15:00.798517Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update revision, dates, and list of open bugs for release.
</pre>
<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm doc/Maintain.htm man/ps2epsi.1 doc/Install.htm src/gscdef.c doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 src/version.mak src/dwsetup.rc man/pf2afm.1 doc/Ps2ps2.htm doc/Fonts.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp doc/Htmstyle.htm man/font2c.1 man/gsnd.1 man/pdfopt.1 src/winint.mak doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Testing.htm doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm doc/History4.htm man/ps2pdfwr.1 doc/Ps2epsi.htm man/ps2ps.1 doc/History5.htm doc/History6.htm]</p>
</blockquote>

<p><strong><a name="2007-03-13T224029.048961Z"></a>
2007-03-13T22:40:29.048961Z leonardo</strong></p>
<blockquote>
<pre>
Fix (stroking) : Apply the right math for computing always_thin,

DETAILS :

The old code estimated the line width with 
an empiric formula, which doesn't look well defined.
Replacing it with a right math.
See comment in code.

</pre>
<p>[src/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2007-03-13T223551.420875Z"></a>
2007-03-13T22:35:51.420875Z leonardo</strong></p>
<blockquote>
<pre>
Fix (stroking) : Apply the right math for computing always_thin,

DETAILS :

The old code estimated the line width with 
an empiric formula, which doesn't look well defined.
Replacing it with a right math.
See comment in code.

</pre>
<p>[doc/pscet_status.txt src/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2007-03-11T204713.652729Z"></a>
2007-03-11T20:47:13.652729Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Closing 11-06-5.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-03-11T174334.501551Z"></a>
2007-03-11T17:43:34.501551Z leonardo</strong></p>
<blockquote>
<pre>
Fix (user paths) : Wrong current point after uappend closepath.

DETAILS :

The old code missed the subpath starting point after uappend.
Also removing the code for copying current point from path 
in user path operations, because gs_upmergepath now performs this job fine.

</pre>
<p>[doc/pscet_status.txt src/gspath.c src/zupath.c]</p>
</blockquote>

<p><strong><a name="2007-03-11T162911.261904Z"></a>
2007-03-11T16:29:11.261904Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Rename "ref dash_pattern" to avoid confusion with "float dash_pattern[]".
</pre>
<p>[src/zgstate.c src/igstate.h]</p>
</blockquote>

<p><strong><a name="2007-03-11T134654.105020Z"></a>
2007-03-11T13:46:54.105020Z leonardo</strong></p>
<blockquote>
<pre>
Fix : MSVC compiler warnings.

DETAILS :

The patch
http://ghostscript.com/pipermail/gs-cvs/2007-March/007345.html
is incomplete.
More const qualifiers are now removed.

</pre>
<p>[src/zimage.c src/gxiparam.h src/gxcmap.c src/iimage.h src/gximage.c src/gximage1.c src/gximage3.c src/gsipar3x.h src/gximage4.c src/gxclrast.c src/gximag3x.c src/gdevpdfi.c src/gsiparam.h src/gsiparm3.h src/gsiparm4.h]</p>
</blockquote>

<p><strong><a name="2007-03-11T091005.985706Z"></a>
2007-03-11T09:10:05.985706Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Improving assignments.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-03-09T204125.398262Z"></a>
2007-03-09T20:41:25.398262Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add a utility to dump out information about PDF files. Fix
for customer #259.

DETAILS:

This is intended as an example since most customers will want
specific info, but it also is slightly handy.

We may want to do 'pdf_info' scripts and .bat files in lib/
but these can be added later.

   usage: gs -dNODISPLAY -q -sFile=____.pdf [ options ] toolbin/pdf_info.ps

          where "options" are:
          -dDumpMediaSizes          MediaBox and CropBox for each page
          -dDumpFontsUsed           List fonts used
          -dShowEmbeddedFonts       only meaningful with -dDumpFontsUsed

Sample 'full' output looks like:


examples/annots.pdf has 6 pages.
Title: Microsoft Word - Links.doc
Author: August D. Coby
Creator: ADOBEPS4.DRV Version 4.24
Producer: Acrobat Distiller 4.0 for Windows
CreationDate: D:20000420231130Z
ModDate: D:20040413162329-07'00'

Page 1 MediaBox: [ 612 792 ] CropBox: [ 612 792 ]
Page 2 MediaBox: [ 612 792 ] CropBox: [ 612 792 ]
Page 3 MediaBox: [ 612 792 ] CropBox: [ 612 792 ]
Page 4 MediaBox: [ 612 792 ] CropBox: [ 612 792 ]
Page 5 MediaBox: [ 612 792 ] CropBox: [ 612 792 ]
Page 6 MediaBox: [ 612 792 ] CropBox: [ 612 792 ]

Fonts Used:
ArialMT
IBKJPF+ArialMT
JBAHHI+ArialMT

</pre>
<p>[toolbin/pdf_info.ps]</p>
</blockquote>

<p><strong><a name="2007-03-08T172428.272086Z"></a>
2007-03-08T17:24:28.272086Z Raph Levien</strong></p>
<blockquote>
<pre>
Remove unnecessary zeroing out of reference count of indexed color space
map structure. Eliminates warnings when run with -Z?
</pre>
<p>[src/zcsindex.c]</p>
</blockquote>

<p><strong><a name="2007-03-08T002745.225750Z"></a>
2007-03-08T00:27:45.225750Z Ray Johnston</strong></p>
<blockquote>
<pre>
Missing (yet another) dependency -- string_.h. It probably was not
a problem.
</pre>
<p>[src/int.mak]</p>
</blockquote>

<p><strong><a name="2007-03-07T212202.986768Z"></a>
2007-03-07T21:22:02.986768Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the makefile with new header dependencies added in r7198.
</pre>
<p>[src/int.mak]</p>
</blockquote>

<p><strong><a name="2007-03-07T203524.409027Z"></a>
2007-03-07T20:35:24.409027Z Stefan Kemper</strong></p>
<blockquote>
<pre>
Fix image banding error with high level images ctm.

Fixes ridt91.eps (ppmraw/300dpi/banded)
</pre>
<p>[src/gxclimag.c]</p>
</blockquote>

<p><strong><a name="2007-03-07T001253.750515Z"></a>
2007-03-07T00:12:53.750515Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Changed assignment from Igor to Tim for items marked same-as some items already marked OK.</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-03-06T214032.469232Z"></a>
2007-03-06T21:40:32.469232Z leonardo</strong></p>
<blockquote>
<pre>
Fix (Type 1 interpreter) : Account the replaced side bearing in setcurrentpoint.

DETAILS :

When the side bearing is replaced with Metrics or Metrics2,
the old code didn't account that while executing setcurrentpoint,
so that further outline poles go to wrong (unreplaced) coordinates.
Fixes CET 16-03-2.

</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-03-06T213714.025835Z"></a>
2007-03-06T21:37:14.025835Z leonardo</strong></p>
<blockquote>
<pre>
Fix (Type 1 interpreter) : Account the replaced side bearing in setcurrentpoint.

DETAILS :

When the side bearing is replaced with Metrics or Metrics2,
the old code didn't account that while executing setcurrentpoint,
so that further outline poles go to wrong (unreplaced) coordinates.
Fixes CET 16-03-2.

</pre>
<p>[src/gstype1.c src/gstype2.c src/gxtype1.c src/gxtype1.h]</p>
</blockquote>

<p><strong><a name="2007-03-06T194612.663281Z"></a>
2007-03-06T19:46:12.663281Z Ralph Giles</strong></p>
<blockquote>
<pre>
Resolve version control Id line issues flagged by the regression run.
</pre>
<p>[doc/pscet_status.txt src/gxhintn1.c doc/Testing.htm doc/Psfiles.htm lib/jobseparator.ps]</p>
</blockquote>

<p><strong><a name="2007-03-06T172458.366068Z"></a>
2007-03-06T17:24:58.366068Z leonardo</strong></p>
<blockquote>
<pre>
Fix (TT interpreter) : memory leaks with PCL (continued).

DETAILS :

The last patch doesn't compile with gcc due to a redundsnt typedef.

</pre>
<p>[src/gxttfb.c]</p>
</blockquote>

<p><strong><a name="2007-03-06T143500.233763Z"></a>
2007-03-06T14:35:00.233763Z leonardo</strong></p>
<blockquote>
<pre>
Fix (TT interpreter) : memory leaks with PCL.

DETAILS :

1. The old code created gx_ttfMemory instance per font,
   but only the first one is used. Others are leaks.
   The new code create one instance per font directory.
   The new field gs_font_dir::ttm works for that.

2. For proper lock count on memory errors, don't call Context_Destroy 
   if Context_Create was not called.

3. In ttobjs.c don't use exec-&gt;current_face for accessing ttfMemory,
   because PCL closes fonts when they are not active
   in the TT interpreter. The new field Execution_Context::memory
   works for that.  

</pre>
<p>[src/gxfcache.h src/gxttfb.c src/gsfont.c src/ttfmemd.c src/ttfmain.c src/ttobjs.c src/ttobjs.h]</p>
</blockquote>

<p><strong><a name="2007-03-05T215020.543548Z"></a>
2007-03-05T21:50:20.543548Z Raph Levien</strong></p>
<blockquote>
<pre>
Remove stray debug print that was left in previous commit (colorspace
refcount patch).
</pre>
<p>[src/gscscie.c]</p>
</blockquote>

<p><strong><a name="2007-03-05T210935.951840Z"></a>
2007-03-05T21:09:35.951840Z Raph Levien</strong></p>
<blockquote>
<pre>
Non-backwards compatible change: use consistent reference count allocation
discipline for color spaces. Previously, color spaces were allocated on
stack, on the heap, as sub-structures within other color space structures,
and were very commonly copied. Reference counting was used for the "params"
block of some, but not all, color spaces, but there were correctness
problems with that logic.

In addition, a number of "const" qualifiers have been removed, because
the action of bumping the reference count on an object is not consistent
with the C semantics of const.

This change is required to resolve problems with enhancement 688924. It
should also help with memory leaks.

Other clients, such as the PCL interpreter, will require changes to be
compatible. For simple device colorspaces, the change to gs_setcmykcolor()
(gscolor1.c) is representative of the code change required.
</pre>
<p>[src/gsimage.c src/zimage.c src/zshade.c src/gslibctx.c src/gscscie.c src/gdevpdfb.c src/gdevpdfc.c src/gdevpdfg.c src/gxclrast.c src/zpcolor.c src/zicc.c src/gspcolor.c src/gdevps.c src/gdevpdfi.c src/gsicc.c src/gscdevn.c src/zcssepr.c src/gdevpdfk.c src/zcie.c src/gdevpdfg.h src/lib.mak src/gsicc.h src/gscdevn.h src/zcspixel.c src/gsrefct.h src/gdevpsdi.c src/gdevpdfv.c src/zcolor.c src/gscolor.c src/gsiparam.h src/gxshade6.c src/gscssub.c src/gdevp14.c src/gsstate.c src/gxclpath.c src/gsptype1.c src/zcsdevn.c src/gscpixel.c src/gxcmap.c src/gsptype1.h src/icsmap.h src/gsistate.c src/gscpixel.h src/gxshade.c src/gximag3x.c src/zcsindex.c src/gscspace.c src/gscolor1.c src/gscolor2.c src/zcolor2.c src/gscolor3.c src/gscspace.h src/gxistate.h src/gscolor2.h src/gxpcmap.c src/gxcspace.h src/gxcdevn.h src/gxcolor2.h src/gscsepr.c src/gscindex.h src/gscsepr.h]</p>
</blockquote>

<p><strong><a name="2007-03-05T171251.517731Z"></a>
2007-03-05T17:12:51.517731Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Reassinged shading issues to Igor</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-03-05T053038.914444Z"></a>
2007-03-05T05:30:38.914444Z Raph Levien</strong></p>
<blockquote>
<pre>
Make sure that memory for jpeg_decompress_data gets allocated from the
same memory as the stream structure that owns it. Previously, the
stream structure would be allocated in global, and the jddp in stable
local, which is a violation of GC invariants. Fixes bug 689118, which
was a GC crash in the regression file H00216q.pdf.
</pre>
<p>[src/zfdctd.c]</p>
</blockquote>

<p><strong><a name="2007-03-04T213128.032123Z"></a>
2007-03-04T21:31:28.032123Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Closing 11-24-3 .
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-03-04T182504.375026Z"></a>
2007-03-04T18:25:04.375026Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix X mirroring for all color modes of the interpolated image.
The mirroring was missing from non 8 bits/colorant modes resulting
in the mirrored output images.

</pre>
<p>[src/gxiscale.c]</p>
</blockquote>

<p><strong><a name="2007-03-04T170825.140696Z"></a>
2007-03-04T17:08:25.140696Z leonardo</strong></p>
<blockquote>
<pre>
Fix (user paths) : Remove the uneven behavior with uappend.

DETAILS :

1. uappend was fixed to ignore the incorrfect placement of ucache 
   in the CPSI compatibility mode. 
   However in contradiction to other user path operators,
   CPSI has no uneven behavior with uappend, 
   so changing upath back to the regular behavior.

2. Don't change current point if uappend fails.
   Likely it was an inaccuracy in a recent patch.

3. Change other user path assignment for more efficiency.

</pre>
<p>[doc/pscet_status.txt src/zupath.c]</p>
</blockquote>

<p><strong><a name="2007-03-04T164100.611078Z"></a>
2007-03-04T16:41:00.611078Z Ray Johnston</strong></p>
<blockquote>
<pre>
Free up any previous line_ptrs in a memory (image) device before
allocating new ones. This allows multiple calls to setup_buf_device
without leaking memory (as seen with the PCL allocator that does
not have garbage collection).
</pre>
<p>[src/gdevprn.c]</p>
</blockquote>

<p><strong><a name="2007-03-04T163732.768972Z"></a>
2007-03-04T16:37:32.768972Z Ray Johnston</strong></p>
<blockquote>
<pre>
The index file should not be compressed. It is small, and if it ever did
get compressed, it would SEVERELY impact performance since the entire
list gets processed on every band.
</pre>
<p>[src/gxclist.c]</p>
</blockquote>

<p><strong><a name="2007-03-03T035156.270202Z"></a>
2007-03-03T03:51:56.270202Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a stack nix-up that occured when cm operator was used inside BT/ET block.
Bug 688985, customer 580.

</pre>
<p>[lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2007-03-02T055500.252985Z"></a>
2007-03-02T05:55:00.252985Z Henry Stiles</strong></p>
<blockquote>
<pre>
accommodate parsing of undocumented color treatments (689100) which
appear to have no effect.
</pre>
<p>[src/gdevpxen.h]</p>
</blockquote>

<p><strong><a name="2007-03-01T201709.177569Z"></a>
2007-03-01T20:17:09.177569Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Handle a text with degenerate CTM.

DETAILS :

The old code failed with undefinedresult when writing
a text to output with degenerate CTM. 
The new code writes it somehow to provide searchability.
See comment in code.
Such text is not visible in rendering.
We don't care about 'Tj' optimization
because such cases are rare.

</pre>
<p>[src/devs.mak]</p>
</blockquote>

<p><strong><a name="2007-03-01T201549.273788Z"></a>
2007-03-01T20:15:49.273788Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Handle a text with degenerate CTM.

DETAILS :

The old code failed with undefinedresult when writing
a text to output with degenerate CTM. 
The new code writes it somehow to provide searchability.
See comment in code.
Such text is not visible in rendering.
We don't care about 'Tj' optimization
because such cases are rare.

</pre>
<p>[src/gdevpdts.c]</p>
</blockquote>

<p><strong><a name="2007-03-01T152739.443405Z"></a>
2007-03-01T15:27:39.443405Z leonardo</strong></p>
<blockquote>
<pre>
Fix (graphics) : Imprecise current point after drawing an arc (continued).

DETAILS :

The old code uses 'fixed' representation for an angle of an arc.
It appears insufficiently precise.
The new code performs the angle computations in doubles.
The patch intentionally doesn't change the algorithm. 

</pre>
<p>[doc/pscet_status.txt src/gspath1.c]</p>
</blockquote>

<p><strong><a name="2007-03-01T125010.538308Z"></a>
2007-03-01T12:50:10.538308Z leonardo</strong></p>
<blockquote>
<pre>
Fix (fuzzy.c) : An incorrect image difference format for multipage files.

DETAILS :

The old code created a single header for the image difference,
which describes the first page only. Further pages were written
with no header. 

Also the output buffer length was incorrect
when pages have different sizes. 
It caused heap corruption.

The new code creates a new file for each page difference.

</pre>
<p>[toolbin/tests/fuzzy.c]</p>
</blockquote>

<p><strong><a name="2007-03-01T022603.339465Z"></a>
2007-03-01T02:26:03.339465Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
When a chain of decoding filters encounters EOF, close the last filter in
the chain. This seems to contradict PLRM3 but matches the observed behavior
of Adobe interpreters. Bug 688745, customer 384.

DETAILS:
Contrary to PLRM3, Adobe interpreters close disk files and filters equaly.
Old Ghostscript code was inconsistant and closed the first and the last
filters in the chain, or the last 2 filters depending whether the first file
is a disk file or a filter.

</pre>
<p>[src/stream.c]</p>
</blockquote>

<p><strong><a name="2007-02-28T184949.409416Z"></a>
2007-02-28T18:49:49.409416Z leonardo</strong></p>
<blockquote>
<pre>
Fix (fuzzy.c) : Multipage files processed incorrectly.

DETAILS :

When ppmraw writes several pages into a single file, it places a header before 
each image data. The old fuzzy.c does not expect headers, and reads headers as image data. 
This change provodes parsing an own header for each page.

</pre>
<p>[toolbin/tests/fuzzy.c]</p>
</blockquote>

<p><strong><a name="2007-02-28T170328.849858Z"></a>
2007-02-28T17:03:28.849858Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Validate arguments of the operator startjob. Fix CET 31-10-02.

</pre>
<p>[doc/pscet_status.txt lib/gs_lev2.ps]</p>
</blockquote>

<p><strong><a name="2007-02-27T211108.978663Z"></a>
2007-02-27T21:11:08.978663Z leonardo</strong></p>
<blockquote>
<pre>
Fix (graphics) : Imprecise current point after drawing an arc.

DETAILS :

1. gs_arc_add_inline took current point from fixed point coords in path. 
   Implementing PRECISE_CURRENTPOINT for it.

2. gs_imager_arc_add made private because it changes the interface
   and none of our interpreters call it.

3. pis-&gt;subpath_start is set from arc if a path starts with an arc.

</pre>
<p>[doc/pscet_status.txt src/gspath1.c src/gspath.h]</p>
</blockquote>

<p><strong><a name="2007-02-26T162417.305323Z"></a>
2007-02-26T16:24:17.305323Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix indeterministic behavior of fuzzy.c with -w &gt; 1. Initialize the rest of
the window buffer that would be uninitialized before half_win lines is read.
</pre>
<p>[toolbin/tests/fuzzy.c]</p>
</blockquote>

<p><strong><a name="2007-02-25T204603.985068Z"></a>
2007-02-25T20:46:03.985068Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Set upper font cache limit to 1e8 bytes in CPSI compatibility mode.
Fix CET 27-02-01.

</pre>
<p>[doc/pscet_status.txt src/gsfont.c]</p>
</blockquote>

<p><strong><a name="2007-02-25T192644.964185Z"></a>
2007-02-25T19:26:44.964185Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix MSVC-specific code added to fuzzy.c in the rev. 7743.
</pre>
<p>[toolbin/tests/fuzzy.c]</p>
</blockquote>

<p><strong><a name="2007-02-25T191316.641987Z"></a>
2007-02-25T19:13:16.641987Z Stefan Kemper</strong></p>
<blockquote>
<pre>
Banding fix where triangles where incorrectly detected and rendered
as parallelograms when rendering out of the clist.  Triangles are only used
to fill bevel joins so this occurs infrequently, and the use of fuzzy 
comparisons will hide all but the largest stroke width errors.  

Corrects many pcl CET banding/nobanding differences:
28-01 
28-02
28-03
28-04
28-05
28-06
28-07
28-10
29-01		   
29-02
29-08
29-10
29-11
30-01
30-04
30-16
30-19
30-23
31-01
31-02
31-03
31-04
31-05
31-06
31-07
31-08
31-09
31-10
31-11
32-01
32-02
34-03
36-04
36-05

</pre>
<p>[src/gxclrast.c]</p>
</blockquote>

<p><strong><a name="2007-02-25T135808.233607Z"></a>
2007-02-25T13:58:08.233607Z leonardo</strong></p>
<blockquote>
<pre>
Fix (fuzzy.c) : Further improvements.

DETAILS :

1. The old code read past EOF.
   It happens because the EOF condition doesn't appear when reading
   the last byte of a page, which is the last byte of the file.
   Actually EOF happens when attempting to read bytes after the last
   byte of a page. It caused the old code to think that an extra
   page presents at file end, and to perform a dummy comparizon of the extra page
   as it would appear with repeating the last raw of the file.
   Due to that the old code consumes nearly twice CPU time than neccesary.
   Fixed with comparing the file position with the file legth in image_pnm_feof.

2. image_get_rgb_scan_line didn't return an error code when
   insufficient data presents in the file.

3. Optimized fuzzy_diff_images with using memcmp for
   a faster comparizon of rows. Skip the heavy analyzis of differences
   when entire rows are equal.

</pre>
<p>[toolbin/tests/fuzzy.c]</p>
</blockquote>

<p><strong><a name="2007-02-25T050647.526811Z"></a>
2007-02-25T05:06:47.526811Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Clean up pscet_status.txt and add comments to a few entries.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-25T020912.060125Z"></a>
2007-02-25T02:09:12.060125Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
In Level 3, operator setscreen takes the value of AccurateScreens from the user
parameter even with the dictionary argument. PLRM p682. Partly fix CET 09-49-02

</pre>
<p>[doc/pscet_status.txt lib/gs_dps2.ps]</p>
</blockquote>

<p><strong><a name="2007-02-24T153248.711895Z"></a>
2007-02-24T15:32:48.711895Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Set /errorinfo to null in the error handler when it undefined.
Fix missing 'null' in CET 09-47c and 09-47j.

</pre>
<p>[doc/pscet_status.txt lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2007-02-23T230323.452670Z"></a>
2007-02-23T23:03:23.452670Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix memory leak (PCL) due to extra gstate creation. PS did not leak thanks
to the Garbage Collector.

DETAILS:

If a pattern PaintProc did a gsave/grestore the grestore would detect that
the base graphics state did not have an underlying 'saved' graphics state
and would create one (due to the need for PostScript to always have two
graphics states on this graphics state stack/list). When gx_pattern_load
freed the graphics state it created, the (possible) underlying graphics
state would not get freed. Since the PostScript allocator (that supported
garbage collection) would locate and free the unconnected graphics state
this was not seen with PostScript.

The gs_state_free_chain function was created in case there are other clients
that need this function (pdfwrite ?)

</pre>
<p>[src/gsstate.h src/gxpcmap.c src/gsstate.c]</p>
</blockquote>

<p><strong><a name="2007-02-23T220537.560889Z"></a>
2007-02-23T22:05:37.560889Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use stricter validation of the pattern dictionary parameters to
match CET 18-02c and 18-02d.

DETAILS:
In particular, don't accept the degenerative matrix, unnormalized, or empty
bounding box. The difference in the operand stack in CET 18-02c is not yet
fixed. Adobe doesn't restore operands of rectfill operator when an error
happen in the PaintProc procedure but Ghostscript does.

</pre>
<p>[doc/pscet_status.txt lib/gs_lev2.ps src/zpcolor.c lib/pdf_ops.ps]</p>
</blockquote>

<p><strong><a name="2007-02-23T183239.440312Z"></a>
2007-02-23T18:32:39.440312Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Changed status to AOK for 09-47B-11 Test05 and Test06</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-23T173115.655333Z"></a>
2007-02-23T17:31:15.655333Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Changed status to AOK for 09-47B-11 Test10 and Test11</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-23T170407.479609Z"></a>
2007-02-23T17:04:07.479609Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Changed status to AOK for 09-47B-10 Test10 and Test11</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-23T132937.822169Z"></a>
2007-02-23T13:29:37.822169Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Changes the 'token' operator so it does not pop the operand on an
invalidaccess error, for Adobe compatibility.
</pre>
<p>[src/ztoken.c]</p>
</blockquote>

<p><strong><a name="2007-02-22T153915.380404Z"></a>
2007-02-22T15:39:15.380404Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Set bottom limit of 100000 on the font cache size in the compatibility
mode to match Adobe interpreters.  Partial fox for CET 27-07-01.

</pre>
<p>[doc/pscet_status.txt src/gsfont.c]</p>
</blockquote>

<p><strong><a name="2007-02-22T031049.737762Z"></a>
2007-02-22T03:10:49.737762Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Don't include systemdict, globaldict, and userdict into the array of
dictionaries that is pushed to the operand stack on dictstackoverflow.
Partly fix CET 20-02-02.

</pre>
<p>[doc/pscet_status.txt src/interp.c]</p>
</blockquote>

<p><strong><a name="2007-02-22T003953.016232Z"></a>
2007-02-22T00:39:53.016232Z Ray Johnston</strong></p>
<blockquote>
<pre>
Previous CPSI_PPM files had been run with a (bogus) RenderingIntent
ProcSet in force that (among other things) redefined the 'show' op
as a procedure. This ProcSet appears to be a method to use different
color matching depending on the type of imaging operation (fill, stroke,
show, image, shfill).

The casper.ghostscript.com:/home/ray/PSLL3/CPSI_PPM directory is now
updated with the results obtained when the RenderingIntent ProcSet is
disabled. The interesting thing is that many pages that CPSI previously
could not render now work (some that did render now do not) and that
GS now matches several more files than previously. 

The status indicates "OK" where GS matches CPSI (close enough) and
removes the 'cpsi missing' where we now have CPSI results available.
Some pages are changed to "DIFF" status and assigned, indicating that
a fix (or an intelligent review) is needed.

Please email me with any questions.

</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-21T221653.963317Z"></a>
2007-02-21T22:16:53.963317Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change the parameter validation order in execstack to match CET 20-03.

</pre>
<p>[doc/pscet_status.txt src/zcontrol.c]</p>
</blockquote>

<p><strong><a name="2007-02-21T202445.557583Z"></a>
2007-02-21T20:24:45.557583Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix regression on 124-01.ps. Emulate bizarre Adobe behavior so that the
procedure operand of a 'for' is not executed when BOTH the initial value
and the increment are 0 (or 0.0). Seen with CET 28-07 and FTS 124-01
and verified with custom test file against CPSI.

EXPETECTED DIFFERENCES:

None (this time).
</pre>
<p>[src/zcontrol.c]</p>
</blockquote>

<p><strong><a name="2007-02-21T150242.033266Z"></a>
2007-02-21T15:02:42.033266Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for language_switch build 'invalidrestore. Allow filter allocation in
systemVM as needed by .runstring and .runstringbegin in gs_init.ps. This 
fixes problem intoduced by rev 7629.

EXPECTED DIFFERENCES.

None. Note that CET 23-12W that was fixed with rev 7629 is OK with this
change since the 'use_space' is not limited by 'save_space'.
</pre>
<p>[src/zfilter.c]</p>
</blockquote>

<p><strong><a name="2007-02-21T144350.287589Z"></a>
2007-02-21T14:43:50.287589Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make redefined /quit a procedure to match CET 28-10-01.

</pre>
<p>[doc/pscet_status.txt lib/gs_lev2.ps]</p>
</blockquote>

<p><strong><a name="2007-02-21T011419.825556Z"></a>
2007-02-21T01:14:19.825556Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Reclassify CET 23-12W-4 as OK. 
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-21T001624.688423Z"></a>
2007-02-21T00:16:24.688423Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix CET 28-05-2, Adobe CPSI and Tek do not execute procedure if increment
value is 0. The PLRM does not mention increment value == 0.

EXPECTED DIFFERENCES.

None.
</pre>
<p>[doc/pscet_status.txt src/zcontrol.c]</p>
</blockquote>

<p><strong><a name="2007-02-20T235419.102684Z"></a>
2007-02-20T23:54:19.102684Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Require resource category to be a name in the findresource operator.
Convert 1st operand to a name if it's a string. Fix CET 23-13-04.

</pre>
<p>[doc/pscet_status.txt lib/gs_res.ps]</p>
</blockquote>

<p><strong><a name="2007-02-20T233519.366880Z"></a>
2007-02-20T23:35:19.366880Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix CET 20-23-01 - undefine /deviceinfo from systemdict in gs_cet.ps

</pre>
<p>[doc/pscet_status.txt lib/gs_cet.ps]</p>
</blockquote>

<p><strong><a name="2007-02-20T205455.794850Z"></a>
2007-02-20T20:54:55.794850Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Reclassify 20-27-1 as AOK. Contents of &#36;error is device-dependent.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-20T193826.900624Z"></a>
2007-02-20T19:38:26.900624Z Ralph Giles</strong></p>
<blockquote>
<pre>
Minor modifications to the parallel job launch script. Take an -r option 
to mark the report with a revision number, and add more stats to the 
output.
</pre>
<p>[toolbin/tests/run_parallel]</p>
</blockquote>

<p><strong><a name="2007-02-20T192510.472981Z"></a>
2007-02-20T19:25:10.472981Z Ray Johnston</strong></p>
<blockquote>
<pre>
Update comments on some pages and change some assignments to Alex that
are error message differences. Two more pages resolved.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-20T164021.043788Z"></a>
2007-02-20T16:40:21.043788Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Changed status to OK for 09-47I-3 Test11</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-20T162541.041973Z"></a>
2007-02-20T16:25:41.041973Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Editing change for 09-47B-7, Test01 and Test02</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-20T162339.231043Z"></a>
2007-02-20T16:23:39.231043Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Changed status to AOK for 09-47B-7, Test01 and Test02</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-20T035536.436290Z"></a>
2007-02-20T03:55:36.436290Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix CET 29-02 - increment page count after copypage operation.

</pre>
<p>[doc/pscet_status.txt lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2007-02-19T202208.118775Z"></a>
2007-02-19T20:22:08.118775Z Stefan Kemper</strong></p>
<blockquote>
<pre>
Fix for banding of some images not matching non-banding output.
Added check for an invariant that the translation matches in the 
two matrixes used in rendering.  In this case the non-high level image
path is taken.  A better solution would be to a single matrix, as this will
increase the display list size for some files.

Fixes banding differences in:

035-01.ps
148-11.ps
148.16.ps
1_2001.pdf
455690.pdf
Bug687832.pdf
Bug687840.pdf
a.pdf
adesso4.pdf
bc_02a01_cal.pdf
dave.pdf
file2.pdf
foo.pdf
john_clippedimage.pdf
messenger.pdf
messenger16.pdf
ngnews1.pdf
rotate180.pdf
rotate270.pdf
rotate90.pdf

pcl5ccet/15-03.BIN + ufst
  
</pre>
<p>[src/gxclimag.c]</p>
</blockquote>

<p><strong><a name="2007-02-19T061613.609799Z"></a>
2007-02-19T06:16:13.609799Z Ray Johnston</strong></p>
<blockquote>
<pre>
Change 35_all-6 to OK since regression testing shows that it is now OK.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-19T031941.021316Z"></a>
2007-02-19T03:19:41.021316Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Move redefinition of product, version, revision, and serialnumber in CET
prologue from userdict to systemdict to meet CET 20-15-01.

</pre>
<p>[doc/pscet_status.txt lib/gs_cet.ps]</p>
</blockquote>

<p><strong><a name="2007-02-19T003804.570312Z"></a>
2007-02-19T00:38:04.570312Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Reproduce the algorithm used by Adobe to grow the dictionary
to match CET 20-01-01.

</pre>
<p>[doc/pscet_status.txt src/idict.c]</p>
</blockquote>

<p><strong><a name="2007-02-17T155551.631627Z"></a>
2007-02-17T15:55:51.631627Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Reclassify 20-25-01 as OK because it matches Tek and PhotoPrint is
clearly wrong here.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-17T141409.648281Z"></a>
2007-02-17T14:14:09.648281Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Throw /invalidfont error when glyph 0 is accessed but it is missing from
the type 32 font,

DETAILS:
CET 35_all-12 checks, among other things, how glyphshow operator handles
type 32 fonts without glyph 0. This patch add a check to the BuildGlyph
procedure of type 32 font for the missing 0 glyph that throws /invalidfont
error. The offending command name is retrieved from the text enumeration
structure using a new operator: .getshowoperator

</pre>
<p>[doc/pscet_status.txt src/zcharx.c src/int.mak src/zfont32.c lib/gs_typ32.ps]</p>
</blockquote>

<p><strong><a name="2007-02-16T204010.924118Z"></a>
2007-02-16T20:40:10.924118Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Improving some assignments.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-16T194605.775757Z"></a>
2007-02-16T19:46:05.775757Z Henry Stiles</strong></p>
<blockquote>
<pre>
assign unassigned problems.  Add NF category.  NF means "not fixing"
in the near term.  It should be used if we don't have short term plans
to fix a problem.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-16T190803.918575Z"></a>
2007-02-16T19:08:03.918575Z Ralph Giles</strong></p>
<blockquote>
<pre>
Improve the encapsulation of the raster db by adding exists() and 
mtime() methods instead of checking the stored files directly in
the caller.
</pre>
<p>[toolbin/tests/rasterdb.py toolbin/tests/gscheck_raster.py toolbin/tests/gscheck_pdfwrite.py]</p>
</blockquote>

<p><strong><a name="2007-02-16T152749.350851Z"></a>
2007-02-16T15:27:49.350851Z leonardo</strong></p>
<blockquote>
<pre>
Fix (stroking) : An imprecise miter limit check. Thanks to
Ray Johnston for analyzing this problem and identifying the type
of fix.

DETAILS :

The old code used cap points for computing the miter tangent.
However cap points do not precisely represent the stroke direction
due a rounding to 'fixed'.

The new code uses the precise stroke direction. The new field
partial_line::vector is used to pass the direction for zero length
dashes.

</pre>
<p>[doc/pscet_status.txt src/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2007-02-16T132542.400099Z"></a>
2007-02-16T13:25:42.400099Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix error reporting in CET 35_all-06. Add font type 32 to the check for CIDFont
resources, which was missing from the rev. 7574 patch. 

</pre>
<p>[doc/pscet_status.txt src/zchar.c]</p>
</blockquote>

<p><strong><a name="2007-02-16T074407.172841Z"></a>
2007-02-16T07:44:07.172841Z leonardo</strong></p>
<blockquote>
<pre>
Fix (type 1 hinter) : An inaccurate estimation of matrix precision.

DETAILS :

The old code doesn't account the Y scale due to a misprint.
It is risky of a fixed overflow while transforming a glyph
to the device space. We didn't detect such glitches in practice.

</pre>
<p>[src/gxhintn.c]</p>
</blockquote>

<p><strong><a name="2007-02-15T105850.217005Z"></a>
2007-02-15T10:58:50.217005Z Ralph Giles</strong></p>
<blockquote>
<pre>
Further atomicize the output of the test result lines.
</pre>
<p>[toolbin/tests/gstestutils.py]</p>
</blockquote>

<p><strong><a name="2007-02-15T075950.909402Z"></a>
2007-02-15T07:59:50.909402Z leonardo</strong></p>
<blockquote>
<pre>
Fix (type 1 hinter) : An improvement for very small matrices.

DETAILS :

Debugged with this :

/Courier findfont 0.000000000000000000000000000000001 scalefont setfont
72 72 moveto
(ASDFGGH) show
showpage

In fraction_matrix__set the old code computed this-&gt;bitshift = 137,
and then 

	this-&gt;denominator = 1 &lt;&lt; this-&gt;bitshift 
	
gave a nonsnse result 512. 
Here is the assembler code for the latter statement built with MSVC8 :

	mov         ecx,dword ptr [eax+14h] 
	shl         edx,cl 

It simply drops higher bytes.
Looks as MSVC compiler bug.

The new code replaces it with strong zero.

</pre>
<p>[src/gxhintn.c]</p>
</blockquote>

<p><strong><a name="2007-02-15T034327.194732Z"></a>
2007-02-15T03:43:27.194732Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Clear the current point in strokepath operator when the original path is empty
to match CET 11-21-07 and 11-28-09.

</pre>
<p>[doc/pscet_status.txt src/gspaint.c]</p>
</blockquote>

<p><strong><a name="2007-02-14T204743.847581Z"></a>
2007-02-14T20:47:43.847581Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Consider 18-02G-1 as a possible duplicate of 12-01-5.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-14T182343.641152Z"></a>
2007-02-14T18:23:43.641152Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Avoid large memory allocation that can happen when random data are recognized
as a binary object sequence. Add a preliminary syntax check before allocation
of a reference array for a binary object sequence. Bug 688833, customer 1130.

</pre>
<p>[src/iscanbin.c]</p>
</blockquote>

<p><strong><a name="2007-02-14T181939.165881Z"></a>
2007-02-14T18:19:39.165881Z Ralph Giles</strong></p>
<blockquote>
<pre>
Updates the the parallel regression running. Construct a report out of 
the log dump, and add a commandline option to run make_testdb instead of 
run_regression.
</pre>
<p>[toolbin/tests/run_parallel]</p>
</blockquote>

<p><strong><a name="2007-02-14T173105.436990Z"></a>
2007-02-14T17:31:05.436990Z Henry Stiles</strong></p>
<blockquote>
<pre>
Add analysis from Jan that might be useful in addressing 12-01-05.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-13T214437.122483Z"></a>
2007-02-13T21:44:37.122483Z leonardo</strong></p>
<blockquote>
<pre>
Fix (type 1 hinter) : Consider quazi-degenerate CMT as degenerate.

DETAILS :

This improvement is done for PCL tests 18-08.BIN, 18-09.BIN .

</pre>
<p>[src/gxhintn.c]</p>
</blockquote>

<p><strong><a name="2007-02-12T201244.367608Z"></a>
2007-02-12T20:12:44.367608Z Timothy Osborn</strong></p>
<blockquote>
<pre>
Changed status to AOK for 09-34-2, 09-34-3, 09-34-7, 09-34-12, 09-34-15, 12-02-18, 12-05-3, 12-07B-10</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-12T140650.930532Z"></a>
2007-02-12T14:06:50.930532Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change the order of allocations because alloc_save_change_alloc() leaves
alloc_change_t structure it allocates in the state that causes SEGV in GC
if where member is not initialized. Bug 688833, customer 1130.

DETAILS:
Allocation of alloc_change_t structure without further initialization happened
when allocation of a new run of references failed. The latter may be easily
triggered by interpretation of random bytes as a binary object sequence.

</pre>
<p>[src/ialloc.c]</p>
</blockquote>

<p><strong><a name="2007-02-12T120252.582461Z"></a>
2007-02-12T12:02:52.582461Z leonardo</strong></p>
<blockquote>
<pre>
Fix (interpreter) : Must not remove cshow, kshow procedure operands.

DETAILS :

This improvement is done for CET 13-12-4.

</pre>
<p>[doc/pscet_status.txt src/zchar.c]</p>
</blockquote>

<p><strong><a name="2007-02-12T082832.685785Z"></a>
2007-02-12T08:28:32.685785Z leonardo</strong></p>
<blockquote>
<pre>
Fix (interpreter) : Provide a right execution stack on *show errors.

DETAILS :

This improvement is done for CET 13-12-4.
The old code left --%op_show_continue-- on estack when error occors in kshow.

The new code defines a nes field gs_tect_enum_s::enum_client_data,
which stores the initial operator. If an error happens,
op_show_restore puts the initial operator on estack
instead the continuation operator.

Left hand type casts :

	*(op_proc_t *)&amp;penum-&gt;enum_client_data = zshow

used to quiet MSVC compiler warnings about function&lt;--&gt;data casts.

</pre>
<p>[src/gstext.c src/zchar.c src/gxtext.h]</p>
</blockquote>

<p><strong><a name="2007-02-11T094531.388669Z"></a>
2007-02-11T09:45:31.388669Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Improving some inaccurate assignments.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-11T090004.714548Z"></a>
2007-02-11T09:00:04.714548Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Taking text/character rendering problems 11-07-1, 16-03-2, 16-03-3 .
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-09T165636.182205Z"></a>
2007-02-09T16:56:36.182205Z Stefan Kemper</strong></p>
<blockquote>
<pre>
Fix logic expression error preventing -dLeadingEdge=[2,3] from running.
</pre>
<p>[src/gsdparam.c]</p>
</blockquote>

<p><strong><a name="2007-02-08T210722.862698Z"></a>
2007-02-08T21:07:22.862698Z leonardo</strong></p>
<blockquote>
<pre>
Fix (interpreter) : Early check for degenerate CTM in 'kshow'.

DETAILS :

Debugged with CET 13-12-4.
Note here we don't fix all *show operators,
but provide a minimal change for CPSI compatibility against CET tests
(gstext.c).

Minor change : a misspelled comment in gxchar.c .

</pre>
<p>[src/gxchar.c src/gstext.c]</p>
</blockquote>

<p><strong><a name="2007-02-08T133356.049298Z"></a>
2007-02-08T13:33:56.049298Z leonardo</strong></p>
<blockquote>
<pre>
Fix (interpreter) : 'noaccess' must be idempotential operator.

DETAILS :

Debugged with CET 24-09-1.

Also removing an obsolete comment.

Occasionally discovered a regression with 20-15-1.

</pre>
<p>[doc/pscet_status.txt src/ztype.c]</p>
</blockquote>

<p><strong><a name="2007-02-07T214246.099570Z"></a>
2007-02-07T21:42:46.099570Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Check the content of the /Encoding array when the font is created
to detect invalid fonts early and match CET test 16-04-01.

</pre>
<p>[doc/pscet_status.txt src/zbfont.c]</p>
</blockquote>

<p><strong><a name="2007-02-07T171923.733270Z"></a>
2007-02-07T17:19:23.733270Z leonardo</strong></p>
<blockquote>
<pre>
Fix (interpreter) : 'definefont', 'show', 'setcachedevice' error inconformity (continued).

DETAILS :

The previous patch has been committed from a wrong revision of ztype.c.

</pre>
<p>[src/ztype.c]</p>
</blockquote>

<p><strong><a name="2007-02-07T164443.843090Z"></a>
2007-02-07T16:44:43.843090Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Taking 13-12-4 because I fixed a similar problem.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-07T163026.521710Z"></a>
2007-02-07T16:30:26.521710Z leonardo</strong></p>
<blockquote>
<pre>
Fix (interpreter) : 'definefont', 'show', 'setcachedevice' error inconformity.

DETAILS :

1. The old code throws different errors than CPSI 
   when a FontMatrix is zero (gstext.c, gxchar.c).

2. With CPSI 'noaccess' trows 'invalidaccess' with read-only dictionaries (ztype.c).

3. 'definefont' must return a read-only object (see PLRM) (gs_fonts.ps).

Debugged with CET 13-13-6, 13-15-3.

</pre>
<p>[doc/pscet_status.txt src/gxchar.c src/gstext.c lib/gs_fonts.ps src/ztype.c]</p>
</blockquote>

<p><strong><a name="2007-02-07T093944.364923Z"></a>
2007-02-07T09:39:44.364923Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Restoring 09-36-5 as it was in rev 7617.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-07T093056.041828Z"></a>
2007-02-07T09:30:56.041828Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Restoring 09-36-5 as it was in rev 7617.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-06T110748.194380Z"></a>
2007-02-06T11:07:48.194380Z leonardo</strong></p>
<blockquote>
<pre>
Fix (TT font loader) : Removing a dead code.

DETAILS :

This change is algorithmically eauivalent :

    &lt;00030001&gt; .findcmap {
      something1
    } {
      something2
      &lt;00010000&gt; .findcmap {
        something3
      } {
        something4
        &lt;00030001&gt; .findcmap {      %removed
          UNREACHABLE               %removed
        } {                         %removed
          somthing5
        } ifelse                    %removed
      } ifelse
    } ifelse

beacuse something* don't affect .findcmap, and the latter has no side effect .
Actually it dead a long ago.

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2007-02-06T095048.237761Z"></a>
2007-02-06T09:50:48.237761Z leonardo</strong></p>
<blockquote>
<pre>
Fix (TT font loader) : Account PDF Encoding with embedded symbolic TT fonts 
that include cmap platformID=3 specificID=1 .

DETAILS :

Bug 689083 "PDF embedded TrueType fonts display with wrong characters".

Embedded fonts have symbolic flag and Encoding entry.
In this case PDF 1.6 spec requires to ignore Encoding 
and to create a translation table based on cmap 3.0 or 1.0 .
However the test document does not provide these cmap tables,
so it falls into the "dafault" case (PDF spec 1.6 page 403) :

  "If a character cannot be mapped in any of the ways described above, 
  the results are implementation-dependent."

The old code applied AdobeGlyphList for this case.
It appears different than Acrobat 7 does.
This patch accounts the document's Encoding entry.

Thus the Adobe's implementation dependent behavior appears
to be contradicting to general Adobe's requirement for symbolic fonts.

Please note that ignoring the document's encoding
may give a wrong searchability if the document does not provide ToUnicode.
This one does provide, but we believe that's not general.

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2007-02-06T032652.252449Z"></a>
2007-02-06T03:26:52.252449Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Pad short look-up table in the Indexed color space with 0's in PDF documents
when the table comes from a stream. Bug 688987, customer 580.

DETAILS:
Adobe Acrobat 5 detects that the look-up table is short when the table is
a string, unfiltered stream, or ASCIIHexDecode'd stream. When the stream is
FlateDecode'd the length of the decoded data is ignored and the raw memory
in the buffer is used. In most cases it's 0. We pad all streams and pass
strings intact.

</pre>
<p>[lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2007-02-05T172159.005556Z"></a>
2007-02-05T17:21:59.005556Z Ray Johnston</strong></p>
<blockquote>
<pre>
One now AOK, minor cleanup on a few other comments.

</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-05T165807.399023Z"></a>
2007-02-05T16:58:07.399023Z leonardo</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : Allow 2-byte ToUnicode CMap for 1-byte fonts.

DETAILS :

Bug 689073 "conversion to PDF fails with rangecheck error".

First, the supplied test case is definitely incorrect.
because it's ToUnicode cmap defines bfchar codes,
which fall outside any code space range defined in the CMap.
Particularly there are 1-byte bfchar codes,
and codespace defines 2-byte codes only.

Second, The PDF spec 1.6. page 472 reads :
"The CMap file must contain begincodespacerange and endcodespacerange
operators that are consistent with the encoding that the font uses. 
In particular, for a simple font, the codespace must be one byte long."
The test case those operators define a 2-byte space for a simple font.

However Adobe handles this document, so we provide a tolerance
for 1-byte fonts. It appears pretty simple : don't substitute
Encoding names for codes over the Encoding length.

Note that codes over the Encoding length appear unuseful
for the test document. In same time they appear consistent 
with codespacerange, so there exist a theoretical possibility that
same CMap is used with another 2-byte font. 
Therefore we keep 2-byte codes intact.

Note that ToUnicode CMap appears unuseful for both
the original and the converted document,
because they use standard glyph names only.
Possibly Adobe don't issue an error due to that.

</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2007-02-04T161941.222295Z"></a>
2007-02-04T16:19:41.222295Z leonardo</strong></p>
<blockquote>
<pre>
Fix : MSVC doesn't implement snscanf (continued).

DETAILS :

The last revision doesn't compile with MSVC6,7, 
so this is a better one.
Patch from SaGS.

</pre>
<p>[src/gp_mswin.c]</p>
</blockquote>

<p><strong><a name="2007-02-03T133024.964773Z"></a>
2007-02-03T13:30:24.964773Z leonardo</strong></p>
<blockquote>
<pre>
Fix : MSVC doesn't implement snscanf.

DETAILS :

The revision 7672 doesn't compile with Microsoft Visual C++ 2005,
because this compiler doesn't properly define snprintf.

The function snsprintf is a part of the C standard ISO/IEC 9899:1999 (E),
so we decided to define it in the Windows platform-dependent module.
Possibly we'll need a further improvement for other Windows compilers.

Minor change : fixed an MSVC cast warning in iscan.c,
which has been introduced in revision 7672.

</pre>
<p>[src/iscan.c src/gp_mswin.c src/stdio_.h]</p>
</blockquote>

<p><strong><a name="2007-02-03T062714.527305Z"></a>
2007-02-03T06:27:14.527305Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Updates status to reflect r7672.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-02-03T062204.579686Z"></a>
2007-02-03T06:22:04.579686Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Adds an error string and error object to the token scanner state, and an
error object to interpreter contexts, to allow operators to set an arbitrary
object as the "error object" (&#36;error.command) for a PostScript error, and to
allow the token scanner in particular to set special error objects for
syntax errors.  Fixes PS3 CET 23-32-4; partially fixes 21-11-6 and 23-32-2.
</pre>
<p>[src/icontext.c src/iscan.c src/icstate.h src/interp.c src/iscan.h src/iscanbin.c src/ztoken.c]</p>
</blockquote>

<p><strong><a name="2007-02-02T202928.504740Z"></a>
2007-02-02T20:29:28.504740Z Ralph Giles</strong></p>
<blockquote>
<pre>
Turn off the strict aliasing warnings in the autoconf gcc build.

Details:

This is slightly dangerous because it can flag real problems the 
optimizer will trip over. However, Ghostscript's method of implementing 
inheritance through macro expansion in structure definitions generates 
hundreds of (not problematic) warnings because the compiler doesn't 
actually trace through to verify that the referenced members are at the 
same offset.

We cannot fix this easily without making the code much more convoluted, 
so in the interests of noticing and fixing other warnings, we've decided
to turn off this particular check.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-02-02T185409.120798Z"></a>
2007-02-02T18:54:09.120798Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Move decryption filter past /SubFileDecode filter installed by
the /resolvestream procedure and remove redundant /SubFileDecode
filter before decryption. The latter didn't handle the case when
the stream length was incorrect. Bug 688722, customer 700.

</pre>
<p>[lib/pdf_base.ps lib/pdf_sec.ps]</p>
</blockquote>

<p><strong><a name="2007-02-02T182456.631552Z"></a>
2007-02-02T18:24:56.631552Z leonardo</strong></p>
<blockquote>
<pre>
Fix (FAPI) : A wrong encoding for the font SymbolMT.

DETAILS :

Bug 689049 "ufst fonts not rendering symbol italic greek fonts".

</pre>
<p>[lib/FCOfontmap-PCLPS3 lib/FCOfontmap-PCLPS2]</p>
</blockquote>

<p><strong><a name="2007-02-02T044729.781117Z"></a>
2007-02-02T04:47:29.781117Z leonardo</strong></p>
<blockquote>
<pre>
Fix (memory management) : Make the NO_INVISIBLE_LEVELS feature be permanent.

DETAILS :

This change is algorithmically equivalent,
It removes some macros, which are not longer in use.

For details about NO_INVISIBLE_LEVELS see
http://ghostscript.com/pipermail/gs-cvs/2006-April/006467.html
Now we believe that NO_INVISIBLE_LEVELS feature 
has been tested enough (during 10 monthes) to become permanent.

Two obsolete macros alloc_restore_state_step, alloc_forget_save
are expanded and removed.

</pre>
<p>[src/isave.h src/gxalloc.h src/zvmem.c src/idosave.h src/igcref.c src/igc.c src/ialloc.c src/gsalloc.c src/isave.c]</p>
</blockquote>

<p><strong><a name="2007-02-01T194810.557550Z"></a>
2007-02-01T19:48:10.557550Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Generate unique names and create a new Charstrings entries for all
elements of the encoding array that need it. Bug 688613, customer 1110.

DETAILS:
Old code did this only for FirstChar..LastChar range. Other characters were
added when they were missing in FirstChar..LastChar and dropped otherwise.

</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2007-02-01T173759.714396Z"></a>
2007-02-01T17:37:59.714396Z leonardo</strong></p>
<blockquote>
<pre>
Fix (memory management) : Propagate error codes from mark_allocated.

DETAILS :

This change is algorithmically equivalent,
except it returns error code rather than crash
when mark_allocated detects a heap damage.

The old code implemented "assert" with emitting a segfault.
However it's not fully portable,
because some platforms may have no memory protection at all.

The core of the change is in mark_allocated.
Others just an interface changes for passing error codes.

</pre>
<p>[src/isave.h src/zvmem.c src/isave.c]</p>
</blockquote>

<p><strong><a name="2007-02-01T030658.503326Z"></a>
2007-02-01T03:06:58.503326Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Bring TrueType font recognition in .loadfontfile procedure up to
the level of resourcefont procedure in the PDF interpreter. Identify
files starting with &lt;00010000&gt;, (true), (typ1), (ttcf) as TrueType
fonts.

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2007-02-01T020925.308943Z"></a>
2007-02-01T02:09:25.308943Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change the status of 09-56-1 to AOK.  /GenericImagesetter and
/AppleMonitor are sample CRD's left in the final product by a sloppy OEM.
Ghostscript doesn't have nor need them.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-31T220234.998982Z"></a>
2007-01-31T22:02:34.998982Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
When Tf refers to an unknown resource name, use the resource name as a font
name. This fully recovers the given sample file and avoids fatal PostScript
errors in other cases. Bug 689037.

</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2007-01-31T213233.370701Z"></a>
2007-01-31T21:32:33.370701Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Updating 09-47K-5.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-31T202051.337129Z"></a>
2007-01-31T20:20:51.337129Z leonardo</strong></p>
<blockquote>
<pre>
Fix : gcc warnings.

DETAILS :

The revision 7659 change appears imperfect,
because it caused a new warning.
Thanks for Peter L. Deutsch for pointing this out.

</pre>
<p>[src/gdevpdfm.c]</p>
</blockquote>

<p><strong><a name="2007-01-31T182726.594065Z"></a>
2007-01-31T18:27:26.594065Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove -Wcast-qual since we cannot easily remove many of these 
warnings.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2007-01-31T124922.229510Z"></a>
2007-01-31T12:49:22.229510Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc warnings.

</pre>
<p>[src/gdevpdfm.c src/vdtrace.h src/gxhintn.c src/gdevpdtc.c src/gdevpsf2.c src/gsdps1.c src/gdevbit.c src/sjpx.c src/gxclrast.c src/ttinterp.c src/ttcalc.c src/gxpath.c]</p>
</blockquote>

<p><strong><a name="2007-01-31T070137.959449Z"></a>
2007-01-31T07:01:37.959449Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes a bug in the DCTDecode filter that could cause segvs (bugs 689064,
689065, 689066).  This fix parallels r3097 for DCTEncode.
</pre>
<p>[src/zfdctd.c]</p>
</blockquote>

<p><strong><a name="2007-01-31T000921.445386Z"></a>
2007-01-31T00:09:21.445386Z leonardo</strong></p>
<blockquote>
<pre>
Fix (True Type renderer) : Allow TTC format 2.

DETAILS :

Patch from Tor Andersson.

</pre>
<p>[src/ttfmain.c]</p>
</blockquote>

<p><strong><a name="2007-01-30T001634.929061Z"></a>
2007-01-30T00:16:34.929061Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Documents reduced diffs in 30-07-3 and 30-08-3 (due to -dLOCALFONTS).
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-29T105845.949654Z"></a>
2007-01-29T10:58:45.949654Z leonardo</strong></p>
<blockquote>
<pre>
Fix (True Type renderer) : Account glyph bbox when setting up the cache device (continued).

DETAILS :

The patch 
http://ghostscript.com/pipermail/gs-cvs/2007-January/007142.html 
appears incomplete. This one fixes that.

</pre>
<p>[src/zfcid1.c]</p>
</blockquote>

<p><strong><a name="2007-01-28T165340.876356Z"></a>
2007-01-28T16:53:40.876356Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Update 09-56-3.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-27T224705.784106Z"></a>
2007-01-27T22:47:05.784106Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Marks 13-05-3 as AOK.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-27T222153.454207Z"></a>
2007-01-27T22:21:53.454207Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Updates 20-14-1 to reflect CPSI/Tek discrepancy (gs is OK).
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-27T221938.871909Z"></a>
2007-01-27T22:19:38.871909Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
(empty)</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-27T221646.326515Z"></a>
2007-01-27T22:16:46.326515Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Changes the first argument of the object_type procedure for gs_memory_t
structures from gs_memory_t * to const gs_memory_t *, to clear up a couple
of compiler warnings.
</pre>
<p>[src/gsmemlok.c src/gsmalloc.c src/gsmemret.c src/gsalloc.c src/iutil.c src/gsmemory.h]</p>
</blockquote>

<p><strong><a name="2007-01-27T201452.445142Z"></a>
2007-01-27T20:14:52.445142Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes two harmless compiler warnings.
</pre>
<p>[src/iscanbin.c src/sdcparam.c]</p>
</blockquote>

<p><strong><a name="2007-01-27T135357.786714Z"></a>
2007-01-27T13:53:57.786714Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a bug, introduced in rev. 7513, that caused /undefined in setpagedevice
when -dNOBIND flag was in effect and a similar bug in restore.

</pre>
<p>[lib/gs_dps1.ps lib/gs_setpd.ps]</p>
</blockquote>

<p><strong><a name="2007-01-26T164900.711282Z"></a>
2007-01-26T16:49:00.711282Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Move image interpolation tweaks from gs_init.ps which runs after pdf_draw.ps
to gs_img.ps which runs before pdf_draw.ps. This way, image operator can be bound
in pdf_draw.ps subject to NOBIND/DELAYBIND flages. Bug 688890, customer 1110.

</pre>
<p>[lib/gs_img.ps lib/pdf_draw.ps lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2007-01-26T163354.732615Z"></a>
2007-01-26T16:33:54.732615Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix some gcc compiler warnings.
</pre>
<p>[src/gsiorom.c]</p>
</blockquote>

<p><strong><a name="2007-01-26T161707.791783Z"></a>
2007-01-26T16:17:07.791783Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Cleans up a couple of compiler warnings.
</pre>
<p>[src/idstack.c src/isave.c]</p>
</blockquote>

<p><strong><a name="2007-01-26T150750.030216Z"></a>
2007-01-26T15:07:50.030216Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Minor clean-up of pscet_status.txt for better parsing.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-26T145858.339198Z"></a>
2007-01-26T14:58:58.339198Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Updates doc to reflect fixes made by r7642.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-26T011152.301371Z"></a>
2007-01-26T01:11:52.301371Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Makes FontDirectory (including Local, Global, and Shared) read-only, using
.forceput, .forceundef, and superexec where necessary to modify them.
superexec now affects undef and .setmaxlength as well as put; .dictcopynew
is renamed .forcecopynew and will store into a read-only dictionary, just
like .forceput.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE required for
fixing numerous diffs in the PS3 CET.
</pre>
<p>[src/zdict.c lib/gs_dps1.ps lib/gs_fonts.ps src/zgeneric.c lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2007-01-25T111007.381566Z"></a>
2007-01-25T11:10:07.381566Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Misprints in 11-19-6 .
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-25T110435.971950Z"></a>
2007-01-25T11:04:35.971950Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : (1) Updating 11-19-6 related pages, (2) Passing FontDirectory to Peter.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-24T021924.701691Z"></a>
2007-01-24T02:19:24.701691Z Ray Johnston</strong></p>
<blockquote>
<pre>
Change some files to OK that match CPSI that hadn't been updated
due to an error in Ray's regressionthe toolchain from a while ago.
(Problems in toolchain have been resolved).
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-24T015413.435614Z"></a>
2007-01-24T01:54:13.435614Z Ray Johnston</strong></p>
<blockquote>
<pre>
Change some 09- group tests that were incorrectly reviewed to DIFF (until
Igor can determine whether or not they are a GS problem). At the best they
need to be AOK since GS differs from both CPSI and Tek.

Change some others to OK or AOK to reflect recent improvements detected
during regression testing.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-23T134242.135988Z"></a>
2007-01-23T13:42:42.135988Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A crash when /OUT pdfmark refers to undefined node.

DETAILS :

Bug 688927 "ps2pdf segfaults on inconsistent subordinate Count parameter in bookmark pdfmarks".

The test document is incorrect, but we must not crash with it.

1. Inserted a check into pdfmark_write_outline.
2. Propagated error code from pdfmark_write_outline.
3. With the test case an error message contained a wrong device name (imain.c).

</pre>
<p>[src/gdevpdfm.c src/imain.c src/gdevpdf.c]</p>
</blockquote>

<p><strong><a name="2007-01-22T232320.791601Z"></a>
2007-01-22T23:23:20.791601Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fix a problem created by r7629 (invalidaccess with shading patterns with a
file data source).
</pre>
<p>[lib/gs_ll3.ps]</p>
</blockquote>

<p><strong><a name="2007-01-22T154431.388315Z"></a>
2007-01-22T15:44:31.388315Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Handle an invalid Type 3 font that misses setcharwidth, setcachedevice[2].

DETAILS :

Bug 688895 "ps2pdf aborts with "Error: /unregistered in --show--"".

The test document embeds an invalid Type 3 font : the character /s32 calls neither
setcachedevice nor setcachedevice2 nor setcharwidth. 

PLRM3 page 339 reads :

[beg quote]
BuildGlyph must execute one of the following operators to pass width and
bounding box information to the PostScript interpreter. This must precede 
execution of any path construction or painting operators describing the glyph.

setcachedevice establishes a single set of metrics for both writing modes, and
requests that the interpreter save the results in the font cache if possible.

setcachedevice2 (LanguageLevel 2) establishes separate sets of metrics for 
writing modes 0 and 1, and requests that the interpreter save the results in the font
cache.

setcharwidth passes just the glyph's width (to be used only once), and 
requests that the glyph not be cached. This operator is typically used only if the glyph
description includes operators to set the color explicitly.
[end quote]

Adobe appears to handle such fonts silently in both Postscript and PDF.
This patch provides same behavior. 

The difference from the old code appears pretty small :
the old code set the charproc_accum flag while executing pdf_text_set_cache,
and the new one does when entering the substream.
The new code even more natural.

In the PDF output, for incorrect glyphs the Width array element 
is set to zero, and d0, d1 operators are not written into the charproc.

Printing a warning about the incorrect charproc appears difficult
due to the necessity to suppress redundant messages.
It needs to add a new field into the gs_font structure.
We do not like to modify the general gs_font structure for such small reason.
Postponing this change until it is requested in prcatice.

</pre>
<p>[src/gdevpdtt.c src/gdevpdti.c]</p>
</blockquote>

<p><strong><a name="2007-01-22T143404.454804Z"></a>
2007-01-22T14:34:04.454804Z leonardo</strong></p>
<blockquote>
<pre>
Fix : MSVC8 build of revision 7630 crashes in zupath.

DETAILS :

Herre are rules from "INTERNATIONAL STANDARD cISO/IEC ISO/IEC 9899:1999 
(E) Programming languages - C" :

unary-expression: unary-operator cast-expression
cast-expression: unary-expression
unary-expression: postfix-expression
postfix-expression: postfix-expression ++

Thus *pnargs++ analyzes as *(pnargs++) .

</pre>
<p>[src/zupath.c]</p>
</blockquote>

<p><strong><a name="2007-01-22T102952.528717Z"></a>
2007-01-22T10:29:52.528717Z leonardo</strong></p>
<blockquote>
<pre>
Fix (PS interpreter) Discontinue the interpretation on interrupt.

DETAILS :

Bug 688817 "Endless 'interrupt in interrupt' with GSAPI".

When a GSAPI client tries to stop GS by returning a negative value 
from the polling callback function, GS enters an infinite loop 
handling cascading "interrupt" exceptions.

Thanks to SaGS for the patch.

</pre>
<p>[doc/API.htm src/interp.c]</p>
</blockquote>

<p><strong><a name="2007-01-22T075543.384402Z"></a>
2007-01-22T07:55:43.384402Z Henry Stiles</strong></p>
<blockquote>
<pre>
Changes to reflect Peter's CET report.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-22T032628.018030Z"></a>
2007-01-22T03:26:28.018030Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes bug: writeobject/printobject didn't zero out the 'unused' fields in
marks and nulls.  (PS3 CET 23-36-2)
</pre>
<p>[src/zbseq.c lib/gs_btokn.ps src/iscanbin.c]</p>
</blockquote>

<p><strong><a name="2007-01-22T024419.583444Z"></a>
2007-01-22T02:44:19.583444Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes bug (PS3 CET 17-0[1-5]-3): if a user path ended with extra operand
values, they were not popped from the stack.
</pre>
<p>[src/zupath.c]</p>
</blockquote>

<p><strong><a name="2007-01-21T175313.749920Z"></a>
2007-01-21T17:53:13.749920Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes the ReusableStreamDecode filter so that it allocates the stream in the
correct VM (per the PLRM3), rather than the current VM, even when it is
necessary to read the entire contents of the source into a string.  (PS3 CET
23-12W-2) Also fixes filters in general so that they allocate the stream in
the correct VM, rather than always allocating in local VM if the current VM
is local.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.
</pre>
<p>[src/zfilter.c lib/gs_frsd.ps src/zfrsd.c]</p>
</blockquote>

<p><strong><a name="2007-01-21T093641.173881Z"></a>
2007-01-21T09:36:41.173881Z leonardo</strong></p>
<blockquote>
<pre>
Fix (Type 1 hinter) A crash while recognizing a missed flex.

DETAILS :

Bug 688931 "gs segfaults in t1_hinter__fix_missed_flex".

The old code didn't check whether a contour has
enough poles for flex.

</pre>
<p>[src/gxhintn.c]</p>
</blockquote>

<p><strong><a name="2007-01-21T093530.219957Z"></a>
2007-01-21T09:35:30.219957Z leonardo</strong></p>
<blockquote>
<pre>
Unwind 7625 due to wrong log message.</pre>
<p>[src/gxhintn.c]</p>
</blockquote>

<p><strong><a name="2007-01-21T033746.930537Z"></a>
2007-01-21T03:37:46.930537Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Apply standard font substitutions in lib/pdf_fonts.ps::TTfonts 
only for fonts that are not already known to the PS intrepreter. 
This allows to customize font substitutions via the Fontmap.

The change affects only TrueType fonts that are NOT embedded 
(less portable PDFs, for which GS already gives a warning).
Bug 688901, patch from SaGS.

</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2007-01-20T204436.957513Z"></a>
2007-01-20T20:44:36.957513Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) Don't reassign object ID for shared descendent fonts.

DETAILS :

Bug 689054 "pdfwrite : missed object".

The old code erroneusely assigned object ID at second time
when a descendent CID font is shared with several Type 0 fonts.

</pre>
<p>[src/gxhintn.c]</p>
</blockquote>

<p><strong><a name="2007-01-20T183923.028704Z"></a>
2007-01-20T18:39:23.028704Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) Don't reassign object ID for shared descendent fonts.

DETAILS :

Bug 689054 "pdfwrite : missed object".

The old code erroneusely assigned object ID at second time
when a descendent CID font is shared with several Type 0 fonts.

</pre>
<p>[src/gdevpdtf.c]</p>
</blockquote>

<p><strong><a name="2007-01-20T121217.802265Z"></a>
2007-01-20T12:12:17.802265Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Updating 29-05-1.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-20T120937.803100Z"></a>
2007-01-20T12:09:37.803100Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Updating 29-05-1.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-20T113347.048661Z"></a>
2007-01-20T11:33:47.048661Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Updating 11-19-6 related pages.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-20T004023.279249Z"></a>
2007-01-20T00:40:23.279249Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Adobe interpreters report simple errors in undefineresource operator but
report more complicated errors in the executable name. We are trying to
reproduce this. CET 23-33.

</pre>
<p>[doc/pscet_status.txt lib/gs_res.ps]</p>
</blockquote>

<p><strong><a name="2007-01-19T140014.789036Z"></a>
2007-01-19T14:00:14.789036Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Adobe interpreters have resourcestatus operator but report errors in the
executable name. We do the same now.

</pre>
<p>[doc/pscet_status.txt lib/gs_res.ps]</p>
</blockquote>

<p><strong><a name="2007-01-19T040950.480586Z"></a>
2007-01-19T04:09:50.480586Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Updates the PDF interpreter for the change in the 'token' operator (r7616),
which now may or may not pop its operand if an error occurs.
</pre>
<p>[lib/pdf_base.ps lib/pdf_rbld.ps]</p>
</blockquote>

<p><strong><a name="2007-01-18T202530.206946Z"></a>
2007-01-18T20:25:30.206946Z leonardo</strong></p>
<blockquote>
<pre>
Provide the CPSI compatibility for strokepath.

DETAILS :

This is 1st of 2 closely related changes to gxstroke.c .
It changes behavior in the CPSI compatibility mode only.
The main workers are stroke_add_compat, stroke_add_initial_cap_compat.

The strokepath contours are always positive rather some
older CPSI versions generate negative ones in some circumstances.
We believe that positive contours only is the correct behavior,
because it complies with other contours such as arcs or
character outlines. Otherwise non-zero winding rule filling
gives an unexpected result when combining various paths in a
single path.

</pre>
<p>[doc/pscet_status.txt src/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2007-01-17T211047.794679Z"></a>
2007-01-17T21:10:47.794679Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
For Adobe compatibility (PS3 CET 23-32), changes the token scanner so that
it pops the source operand from the stack and retains a copy of it
internally.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE: it affects all
callers of scan_token (see src/iscan.h and src/itoken.h), and it also
changes the error behavior of the 'token' operator (the operand is no longer
on the stack if the error is detected during scanning, e.g. syntaxerror).
</pre>
<p>[src/imain.c src/iscan.c src/itoken.h src/ziodev.c src/interp.c src/iscan.h src/inobtokn.c src/iccfont.c src/iscanbin.c src/imainarg.c src/ztoken.c src/iscanbin.h]</p>
</blockquote>

<p><strong><a name="2007-01-17T195936.495603Z"></a>
2007-01-17T19:59:36.495603Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for (yet another) a PDF file that does not meet Adobe's PDF spec,
but Adobe Reader opens silently. In this case there is an Annotation
that is missing the required /N (Normal Appearance) entry. Bug 689045
for customer 531. Thanks to "SaGS" for this fix.
</pre>
<p>[lib/pdf_main.ps lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2007-01-17T060938.193145Z"></a>
2007-01-17T06:09:38.193145Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Removes an unneeded inclusion of interp.h in zfile.c.
</pre>
<p>[src/int.mak src/zfile.c]</p>
</blockquote>

<p><strong><a name="2007-01-17T045036.979684Z"></a>
2007-01-17T04:50:36.979684Z Henry Stiles</strong></p>
<blockquote>
<pre>
23-12E-2 fix/analysis from Peter.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-17T033618.909547Z"></a>
2007-01-17T03:36:18.909547Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes bug (PS3 CET 23-32-4): immediately evaluated names in binary object
sequences were treated as literal (not evaluated).
</pre>
<p>[src/iscanbin.c]</p>
</blockquote>

<p><strong><a name="2007-01-16T170706.634739Z"></a>
2007-01-16T17:07:06.634739Z leonardo</strong></p>
<blockquote>
<pre>
Revert strokepath to revision 7213.

DETAILS :

This is 1st of 2 closely related changes to gxstroke.c .

We intend to provide a full CPSI compatibility for
strokepath in the CPSI compatible mode.
Recent chages do not provide it.
Therefore we unwind to the last clean revision,
which we had before starting PS CET compliance.
We will commit a fully different implementation
as the next patch.

This change restores the gxstroke.c revision 7213,
which we had immediately before the 7464 change.
Thus it effectively unwinds the following changes :
Revision 7464 Fri Dec  8 02:22:36 2006 UTC by leonardo 
Revision 7488 Mon Dec 11 00:56:42 2006 UTC by lpd 
Revision 7501 Wed Dec 13 04:15:29 2006 UTC by leonardo 
Revision 7563 Thu Jan  4 18:36:37 2007 UTC by ray 

Rather this change does regress pscet_status.txt,
we don't update pscet_status.txt with this it.
Will update it in the next related patch.

</pre>
<p>[src/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2007-01-16T032839.350220Z"></a>
2007-01-16T03:28:39.350220Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for regressions introduced with rev 7217 (returning proc as array
rather than packedarray for PS CET 09-33-5.PS. Fixes FTS 050-01.ps and
246-01.ps.
</pre>
<p>[lib/gs_dps2.ps]</p>
</blockquote>

<p><strong><a name="2007-01-15T160500.071592Z"></a>
2007-01-15T16:05:00.071592Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Updating 16-01-1 and related pages.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-15T112236.413144Z"></a>
2007-01-15T11:22:36.413144Z leonardo</strong></p>
<blockquote>
<pre>
Provide the CPSI compatibility for Type1 subglyph placement (continued 3).

DETAILS :

This change is algorithmically equivalent.
It provides a better data naming and documentation.

1. save_lsb is renamed into compound_lsb.
2. Improved some comments.

</pre>
<p>[src/gstype1.c src/gxtype1.c src/gxtype1.h]</p>
</blockquote>

<p><strong><a name="2007-01-15T105956.313683Z"></a>
2007-01-15T10:59:56.313683Z leonardo</strong></p>
<blockquote>
<pre>
Provide the CPSI compatibility for Type1 subglyph placement (continued).

DETAILS :

This change is algorithmically equivalent.
It provides a better data naming and documentation.

1. save_asb is renamed into asb.
2. Improved comments for asb_diff, adxy.
3. Used adxy in the overall_x_offset formula in stead save_adxy.
   The letter is a temporary cell for passing seac info across
   the baze glyph.

</pre>
<p>[src/gstype1.c src/gxtype1.h]</p>
</blockquote>

<p><strong><a name="2007-01-15T105638.302709Z"></a>
2007-01-15T10:56:38.302709Z leonardo</strong></p>
<blockquote>
<pre>
Provide the CPSI compatibility for Type1 subglyph placement (continued).

DETAILS :

This change is algorithmically equivalent.
It provides a better data naming and documentation.

1. save_asb is renamed into asb.
2. Improved comments for asb_diff, adxy.
3. Used adxy in the overall_x_offset formula in stead save_adxy.
   The letter is a temporary cell for passing seac info across
   the baze glyph.

</pre>
<p>[src/gxtype1.c]</p>
</blockquote>

<p><strong><a name="2007-01-13T184016.945779Z"></a>
2007-01-13T18:40:16.945779Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes some long-standing data-dependent bugs in the CCITTFaxDecode filter
caused by incorrect initialization.  PS3 CET 23-12E-2.  Also cleans up some
formatting.
</pre>
<p>[src/scfd.c src/scfe.c src/scfx.h]</p>
</blockquote>

<p><strong><a name="2007-01-12T221532.979541Z"></a>
2007-01-12T22:15:32.979541Z Russell Lang</strong></p>
<blockquote>
<pre>
Remove old 16-bit Windows code.
</pre>
<p>[src/gs16spl.c src/gs16spl.rc src/dwmain16.def doc/Develop.htm src/gswin386.rc src/gs16spl.def]</p>
</blockquote>

<p><strong><a name="2007-01-12T210802.193820Z"></a>
2007-01-12T21:08:02.193820Z Ray Johnston</strong></p>
<blockquote>
<pre>
Mark more files found that had been previously fixed that were still
DIFF. Mark 12-07C-7 OK since it matches Tek hardcopy (no thin lines).
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-12T102350.245821Z"></a>
2007-01-12T10:23:50.245821Z leonardo</strong></p>
<blockquote>
<pre>
Provide the CPSI compatibility for Type1 subglyph placement.

DETAILS :

Debugged with CET 16-01-1 16-02-1 16-10-1 16-10-2.

The new 'seac' offset formula 'overall_x_offset'
has been empirically derived from placements of
the "round" accent subglyph in the CPSI rendering. 

</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-12T102319.005476Z"></a>
2007-01-12T10:23:19.005476Z leonardo</strong></p>
<blockquote>
<pre>
Provide the CPSI compatibility for Type1 subglyph placement.

DETAILS :

Debugged with CET 16-01-1 16-02-1 16-10-1 16-10-2.

The new 'seac' offset formula 'overall_x_offset'
has been empirically derived from placements of
the "round" accent subglyph in the CPSI rendering. 

</pre>
<p>[src/gstype1.c src/gxtype1.c src/gxtype1.h]</p>
</blockquote>

<p><strong><a name="2007-01-11T185508.974207Z"></a>
2007-01-11T18:55:08.974207Z Ray Johnston</strong></p>
<blockquote>
<pre>
Updates for pages fixed as of rev 7598.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-11T105211.037894Z"></a>
2007-01-11T10:52:11.037894Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Closing issues which appear fixed with rev 7542.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-11T000103.763372Z"></a>
2007-01-11T00:01:03.763372Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Changes user paths so that in CPSI mode, setbbox appends a moveto only if
the path is otherwise empty.  Fixes a regression in PS3 CET 11-17 caused by
r7512.
</pre>
<p>[src/zupath.c]</p>
</blockquote>

<p><strong><a name="2007-01-10T202052.346731Z"></a>
2007-01-10T20:20:52.346731Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Adobe interpreters appear to accept sampled images in the pattern
color space using the base color space instead of the pattern space.
We do the same in the compatibility mode to meet CET 12-07a-12.

</pre>
<p>[doc/pscet_status.txt src/zimage.c src/zimage3.c src/iimage.h src/int.mak src/ztrans.c]</p>
</blockquote>

<p><strong><a name="2007-01-10T170422.171453Z"></a>
2007-01-10T17:04:22.171453Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Assigning the 29-05-1 regression.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-10T145501.076741Z"></a>
2007-01-10T14:55:01.076741Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Taking assignment for strokepath problems.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-10T144752.238215Z"></a>
2007-01-10T14:47:52.238215Z leonardo</strong></p>
<blockquote>
<pre>
Implementing a smart filling rule.

DETAILS :

With CET 16-01.PS CPSI fills some contours with the even-odd rule,
and others with non-zero rule.

We implement a new rule, which counts signed even-odd numbers 
for each contour independently, and then summarizes them.

The new rule works for all characters in CPSI mode only.
Probably we don't need it for True Types,
but currently the filling algorithm doesn't recieve
the information about the font type.
Will do later on necessity.

For a faster result we generate more 4 instances of
TEMPLATE_spot_into_trapezoids, which deal with the smart winding only.

Removing Raph's hack about even-odd filing rule for Type 1 (zchar1.c).
The new rule perfectly works instead that together with
the contour sign adjustment, which was inplemented few days ago.

The new array line_list::windings stores winding numbers per contour.
The macro ADVANCE_WINDING computes the smart winding rule.
We wouild like to optimize it (to get a smaller portable code),
suggestions are welcome.

</pre>
<p>[doc/pscet_status.txt src/gxfilltr.h src/gxfill.c src/zchar1.c src/gxfill.h]</p>
</blockquote>

<p><strong><a name="2007-01-10T021552.050522Z"></a>
2007-01-10T02:15:52.050522Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Adds some PLRM-required but formerly missing legality checks for binary
object sequences, mostly for the benefit of PS3 CET 23-32-2.
</pre>
<p>[src/ibnum.h src/iscanbin.c src/ibnum.c]</p>
</blockquote>

<p><strong><a name="2007-01-09T234108.403891Z"></a>
2007-01-09T23:41:08.403891Z leonardo</strong></p>
<blockquote>
<pre>
Type 1 hinter : Implementing a contour sign normalization, part 6.

DETAILS :

Bug 687826 "some glyphs filled in".
This old bug contains more test cases,
which allowed to improve the algorithm.

1. gx_intersect_small_bars returned a root,
   which appears outside the bar 1. 
2. A wrong index in t1_hinter__intersect_curve_bar. 
3. A wrong index in t1_hinter__contour_intersection.
4. Increased MAX_NORMALIZING_CONTOURS to 5 as in the '%' sign.
6. The check for contours number was wrong in 
   t1_hinter__fix_contour_signs.

</pre>
<p>[src/gxhintn1.c src/gsmisc.c]</p>
</blockquote>

<p><strong><a name="2007-01-09T211501.944411Z"></a>
2007-01-09T21:15:01.944411Z leonardo</strong></p>
<blockquote>
<pre>
Type 1 hinter : Implementing a contour sign normalization, part 5.

DETAILS :

Removes bugs from the last patch.
It finaly closes Bug 688947  
"Ghostscript renders font incorrectly (letter 'o' filled in)",
but CET 16-01.PS still has problems.

1. 'e2' was wrong - Debugged with a.pdf .
2. (optimization) Return if no nesting contours.
   nesting_sum works for that.
3. Removed the check "this-&gt;subglyph_count &lt;= 1",
   which was entirely wrong.   
4. In zchar1.c restoring Raph's trick about 
    using even-odd filling rule in the CPSI compatible mode.
   It was unintentionally removed by the last patch.
   No, we don't want it to live prmanently,
   but now it's not the right time for removing it.

</pre>
<p>[src/gxhintn1.c src/zchar1.c]</p>
</blockquote>

<p><strong><a name="2007-01-09T184039.016764Z"></a>
2007-01-09T18:40:39.016764Z leonardo</strong></p>
<blockquote>
<pre>
Type 1 hinter : Implementing a contour sign normalization, part 4.

DETAILS :

This fixes the bug 688947  
"Ghostscript renders font incorrectly (letter 'o' filled in)".

The new code recognized wrong contour signs
for non-resident Type 1,2,11 fonts
and fix contour signs with reversing wrong contours.

</pre>
<p>[src/lib.mak src/gxhintn.c src/gxhintn1.c doc/Develop.htm src/gxhintn.h src/zchar1.c]</p>
</blockquote>

<p><strong><a name="2007-01-09T183648.563296Z"></a>
2007-01-09T18:36:48.563296Z leonardo</strong></p>
<blockquote>
<pre>
Type 1 hinter : Implementing a contour sign normalization, part 3.

DETAILS :

This is continuation of the preparation for fixing the bug 688947  
"Ghostscript renders font incorrectly (letter 'o' filled in)".

This change is algorithmically equivalent.
It factors out gx_intersect_small_bars from the shading code.

</pre>
<p>[src/lib.mak src/gxfixed.h src/gsmisc.c src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2007-01-09T141927.902081Z"></a>
2007-01-09T14:19:27.902081Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fix a typo in the description of 23-12U-1 (which is now fixed).
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-09T015400.530728Z"></a>
2007-01-09T01:54:00.530728Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Changes the token scanner so that ^D is not a self-delimiting character when
scanning a string.  This still treats ^D as a self-delimiting end-of-job
marker when reading from a file, while matching CPSI on PS3 CET 21-11-2.
</pre>
<p>[src/iscan.c lib/gs_pdfwr.ps]</p>
</blockquote>

<p><strong><a name="2007-01-09T013944.244785Z"></a>
2007-01-09T01:39:44.244785Z Henry Stiles</strong></p>
<blockquote>
<pre>
Update to reflect Peter's fixes and analyis.  Also reassign color
problems to Raph.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-08T220229.175398Z"></a>
2007-01-08T22:02:29.175398Z Ray Johnston</strong></p>
<blockquote>
<pre>
Updates from regressions, Assign some previously unassigned pages,
correct some 'bad entry' lines (seen by the perl script).

Note there have been many pages that had significant differences
previously marked OK, that are now fixed. We may need to recheck
some of the high difference count pages that have no explanation
(such as "matches Tek hardcopy").
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-08T201252.623854Z"></a>
2007-01-08T20:12:52.623854Z Ray Johnston</strong></p>
<blockquote>
<pre>
Make sure there is a default value (0) for DEBUGSYSM. Fixes an non
debug syntax error seen by nmake.

</pre>
<p>[src/msvccmd.mak]</p>
</blockquote>

<p><strong><a name="2007-01-08T150453.833474Z"></a>
2007-01-08T15:04:53.833474Z leonardo</strong></p>
<blockquote>
<pre>
Type 1 hinter : Implementing a contour sign normalization, part 2.

DETAILS :

This is continuation of the preparation for fixing the bug 688947  
"Ghostscript renders font incorrectly (letter 'o' filled in)".

This change is algorithmically equivalent -
the new stuff works idle.
It define necesary data structures and flows
for storing information about subglyphs.
The implementation itself will be a next step.

</pre>
<p>[src/gstype1.c src/gstype2.c src/gxhintn.c src/gxhintn.h]</p>
</blockquote>

<p><strong><a name="2007-01-08T125048.444121Z"></a>
2007-01-08T12:50:48.444121Z leonardo</strong></p>
<blockquote>
<pre>
Type 1 hinter : Implementing a contour sign normalization, part 1.

DETAILS :

This is a preparation for fixing the bug 688947  
"Ghostscript renders font incorrectly (letter 'o' filled in)".

Several fonts in wild appear to violate the Type 1
restriction for inner contours to be of negative sign.
They cause a wrong rendering of some glyphs,
such as 'o' in the test case. Rather we consider
those fonts to be incorrect, we need a workaround for them
because this annoying problem appears too frequently.
At last CET 16-01.PS defines such font.

We assume that True Types always have right contours,
because (1) we didn't meet such cases in practice.
We also assume that resident fonts always have right contours,
bvecause resident fonts usually don't come from wild.

Therefore we need 4 working modes for type 1 hinter :
1. "pass_through" : no hinting, no contour adjustment.
   Works for resident fonts of a big size,
   and/or when the target is the path bbox accumulator.
2. "disable_hinting" : no hinting, contour ajdustment is on.
   Works for non-resident Type 1 fonts of a big size,
3. The hinting is enabled, the contour adjustment is disabled.
   Works for not-big non-resident fonts except True Types.
   We want to save CPU time expense from the contour adjustment.
4. The hinting is enabled, the contour adjustment is enabled.
   Works for not-big embedded Type 1 fonts.

This change is algorithmically equivalent.
It define necesary flags and data flows,
which will be used in the implementation.
The implementation itself will be a next step.

</pre>
<p>[src/gstype1.c src/gstype2.c src/gxhintn.c src/gxhintn.h]</p>
</blockquote>

<p><strong><a name="2007-01-08T055033.566930Z"></a>
2007-01-08T05:50:33.566930Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Cleans up a couple of compiler warnings.
</pre>
<p>[src/geninit.c]</p>
</blockquote>

<p><strong><a name="2007-01-08T041531.387003Z"></a>
2007-01-08T04:15:31.387003Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change status of CET 12-13-5 to OK. The test works for me. There's no
differences around 30 and 31 in left column or anywhere else. The checksum
matches too.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-07T210545.304456Z"></a>
2007-01-07T21:05:45.304456Z Ray Johnston</strong></p>
<blockquote>
<pre>
Update to reflect improvements from rev 7563 (strokepath fix). Thanks to
Tim Osborn for this fix. Minor revision to analysis on some that still have
other problems in addition to the strokepath.

Note that a few pages that should have been classified DIFF had substantial
difference counts due to the strokepath incompatibility. These remain as
OK, but the status line now reads "Fixed by rev 7563."
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-07T174441.459825Z"></a>
2007-01-07T17:44:41.459825Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Ignore a huge BBox.

DETAILS :

Bug 689027 "Error: /rangecheck in --.buildshading2--".

A buggy software "xFlow Normalizer 1.0" created a huge shading BBox.
Adobe appears to ignores it silently.
In this case the clipping box sets a natural extent for the shading.

</pre>
<p>[src/gsshade.c]</p>
</blockquote>

<p><strong><a name="2007-01-07T064838.482771Z"></a>
2007-01-07T06:48:38.482771Z Ralph Giles</strong></p>
<blockquote>
<pre>
Code cleanups. Add a license, and move some things into functions. This 
version has not been tested.
</pre>
<p>[toolbin/tests/run_parallel]</p>
</blockquote>

<p><strong><a name="2007-01-07T064746.661532Z"></a>
2007-01-07T06:47:46.661532Z Ralph Giles</strong></p>
<blockquote>
<pre>
Check in rough script for launching a parallel regression run on an 
OpenPBS-based cluster queuing system. This script runs 'upnodes' and 
chooses a likely target and job size, generates comparefiles.* and 
testing.cfg.* for each node, then submits the job.

Output is returned as a file in the launch directory 
'run_regression..e&lt;jobid&gt;' when the run is finished.
</pre>
<p>[toolbin/tests/run_parallel]</p>
</blockquote>

<p><strong><a name="2007-01-07T064222.794330Z"></a>
2007-01-07T06:42:22.794330Z Ralph Giles</strong></p>
<blockquote>
<pre>
Changes to the regression tools to facilitate parallel runs.

DETAILS:

Add a scratchdir entry to testing.cfg to specify where temporary files
should be created instead of using the current working directory. 

Override various TextTestResult methods to print 'checking...result'
all at once instead of waiting while the job runs to reduce log 
mangling. The old behaviour was helpful behavior in an interactive 
serial run, but not running in batch mode.

If the PBS_NODENUM environment variable is set, use it to select a 
custom testing.cfg.

If PBS_NODENUM is set, only run the source tests when it is zero to
avoid duplicating these.
</pre>
<p>[toolbin/tests/gscheck_raster.py toolbin/tests/gstestutils.py toolbin/tests/gscheck_pdfwrite.py toolbin/tests/run_regression toolbin/tests/testing.cfg.example toolbin/tests/gsconf.py]</p>
</blockquote>

<p><strong><a name="2007-01-06T203532.380662Z"></a>
2007-01-06T20:35:32.380662Z leonardo</strong></p>
<blockquote>
<pre>
Fix : 'show' must throw error when the current font is a CID font resource.

DETAILS :

Only 'glyphshow' is allowed when the current font is a CID font resource,
except for a cshow procedure - see comment in op_show_finish_setup.

Debugged with CET 32_all.PS page 14.

</pre>
<p>[doc/pscet_status.txt src/zchar.c]</p>
</blockquote>

<p><strong><a name="2007-01-06T191616.587431Z"></a>
2007-01-06T19:16:16.587431Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Improve some syntax/analyzis/assignments.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-06T080106.162417Z"></a>
2007-01-06T08:01:06.162417Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a typo.
</pre>
<p>[toolbin/tests/check_source.py]</p>
</blockquote>

<p><strong><a name="2007-01-06T074631.224903Z"></a>
2007-01-06T07:46:31.224903Z Ralph Giles</strong></p>
<blockquote>
<pre>
Exempt the jobseparator scriptlet from the Id line check.
</pre>
<p>[toolbin/tests/check_source.py]</p>
</blockquote>

<p><strong><a name="2007-01-06T074601.131216Z"></a>
2007-01-06T07:46:01.131216Z Ralph Giles</strong></p>
<blockquote>
<pre>
Exempt the jobseparator scriptlet from the Id line check.
</pre>
<p>[lib/jobseparator.ps]</p>
</blockquote>

<p><strong><a name="2007-01-06T074252.202240Z"></a>
2007-01-06T07:42:52.202240Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add and Id line and appropriate properties to gs_cet.ps.
</pre>
<p>[lib/gs_cet.ps]</p>
</blockquote>

<p><strong><a name="2007-01-05T212335.938833Z"></a>
2007-01-05T21:23:35.938833Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc warnings.
</pre>
<p>[src/zimage.c src/gxfcopy.c src/zcharx.c src/int.mak src/ttfmain.c src/gstext.h src/gdevpdti.c]</p>
</blockquote>

<p><strong><a name="2007-01-05T204421.517052Z"></a>
2007-01-05T20:44:21.517052Z leonardo</strong></p>
<blockquote>
<pre>
Fix (True Type renderer) : Account glyph bbox when setting up the cache device.

DETAILS :

Debugged with CET 34_all.PS page 4.
An embedded True Type font has an incorrect FontBBox :
parts of glyphs appear outside it. Uniting it with
glyph bbox helps. However using glyph bbox only
doesn't work for Dynalab fonts, so this change includes
a voluntary solution which unites FontBBox and glyph bbox.

This patch slightly change the prototypes of 
gs_type42_data_s::get_outline and gs_font_cid2_data_s::get_outline,
and their implementations. We believe that this change
must be compatible, except a case of a wrong walue was passed 
to 'wmode' argument. The PCL group must check that 
it never pass other values than 0 or 1.
In the new code the 'wmode' argument is replaced
with options enum, and other values require a bigger
array for the last argument. See commenmts in code
and the extended implementation in gs_type42_default_get_metrics.

The function zchar42_set_cache has been re4written 
to simplify its understanding. Now it accounts
the glyph bbox. We noticed that the old code 
with WMode 1 set 'w' equal to horizontal width,
which looks incorrect. The new code sets the vertical width.
Also the old code did an unuseful call to get_metrics
when WMode=1 and the vertical metric presents in the font.

The function gs_type42_default_get_metrics has been removed
due to low use. The new code replaces it with pfont-&gt;data.get_metrics.
We didn't find calls to it from the PCL code.

</pre>
<p>[doc/pscet_status.txt src/zchar42.c src/gxfont42.h src/gstype42.c src/gxfcid.h]</p>
</blockquote>

<p><strong><a name="2007-01-05T051934.969963Z"></a>
2007-01-05T05:19:34.969963Z Henry Stiles</strong></p>
<blockquote>
<pre>
Changes required for gslite release.  The new error macros did not
work with MSVC version 8.  There are still portability issues with
these macros that preclude regular use in ghostscript but they are
used by a few clients that have "looser" portability requirements.
gp_mslib.c (probably dead code) did not compile.
</pre>
<p>[src/gp_mslib.c src/gserror.h]</p>
</blockquote>

<p><strong><a name="2007-01-05T015332.094694Z"></a>
2007-01-05T01:53:32.094694Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change the status of CET 13-03-04 and 13-12-06 to OK.
Ghostscript matches Tek hardcopy; PhotoPRINT is wrong here.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-05T004811.270570Z"></a>
2007-01-05T00:48:11.270570Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change the order of argument checking in awidthshow operator. Check that the
character code is in the range 0 to 255 for the base fonts. Fix CET 13-02-05. 

</pre>
<p>[doc/pscet_status.txt src/zchar.c]</p>
</blockquote>

<p><strong><a name="2007-01-04T183637.189208Z"></a>
2007-01-04T18:36:37.189208Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix stroke line cap and line join for Adobe compatibility. Fixes PS CET pages:
09-24-2 09-25-2 09-26-2 09-27-3 09-30-3 09-33-3 09-38-2 09-40-23 09-41-2 09-42-5
09-43-5 09-44-5 09-48-2 09-49D-1 09-52-2 09-53-5 09-54-6 09-57-14 11-07-5 11-21-3
11-28-2 13-13-8. Thanks to Timothy Osborn for this fix.

DETAILS:

There is a slight performance impact (6%) so a follow-up change will be developed
that only generates the new style (Adobe compatible) paths when we are doing the
"strokepath" operation, not for normal "stroke".

</pre>
<p>[src/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2007-01-04T154857.600517Z"></a>
2007-01-04T15:48:57.600517Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change the order of argument checking in widthshow operator. Check that the
character code is in the range 0 to 255 for the base fonts. Fix CET 13-26-04. 

</pre>
<p>[doc/pscet_status.txt src/zchar.c]</p>
</blockquote>

<p><strong><a name="2007-01-03T143950.977219Z"></a>
2007-01-03T14:39:50.977219Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Updating status for 34_all-4.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-03T143847.322215Z"></a>
2007-01-03T14:38:47.322215Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Updating status for 34_all-4.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-03T105015.001696Z"></a>
2007-01-03T10:50:15.001696Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Updating status for 38-01-1.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-03T103052.705972Z"></a>
2007-01-03T10:30:52.705972Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Adding OrigFont to CIDFont resources for CPSI conformity.

DETAILS :

Debugged with CET 33_all.PS .

</pre>
<p>[doc/pscet_status.txt lib/gs_cidfn.ps]</p>
</blockquote>

<p><strong><a name="2007-01-03T095815.957518Z"></a>
2007-01-03T09:58:15.957518Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Updating status for 23-36-2.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-03T084312.193598Z"></a>
2007-01-03T08:43:12.193598Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Fixing some misprints.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-03T083348.854716Z"></a>
2007-01-03T08:33:48.854716Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Updating status for 21-11-2.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-02T220343.389414Z"></a>
2007-01-02T22:03:43.389414Z Ray Johnston</strong></p>
<blockquote>
<pre>
Update with some fixes found during regression of rev 7534.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-02T195830.890285Z"></a>
2007-01-02T19:58:30.890285Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for yet another broken PDF that AR handles silently, specifically, a
/Count value of 0 for the Pages tree. When the Count is 0, find the page
count by walking the Pages tree. Bug 689008 for customer 580 and 460.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2007-01-02T150534.582481Z"></a>
2007-01-02T15:05:34.582481Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Updating status for 18-02G-1.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-02T150258.997085Z"></a>
2007-01-02T15:02:58.997085Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Updating status for 18-02G-1.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-02T142221.841353Z"></a>
2007-01-02T14:22:21.841353Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Updating status for 18-01A-1.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-02T113603.990718Z"></a>
2007-01-02T11:36:03.990718Z Russell Lang</strong></p>
<blockquote>
<pre>
Update the Windows INF file to allow the Ghostscript PPD to be
installed on 64-bit Windows.
</pre>
<p>[lib/ghostpdf.inf]</p>
</blockquote>

<p><strong><a name="2007-01-02T100509.465463Z"></a>
2007-01-02T10:05:09.465463Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Updating status for some files.
Delaying glyph rendering problems because they require 
a deep development. Marking them with "Assign:-".
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-02T045850.214832Z"></a>
2007-01-02T04:58:50.214832Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Implement setucacheparams, ucachestatus using MaxUPathItem user parameter
to match CET 27-05-02. The test results mow match Tek 360 hard copy.

</pre>
<p>[doc/pscet_status.txt lib/gs_dps2.ps lib/gs_lev2.ps]</p>
</blockquote>

<p><strong><a name="2007-01-01T101359.639678Z"></a>
2007-01-01T10:13:59.639678Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Updating status for 14-12-3.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-01T035518.804213Z"></a>
2007-01-01T03:55:18.804213Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
CET 13-10-5 is marked as Works for me in rev. 7543
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2007-01-01T030015.457477Z"></a>
2007-01-01T03:00:15.457477Z Russell Lang</strong></p>
<blockquote>
<pre>
Remove documentation about Windows printing to LPT1: because it 
hasn't worked since we ceased to include gs16spl.exe.
Prevent attempts to use -sOutputFile="LPT1:" on Windows because 
it locks up.

</pre>
<p>[doc/Use.htm src/gp_mswin.c doc/Install.htm]</p>
</blockquote>

<p><strong><a name="2006-12-31T221423.520668Z"></a>
2006-12-31T22:14:23.520668Z Russell Lang</strong></p>
<blockquote>
<pre>
Remove Windows 16-bit and Win32s printer code.  
Update release year in Windows installer to 2007.
</pre>
<p>[src/bcwin32.mak src/dwsetup.rc src/winint.mak src/watcw32.mak src/gp_mswin.c src/gp_msprn.c]</p>
</blockquote>

<p><strong><a name="2006-12-31T175040.948265Z"></a>
2006-12-31T17:50:40.948265Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Early check a text to font compatibility.

DETAILS :

Running CET 14-03.PS page 2, CPSI trows a rangechek with no painitng charaters.
However Ghostscript performs the check immediately before
rendering a character. If the check fails in a middle of the text,
the preceding charaters are painted. 

The new code scans entire text before rendering a character.
We do so in CPSI compatibility mode only,
because we don't want a performance flaw for
dual scanning in the Ghostscript native mode.

1. gs_text_size is renemed into gs_text_count_chars 
   for a better reflection of its semantics.

2. The check in zyshow is made conditional
   depending on CPSI_mode. This is an improvement
   for the last patch, which is not related to 
   the current problem (zcharx.c).

3. Inserted the text scanning into op_show_finish_setup
   (zchar.c).

4. After we did all bove, 14-01.PS got cycled in alloc_char_in_chunk.
   This effect occasionally depends on 1-3 because 
   they change the cache memory map.
   Fixed with inserting the call to gx_free_cached_char into gxchar.c .

5. gs_text_count_chars was implemented with gs_text_begin,
   which appears too heavy for the simple text decomposition.
   Particularly it caused a proiblem with stringwidth,
   because gs_text_begin establishes an extra save level
   for stringwidth. The new code calls gs_text_enum_init 
   instead gs_text_begin. Due to that gs_text_count_chars 
   is moved to gxchar.c, which defines default_text_procs privately. 

</pre>
<p>[doc/pscet_status.txt src/gxchar.c src/gstext.c src/zcharx.c src/zchar.c]</p>
</blockquote>

<p><strong><a name="2006-12-30T225847.430654Z"></a>
2006-12-30T22:58:47.430654Z Ralph Giles</strong></p>
<blockquote>
<pre>
Record the regression run time in the nightly report.
</pre>
<p>[toolbin/tests/run_nightly]</p>
</blockquote>

<p><strong><a name="2006-12-30T133118.340006Z"></a>
2006-12-30T13:31:18.340006Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Don't check type of extra width elements with yshow.

DETAILS :

CET 13-29.PS page 2 defines a longer width array
then the text requires, and CPSI silently ignores extra elements.
So yshow needs to compute exact number of characters 
to know how many elements to load and type check.

The new function gs_text_size is factored out from the
recently added code so that zcharx.c can share it.

Minor change : Improving a comment in gspaint.c,
with another issue recently discovered.
It's not related to the yshow problem.

</pre>
<p>[doc/pscet_status.txt src/gstext.c src/zcharx.c src/gstext.h src/gspaint.c]</p>
</blockquote>

<p><strong><a name="2006-12-30T115034.673289Z"></a>
2006-12-30T11:50:34.673289Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Updating status for 11-20-9
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-30T110655.417315Z"></a>
2006-12-30T11:06:55.417315Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Updating status for 13-23-1.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-30T104018.858942Z"></a>
2006-12-30T10:40:18.858942Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Updating status for 10-15-2 (final).
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-30T090831.731942Z"></a>
2006-12-30T09:08:31.731942Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Updating status for 10-15-2.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-30T061556.641068Z"></a>
2006-12-30T06:15:56.641068Z Ray Johnston</strong></p>
<blockquote>
<pre>
Note some pages that now have no differences as detected during
regression testing.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-29T205939.890840Z"></a>
2006-12-29T20:59:39.890840Z leonardo</strong></p>
<blockquote>
<pre>
Fix : The CPSI compatibility for 'clippath' starting point.
pscet_status.txt : A better classification for strokepath problems.

DETAILS :

Debugged with :
CET 13-22.ps page 6, the item much13;
CET 11-11.PS page 6, the item much13
See comment in code.

</pre>
<p>[doc/pscet_status.txt src/gsdps1.c]</p>
</blockquote>

<p><strong><a name="2006-12-28T130856.928281Z"></a>
2006-12-28T13:08:56.928281Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Passing more problems to ray since they have same reason - 
either strokepath ending point, or clippath starting point.
For details see comments added into pscet_status.txt .
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-28T095138.919829Z"></a>
2006-12-28T09:51:38.919829Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : Changing assignment for 13-22-6 cash25 as discussed with Ray.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-27T182755.782637Z"></a>
2006-12-27T18:27:55.782637Z leonardo</strong></p>
<blockquote>
<pre>
Fix : 'clippath' didn't set the current point.

DETAILS :

The bug has been introduced when we implemented the current point in 'double'.
It caused an inconsistent result when 'show' follows 'clippath',
because 'show' still uses pgs-&gt;ppath-&gt;position.
Debugged with CET 13-22.ps page 6, the item much13. 

We would like to avoid the usage of pgs-&gt;ppath-&gt;position,
but currently we nave no time for a complete analyzis.
Delaying it for better times. See bug 689031.

</pre>
<p>[src/gspath.c]</p>
</blockquote>

<p><strong><a name="2006-12-27T115915.544173Z"></a>
2006-12-27T11:59:15.544173Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : A better analyzis for 13-20-6, 13-22-6.

</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-26T052937.040603Z"></a>
2006-12-26T05:29:37.040603Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Calculate the old bounding box using the function that takes into account the
bounding box set by setbbox operator.

DETAILS:
This patch doesn't affect any reported bugs, CET test or regression test files.
Before the patch the following (correct) program didn't run on Ghostscript:
0 0 moveto 0 0 1000 1000 setbbox 100 100 105 105 setbbox 0 0 moveto 100 100 lineto

</pre>
<p>[doc/pscet_status.txt src/gsdps1.c]</p>
</blockquote>

<p><strong><a name="2006-12-25T181149.235030Z"></a>
2006-12-25T18:11:49.235030Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Record the fact that 11-13-4 works in rev. 7527.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-25T074344.555732Z"></a>
2006-12-25T07:43:44.555732Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : A better analyzis for recent regression, assigning to the author.

</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-24T114611.723531Z"></a>
2006-12-24T11:46:11.723531Z leonardo</strong></p>
<blockquote>
<pre>
Fix (font renderer) : Expand the Type 3 character box to negative coordinates.

DETAILS :

setcachedevice, setcachedevice defines a box for clipping a character image.
According to Postscript specification, "If any marks fall outside this
bounding box, the result is unpredictable." (See PLRM3 page 659).

Some CET tests defines a Type 3 characters, which have the bbox
[0 0 1000 1000] and then execute "10 10 1000 1000 rectstroke" for 
painting the character. Some parts of that rectangle fall slightly 
outside the box, but both CPSI and Tek paint them.

When caching a character, the old Ghostscript code expands the character box to
increasing coordinates. It allows to paint charater elements,
which fall slightly outside the box. However the old code doesn't
expand to negative (decreesing) direction, causing an asymmetric behavior.
For example in CET 13-18.PS a Type 3 charater missed its elements
depending on the device initial matrix : with display device
the character doesn't miss elements, but with ppmraw device 
(which has initial matrix with mapping Y upside down)
the character missed a horizontal line, which with 600dpi falls to 
t5he pixel coordinate Y=-1.

This patch provides the box expansion in all 4 directions.
Rather the problem happens mainly with Type 3 fonts
the patch changes the behavior for all font types.

Note : Some characters may occupy a bigger space in the cache,
so the memory map changes.

Note2 : We're not sure why the old code expands the box
in 2 pixels. Likely 1 pixel is a strong expansion, 
and another one compensates an inaccurate rounding.
We don't change it now to minimize raster differences.

</pre>
<p>[doc/pscet_status.txt src/gxchar.c]</p>
</blockquote>

<p><strong><a name="2006-12-24T083152.050751Z"></a>
2006-12-24T08:31:52.050751Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : A better analyzis for few problems.
Note some regressions appeared.

</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-22T195943.737163Z"></a>
2006-12-22T19:59:43.737163Z Ray Johnston</strong></p>
<blockquote>
<pre>
Properly handle ASCII85EncodePages=true for the Contents streams. This was
not implemented previously. Bug #689030 for customer #1.

</pre>
<p>[src/gdevpdfu.c]</p>
</blockquote>

<p><strong><a name="2006-12-21T171015.748193Z"></a>
2006-12-21T17:10:15.748193Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : A better analyzis for few problems.

</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-21T011517.469745Z"></a>
2006-12-21T01:15:17.469745Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove Copying.htm from the documentation. It is no longer relevant now 
that the tree is GPL.
</pre>
<p>[doc/Copying.htm doc/Readme.htm doc/Release.htm]</p>
</blockquote>

<p><strong><a name="2006-12-20T044443.534483Z"></a>
2006-12-20T04:44:43.534483Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : An improved analysis for few problems.

</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-20T043857.997599Z"></a>
2006-12-20T04:38:57.997599Z leonardo</strong></p>
<blockquote>
<pre>
pscet_status.txt : An improved analysis for few problems.

</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-18T230342.655320Z"></a>
2006-12-18T23:03:42.655320Z Raph Levien</strong></p>
<blockquote>
<pre>
Fix: Don't read past end of input image stream in simscale.c. Fixes
bug #689029.
</pre>
<p>[src/simscale.c]</p>
</blockquote>

<p><strong><a name="2006-12-18T175627.005565Z"></a>
2006-12-18T17:56:27.005565Z leonardo</strong></p>
<blockquote>
<pre>
Fix (TrueType renderer) : Always access metrics via get_metrics callback.

DETAILS :

This change is important for PCL interpreter.
Some PCL downloadable fonts have no hmtx, vmtx tables
and define glyph metrics externally.
Likely we missed this functionality when attached
the TrueType bytecode interpreter from FreeType.

For both Postscript and PCL the new code is not equivalent 
to old one when processing a composite glyph
with grid fitting. For each subglyph, the old code sets phantom points
with the subglyph's metrics. The new code does with the glyph's metrics. 
We believe that the old code was not correct because its grid fitting 
can wrongly account the placement of a subglyph in the main glyph.
Rether we didn't find a practical case when it happens.

We can't directly access the font's get_metrics callback from ttfmain.c,
therefore we introduce an intermediate callback ttfReader::get_metrics.
It happens because TrueType bytecode interpreter doesn't compile
with Ghostscript headers. 

</pre>
<p>[src/gxttfb.c src/ttfmain.c src/ttfoutl.h]</p>
</blockquote>

<p><strong><a name="2006-12-18T050000.292210Z"></a>
2006-12-18T05:00:00.292210Z leonardo</strong></p>
<blockquote>
<pre>
Fix  : Removing a dead code about USE_ttfReader.

DETAILS :

USE_ttfReader was introduced for PCL needs due to a poor design.
Novadays PCL code doesn't use it - sets always true.

</pre>
<p>[src/gxfcopy.c src/gxccman.c src/gxfont42.h src/gstype42.c src/zfont42.c]</p>
</blockquote>

<p><strong><a name="2006-12-17T135652.138834Z"></a>
2006-12-17T13:56:52.138834Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : A fixed overflow happened while computing a color (continued).
THIS IS INCOMPATIBLE CHANGE : The device virtual method 
fill_linear_color_scanline now restores the semantics, 
which was defined before revision 7510. 
In other words, this incompatible change reverts 
the recent incompatible change.

DETAILS :

Debugged with CET 12-14O.PS SpecialTestJ02Test12.

A scanline gradient could overflow because 
the pixel span may be few wider than the spot span
due to pixel rounding.
To prevent the overflow, we base the color proportion
on the last pixel inside the span.
See comments in code.

We decided to remove "half color values"
(which were introduced in revision 7510)
from the device interface because 
they bring an extra complexity.

</pre>
<p>[src/gdevdsha.c src/gdevddrw.c]</p>
</blockquote>

<p><strong><a name="2006-12-17T002630.159180Z"></a>
2006-12-17T00:26:30.159180Z Russell Lang</strong></p>
<blockquote>
<pre>
Remove obsolete references to Windows 3.1 and Win32s.
</pre>
<p>[doc/Use.htm doc/Make.htm doc/Source.htm doc/Install.htm]</p>
</blockquote>

<p><strong><a name="2006-12-16T220238.700510Z"></a>
2006-12-16T22:02:38.700510Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add a simple (one line) file that can be used bwtween files on the command line
or files run with the 'run' operator to execute the systemdict version of the
^D (ctrl-D) action to end an encapsulated job and start a new one.

This is needed since some PS files redefine &lt;04&gt; to a no-op (such as the PS CET
and the PSCRIPT5 Windows driver). This can be used with or without -dJOBSERVER,
but &lt;04&gt; is a no-op unless -dJOBSERVER is used.
</pre>
<p>[lib/jobseparator.ps]</p>
</blockquote>

<p><strong><a name="2006-12-16T204110.316519Z"></a>
2006-12-16T20:41:10.316519Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix setpagedevice /Install procedure handling so that a error from the Install
will restore the previous (presumably correct) Install and apply the Policies
for the error handling. Also fix the .execinstall so that the plumbing will
leave a predictable number of elements on the stack in case of an error.
Bug #689020 for customer #661.

DETAILS:

The .execinstall needed fixing since it could leave one extra element on the
operand stack, but sometimes it would not. The oparray_cleanup of the error
handling _would_ restore the op stack to the point where .execinstall was
invoked, but at that point, the procedure operand was part of the old stack
count. This meant that if the Install procedure pushed something on the op
stack before getting the error, it would be there after the 'stopped', but
if it didn't push anything, the stacks would be the same as if the exec was
OK.

By duplicating the procedure prior to the exec in .execinstall, we insure
that there will always be that value on the stack when stopped returns
'true'. Normal execution doesn't change and will pop the extra value created
by the 'dup'.

EXPECTED DIFFERENCE:

None.
</pre>
<p>[lib/gs_setpd.ps]</p>
</blockquote>

<p><strong><a name="2006-12-15T180857.832104Z"></a>
2006-12-15T18:08:57.832104Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes several user path problems: upath didn't signal nocurrentpoint for
empty paths in CPSI mode; appending an empty user path didn't set current
point in CPSI mode. (PS3 CET 13-27-3, 13-28-4, 13-29-3)
</pre>
<p>[src/zupath.c]</p>
</blockquote>

<p><strong><a name="2006-12-15T180608.730263Z"></a>
2006-12-15T18:06:08.730263Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes bug: gs_upmergepath didn't propagate the imager state current_point
members.
</pre>
<p>[src/gspath.c]</p>
</blockquote>

<p><strong><a name="2006-12-15T015802.667973Z"></a>
2006-12-15T01:58:02.667973Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : A fixed overflow happened while computing a color.
THIS IS INCOMPATIBLE CHANGE : The device virtual method 
fill_linear_color_scanline now gets half color values 
as the gradient parameters.

DETAILS :

Debugged with CET 12-14O.PS SpecialTestJ02Test12.

A scanline gradient could overflow because 
the pixel span may be few wider than the spot span
due to pixel rounding.
Rather the expansion is always pretty small, it could cause
an int32_t overflow when storing the right limit pixel color
(which actually is never riched, because the filling algorithm
never paints the right boundary). However it caused a wrong
result in some cases.

See comments in code.

</pre>
<p>[doc/pscet_status.txt src/gdevdsha.c src/gdevddrw.c]</p>
</blockquote>

<p><strong><a name="2006-12-14T214007.608049Z"></a>
2006-12-14T21:40:07.608049Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Align coordinate data and color data to byte boundary (continued).

DETAILS :

Debugged with CET 12-14O.PS page 2.
The recent patch for the subject appears incomplete.
After debugging with more tests (ShadingType 5), 
the parameter align_color_data appears always false and goes away.

</pre>
<p>[doc/pscet_status.txt src/gxshade.c src/gxshade4.c src/gxshade.h]</p>
</blockquote>

<p><strong><a name="2006-12-14T202433.168948Z"></a>
2006-12-14T20:24:33.168948Z Ray Johnston</strong></p>
<blockquote>
<pre>
Mark some fixes detected in regression run (exact fix rev unknown -- probably
from lpd). Note that 23-12W-2 now has only a single difference.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-14T194032.852985Z"></a>
2006-12-14T19:40:32.852985Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
For Adobe compatibility, makes 'show'-type operators signal nocurrentpoint
immediately, rather than when rendering the first character, if there is no
current point. (PS3 CET 13-27-3, 13-28-4, 13-29-3, and possibly others)
</pre>
<p>[src/gstext.c]</p>
</blockquote>

<p><strong><a name="2006-12-14T162849.465661Z"></a>
2006-12-14T16:28:49.465661Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Improve the handling of SMask.

DETAILS :

The old code writes "/SMask 0 0 R" when a GState with no SMask
folows another with SMask.

Bug 689023 "regression fails with /rangecheck in --run--".
Debugged with Bug688631.pdf .

</pre>
<p>[src/gdevpdfg.c]</p>
</blockquote>

<p><strong><a name="2006-12-14T155054.428992Z"></a>
2006-12-14T15:50:54.428992Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Changes {x,y,xy}show to check at the beginning whether the widths array is
large enough, rather than detecting this on the fly, for Adobe
compatibility. (PS3 CET 13-27-3, 13-28-4, 13-29-3)
</pre>
<p>[src/gstext.c]</p>
</blockquote>

<p><strong><a name="2006-12-14T135409.094929Z"></a>
2006-12-14T13:54:09.094929Z leonardo</strong></p>
<blockquote>
<pre>
Fix (Resource machinery) : Place temporary 'resourceforall' data into the local VM.

DETAILS :

This is an improved version of the 7449 change, 
which has been unwinded in the revision 7487,

The old code placed them into global VM,
rather some their elements may be in local VM.
Fixes the cash06 diff in PS3 CET 30-07-3.

Thanks to L. Peter Deutsch for locating the wrong code parts.

</pre>
<p>[lib/gs_resmp.ps lib/gs_res.ps lib/gs_cidcm.ps]</p>
</blockquote>

<p><strong><a name="2006-12-13T211820.233553Z"></a>
2006-12-13T21:18:20.233553Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes bug: if the source of a ReusableStreamDecode filter was a string, the
filter did not appear to be closed after executing closefile.  (PS3 CET
23-12W-6)
</pre>
<p>[src/stream.c]</p>
</blockquote>

<p><strong><a name="2006-12-13T073141.174327Z"></a>
2006-12-13T07:31:41.174327Z Henry Stiles</strong></p>
<blockquote>
<pre>
reassignments to Peter.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-13T041529.131303Z"></a>
2006-12-13T04:15:29.131303Z leonardo</strong></p>
<blockquote>
<pre>
Fix (stroking) : The CPSI compatibility about the strokepath starting point (continued).

DETAILS :

The last patch allocates an insufficient buffer for gs_join_triangle.
It caused a wrong resiult with PCL.

</pre>
<p>[src/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2006-12-13T014535.876588Z"></a>
2006-12-13T01:45:35.876588Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add recent new source files to the documentation.
</pre>
<p>[doc/Develop.htm doc/Psfiles.htm]</p>
</blockquote>

<p><strong><a name="2006-12-13T010605.344921Z"></a>
2006-12-13T01:06:05.344921Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Line join was missed at 'closepath'.

DETAILS :

Debugged with CET 12-12.PS page 10.

</pre>
<p>[src/gxpdash.c]</p>
</blockquote>

<p><strong><a name="2006-12-13T005841.577412Z"></a>
2006-12-13T00:58:41.577412Z leonardo</strong></p>
<blockquote>
<pre>
Fix : A CPSI compatibility for 'rectstroke'.

DETAILS :

Debugged with CET 12-12.PS page 8, 10.

PLRM doesn't specify the contour starting point for 'rectstroke'
when the rectangle width and/or height is negative.
CPSI and the old Ghostscript appear to produce different results, 
which is important with dashing. The patch provides the CPSI
compatibility when CPSI_mode is true.

</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-13T002605.505126Z"></a>
2006-12-13T00:26:05.505126Z Ralph Giles</strong></p>
<blockquote>
<pre>
Reenable the jpxparmfix call, after making it check specifically for a 
JPXDecode filter. Adding a ParmDict to filters that don't take 
parameters caused problems with some PDF files. Bug 688869.
</pre>
<p>[lib/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2006-12-12T102238.092916Z"></a>
2006-12-12T10:22:38.092916Z Russell Lang</strong></p>
<blockquote>
<pre>
Windows documentation updates.
</pre>
<p>[doc/API.htm doc/Install.htm]</p>
</blockquote>

<p><strong><a name="2006-12-12T062611.719558Z"></a>
2006-12-12T06:26:11.719558Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fix some misspellings ("schedulled"), and remove a duplicate .undef.
</pre>
<p>[lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2006-12-12T042521.491153Z"></a>
2006-12-12T04:25:21.491153Z leonardo</strong></p>
<blockquote>
<pre>
Fix : A CPSI compatibility for 'rectstroke'.

DETAILS :

Debugged with CET 12-12.PS page 8, 10.

PLRM doesn't specify the contour starting point for 'rectstroke'
when the rectangle width and/or height is negative.
CPSI and the old Ghostscript appear to produce different results, 
which is important with dashing. The patch provides the CPSI
compatibility when CPSI_mode is true.

</pre>
<p>[doc/pscet_status.txt src/gsdps1.c]</p>
</blockquote>

<p><strong><a name="2006-12-12T024340.792357Z"></a>
2006-12-12T02:43:40.792357Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes bug: the ReusableStreamDecode filter treated Intent values other than
0..3 as errors, rather than as equivalent to 0. PS3 CET 23-12V-1
</pre>
<p>[src/zfrsd.c]</p>
</blockquote>

<p><strong><a name="2006-12-11T202837.478193Z"></a>
2006-12-11T20:28:37.478193Z Ray Johnston</strong></p>
<blockquote>
<pre>
Mark as OK two pages fixed by rev 7489. Note that improvements were made on
the following: 23-12G-1, 23-12L-1, 23-12M-1, 23-12N-1, 23-12O-1, 23-12P-1.

There were no regressions on the PS CET as a result of rev 7489 changes to
the filter pipeline handling.

</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-11T173053.980862Z"></a>
2006-12-11T17:30:53.980862Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes bug: the PNG predictor filters produced incorrect data for the last
pixel of each row.  (The encoder and decoder had matching bugs, so
encode+decode produced the correct result!)  Fixes a diff in PS3 CET
23-12U-1.
</pre>
<p>[src/spngp.c]</p>
</blockquote>

<p><strong><a name="2006-12-11T044855.149758Z"></a>
2006-12-11T04:48:55.149758Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Raises the maximum value of Colors for PNG and PDiff filters from 16 to 60,
to prevent rangechecks in some PS3 CET 23-12{L,M,N,O,P}.
</pre>
<p>[src/zfdecode.c src/spngpx.h src/spdiffx.h]</p>
</blockquote>

<p><strong><a name="2006-12-11T012857.882333Z"></a>
2006-12-11T01:28:57.882333Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes bug: closing a filter pipeline with more than one adjacent temporary
stream (such as a compression filter with a predictor whose target was a
procedure) failed to flush all intermediate buffers, causing failures in PS3
CET 23-12*.  NOTE: This code (stream.c:swritebuf) is extremely delicate.
Regression checking is essential!
</pre>
<p>[src/stream.c]</p>
</blockquote>

<p><strong><a name="2006-12-11T005642.572973Z"></a>
2006-12-11T00:56:42.572973Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Removes 3 compilation warnings.
</pre>
<p>[src/gxpath.h src/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2006-12-10T202551.293218Z"></a>
2006-12-10T20:25:51.293218Z Stefan Kemper</strong></p>
<blockquote>
<pre>
This is a reversion to r7448
The 7449 commit created a regression where the 
language switch build wouldn't initialize. 
</pre>
<p>[lib/gs_resmp.ps lib/gs_res.ps lib/gs_cidcm.ps]</p>
</blockquote>

<p><strong><a name="2006-12-10T195024.509997Z"></a>
2006-12-10T19:50:24.509997Z Henry Stiles</strong></p>
<blockquote>
<pre>
Updates from Peter.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-10T095206.915864Z"></a>
2006-12-10T09:52:06.915864Z leonardo</strong></p>
<blockquote>
<pre>
A better analyzis for 12-12.PS .
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-09T085437.108427Z"></a>
2006-12-09T08:54:37.108427Z Russell Lang</strong></p>
<blockquote>
<pre>
Partial fix for bug 687981, changing the PPD only for Windows 2k/XP.
The INF changes for Windows 95 etc. are not included in this change.
</pre>
<p>[lib/ghostpdf.ppd]</p>
</blockquote>

<p><strong><a name="2006-12-09T084256.477752Z"></a>
2006-12-09T08:42:56.477752Z leonardo</strong></p>
<blockquote>
<pre>
Update CET test status for 12-08A-5, 12-08A-6, 12-11-4.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-09T083228.403891Z"></a>
2006-12-09T08:32:28.403891Z leonardo</strong></p>
<blockquote>
<pre>
Fix : A wrong 'frac' color comparison caused an incorrect 12 and 16 bpc image rendering.

DETAILS :

Debugged with CET 12-07C.PS page 15 and disassembling gxi12bit.obj .

The old code wrongly computed how many 'long' values are needed to store 4 'frac' values. 
When sizeof(long)==4 and sizeof(short)==2 it gives 1.
However the right answer is 2.
Due to that the old code thinks that 'frac' colors are equal 
when they differ in 3d or 4th component.

</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-09T080919.842018Z"></a>
2006-12-09T08:09:19.842018Z Russell Lang</strong></p>
<blockquote>
<pre>
Change Windows installer release date to 2006 and update disk space
requirements.
</pre>
<p>[src/dwsetup.rc]</p>
</blockquote>

<p><strong><a name="2006-12-09T080344.150164Z"></a>
2006-12-09T08:03:44.150164Z Russell Lang</strong></p>
<blockquote>
<pre>
Fix bug 688749 silent/unattended uninstaller.
Add silent uninstall option to MS-Windows ghostscript uninstaller.
Reformatted part of the code to make it match the GSview uninstaller,
on which it was based.  For a silent uninstall, use
  uninstgs.exe "path\to\uninstal.txt" -q
</pre>
<p>[src/dwuninst.cpp]</p>
</blockquote>

<p><strong><a name="2006-12-09T073900.107617Z"></a>
2006-12-09T07:39:00.107617Z leonardo</strong></p>
<blockquote>
<pre>
Fix : A wrong 'frac' color comparison caused an incorrect 12 and 16 bpc image rendering.

DETAILS :

Debugged with CET 12-07C.PS page 15 and disassembling gxi12bit.obj .

The old code wrongly computed how many 'long' values are needed to store 4 'frac' values. 
When sizeof(long)==4 and sizeof(short)==2 it gives 1.
However the right answer is 2.
Due to that the old code thinks that 'frac' colors are equal 
when they differ in 3d or 4th component.

</pre>
<p>[src/gxi16bit.c src/gxi12bit.c]</p>
</blockquote>

<p><strong><a name="2006-12-09T061734.671935Z"></a>
2006-12-09T06:17:34.671935Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Following PLRM 3 handle instances of CIDFont resource in findfont, 
definefont and undefinefont. Partly fix CET 32_all, 33_all, 34_all, 25_all.

</pre>
<p>[doc/pscet_status.txt lib/gs_res.ps]</p>
</blockquote>

<p><strong><a name="2006-12-09T050405.073394Z"></a>
2006-12-09T05:04:05.073394Z Russell Lang</strong></p>
<blockquote>
<pre>
Fix bug 688932 mswinpr2 doesn't clear temporary files.
Unwanted temporary file was being recreated during page output.  
We now delete the temporary file when the device is closed.
</pre>
<p>[src/gdevwpr2.c]</p>
</blockquote>

<p><strong><a name="2006-12-09T042439.562906Z"></a>
2006-12-09T04:24:39.562906Z Russell Lang</strong></p>
<blockquote>
<pre>
Fix bug 688930 mswinpr2 allocates wrong memory size for DEVMODE.
A printer DEVMODE structure is usually bigger than sizeof(DEVMODE)
due to printer private extra data.  Allocate the correct size
DEVMODE to include this private data.
Remove old Windows 3.1 and Win32s code.
</pre>
<p>[src/gdevwpr2.c]</p>
</blockquote>

<p><strong><a name="2006-12-09T001428.954169Z"></a>
2006-12-09T00:14:28.954169Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Validate the argument of execuserobject and undefineuserobject before trying to
access UserObjects (which may be undefined) to match CET 31-03 and 31-11.

</pre>
<p>[doc/pscet_status.txt lib/gs_dps2.ps]</p>
</blockquote>

<p><strong><a name="2006-12-08T230831.381404Z"></a>
2006-12-08T23:08:31.381404Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Report /rangecheck instead of /limitcheck from defineuserobject when the index
exceeds 65535 to match CET 31-02.

</pre>
<p>[lib/gs_dps2.ps]</p>
</blockquote>

<p><strong><a name="2006-12-08T222313.575044Z"></a>
2006-12-08T22:23:13.575044Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Report /rangecheck instead of /limitcheck from defineuserobject when the index
exceeds 65535 to match CET 31-02.

</pre>
<p>[doc/pscet_status.txt lib/gs_dps2.ps]</p>
</blockquote>

<p><strong><a name="2006-12-08T214701.938606Z"></a>
2006-12-08T21:47:01.938606Z Russell Lang</strong></p>
<blockquote>
<pre>
Change MS-Windows installer to identify itself as GPL not AFPL Ghostscript.
</pre>
<p>[src/dwsetup.rc src/winint.mak src/gp_wgetv.c src/dwsetup.def src/dwuninst.def src/dwreg.c src/dwsetup.cpp src/dwuninst.cpp]</p>
</blockquote>

<p><strong><a name="2006-12-08T214506.679656Z"></a>
2006-12-08T21:45:06.679656Z leonardo</strong></p>
<blockquote>
<pre>
Update CET test status for 12-04-5.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-08T193155.276122Z"></a>
2006-12-08T19:31:55.276122Z Ray Johnston</strong></p>
<blockquote>
<pre>
Disable the jpxparmfix at the point of invocation since it causes many
PDF files to fail with /undefined in --run--.
</pre>
<p>[lib/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2006-12-08T182714.429697Z"></a>
2006-12-08T18:27:14.429697Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
CET 31-01-08 and 31-01-09 expect the last defined idiom instance to be
effective when several of them match. PLRM says it's undefined.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-08T153010.567087Z"></a>
2006-12-08T15:30:10.567087Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Increase maximum depth of the procedure matching in idiom recognition
to meet CET 31-01-05 and Adobe implementations.
</pre>
<p>[doc/pscet_status.txt src/zmisc3.c]</p>
</blockquote>

<p><strong><a name="2006-12-08T143826.687662Z"></a>
2006-12-08T14:38:26.687662Z Tor Andersson</strong></p>
<blockquote>
<pre>
Fix some errors in the TTC table parsing.</pre>
<p>[src/gstype42.c]</p>
</blockquote>

<p><strong><a name="2006-12-08T120009.393817Z"></a>
2006-12-08T12:00:09.393817Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Wrong current point after uappend.

DETAILS :

Debugged with CET 11-22.PS page 1.

PLRM doesn't clearly specify what should be the current point after uappend,
but very likely it is the last point of the appended path.
CPSI does so, and we follow it.

</pre>
<p>[doc/pscet_status.txt src/zupath.c]</p>
</blockquote>

<p><strong><a name="2006-12-08T040313.743254Z"></a>
2006-12-08T04:03:13.743254Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
CET 20-01-2 is re-classified AOK; CPSI modifies the content of the array
arguments, if any, when operator &gt;&gt; fails. Ghostscript matches Tek and
Distiller 5. This is a bug in CPSI we don't want to reproduce.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-08T022236.640014Z"></a>
2006-12-08T02:22:36.640014Z leonardo</strong></p>
<blockquote>
<pre>
Fix (stroking) : The CPSI compatibility about the strokepath starting point.

DETAILS :

Debugged with CET 11-21.PS page 10.

PLRM doesn't specify a starting point for strokepath result.
Now we choose same point as CPSI does.
It appears important if a further drawing depends on current point,
and/or when a dashing is applied to strokepath.

We don't keep the old algorithm because it is not useful.
Supporting two modes (the CPSI compatible mode and the GS native mode)
would be too complicated with no good reason.

</pre>
<p>[doc/pscet_status.txt src/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2006-12-08T003105.623591Z"></a>
2006-12-08T00:31:05.623591Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
CET 13-20-2 is re-classified OK; The CPSI-based PhotoPRINT SE product
has CSL installed and cannot be used as a reference here.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-07T172720.192504Z"></a>
2006-12-07T17:27:20.192504Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
CET 11-13-4 fails because Ghostscript upath doesn't detect
nocurrentpoint condition.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-07T171735.743899Z"></a>
2006-12-07T17:17:35.743899Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes bug: makepattern didn't create all of its structures in local VM.
(two diffs in PS3 CET 30-07-3)
</pre>
<p>[lib/gs_lev2.ps]</p>
</blockquote>

<p><strong><a name="2006-12-07T155626.139005Z"></a>
2006-12-07T15:56:26.139005Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix MIN_INTVAL handling in the operator mul. CET 25-13.

</pre>
<p>[doc/pscet_status.txt src/zarith.c]</p>
</blockquote>

<p><strong><a name="2006-12-06T234807.446016Z"></a>
2006-12-06T23:48:07.446016Z Ralph Giles</strong></p>
<blockquote>
<pre>
Copy the /ColorSpace key (if any) from a stream dictionary into the
DecodeParms, so the JPXDecode filter implementation can access it.

Pass this key through the JPXDecode filter implementation when
the ColorSpace is Indexed to the underlying jasper implementation,
requesting that it return raw palette indexes instead of the
fully decoded image. This is necessary when the overriding PDF image
colorspace is itself paletted.

Bug 688869 for customer 531.
</pre>
<p>[src/int.mak src/sjpx_luratech.h src/zfjpx.c lib/pdf_base.ps src/sjpx.c src/sjpx.h]</p>
</blockquote>

<p><strong><a name="2006-12-06T234057.941542Z"></a>
2006-12-06T23:40:57.941542Z Ralph Giles</strong></p>
<blockquote>
<pre>
Raise the debugging level required for reporting the raw decode option key.
</pre>
<p>[jasper/src/libjasper/jp2/jp2_dec.c]</p>
</blockquote>

<p><strong><a name="2006-12-06T231319.707391Z"></a>
2006-12-06T23:13:19.707391Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the product name to GPL Ghostscript. File omitted from r7447.
</pre>
<p>[src/gscdef.c]</p>
</blockquote>

<p><strong><a name="2006-12-06T222501.101686Z"></a>
2006-12-06T22:25:01.101686Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a 'raw' option key to jp2_decode() to pass the raw palette
data back to the client without applying the included palette
for indexed images or otherwise remapping the data. Required
for Colorspace override when embedded in PDF documents.
Partial fix for bug 688869.
</pre>
<p>[jasper/src/libjasper/jp2/jp2_dec.c jasper/src/libjasper/jpc/jpc_dec.c]</p>
</blockquote>

<p><strong><a name="2006-12-06T222319.182804Z"></a>
2006-12-06T22:23:19.182804Z Ralph Giles</strong></p>
<blockquote>
<pre>
Change the included license text to refer to the GPL.
Omitted from r7446.
</pre>
<p>[LICENSE]</p>
</blockquote>

<p><strong><a name="2006-12-06T220138.950715Z"></a>
2006-12-06T22:01:38.950715Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
All failures in CET 24-13-3 are caused by writable FontDirectory.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-06T195948.793585Z"></a>
2006-12-06T19:59:48.793585Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Modify gs to match 12-14c test case:
- check that the function domain covers all of the shading domain.
- do this test early - before checking other parameters.
- tweak error handling in shfill on PostScript level to match the test.

</pre>
<p>[doc/pscet_status.txt src/zshade.c lib/gs_ll3.ps src/zfunc.c src/zfunc3.c src/ifunc.h]</p>
</blockquote>

<p><strong><a name="2006-12-06T013352.778741Z"></a>
2006-12-06T01:33:52.778741Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes bug: currentcolorscreen attempted to copy a screen procedure even if
it wasn't readable.
</pre>
<p>[lib/gs_dps2.ps]</p>
</blockquote>

<p><strong><a name="2006-12-05T145116.744559Z"></a>
2006-12-05T14:51:16.744559Z Ray Johnston</strong></p>
<blockquote>
<pre>
Change pages fixed by Peter detected in last regression run as improvements.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-05T041620.081512Z"></a>
2006-12-05T04:16:20.081512Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Changes the initial halftone screen procedure from a packedarray to an
array, to pacify PS3 CET 09-49D.
</pre>
<p>[lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2006-12-05T032809.927677Z"></a>
2006-12-05T03:28:09.927677Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes bugs: many places in the implementation of resourceforall did not
always create temporary objects in local VM, which is necessary because some
of their elements may be in local VM.  Fixes the cash06 diff in PS3 CET
30-07-3.
</pre>
<p>[lib/gs_resmp.ps lib/gs_res.ps lib/gs_cidcm.ps]</p>
</blockquote>

<p><strong><a name="2006-12-04T222549.788684Z"></a>
2006-12-04T22:25:49.788684Z Ray Johnston</strong></p>
<blockquote>
<pre>
Close some 'setflat' issues as AOK where GS is close, but better at each
resolution. Now that CPSI implements setflat, the differences in Adobe
implementations justifies GS differing (slightly) as well. Cases where
GS is worse (less smooth) than CPSI and Tek still need analysis.

Reassign 09-24-2 group of problems to Ray.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-04T214108.335595Z"></a>
2006-12-04T21:41:08.335595Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the product name to "GPL Ghostscript" and bump the version number
for the upcoming release to avoid confusion with the GNU 8.55 release.
</pre>
<p>[lib/gs_init.ps src/version.mak]</p>
</blockquote>

<p><strong><a name="2006-12-04T211743.624240Z"></a>
2006-12-04T21:17:43.624240Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the APFL and add the GPL to reflect our now-GPL development practice. For the record, this tree has been GPL licensed since the 8.54 release, but this is now explicit.
</pre>
<p>[doc/Readme.htm doc/Public.htm doc/Commprod.htm doc/COPYING doc/gs-vms.hlp]</p>
</blockquote>

<p><strong><a name="2006-12-04T181742.359489Z"></a>
2006-12-04T18:17:42.359489Z Ray Johnston</strong></p>
<blockquote>
<pre>
Mark a few other tests as "OK" after CPSI fixed to implement 'setflat'.
and add a note to a timing dependent output.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-04T173445.126523Z"></a>
2006-12-04T17:34:45.126523Z Ray Johnston</strong></p>
<blockquote>
<pre>
Mark some 'setflat' issues as OK. I will be replacing some of the CPSI
output after "unlocking" setflat (so that CPSI implements, rather than
ignoring setflat). Also remove (*JS) that didn't mean anything. Update
explanation on 30-01-1 from Peter.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-04T151622.671661Z"></a>
2006-12-04T15:16:22.671661Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Accept packed arrays for the /Size element of the shading dictionary and
everywhere else where dict_int_array_param() is called. CET 31-01-06

</pre>
<p>[doc/pscet_status.txt src/idparam.c src/zimage3.c src/zfsample.c src/idparam.h src/zfunc.c src/zfunc0.c src/zfilterx.c]</p>
</blockquote>

<p><strong><a name="2006-12-03T160251.520019Z"></a>
2006-12-03T16:02:51.520019Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
For Adobe compatibility (PS3 CET 23-07 and 23-13-5), changes findresource,
defineresource, undefineresource, and resourcestatus so that errors
occurring within these operators, except for a possible initial
stackunderflow, report the (executable) operator name, rather than the
operator object, as the command a.k.a. error object.
</pre>
<p>[lib/gs_res.ps]</p>
</blockquote>

<p><strong><a name="2006-12-03T155219.386596Z"></a>
2006-12-03T15:52:19.386596Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Avoid floating point division by 0. Catch the case when all components
of the matrix equal to 0.

</pre>
<p>[src/gxhintn.c]</p>
</blockquote>

<p><strong><a name="2006-12-03T155207.896094Z"></a>
2006-12-03T15:52:07.896094Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
For Adobe compatibility (PS3 CET 09-56-1), changes findcolorrendering so
that errors report /findcolorrendering, not --findcolorrendering--, as the
command a.k.a. error object.
</pre>
<p>[lib/gs_lev2.ps]</p>
</blockquote>

<p><strong><a name="2006-12-02T072401.485014Z"></a>
2006-12-02T07:24:01.485014Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes bug: save objects are simple in LL1 and LL2, but composite in LL3, so
restore must treat save objects on the stack differently depending on the
languagelevel.  (PS3 CET 30-04-2, and some file in the PS2 tests, actually
care about this.)
</pre>
<p>[src/isave.h src/zvmem.c]</p>
</blockquote>

<p><strong><a name="2006-12-02T063429.338937Z"></a>
2006-12-02T06:34:29.338937Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes two bugs related to PS3 CET 23-07-1: Failure to find a resource
category signalled undefinedresource rather than undefined (PLRM3 bottom of
p. 105), and always reported --findresource-- as the error command rather
than the correct one.
</pre>
<p>[lib/gs_res.ps src/interp.c lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2006-12-01T231700.226511Z"></a>
2006-12-01T23:17:00.226511Z Tor Andersson</strong></p>
<blockquote>
<pre>
Add an argument to select a specified subfont to gs_type42_font_init. This argument is only used for truetype collection (TTC) font files.</pre>
<p>[src/gxfcopy.c src/gxfont42.h src/gstype42.c src/zfont42.c]</p>
</blockquote>

<p><strong><a name="2006-12-01T013422.593578Z"></a>
2006-12-01T01:34:22.593578Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Corrects an error in a comment (BitsPerComponent should be Colors).
</pre>
<p>[src/spdiff.c]</p>
</blockquote>

<p><strong><a name="2006-12-01T002739.971017Z"></a>
2006-12-01T00:27:39.971017Z Ralph Giles</strong></p>
<blockquote>
<pre>
Recommit changes from r7237 so we have continuous history.

Fixes and analysis from Peter.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-01T002219.531380Z"></a>
2006-12-01T00:22:19.531380Z Ralph Giles</strong></p>
<blockquote>
<pre>
Recommit changes from r7235 so the file has continuous history.

A couple of reassignments and fixes from Peter.  See the diffs for details.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-12-01T001902.366674Z"></a>
2006-12-01T00:19:02.366674Z Ralph Giles</strong></p>
<blockquote>
<pre>
Replace pscet files with copies linked to imported history.
</pre>
<p>[doc/pscet_status.txt toolbin/pscet_status.pl]</p>
</blockquote>

<p><strong><a name="2006-12-01T001633.505703Z"></a>
2006-12-01T00:16:33.505703Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move pscet files out of the way to make room for versions with history.
</pre>
<p>[doc/pscet_status.txt toolbin/pscet_status.pl]</p>
</blockquote>

<p><strong><a name="2006-11-30T225233.785536Z"></a>
2006-11-30T22:52:33.785536Z Henry Stiles</strong></p>
<blockquote>
<pre>
fixes and analysis from Peter.
</pre>
<p>[doc/pscet_status.txt]</p>
</blockquote>

<p><strong><a name="2006-11-30T210119.024704Z"></a>
2006-11-30T21:01:19.024704Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes a bug that could cause a SEGV when reading binary token arrays on
systems where sizeof(ref) &gt; 8 (e.g. 64-bit systems).
</pre>
<p>[src/iscanbin.c]</p>
</blockquote>

<p><strong><a name="2006-11-30T204153.369215Z"></a>
2006-11-30T20:41:53.369215Z Henry Stiles</strong></p>
<blockquote>
<pre>
Move the cet bug list and the script for tallying bug statistics from
the pscet_status.txt file to the public release.  Also includes a
couple of reassignments and fixes from Peter.  See the diffs for
details.
</pre>
<p>[doc/pscet_status.txt toolbin/pscet_status.pl]</p>
</blockquote>

<p><strong><a name="2006-11-30T173017.006076Z"></a>
2006-11-30T17:30:17.006076Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes bug: setcolorrendering returned CRD names as strings rather than names.
</pre>
<p>[lib/gs_lev2.ps]</p>
</blockquote>

<p><strong><a name="2006-11-30T171155.853083Z"></a>
2006-11-30T17:11:55.853083Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes bug: In case of an error, setvmreclaim and setvmthreshold reported an
error in setuserparams rather than the correct operator.
</pre>
<p>[lib/gs_lev2.ps]</p>
</blockquote>

<p><strong><a name="2006-11-30T074831.178531Z"></a>
2006-11-30T07:48:31.178531Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes bug: printobject and writeobject didn't signal an /undefined error if
currentobjectformat was 0.
</pre>
<p>[lib/gs_btokn.ps]</p>
</blockquote>

<p><strong><a name="2006-11-30T053843.886406Z"></a>
2006-11-30T05:38:43.886406Z Raph Levien</strong></p>
<blockquote>
<pre>
Match arbitrary-seeming CPSI behavior (when CPSImode is set) regarding
incorrect ucache placement causing typechecks with some but not all
upath operations. Fixes 11-28-5 and improves 11-22-3.
</pre>
<p>[src/zupath.c]</p>
</blockquote>

<p><strong><a name="2006-11-29T013319.060235Z"></a>
2006-11-29T01:33:19.060235Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Don't write min_int as XHeight.

DETAILS :

Bug 689009 "Ghostscript generated pdf/a file has an XHeight of -2147483648". 

The old code doesn't check whether XHeight is successfully computed for the font.
However some font subsets simply have no characters for its computation.
In this case the old algorithm writes min_int, which works
for internal needs of the algorithm. We believe that using zero
instead min_int is safe because fonts usually place characters over the base line.
If all chars appear below the base line, the zero value 
won't be written due to the logics for default values in 
write_FontDescriptor_common.

Thanks to Marcos for the perfect bug localization.

</pre>
<p>[src/gdevpdtd.c]</p>
</blockquote>

<p><strong><a name="2006-11-28T004603.167492Z"></a>
2006-11-28T00:46:03.167492Z Raph Levien</strong></p>
<blockquote>
<pre>
Silently accept incorrect ucache placement in CPSI compatibility mode.
Fixes CET 11-23-3 and (partly) 11-24-3 and 11-25-3.
</pre>
<p>[src/zupath.c]</p>
</blockquote>

<p><strong><a name="2006-11-27T235622.186441Z"></a>
2006-11-27T23:56:22.186441Z Raph Levien</strong></p>
<blockquote>
<pre>
Reverses order of subpaths in gx_path_copy_reversed, which is the
implementation of the reversepath operator. PLRM3 says that the order
of subpaths is unspecified, but CPSI reverses them, while old GS had
them in the same order as the original path. Fixes CET 11-05-6, 11-14-5,
11-22-7, and 11-28-11.
</pre>
<p>[src/gxpath2.c]</p>
</blockquote>

<p><strong><a name="2006-11-27T232136.941749Z"></a>
2006-11-27T23:21:36.941749Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A wrong font substitution for glyph variations.

DETAILS :

Bug 688967 "Problem with converting PS file with barcode font to PDF".

The old code doesn't check for possible encoding conflict
when sharing a charproc from another font. The current font could already
have another charcproc for same char code.

</pre>
<p>[src/gdevpdti.c]</p>
</blockquote>

<p><strong><a name="2006-11-26T055117.751153Z"></a>
2006-11-26T05:51:17.751153Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fixes for CET's. Halftone dummy lpi and angle are real for Adobe. Also
setdash must return typecheck for wrong type top operand even if there
is no second operand (09-36-3).
</pre>
<p>[lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2006-11-24T215327.264413Z"></a>
2006-11-24T21:53:27.264413Z Ray Johnston</strong></p>
<blockquote>
<pre>
Return 'undefinedresult' rather than 'rangecheck' for MININT / -1 to match
Adobe CPSI and Tek on CET 25-09
</pre>
<p>[src/zarith.c]</p>
</blockquote>

<p><strong><a name="2006-11-24T211842.311047Z"></a>
2006-11-24T21:18:42.311047Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix typo in previous commit (commit from a non-working directory after testing on
another system).
</pre>
<p>[src/zarith.c]</p>
</blockquote>

<p><strong><a name="2006-11-24T211330.086309Z"></a>
2006-11-24T21:13:30.086309Z Ray Johnston</strong></p>
<blockquote>
<pre>
Check for rangecheck condition BEFORE doing the divide. Prevent FP exception
on MSVC-6/x86. Fixes problem causing CET 25-09.ps to abort.
</pre>
<p>[src/zarith.c]</p>
</blockquote>

<p><strong><a name="2006-11-23T190120.626083Z"></a>
2006-11-23T19:01:20.626083Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Skip images outside the clipping path.

DETAILS :

Bug 689000 "Ghostscript generates very large PDF file compared to Distiller".


1. New functions gx_cpath_rect_visible, is_image_visible
   check whether the image is entirely clipped out.

2. A new flag gx_image_enum_common_s::skipping stores that fact.

3. If so happens, interpreter checks whether the image
   has string datasources only. Such images may be safely skipped 
   from the interpretation (zimage.c).

Note : This optimization works for ImageType 1 only - see comment 
in is_image_visible. Unfortunately We have no time to improve this now. 
Need to analyze why does gs_image2_t need a floating size of the source image.

</pre>
<p>[src/gsimage.c src/lib.mak src/zimage.c src/gxiparam.h src/gxcpath.c src/gxpath.h src/gximage.c]</p>
</blockquote>

<p><strong><a name="2006-11-23T150116.838484Z"></a>
2006-11-23T15:01:16.838484Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Trap errors from setpattern implementation and re-throw them as
setpattern errors. Fix CET 09-47c-01.
</pre>
<p>[lib/gs_lev2.ps]</p>
</blockquote>

<p><strong><a name="2006-11-23T141438.062916Z"></a>
2006-11-23T14:14:38.062916Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Throw rangecheck when nocurrentpoint is detected during a user path
appending to the current path. This improves error reports from
CET 11-22, 11-24, 11-25, 11-27, 11-28.

DETAILS:
With this fix committed Ghostscript matches Distiller 5 but CPSI and Tek
ignore most of the errors in user path.

</pre>
<p>[src/zupath.c]</p>
</blockquote>

<p><strong><a name="2006-11-22T202257.190253Z"></a>
2006-11-22T20:22:57.190253Z Ray Johnston</strong></p>
<blockquote>
<pre>
Read the JBIG2 Global Context from the stream as an array of strings to
create the correct size bytestring for .jbig2makeglobalctx. Bug 689005
for customer 870.

DETAILS:

The /Length element of the the stream dict is the uncomressed size.
This example used FlateDecode on the Global context (which is sort of
dumb because except for the headers, most of the symbol dict is already
compressed -- in this case it saved a whole 36 bytes = 0.2%).

Tested with a smaller string (2000 instead of 60000) since the test
file only needed 18654 bytes.

</pre>
<p>[lib/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2006-11-22T195629.243165Z"></a>
2006-11-22T19:56:29.243165Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Radial shadings sometimes missed Extend.

DETAILS :

Debugged with CET 09-47I.PS SpecialTestH08Test06.

The old code wrongly computed parameter range for the extent,
when there exist 2 tangenting circles. 
In this case the visible part of the extent prolongues to the farest circle.
The old code restricts the extent with the nearest circle.

</pre>
<p>[src/gxshade1.c]</p>
</blockquote>

<p><strong><a name="2006-11-22T020300.217845Z"></a>
2006-11-22T02:03:00.217845Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix 09-33-5 -- return the screen procedure as an array instead of packedarray.
</pre>
<p>[lib/gs_dps2.ps]</p>
</blockquote>

<p><strong><a name="2006-11-22T012637.628128Z"></a>
2006-11-22T01:26:37.628128Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for 09-29-1 -- force result from BG, UCR procs to always be a real.
</pre>
<p>[lib/gs_devcs.ps]</p>
</blockquote>

<p><strong><a name="2006-11-21T211621.705841Z"></a>
2006-11-21T21:16:21.705841Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix stackunderflow on 09-13.ps caused by mistake in rev 7124.

DETAILS:

Detected as a regression on the PS CET files.
</pre>
<p>[lib/gs_cspace.ps]</p>
</blockquote>

<p><strong><a name="2006-11-21T202134.907928Z"></a>
2006-11-21T20:21:34.907928Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for ILLEGAL (\000) (r) file case seen with 23-09.ps 

</pre>
<p>[src/sfxstdio.c]</p>
</blockquote>

<p><strong><a name="2006-11-19T143642.834356Z"></a>
2006-11-19T14:36:42.834356Z leonardo</strong></p>
<blockquote>
<pre>
Fix (filling) : Very long lines sometimes painted in a wrong direction.

DETAILS :

Debugged with CET 11-14.PS : (next 3E9 dup moveto 1 dup lto fini) .

A fixed overflow happened in gxstroke.c .
To work around it we subdivide long segments into 2 parts
before applying the stroking algorithm.

1. The hew function gx_path_has_long_segments checks for long segments.
2. The function gx_path_copy_reducing now breaks long segments into 2 parts. 
3. gxstroke.c is changed to apply (1) and (2).
4. Note that (2) also affects the filling algorithm, 
   rather it is not related to the test case.
   It had problems with long segments also,
   at least gx_default_fill_trapezoid must not be called with 
   very long setgments, because it computes coordinate differences.

</pre>
<p>[src/gxpath.h src/gzpath.h src/gxpflat.c src/gxstroke.c src/gxpcopy.c]</p>
</blockquote>

<p><strong><a name="2006-11-18T214430.894785Z"></a>
2006-11-18T21:44:30.894785Z leonardo</strong></p>
<blockquote>
<pre>
Fix (filling) : Very long lines were missed sometimes.

DETAILS :

1. The flattening iterator subdivided very long lines into 2 segments
   against a fixed overflow. It appears not sufficient due to an
   unrelated code optimization. The new code does in 4 segments (gxpflat.c).
   See comments in code.

2. When finding a path's Y-minimum, the old code didn't account that
   most parts of a segment may fall outside Y-band (gxfill.c).

Debugged with CET 11-11.PS : (next 10 10 moveto 3E9 3E9 lineto fini) .

</pre>
<p>[src/gxfill.c src/gxpflat.c]</p>
</blockquote>

<p><strong><a name="2006-11-18T015021.560089Z"></a>
2006-11-18T01:50:21.560089Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Align coordinate data and color data to byte boundary.

DETAILS :

Debugged with CET 09-47K.PS SpecialTestJ02Test05 and
09-47K.PS SpecialTestJ02Test05 
The old code didn't align to byte boundary.
PLRM requires to align "each vertex data" to byte boundary.

Howebver PLRM doesn't clearly explains, what does "each vertex data" mean.
We make GS to be compatible to CPSI with CET tests.
From these tests we know that it wants to align color data when there is no flag,
and to align the flag only, when it presents. Actually we also align
whenever a vertex ends, because it looks reasonable.

We didn't find practical tests for all cases allowed by PLRM,
so this logick may need a further improvement.

</pre>
<p>[src/gxshade.c src/gxshade4.c src/gxshade.h src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2006-11-17T235838.951291Z"></a>
2006-11-17T23:58:38.951291Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Restrict shading function data with the shading function Domain.

DETAILS :

1. Restricts the function argument data (CET 09-47M.PS, SpecialTestL04Test04);
   CPSI appears to restrict shading function data with no warning.
   The old code throws a rangecheck.

2. Restricts color data with the color space Domain for triangle mesh shadings.
   The old code did not. Changing it to work same as for patch shadings.

</pre>
<p>[src/gxshade.c src/gxshade4.c]</p>
</blockquote>

<p><strong><a name="2006-11-17T052816.982839Z"></a>
2006-11-17T05:28:16.982839Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Validate the argument of setcolorspace before trying to process it.
Catch errors from setcolorspace and re-throw them from shfill.
Fix CET 12-14d.

</pre>
<p>[lib/gs_ll3.ps lib/gs_cspace.ps]</p>
</blockquote>

<p><strong><a name="2006-11-16T164512.812952Z"></a>
2006-11-16T16:45:12.812952Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Return a read-only dictionary from currenthalftone.
Partial fix for CET 09-12-01.
</pre>
<p>[lib/gs_dps2.ps]</p>
</blockquote>

<p><strong><a name="2006-11-16T153300.738256Z"></a>
2006-11-16T15:33:00.738256Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Pass the arrays with correct attributes to setdash and setcolortransfer
in gs_cet.ps to match Tek printer. Fix CET 09-07, 09-08, 09-22.
</pre>
<p>[lib/gs_cet.ps]</p>
</blockquote>

<p><strong><a name="2006-11-16T111236.928665Z"></a>
2006-11-16T11:12:36.928665Z leonardo</strong></p>
<blockquote>
<pre>
Fix (functions) : Provide a tolerance for insuffitient Domain elements 
(CPSI compatibility mode only).

DETAILS :

This change has no effect without "true .setCPSImode".
When it is executed, the missed Domain elements are padded with zeros,
extra elements are silently ignored.
Patch from Alex inproved by Leo. 

</pre>
<p>[src/zfunc3.c]</p>
</blockquote>

<p><strong><a name="2006-11-16T103844.129650Z"></a>
2006-11-16T10:38:44.129650Z leonardo</strong></p>
<blockquote>
<pre>
Fix : A minor bug in the visual trace code.

</pre>
<p>[src/vdtrace.c]</p>
</blockquote>

<p><strong><a name="2006-11-15T235958.494757Z"></a>
2006-11-15T23:59:58.494757Z Ray Johnston</strong></p>
<blockquote>
<pre>
Remove deprecated cs_get_default_color (an editting mistake).
Thanks to Dan Coby for spotting this.
</pre>
<p>[lib/gs_ciecs3.ps]</p>
</blockquote>

<p><strong><a name="2006-11-15T161719.366589Z"></a>
2006-11-15T16:17:19.366589Z Ray Johnston</strong></p>
<blockquote>
<pre>
Return 60.0 0.0 as Adobe dummy values with Halftone dict (real not int)
Fixes 09-05-6
</pre>
<p>[lib/gs_dps2.ps]</p>
</blockquote>

<p><strong><a name="2006-11-15T161530.494892Z"></a>
2006-11-15T16:15:30.494892Z Ray Johnston</strong></p>
<blockquote>
<pre>
Set the correct default value for CIEBasedDEF and CIEBasedDEFG colorspaces.
PLRM p. 233 states value is to be as close to 0.0 as is valid in RangeDEF[G].
Fixes 09-03-3
</pre>
<p>[lib/gs_ciecs3.ps lib/gs_cspace.ps]</p>
</blockquote>

<p><strong><a name="2006-11-15T161242.807313Z"></a>
2006-11-15T16:12:42.807313Z Ray Johnston</strong></p>
<blockquote>
<pre>
Return real instead of int from tint transform as Adobe does. Fixes 09-02-2
</pre>
<p>[lib/gs_sepr.ps]</p>
</blockquote>

<p><strong><a name="2006-11-14T100804.014362Z"></a>
2006-11-14T10:08:04.014362Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : A non-contiguous color function could cause infinite recursion,

DETAILS :

It didn't check the quadrangle size when dividing it by a big color difference.

</pre>
<p>[src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2006-11-13T211210.733371Z"></a>
2006-11-13T21:12:10.733371Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Don't fill ShadingType 1 when the region is outside the function domain.

DETAILS :

Debugged with 09-47G-1.PS SpecialTestF02Test01 .
The old code returned rangecheck when it must not paint anything except Background.
It happened due to an attempt to check the function monotonity outside its domain.

</pre>
<p>[src/gxshade1.c]</p>
</blockquote>

<p><strong><a name="2006-11-13T190522.830209Z"></a>
2006-11-13T19:05:22.830209Z Ray Johnston</strong></p>
<blockquote>
<pre>
Prevent 'repeat' extension from sneaking into FunctionType 4 of PDF's we
create.

DETAILS:

When the device is 'pdfwrite' we don't allow the 'repeat' control operator
in FunctionType 4 functions. The 'check_psc_function' will return a
rangecheck error if this is attempted. We don't need to worry about other
devices such as ps2write since it doesn't emit DeviceN tint transforms
(the only way we can currently get the 'repeat' operator into a PSC
function). To prevent indexing past the end of op_names in calc_put_ops,
we throw a rangecheck if one ever sneaks in.

Note that in theory, since we the opdfread uses the full PS interpreter
to process FunctionType 4, we *could* handle 'repeat', but the calc_put_ops
will prevent that (for now).

Note that this means that attempting to convert 09-31.ps or 09-34.ps into
PDF will not succeed in generating the FunctionType 4, and will throw a
rangecheck in the tint transform when trying to generate a sampled function
that is too large. All other devices, including ps2write, will show the
correct result since the FunctionType 4 tint transform is interpreted in
Ghostscript (which handles its own 'repeat' extension).
</pre>
<p>[src/gsfunc4.c src/zfunc4.c]</p>
</blockquote>

<p><strong><a name="2006-11-13T170542.548481Z"></a>
2006-11-13T17:05:42.548481Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Remove colors from C stack, part 10.

DETAILS :

The patch
http://ghostscript.com/pipermail/gs-cvs/2006-November/006955.html
appears wrong in the part 1.
This patch fixes that.

</pre>
<p>[src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2006-11-13T163814.371701Z"></a>
2006-11-13T16:38:14.371701Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Remove colors from C stack, part 9.

DETAILS :

Removing unuseful comments.

</pre>
<p>[src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2006-11-13T163210.419581Z"></a>
2006-11-13T16:32:10.419581Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc warnings.

DETAILS :

Missed a function prototype.

</pre>
<p>[src/int.mak src/zfile1.c]</p>
</blockquote>

<p><strong><a name="2006-11-13T162251.306913Z"></a>
2006-11-13T16:22:51.306913Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Remove colors from C stack, part 8.

DETAILS :

Fixing Cygwin/gcc warnings.

</pre>
<p>[src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2006-11-13T161041.692230Z"></a>
2006-11-13T16:10:41.692230Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Remove colors from C stack, part 7.

DETAILS :

This is the 7th step of fixing the bug 688955 
"64K stack overflows with shadings".
This change is algorithmically equivalent.
We hope this is the last step, which closes the bug.

1. Optimize reserve_colors_inline;
2. Remove 'assert'.
3. Disable the consistency check in release_colors_inline for faster sesult and smaller code.
4. Provide a consistency check at end of a shading fill in term_patch_fill_state.

</pre>
<p>[src/gxshade4.h src/gxshade1.c src/gxshade4.c src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2006-11-13T153400.738868Z"></a>
2006-11-13T15:34:00.738868Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Remove colors from C stack, part 6.

DETAILS :

This is the 6th step of fixing the bug 688955 
"64K stack overflows with shadings".
This change is algorithmically equivalent.

1. Remove the color_stack_ptr0 argument from various functions.
2. Rename the color_stack_ptr1 variable into color_stack_ptr.

</pre>
<p>[src/gxshade4.h src/gxshade1.c src/gxshade4.c src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2006-11-13T144219.588343Z"></a>
2006-11-13T14:42:19.588343Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Remove colors from C stack.

DETAILS :

This is the 5th step of fixing the bug 688955 
"64K stack overflows with shadings".

Cigwin/gcc yields warning for the last patch,
some of which may be harmful.

</pre>
<p>[src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2006-11-13T143207.933998Z"></a>
2006-11-13T14:32:07.933998Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Remove colors from C stack.

DETAILS :

This is the 4th step of fixing the bug 688955 
"64K stack overflows with shadings".
This change is algorithmically equivalent.

Providing a color stack pointer field in the shading fill state structure.
When some colors are reserved, we advance the color stack pointer.
A new function release_colors work for releasing them.

This patch inserts some asserts, which to be removed soon.

</pre>
<p>[src/gxshade4.h src/gxshade1.c src/gxshade4.c src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2006-11-13T111836.886321Z"></a>
2006-11-13T11:18:36.886321Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Remove colors from C stack.

DETAILS :

This is the 3nd step of fixing the bug 688955 
"64K stack overflows with shadings".
This change is algorithmically equivalent.

1. New functions reserve_colors_inline, reserve_colors work with
   the color stack in heap. 

2. Currently the color stack pointer is saved at each
   recursion level for simplifying the debugging.
   We intend t move it later to the shading fill state structure.
   Currently it is passed via most function calls as a new argument.

3. In automatic data the colors change type
   from a structure to pointer.

4. Since we want to keep colors be constant while 
   the heavy decompositioin recursion, we made
   the local color pointers point to const data.
   Therefore a new argument is added to some functions,
   which construct colors and therefore need
   a non-conmst access. Thise changes are commented with
   "providing a non-const access".

5. Minor change : cs_is_linear changes the 1st argument type to 'const'
   (gscspace.c, gxcspace.h).

</pre>
<p>[src/gxshade4.h src/gxcspace.h src/gxshade.c src/gxshade1.c src/gxshade4.c src/gscspace.c src/gxshade.h src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2006-11-13T110418.319919Z"></a>
2006-11-13T11:04:18.319919Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : A better average color when filling a triangle.

DETAILS :

Due to a misprint, the old code wrongly computed the average color 
from 3 colors of triangle vertices.

Minor change : pfs-&gt;color_stack_limit is int rather than a pointer,
so NULLL isn't a good initilizer.

</pre>
<p>[src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2006-11-12T221804.834342Z"></a>
2006-11-12T22:18:04.834342Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add 'repeat' as an pseudo-operator for FunctionType 4. Needed for PS CET
09-31 and 09-34 that use it in the tint transform for DeviceN with 110 and
250 components.

DETAILS:

Since Type 4 functions are a PDF feature, extending the control operators
to include 'repeat' doesn't create any PS incompatibility.
</pre>
<p>[src/gsfunc4.h src/gsfunc4.c src/opextern.h src/zfunc4.c src/zcontrol.c]</p>
</blockquote>

<p><strong><a name="2006-11-10T121842.454752Z"></a>
2006-11-10T12:18:42.454752Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Return floating point values for some cases of currentgray, currentrgb, and
currentcmyk operator that are implemented in PostScript.
Fix CET 09-10.ps, 09-19.ps.
</pre>
<p>[lib/gs_patrn.ps lib/gs_cspace.ps]</p>
</blockquote>

<p><strong><a name="2006-11-09T200509.172995Z"></a>
2006-11-09T20:05:09.172995Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc warnings

</pre>
<p>[src/gxccman.c src/gdevbit.c src/devs.mak]</p>
</blockquote>

<p><strong><a name="2006-11-09T192553.845531Z"></a>
2006-11-09T19:25:53.845531Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Provide a single color stack for entire shading.

DETAILS :

This is the 2nd step of the preparation for fixing 
the bug 688955 "64K stack overflows with shadings".
This change is algorithmically equivalent.

1. Ading fields into patch_fill_state_t for representing a color stack in heap.

2. Initialize and finalize them in gxshade6.c . 
   Currently they work idle.

3. Provide a single patch_fill_state_t instance for all
   meshes/patches of a shgading (gxshade1.c). 
   It allows to handle a single color stack 
   for all meshes/patches of a shading.

3. Document the shortened color representation in gxshade4.h .

Most subclasses of shading_fill_state_common are now rudiments,
but we keep them for a while to minimize the patch.
Note A_fill_state_s is not longer a subclass of it.

</pre>
<p>[src/gxshade4.h src/gxshade1.c src/gxshade4.c src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2006-11-09T022813.502287Z"></a>
2006-11-09T02:28:13.502287Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Trap errors from findfont, etc. and re-throw them as selectfont errors.
Partial fix fot CET 13-16.ps
</pre>
<p>[lib/gs_dps1.ps]</p>
</blockquote>

<p><strong><a name="2006-11-09T015418.338382Z"></a>
2006-11-09T01:54:18.338382Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change the order of argument checking in kshow operator.
Partial fix fot CET 13-12.ps
</pre>
<p>[src/zchar.c]</p>
</blockquote>

<p><strong><a name="2006-11-09T011130.297156Z"></a>
2006-11-09T01:11:30.297156Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Following Adobe example accept 1-component multiple data sources in imahemask.
Match CET 12-08b.ps

</pre>
<p>[src/zimage.c]</p>
</blockquote>

<p><strong><a name="2006-11-08T200148.930089Z"></a>
2006-11-08T20:01:48.930089Z Ray Johnston</strong></p>
<blockquote>
<pre>
A couple of minor additions to match CPSI. Mostly just to show customers
that these are device specific values they may want to set themselves.
</pre>
<p>[lib/gs_cet.ps]</p>
</blockquote>

<p><strong><a name="2006-11-08T175948.588441Z"></a>
2006-11-08T17:59:48.588441Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Improving radial gradients.

DETAILS :

The old code has a bug when painting an extent for an obtuse cone.
Then filling the wider extent, it also painted the extent near the apex.
It happened due to a trick with representing the view of the constant color cone
with triangles. This problem is visible with 09-47I.PS page 7 Test11.

Another problem relates to the representation of circles with
2d order besiers. The old code did not account the approximation error of
the representation, causing a "stair" between the extent and the cone.
The stair may be visible when painting a big cone with a sloped tangent.

These two problems were introduced with Revision 2524 
on Apr 18 08:12:56 2002 UTC by jeong. When the "new" shading
algorithm was implemented 2+ years ago,
they were not noticed and has been ported to the "new" algorithm.

This patch paints the extent as a regular annulus
concatenated with a circle, which "closes" the wider extent.
The circle is taken so that its tangent points fall outside 
the view rectangle. The "closing" circle is necessary because the
annulus may be thinner than the view rectangle.

</pre>
<p>[src/gxshade1.c]</p>
</blockquote>

<p><strong><a name="2006-11-08T161335.888122Z"></a>
2006-11-08T16:13:35.888122Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make UniqueID error reporting match Adobe's. Partial fix for 13-05.PS.
</pre>
<p>[src/idparam.c]</p>
</blockquote>

<p><strong><a name="2006-11-08T133618.319314Z"></a>
2006-11-08T13:36:18.319314Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Rearrange gs_client_color_s to allow saving RAM from color components.

DETAILS :

This is a preparation for fixing the bug 688955 "64K stack overflows with shadings".
See comments in cope.

</pre>
<p>[src/gsccolor.h]</p>
</blockquote>

<p><strong><a name="2006-11-08T125536.512197Z"></a>
2006-11-08T12:55:36.512197Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Set errorinfo for Background key in shading dictionary. Clear some
issurs detected by CET 09-47G.PS and 09-47H.PS.
</pre>
<p>[src/zshade.c]</p>
</blockquote>

<p><strong><a name="2006-11-08T123045.541199Z"></a>
2006-11-08T12:30:45.541199Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Improving radial gradients.

DETAILS :

1. Extend was missed sumetimes due to a wrong formula in R_outer_circle.
2. Must paint nothing when both radii are zero.

</pre>
<p>[src/gxshade1.c]</p>
</blockquote>

<p><strong><a name="2006-11-07T233031.983202Z"></a>
2006-11-07T23:30:31.983202Z Ralph Giles</strong></p>
<blockquote>
<pre>
Prepend &#36;(DESTDIR) to unix 'make install' paths for the convenience of 
packagers. This assumes make will substitute an empty string for 
undefined makefile variable, but this is a widespread convention.
Bug 688948.
</pre>
<p>[src/unixinst.mak]</p>
</blockquote>

<p><strong><a name="2006-11-07T194918.274457Z"></a>
2006-11-07T19:49:18.274457Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the deprecated ps2write.bat, which does not work. ps2ps2.bat is 
the correct script to invoke. Bug 688977.
</pre>
<p>[lib/ps2write.bat]</p>
</blockquote>

<p><strong><a name="2006-11-07T185246.763208Z"></a>
2006-11-07T18:52:46.763208Z Ray Johnston</strong></p>
<blockquote>
<pre>
Turn on CPSI mode for CET runs. This mode uses the CPSI cmyk_to_rgb
conversion and 'eofill' for Type1 characters.s

DETAILS:

This improves the difference count for 250 pages and only increases
the difference count for 6 pages. I've reviewed all regressions and
the changes are not important. Of the 250 pages that are improved,
The 250 improvements will be analyzed and those that were DIFF or
AOK will be changed to OK if they now match closely enough.

</pre>
<p>[lib/gs_cet.ps]</p>
</blockquote>

<p><strong><a name="2006-11-07T155545.038514Z"></a>
2006-11-07T15:55:45.038514Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use standard vector product formula to decide whether the 2 tangent lines
in arct operator are collinear. Fix CET 11-03.

</pre>
<p>[src/gspath1.c]</p>
</blockquote>

<p><strong><a name="2006-11-07T125211.415127Z"></a>
2006-11-07T12:52:11.415127Z leonardo</strong></p>
<blockquote>
<pre>
Fix (gs_cet.ps) : Patch 'setsmoothing' for a better view of shadings in CET tests (continued).

DETAILS :

Fixing a misprint in the last patch.

</pre>
<p>[lib/gs_cet.ps]</p>
</blockquote>

<p><strong><a name="2006-11-07T124634.330897Z"></a>
2006-11-07T12:46:34.330897Z leonardo</strong></p>
<blockquote>
<pre>
Fix (gs_cet.ps) : Patch 'setsmoothing' for a better view of shadings in CET tests.

DETAILS :

CET tests execute "1 setsmoothing", which allows a 100% color error
while a shading rasterization. We patch 'setsmoothing' to make
the shadings be painted with the default smoothing.
It appears closer to what CPSI does.

</pre>
<p>[lib/gs_cet.ps]</p>
</blockquote>

<p><strong><a name="2006-11-07T035009.475944Z"></a>
2006-11-07T03:50:09.475944Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Adjust error reporting from sethalftone to match CET 09-40.
Fix an error in sethalftone redefinition. Halftone can read from
the current file; sethalftone cannot be redefined as { pop } .

</pre>
<p>[lib/gs_dps2.ps lib/gs_ll3.ps]</p>
</blockquote>

<p><strong><a name="2006-11-07T011342.489161Z"></a>
2006-11-07T01:13:42.489161Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix CET 09-32:
Adjust error reporting from setcolorrendering to match the test.
Make TransformPQR a required parameter, as specified by the PLRM.

</pre>
<p>[lib/gs_lev2.ps src/zcrd.c src/zcie.c]</p>
</blockquote>

<p><strong><a name="2006-11-06T185856.541927Z"></a>
2006-11-06T18:58:56.541927Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : The monotonoty check for Stitching function was wrong.

DETAILS :

It partially fixes 09-47D.PS and other tests.

1. The function itself didn't set the non-monotonic dimension mask.
2. The shading code erroneusely exchanged dimensions when checking the color monotonoty.

</pre>
<p>[src/gsfunc3.c src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2006-11-06T123312.321244Z"></a>
2006-11-06T12:33:12.321244Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Partialy fix CET 13-05:
- Trap errors in definefont procedure and re-throw them as definefont errors.
- Throw "invalidaccess in definefont" error for the no-access font dictionary
  instead of invalidfont that happens without the check. 
- Silently ignore invalid /FID attribute.

</pre>
<p>[lib/gs_fonts.ps lib/gs_res.ps src/zbfont.c]</p>
</blockquote>

<p><strong><a name="2006-11-05T041418.656525Z"></a>
2006-11-05T04:14:18.656525Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Adjust error reporting from findfont procedure to match Distiller and CET
13-06.PS.tek360 . The PhotoPrint product is clearly wrong here leaving
a few objects on the stack besides the arguments when findfont fails.
</pre>
<p>[lib/gs_res.ps]</p>
</blockquote>

<p><strong><a name="2006-11-05T030015.616716Z"></a>
2006-11-05T03:00:15.616716Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Adjust error reporting from findencoding procedure to match Adobe.
Make "null ... findresource" throw /typecheck instead of /undefinedresource .
Fix CET 13-06.PS
</pre>
<p>[lib/gs_res.ps]</p>
</blockquote>

<p><strong><a name="2006-11-04T170522.998270Z"></a>
2006-11-04T17:05:22.998270Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change attributes of the array form of the device color spaces.
Fix a bug in HSB to RGB conversion introduced in rev. 7124.
Simplify equality testing of color spaces: names match corresponding
array forms, all other match when color space arrays are equal.
Accept float value as a color value for an indexed color space.
Fixes CET 09-06.PS and many other test cases.

</pre>
<p>[lib/gs_indxd.ps lib/gs_cspace.ps]</p>
</blockquote>

<p><strong><a name="2006-11-04T152319.316020Z"></a>
2006-11-04T15:23:19.316020Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix error reporting for setdevparams operator, CET 27-08.

</pre>
<p>[lib/gs_lev2.ps src/ziodev2.c]</p>
</blockquote>

<p><strong><a name="2006-11-04T141105.665517Z"></a>
2006-11-04T14:11:05.665517Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Accept negative value for MinFontCompress user parameter and silently
substitute with 0. Intercept setuserparams errors and re-throw them as
setcacheparams errors. Partial fix for CET 27-07.ps.

</pre>
<p>[lib/gs_lev2.ps src/gsfont.c src/zusparam.c]</p>
</blockquote>

<p><strong><a name="2006-11-04T055916.045180Z"></a>
2006-11-04T05:59:16.045180Z Ray Johnston</strong></p>
<blockquote>
<pre>
Increase the number of DeviceN components we can handle to at least
250 (which is needed by CET 09-03, 09-06, ...). Both GS_CLIENT_COLOR_MAX_COMPONENTS
and MAX_VSTACK depth are needed since we use Type 4 functions to handle DeviceN colors.
</pre>
<p>[src/gsccolor.h src/gsfunc4.c]</p>
</blockquote>

<p><strong><a name="2006-11-04T055114.333525Z"></a>
2006-11-04T05:51:14.333525Z Ray Johnston</strong></p>
<blockquote>
<pre>
Make the Device color spaces arrays instead of packedarrays for Adobe
compatibility. CET 09-03, 09-06 and others.
</pre>
<p>[lib/gs_cspace.ps]</p>
</blockquote>

<p><strong><a name="2006-11-04T040222.614110Z"></a>
2006-11-04T04:02:22.614110Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Accept negative argument for setcachelimit operator and silently substitute
with 0. Intercept setuserparams errors and re-throw them as setcachelimit
errors. Fix CET 27-06.ps.

</pre>
<p>[lib/gs_lev2.ps src/gsfont.c src/zusparam.c]</p>
</blockquote>

<p><strong><a name="2006-11-03T204710.212392Z"></a>
2006-11-03T20:47:10.212392Z Raph Levien</strong></p>
<blockquote>
<pre>
Fix: Change /.OrigFont key to /OrigFont to match (undocumented) Adobe
behavior. Fixes CET 15-04-1 et al and 16-08-1. Note: test file
Bug687615.ps depends on old undocumented behavior, but has been patched
in the comparefiles repository.
</pre>
<p>[lib/gs_fonts.ps src/gdevpdtt.c src/zbfont.c]</p>
</blockquote>

<p><strong><a name="2006-11-03T204313.567715Z"></a>
2006-11-03T20:43:13.567715Z Raph Levien</strong></p>
<blockquote>
<pre>
Fix: Fixes clipsave/cliprestore nested with gsave operations. Correct
behavior is to save clipstack into saved gstate, and clear the clipstack
in the current graphics state, as clarified in PLRM3. Fixes 450-01.ps and
CET 09-54-2 et al, and 11-06-2.
</pre>
<p>[src/gsstate.c]</p>
</blockquote>

<p><strong><a name="2006-11-03T192058.328736Z"></a>
2006-11-03T19:20:58.328736Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make arcto and arct operators throw undefinedresult when the start point
or the end point is the same as the center making calculation of the
tangent impossible. Fix CET 11-04.ps.

</pre>
<p>[src/gspath1.c]</p>
</blockquote>

<p><strong><a name="2006-11-03T062815.169508Z"></a>
2006-11-03T06:28:15.169508Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix some typo's editting blunders. No code change.
</pre>
<p>[src/gsmisc.c src/zmisc.c]</p>
</blockquote>

<p><strong><a name="2006-11-03T054505.987701Z"></a>
2006-11-03T05:45:05.987701Z Ray Johnston</strong></p>
<blockquote>
<pre>
Implement dynamic configuration of previous compile options that are needed
for CPSI compatibility running the PS CET.

DETAILS:

While a 'state' variable to control this is preferred to a global, the
gs_device or gs_imager_state is not propagated through all of the color
functions. For example, the place where USE_ADOBE_CMYK_RGB was used with
#if to select the color, even though there was a 'pis', it was called
with NULL at times. Default will remain the same as the current gs.

The other option controlled with .setCPSImode is the Type 1 fill method.
While eofill is the Adobe spec method needed for CPSI compatibility, 
the w.n. 'fill' method is needed for some Type1's created from TT fonts
that don't properly handle inadvertent crossings (and other bad fonts).

The "true .setCPSImode" will be added to the lib/gs_cet.ps to improve
CET CPSI compatibility.

PCL is not affected since it does not have CMYK colors and doesn't handle
Type1 fonts.
</pre>
<p>[src/gsmisc.c src/zmisc.c src/zchar1.c src/gxdcconv.c]</p>
</blockquote>

<p><strong><a name="2006-11-02T194247.894000Z"></a>
2006-11-02T19:42:47.894000Z leonardo</strong></p>
<blockquote>
<pre>
Fix (imagemask) : An optimization for imagemask with a shading color, continued 2.

DETAILS :

Cygwin/gcc warnings in the last patch.

</pre>
<p>[src/lib.mak src/gspcolor.h src/gximask.c]</p>
</blockquote>

<p><strong><a name="2006-11-02T191923.740183Z"></a>
2006-11-02T19:19:23.740183Z leonardo</strong></p>
<blockquote>
<pre>
Fix (imagemask) : An optimization for imagemask with a shading color, continued.

DETAILS :

This is a performance fix for 09-47D-3 .
It is a similar optimization as a recent one for imagemask, 
rather this one applies to different cases, which are not directly related to 
to Postscript operator imagemask. The cases are :
- filling a cached character with a shading color;
- filling a FAPI character with a shading color;
- rendering an imagemask while a clist playback (for future. 
  currently never happens with shadings).

This patch adds new modules gximask.c and gximask.h,
which factor out the common code for the mentioned cases.
The code is taken from the last patch for imagemask,
with minor restructurization.

The new function gx_image_fill_masked must be called
from the graphics librari instead a direct call
to the device virtual method fill_mask. 
It checks for the shading color and inserts the clipping device,
which represents the mask. 

Note that the clipping device always decompose a shading color,
so inserting the clipping device before it won't cause a problem.
However it needs some care when rendering to a high level device.

The clip accumulator device had no fill_mask virtual method.
This patch adds the default implementation 
for the proper work of gx_image_fill_masked.

</pre>
<p>[src/gsimage.c src/lib.mak src/gxacpath.c src/int.mak src/gximask.c src/gxccache.c src/gzcpath.h src/gxclrast.c src/gximask.h src/zfapi.c]</p>
</blockquote>

<p><strong><a name="2006-11-01T211841.176742Z"></a>
2006-11-01T21:18:41.176742Z leonardo</strong></p>
<blockquote>
<pre>
Fix : When filling a path with a shading, the filling rule was missed. 

DETAILS :

1. Unwing the rev 7114 patch due to a significant slowdown
   for filling a path with a shading (gxfill.c).

2. A minor change to gxfill.c : removed a redundant assignment to fo.lop .

3. The old code always used the non-zero winding rule,
   because gx_cpath_to_path misses the winding rule
   when called from gx_default_fill_path.
   See commet in code.
   This is the real fix for the problem.

4. pcpath-&gt;rule sometimes was not initialized when pcpath-&gt;path_valid is true (gxcpath.c)

We don't like that gx_default_fill_path creates a big clipping path,
which then converts into a path, which then is being intersected 
with a rectangle and/or parallelogram(the shading BBox) in gs_shading_fill_path.
The biggest time expence in this chain is the sorting a lot of 
rectangles when gx_cpath_intersect_path_slow applies the filling
algorithm to compute the intersection. In many cases the 
the rectangle is simply the bounding box of the path,
but it still needs the clipping path planarization, because 
the "planarized" property isn't stored in the path structure.

We tried to optimize against it, but didn't succeed with no raster differences.
Delaying that optimization for better times.
Due to a short time frame we need to make this patch smaller and simpler.
 
</pre>
<p>[src/gxcpath.c src/gxfill.c]</p>
</blockquote>

<p><strong><a name="2006-11-01T195848.174934Z"></a>
2006-11-01T19:58:48.174934Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add prototypes for _ftelli64 and _fseeki64 for MSVC 6 builds. Allows
&gt; 2Gb clist when building with MSVC 6. Bug 688394 for customer 330.

DETAILS:

Even though the functions are in the run time library (at least with
service pack 6), they aren't documented and aren't in the include
files. Without the prototypes, the functions are presumed to return
and 'int' so the sign gets extended for offsets &gt; 0x7ffffff.

Tested with customer's file at 180dpi where the clist size gets up
to 2.7Gb.

</pre>
<p>[src/gp_mswin.c]</p>
</blockquote>

<p><strong><a name="2006-11-01T043135.972287Z"></a>
2006-11-01T04:31:35.972287Z Henry Stiles</strong></p>
<blockquote>
<pre>
This file should have been included in the previous checkin.  gs is
now an external repository and changes have to be checked in
explicitly.
</pre>
<p>[src/gdevpxop.h]</p>
</blockquote>

<p><strong><a name="2006-11-01T010501.781266Z"></a>
2006-11-01T01:05:01.781266Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change order of operand checking in setfileposition to match CET 23-28.ps
</pre>
<p>[src/zfileio.c]</p>
</blockquote>

<p><strong><a name="2006-11-01T004439.318388Z"></a>
2006-11-01T00:44:39.318388Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make resourcestatus throw typecheck when resource category is not a name.
Partial fix for CET 23-26.ps, page 4.
</pre>
<p>[lib/gs_res.ps]</p>
</blockquote>

<p><strong><a name="2006-10-31T232122.115009Z"></a>
2006-10-31T23:21:22.115009Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change the order of argument checking in renamefile operator and the error
code returned for renaming bare devices such as (%stdin) to match CET 23-23.ps
</pre>
<p>[src/gsfname.c src/zfile.c]</p>
</blockquote>

<p><strong><a name="2006-10-31T213003.431760Z"></a>
2006-10-31T21:30:03.431760Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change the order of argument testing in readline operator to match CET 23-22.ps
</pre>
<p>[src/zfileio.c]</p>
</blockquote>

<p><strong><a name="2006-10-31T210030.566372Z"></a>
2006-10-31T21:00:30.566372Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes a bug: 'bind' would affect non-writable ordinary arrays, rather than
doing nothing per the PLRM.  ('bind' still affects packed arrays, per the
PLRM.)  Fixes a discrepancy in PS3 CET 31-01-2.
</pre>
<p>[src/zmisc.c]</p>
</blockquote>

<p><strong><a name="2006-10-31T205838.108340Z"></a>
2006-10-31T20:58:38.108340Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes a bug that caused certain 1-operand math operators to return typecheck
rather than stackunderflow if the stack was empty.  Fixes a discrepancy in
PS3 CET 25-05-1.
</pre>
<p>[src/iutil.c]</p>
</blockquote>

<p><strong><a name="2006-10-31T173629.458383Z"></a>
2006-10-31T17:36:29.458383Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change the order of argument checking for readstring operator to satisfy CET
23-21.ps . In general, CET prefers other errors over stack underflow when
there is a choice. Ghostscript was originally designed to do the opposite.
</pre>
<p>[src/zfileio.c]</p>
</blockquote>

<p><strong><a name="2006-10-31T042918.220326Z"></a>
2006-10-31T04:29:18.220326Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Makes 0 0 exp return 1.0 rather than signalling undefinedresult, to match
Adobe interpreters.  Fixes a discrepancy in PS3 CET 25-07-1.
</pre>
<p>[src/zmath.c]</p>
</blockquote>

<p><strong><a name="2006-10-30T222055.924215Z"></a>
2006-10-30T22:20:55.924215Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fully check an setcolor operand before trying to access a new one to match
CET 09-30 and 09-48 error reporting. Down, not across.
</pre>
<p>[lib/gs_cspace.ps]</p>
</blockquote>

<p><strong><a name="2006-10-30T215756.999671Z"></a>
2006-10-30T21:57:56.999671Z Ray Johnston</strong></p>
<blockquote>
<pre>
Tolerate some missing keys in a CMap (previously we only allowed for missing
CMapName). Missing /CodeMap and /CIDSystemInfo now tolerated for PS CET 23-25
and others.

DETAILS:

Note a CMap with missing CodeMap can't really be used. It is just accepted
for CPSI compatibility.
</pre>
<p>[lib/gs_cmap.ps]</p>
</blockquote>

<p><strong><a name="2006-10-30T215344.580966Z"></a>
2006-10-30T21:53:44.580966Z Ray Johnston</strong></p>
<blockquote>
<pre>
Remove Localization Resource since CPSI doesn't define this. PS CET 23-25
and others.
</pre>
<p>[lib/gs_cet.ps]</p>
</blockquote>

<p><strong><a name="2006-10-30T214751.298314Z"></a>
2006-10-30T21:47:51.298314Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Don't replace FDArray for a built CIDFontType 0.

DETAILS :

Debugged with 32_all.PS .

The old code didn't check whether a CIDFontType 0 is being built
at second time and erroneusely replaced FDArray in it.
It causes FDArray to be prematurely released with "restore"
when the font is not, causing a heap inconsistency.

This quick fix avoids the FDArray replacement.
However it leaves some work for the garbager.
A better fix should perform a better cleanup -
see comment in code. Delaying it for better times.

</pre>
<p>[src/zfcid0.c]</p>
</blockquote>

<p><strong><a name="2006-10-30T182009.692598Z"></a>
2006-10-30T18:20:09.692598Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix decoding of the indexed color space in the smooth shading.
Adjust error codes to satisfy CET 12-14a, 12-14b 12-14e, 12-14f, 12-14g
Change gs_errorinfo_put_pair() to take char* instead of byte* a
more common type and move all errorinfo-related functions to idparam.c
because they are most often used with dictionary parameter functions.

</pre>
<p>[src/zimage.c src/idparam.c src/zshade.c src/int.mak src/interp.c lib/gs_ll3.ps src/idparam.h src/gxshade.c src/interp.h]</p>
</blockquote>

<p><strong><a name="2006-10-30T145434.519781Z"></a>
2006-10-30T14:54:34.519781Z Stefan Kemper</strong></p>
<blockquote>
<pre>
Comment change.

gsargs::arg_push_string changes the parsing algorithm to parse on 
spaces.  This is a side effect of changing the depth of the arg_list.  
Currently only the postscript -c option uses this parsing scheme.
 
No Differences.
</pre>
<p>[src/gsargs.h]</p>
</blockquote>

<p><strong><a name="2006-10-27T114901.166620Z"></a>
2006-10-27T11:49:01.166620Z leonardo</strong></p>
<blockquote>
<pre>
Fix : MSVC warning.

DETAILS :

char** --&gt; char*
Don't know how it compiles with various compilers.
In any case it was definitely wrong.

</pre>
<p>[src/gsiorom.c]</p>
</blockquote>

<p><strong><a name="2006-10-27T000416.218261Z"></a>
2006-10-27T00:04:16.218261Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Don't modify the destination string of cvs and cvrs operators on
failure. Change the returned error codes to suit the CET tests
24-05.PS and 24-06.PS .

DETAILS:
Adobe enterpreters have a bug when "1234556789 10 ( ) cvrs"
restores the stack as "123456789 ( ) ( )" Ghostscript doesn't have
this bug, which is affects 24-05.PS checksums.

</pre>
<p>[src/zfileio.c src/iutil.c src/iutil.h src/ztype.c]</p>
</blockquote>

<p><strong><a name="2006-10-26T231005.159422Z"></a>
2006-10-26T23:10:05.159422Z Raph Levien</strong></p>
<blockquote>
<pre>
Fix: make out-of-bounds string DataSource reads return 0 bytes, rather 
than UMR. Spec calls for /rangecheck, but CPSI silently returns garbage. 
Improves 09-47B page 12 (focus on test 6), but exact match to CPSI is
probably not feasible.
</pre>
<p>[src/gsdsrc.c]</p>
</blockquote>

<p><strong><a name="2006-10-26T221401.743778Z"></a>
2006-10-26T22:14:01.743778Z leonardo</strong></p>
<blockquote>
<pre>
Fix (TT font reader) : Obtain Unicode codes from Encoding glyph names of a special format.

DETAILS :

Bug 688946 "Problem reading PDF file with Arabic font".

We think we observe an undocumented Adobe feature.
This patch has no strong theoretic foundation.
It is created empirically.

An embedded True Type font has no some glyph names in its 'post' table,
but they present in Encoding Differences. 
The glyph names look as uniXXXX where XXXX is 4 hexadecimal digits.
The corresponding character codes can't be translated into
glyph indices neither with AdobeGlyphList, nor with 'post',
nor by the identity or another simple mapping to Unicode.

We conclude that Adobe recognizes such names and
obtains Unicode codes from them, and then translates
them with 'cmap'. We think it is only possible correct method for
the supplied test case. This patch implements it.

1. Passed Encoding as prebuilt_encoding for symbolic fonts (pdf_font.ps).

2. When a symbolic font has an Unicode 'cmap',
   account glyph names from its Encoding (the change to .pdfcharkeys in gs_ttf.ps)
   while composing CharStrings.

3. Modified .addglyph with conversion of uniXXXX names into Unicode codes.

4. The new mapping is allowed only with cmap 3.1.
   Debugged with Bug688467.ps .

</pre>
<p>[lib/pdf_font.ps lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2006-10-26T082631.673716Z"></a>
2006-10-26T08:26:31.673716Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Specialize the build_char function argument type (continued).

DETAILS :

Removing another cast related to the last patch
(An MSVC warning).

</pre>
<p>[src/lib.mak src/gxfcopy.c]</p>
</blockquote>

<p><strong><a name="2006-10-26T075320.323680Z"></a>
2006-10-26T07:53:20.323680Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Specialize the build_char function argument type.

DETAILS :

The ghostpcl project yielded a potentially harmful
warning about a type cast. It occurs a cast from 
a class to subclass. We could not provide a dynamic check in there,
so we analyzed why it needs such cast. The reason appears 
an inaccurate design in the graphics library, and we fix it now.

</pre>
<p>[src/gxchar.c src/gstext.c src/gxfcopy.c src/gxfont.h]</p>
</blockquote>

<p><strong><a name="2006-10-26T070758.608985Z"></a>
2006-10-26T07:07:58.608985Z leonardo</strong></p>
<blockquote>
<pre>
Fix : MSVC warning in the last patch.

DETAILS :

Fixed an inaccurate type cast.

</pre>
<p>[src/interp.c]</p>
</blockquote>

<p><strong><a name="2006-10-26T053639.854227Z"></a>
2006-10-26T05:36:39.854227Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fix: /bind load printed --.bind-- rather than --bind--. Partly fixes a
discrepancy in PS3 CET 31-01-2.
</pre>
<p>[lib/gs_ll3.ps]</p>
</blockquote>

<p><strong><a name="2006-10-26T043935.686300Z"></a>
2006-10-26T04:39:35.686300Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Replace inexact decimal literals in the HSB&lt;-&gt;RGB algorithms with more exact
computed values, so that (e.g.) 0.2 1 1 sethsbcolor currenthsbcolor returns
0.2 1 1.  Fixes problems in PS3 CET 09-41-4.
</pre>
<p>[lib/gs_cspace.ps]</p>
</blockquote>

<p><strong><a name="2006-10-26T010353.154097Z"></a>
2006-10-26T01:03:53.154097Z Raph Levien</strong></p>
<blockquote>
<pre>
Implementation of imagemask scaling. Fixes CET 09-24 page 3 and many 
other instances of the interpolated "turkey" bitmap. This implementation
mostly matches Adobe, but differs in one bit; further analysis of the
Adobe algorithm would be necessary to make it match 100%.
</pre>
<p>[src/lib.mak src/zfimscale.c src/simscale.c src/int.mak lib/gs_img.ps src/simscale.h]</p>
</blockquote>

<p><strong><a name="2006-10-25T170148.042147Z"></a>
2006-10-25T17:01:48.042147Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add a routine to create and store [/key any] array in &#36;error.errorinfo for
better conformance with Adobe PS interpreters. This routine will be called
from many places that reports errors in dictionary parameters. Use the new
routine to fix one case of error reporting in the inage operator.
Bug 688956.

</pre>
<p>[src/zimage.c src/int.mak src/interp.c src/interp.h]</p>
</blockquote>

<p><strong><a name="2006-10-25T121009.905326Z"></a>
2006-10-25T12:10:09.905326Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Normalize bounding box retrieved from PostScript BBox parameter in the
shading dictionary because Adobe interpreters accept denormalized box.
Bug 688937, customer 200.

</pre>
<p>[src/zshade.c]</p>
</blockquote>

<p><strong><a name="2006-10-24T151303.211241Z"></a>
2006-10-24T15:13:03.211241Z leonardo</strong></p>
<blockquote>
<pre>
Fix (imagemask) : An optimization for imagemask with a shading color.

DETAILS :

This is a partial performance fix for 09-47L.PS .
It fixes the biggest performance flaw,
but a further optimization is still wanted.

The patch converts the image into a clipping path and then
renders entire shading at once through the clipping path.
The old code rendered entire shading color many times for 
each rectangle of the mask.

1. The clip list accumulator device is made publicly accessible.

2. Provided a garbager descriptor for clip list accumulator device structure. 

3. When an imagemask needs to render with a shading color,
gs_image_begin_typed replaces the target device with 
the clip list accumulator device.

4. To provide a correct work of (3),
inserted a hook into gx_dc_pattern2_fill_rectangle,
which forwards the operation back to the device method.
It is done because normally that function calls
copy_mono with imagemak. Instead that, we need to accumulate 
rectangles for the clipping path.

5. Introduced a new signal pattern_manage__is_cpath_accum,
which is used to detect the clip path accumulator device
under a forwarding device. Such case happens in (4)
when it renders a cached character with a shading color.

6. gs_image_cleanup performs the main work for rendering
the shading color through the clipping path.
Note that we need to pass the device color to it,
therefore it gets a new gs_state argument.
(Well, one may think that it can be passed 
in a new field of gs_image_enum.
Actually that's not safe because an erroneus Postscript program 
can change the current graphic state and
release the old one. After that the pointer
will point to the released structure and
cause a heap inconsistency).

</pre>
<p>[src/gsimage.c src/gsptype1.c src/lib.mak src/zimage.c src/gsptype2.c src/gxcpath.c src/gxacpath.c src/gsimage.h src/gxcpath.h src/gxccache.c src/gzacpath.h src/gdevpdfi.c src/gxdevcli.h]</p>
</blockquote>

<p><strong><a name="2006-10-24T122214.551224Z"></a>
2006-10-24T12:22:14.551224Z Tor Andersson</strong></p>
<blockquote>
<pre>
A conditionally compiled mechanism to allow cached characters
to be locked out from eviction. A cached character has a reference
count, which if non-zero will prevent the cache slot to be evicted.

This is needed for the GSLite API.

</pre>
<p>[src/gxfcache.h src/gxccman.c]</p>
</blockquote>

<p><strong><a name="2006-10-23T111711.666646Z"></a>
2006-10-23T11:17:11.666646Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Repair the character cache logics with persistent cache entries (continued).

DETAILS :

Cygwin/gcc yielded unpleasant warnings.

</pre>
<p>[src/gxfcache.h src/gxccman.c src/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2006-10-22T185827.280592Z"></a>
2006-10-22T18:58:27.280592Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes bug: xshow/yshow/xyshow checked the length of the widths array
incorrectly, and the outcome of the check was ignored.  Partially fixes a
discrepancy in PS3 CET 13-27/28/29.
</pre>
<p>[src/gxchar.c src/gstext.c src/gstext.h]</p>
</blockquote>

<p><strong><a name="2006-10-22T175851.962128Z"></a>
2006-10-22T17:58:51.962128Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes bug: the user path operators didn't check encoded user paths to make
sure that the operand string/array and operator string allowed read access.
Partially fixes a discrepancy in PS3 CET 13-29-3.
</pre>
<p>[src/ibnum.c src/zupath.c]</p>
</blockquote>

<p><strong><a name="2006-10-21T223811.960157Z"></a>
2006-10-21T22:38:11.960157Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Changes exec, stopped, and .stopped so that if the object to be executed is
noaccess and executable, the invalidaccess error occurs with the object
still on the operand stack.  Fixes an Adobe incompatibility in PS3 CET
28-14-1.
</pre>
<p>[src/zcontrol.c]</p>
</blockquote>

<p><strong><a name="2006-10-20T011242.025502Z"></a>
2006-10-20T01:12:42.025502Z Raph Levien</strong></p>
<blockquote>
<pre>
FIX: Fixes CET 18-02A p4 and others. Optimization for filling shadings
by installing a clipper device with the path, and rendering complex 
color through it, does not produce correct results when fill rule is
eofill. This patch simply disables the optimization in the case of
eofill. We should probably look at why the optimized code produces
incorrect results, as that may affect correctness of eoclip, not to
mention the performance issues.
</pre>
<p>[src/gxfill.c]</p>
</blockquote>

<p><strong><a name="2006-10-18T133251.500333Z"></a>
2006-10-18T13:32:51.500333Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix error returned from currentdevparams. Fixes PS LL3 CET 27-03. Thanks
to Noriyuki Matsushima for this patch.

</pre>
<p>[src/ziodev2.c]</p>
</blockquote>

<p><strong><a name="2006-10-18T070110.427208Z"></a>
2006-10-18T07:01:10.427208Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688880 Encrypted PDF can not be processed.

DETAILS:

The problem file specifies both V = 1 and and a Length = 128
bits in the encryption dict.  This is contradictory since page 93 of
the PDF 1.6 spec says that if V = 1 then the key length should be
40 bits.

This change ignores the the Length value if V = 1.  This matches the
observed behavior with Adobe Acrobat 7.0.
</pre>
<p>[lib/pdf_sec.ps]</p>
</blockquote>

<p><strong><a name="2006-10-17T133302.347582Z"></a>
2006-10-17T13:33:02.347582Z leonardo</strong></p>
<blockquote>
<pre>
Fix (gs_main_finit) : Provide a right finalization for the language switch project.

DETAILS :

It needs to finalize 
without closing the output device
and without closing the graphics library and files,
because other interpreters may work with them
after the Postscript interpreter closes.

</pre>
<p>[src/imain.c]</p>
</blockquote>

<p><strong><a name="2006-10-16T153051.595142Z"></a>
2006-10-16T15:30:51.595142Z leonardo</strong></p>
<blockquote>
<pre>
Fix (memory management) : Restore the memory wrapper code consistency.

DETAILS :

It was broken during the ghostpcl project merging :

1. The USE_RETRY_AND_LOCKING_MEMORY_WRAPPERS code was inconsistent.
2. The !USE_RETRY_AND_LOCKING_MEMORY_WRAPPERS code caused 
   a MSVC compiler warning due to an inaccurate type cast.

</pre>
<p>[src/gsmalloc.c]</p>
</blockquote>

<p><strong><a name="2006-10-16T150820.540609Z"></a>
2006-10-16T15:08:20.540609Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Repair the character cache logics with persistent cache entries.

DETAILS :

Important character caching problems have occasionally detected
while merging with the ghostpcl branch :

1. The ttfReader never released in PCL when a font has a valud XUID.

1.1. The new function gs_clean_fm_pair_attributes,
     is called when a font is being released by 'restore',
     but its cached characters continue to live in the cache.
     This function releases those font-matrix pair attributes,
     which may point to the font. When the font has 
     True Type data, it releases ttfReader and ttfFont.

1.2. The function gs_purge_font_from_char_caches
     is now called from gs_font_finalize,
     which is called from 'restore' and from the garbager.
     It allows gs_clean_fm_pair_attributes to be called
     from 'restore'. Note that when it is called from
     the garbager, it works idle because the method
     'free' is disabled while the garabarer runs
     for same allocator.

1.3. The new flag gs_font::is_cached prevents a redundant
     work of gs_purge_font_from_char_caches,
     when it is called from font_restore and from
     gx_font_finalize. Therefore the argument of 
     gs_purge_font_from_char_caches is now non_const.

1.4. With the new code, cached characters
     for fonts with valid XUIDs persist 
     across a document/job end. They may be reused
     when a next document/job renders same font-matrix .
     There is no way to purge cache between jobs 
     besides destructing entire cache and allocating it anew.

1.5. The new function gs_purge_font_from_char_caches_completely
     is coded for those clients, which 
     don't need the feature 1.4.

1.6. Clients (such a PCL interpreter) must immediately call
     gs_purge_font_from_char_caches or
     gs_purge_font_from_char_caches_completely,
     whenever they release a font immediately.
   
2. Cached characters were dropped from cache on 'restore'
   while a font has a valid XUID and can appear again afrer 'restore'.
   It happened because the old code called gs_purge_font_from_char_caches
   from font_restore due to its cache elements point to
   the font's XUID, which is being released.

2.1. Copy the XUID to a stable memory in gx_add_fm_pair.

2.2. Release it in gs_purge_fm_pair.

2.3. Disable the related code portion in font_restore.

2.4. The new function gx_attach_tt_interpreter
     is factored out from gx_add_fm_pair.
     Now it is also called from gx_lookup_fm_pair
     (with an intermediate function gx_provide_fm_pair_attributes)
     when a persistent pair is being associated with 
     a new font having same XUID.

</pre>
<p>[src/gxfcache.h src/gsfont.c src/gxccman.c src/zfont.c src/gxccache.c src/gxfont.h]</p>
</blockquote>

<p><strong><a name="2006-10-16T125005.195523Z"></a>
2006-10-16T12:50:05.195523Z leonardo</strong></p>
<blockquote>
<pre>
Fix (Resource machinery) : Improve working with ROM file system.

DETAILS :

1. Consider %iodevice% paths as absolute when combining a resource file name (gs_res.ps).
2. A minor code cleanup : Remove gp_file_name_combine_patch
   (an algorithmically equivalent change).
3. A minor code cleanup : Improve zfile_name_is_absolute
   (an algorithmically equivalent change).

</pre>
<p>[lib/gs_res.ps src/zfile.c src/zfile1.c]</p>
</blockquote>

<p><strong><a name="2006-10-15T171945.555905Z"></a>
2006-10-15T17:19:45.555905Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for bug 688929 -- Genoa test 412-01.ps defines a couple of Type 42 fonts
without anything in the 'sfnts'. This hack switches it to a Type 3. This is
harmless for normal files since the check is quick and is only executed when
fonts are loaded.

</pre>
<p>[lib/gs_typ42.ps]</p>
</blockquote>

<p><strong><a name="2006-10-13T011458.600115Z"></a>
2006-10-13T01:14:58.600115Z leonardo</strong></p>
<blockquote>
<pre>
Fix (FAPI) : Restore the functionality and the documentation, which were broken with commitments 6998 7077 7078.

DETAILS :

1. The reentrant UFST was not tested yet.
2. We noticed a problem with -dTextAlphaBits=4, which to be fixed separately.

</pre>
<p>[src/fapiufst.c src/gxfapiu.c src/gxfapiu.h]</p>
</blockquote>

<p><strong><a name="2006-10-13T000234.922456Z"></a>
2006-10-13T00:02:34.922456Z leonardo</strong></p>
<blockquote>
<pre>
Fix (clist) : CCITTFaxDecode consumed extra byte.

DETAILS :

Debugged with ghostpcl ppmraw -r216 c327.bin .

This patch is based on my understanding of the problem,
which was obtained within a short time frame.
Therefore I'm, not sure that all statements of this comment
are necessarily correct.

The old code didn't write the EOD sequence for CCITTFax data.
Such behavior was designed many years ago in order to write 
a smaller clist output. A year ago the CCITTFaxDecode filter 
was improved with a workaround for an incorrect behavior of 
Adobe Acrobat, which writes an EOD when it is not required 
(see the gs revision 6123).
The workaround looks ahead for EOD and consumes it if it appears.

However doing that improvement, nobody took care about the
clist reader, which didn't write EOD and catenates other data
after CCITTFax data. If the subsequent data occasionally look as EOD,
they are erroneusely consumed by CCITTFaxDecode, 
and the clist reader continues with a wrong position.
It caused unpredictable behavoir and stochastic crashes.

This patch forces writing the CCITTFax EOD for clist. 
Maybe it's not the best fix, but it is what we can do
within the short time frame.

</pre>
<p>[src/gxclutil.c]</p>
</blockquote>

<p><strong><a name="2006-10-11T211253.047803Z"></a>
2006-10-11T21:12:53.047803Z leonardo</strong></p>
<blockquote>
<pre>
Fix (spot analyzer) : Clean pointers when closing.

DETAILS :

This is a minor code cleanup.
The garbager never deals with those pointers.
We clean them just against a heedache for those,
who reads that code.

</pre>
<p>[src/gzspotan.c]</p>
</blockquote>

<p><strong><a name="2006-10-11T200611.668976Z"></a>
2006-10-11T20:06:11.668976Z leonardo</strong></p>
<blockquote>
<pre>
Fix (memory manager) : gs_heap_free_object could break itself.

DETAILS :

See comment in code.
Debugged with ghostpcl 18-21.BIN .

</pre>
<p>[src/gsmalloc.c]</p>
</blockquote>

<p><strong><a name="2006-10-11T185008.977036Z"></a>
2006-10-11T18:50:08.977036Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix 'bound_0_1' procedure to return 'real' rather than 'int'.
Fixes CET 09-02.PS
</pre>
<p>[lib/gs_cspace.ps]</p>
</blockquote>

<p><strong><a name="2006-10-11T181210.866136Z"></a>
2006-10-11T18:12:10.866136Z Stefan Kemper</strong></p>
<blockquote>
<pre>
removing c++ comment.

Warning changes to gsmalloc.c have broken the -K set max heap usage option.

</pre>
<p>[src/gsmalloc.c]</p>
</blockquote>

<p><strong><a name="2006-10-11T055404.315501Z"></a>
2006-10-11T05:54:04.315501Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add gs_cet.ps to the %rom%lib/ directory so that it will be found without
problems when running the PS CET conformance which needs this file.

Later we might remove it from the %rom%lib/ but it doesn't really take up
much space and it will prevent 'file not found' failures.
</pre>
<p>[src/int.mak]</p>
</blockquote>

<p><strong><a name="2006-10-11T025722.469112Z"></a>
2006-10-11T02:57:22.469112Z Ray Johnston</strong></p>
<blockquote>
<pre>
Initial version of 'startup' file to configure Ghostscript to match the
Adpbe CPSI to run CET tests.
</pre>
<p>[lib/gs_cet.ps]</p>
</blockquote>

<p><strong><a name="2006-10-10T224356.823756Z"></a>
2006-10-10T22:43:56.823756Z Stefan Kemper</strong></p>
<blockquote>
<pre>
Commenting out the memory wrappers retrying and locked.
This will obviously cause concern and testing for gs, 
on the other hand it simplifies the memory allocations
and removes some significant issues with memory cleanup
when multiple jobs are run together in a language switch
environment.

</pre>
<p>[src/gsmalloc.c]</p>
</blockquote>

<p><strong><a name="2006-10-10T181622.525231Z"></a>
2006-10-10T18:16:22.525231Z leonardo</strong></p>
<blockquote>
<pre>
Fix (PS interpreter) : Dont print "Returning error -102." that is not an error.

DETAILS :

The debug build printed "Returning error -102.".
-102 == e_InterpreterExit is not an error.
Don't print the confusing message.

</pre>
<p>[src/interp.c]</p>
</blockquote>

<p><strong><a name="2006-10-10T180019.925286Z"></a>
2006-10-10T18:00:19.925286Z leonardo</strong></p>
<blockquote>
<pre>
Fix (stroking) : Zero lengh dashes have been missed, part 2.

DETAILS :

1. Unwinding the revision 7094 change.

2. Fixing an antique bug, which persists since the repository was created.
   When computing the orientation of an isolated zero length stroke
   (near the code "const segment *end = psub-&gt;last;"),
   the old code erroneusely takes the direction to
   the last point of the previous subpath. 
   With recent changes it caused a wrong longitude adjustment
   for some PCL documents.
   Documented the right invariant in new comment.

3. The flag zero_length was wrong when a non-zero
   length segment follows a zero length segment.

4. Zero length strokes were missed with dot_length != 0
   and a non-trivial dash pattern (gxpdash.c, lib.mak).
   It's another case when PCL could miss dots.


</pre>
<p>[src/lib.mak src/gxpdash.c src/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2006-10-10T100337.323396Z"></a>
2006-10-10T10:03:37.323396Z leonardo</strong></p>
<blockquote>
<pre>
Provide a handling of true Unicode fonts.

DETAILS :

Bug 688897 "Unicode fonts in Postscript" for the customer #130.

1. Define a new Ordering = Unicode for handling Unicode character sets.

2. Define a new Registry = Artifex for distinguishing those
   character sets from other Postscript vendors, 
   which do not define such character sets yet.

3. Define a new Identity-UTF16-H CMap for identity mapping
   from Unicode UTF16 to CIDs with the Unicode character set.

4. As a part of CIF font emulation with True Types,
   add the Unicode.Unicode entry to the .CMapChooser table,
   which actually is an identity translation (gs_ciddc.ps).

6. Extend the gs/lib/cidfmap syntax with handling
   Registry = Artifex (gs_fntem.ps).

7. Force embedding Artifex CMap into PDF (gsfcmap.c).

8. Account the knowledge that an Artifex Unicode CMap
   may be used for generating a ToUnicode CMap (zfcmap.c).

9. Document all that in gs/doc .

10. Bug: range.size was not initialized when creating
   an identity ToUnicode CMap (gsfcmap.c).

A PDF generated with this patch appears
not searchable with Adobe Acrobat,
and it cannot extract the text properly.
Not sure why. Likely it's another Adobe bug.

</pre>
<p>[Resource/CMap/Identity-UTF16-V lib/gs_ciddc.ps Resource/CMap/Identity-UTF16-H doc/Use.htm src/gdevpdtc.c src/gsfcmap.c src/zfcmap.c lib/gs_fntem.ps]</p>
</blockquote>

<p><strong><a name="2006-10-06T185335.444836Z"></a>
2006-10-06T18:53:35.444836Z Stefan Kemper</strong></p>
<blockquote>
<pre>
Stepping on Igor's stroke code fully expecting him to review it.
This is the copy of the stroke code Igor originally gave the PCL team.

The code it is replacing loses data and produces stray lines.

</pre>
<p>[src/gxstroke.c]</p>
</blockquote>

<p><strong><a name="2006-10-06T165437.190610Z"></a>
2006-10-06T16:54:37.190610Z Ray Johnston</strong></p>
<blockquote>
<pre>
Change to make color values be 'real' instead of sometimes 'integer' types
for PS CET 09-02 and MANY other pages.

DETAILS:

Since this is at the PS level, not the graphics lib, it shouldn't affect
PCL.

Note that 09-02 still shows a single instance of '0' instead of '0.0'.
I am continuing to track that down.

</pre>
<p>[lib/gs_devcs.ps src/zcolor.c]</p>
</blockquote>

<p><strong><a name="2006-10-06T152515.662720Z"></a>
2006-10-06T15:25:15.662720Z Stefan Kemper</strong></p>
<blockquote>
<pre>
Merge from pcl tree.

The freeing of the rop_dev and clip_dev in an image enum now 
unhooks forwarding devices prior to freeing otherwise there 
are memory leaks.

The rational behind the direct frees used here verses 
the more normal reference counting of graphic library objects 
has apparently been lost.  

</pre>
<p>[src/gxidata.c]</p>
</blockquote>

<p><strong><a name="2006-10-06T152013.457027Z"></a>
2006-10-06T15:20:13.457027Z Stefan Kemper</strong></p>
<blockquote>
<pre>
Removing incorrect unsetting of device color when the device isn't a 
bit tagging device.  The bit tagging code shouldn't affect other devices.


</pre>
<p>[src/gspaint.c]</p>
</blockquote>

<p><strong><a name="2006-10-06T151810.804229Z"></a>
2006-10-06T15:18:10.804229Z Stefan Kemper</strong></p>
<blockquote>
<pre>
Changing a logging error into a return error that will be ignored later.

This makes the -Z# debugging output more usable.


</pre>
<p>[src/gdevdflt.c]</p>
</blockquote>

<p><strong><a name="2006-10-06T151600.887988Z"></a>
2006-10-06T15:16:00.887988Z Stefan Kemper</strong></p>
<blockquote>
<pre>
Merge changes from pcl tree.

PSI_INCLUDED is used to signal that gs is not at the top of the system but
rather is part of a language switching build.

In this case the outputing of pages and management of the device is not 
completely under postscript's control.

</pre>
<p>[src/zdevice.c]</p>
</blockquote>

<p><strong><a name="2006-10-06T151252.976332Z"></a>
2006-10-06T15:12:52.976332Z Stefan Kemper</strong></p>
<blockquote>
<pre>
Merge fix from pcl tree, 
writing a display list with a contone device seg faulted.

</pre>
<p>[src/gxclimag.c]</p>
</blockquote>

<p><strong><a name="2006-10-06T140805.588652Z"></a>
2006-10-06T14:08:05.588652Z Stefan Kemper</strong></p>
<blockquote>
<pre>
Restore code that is required for raster ops. 


</pre>
<p>[src/gxdcolor.c]</p>
</blockquote>

<p><strong><a name="2006-10-05T014556.126213Z"></a>
2006-10-05T01:45:56.126213Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Pacify Valgrind. Copy a non 0-terminated PS string to a local buffer to avoid
scanning past the end of the string. Bug 688882.

</pre>
<p>[src/gdevpdfr.c]</p>
</blockquote>

<p><strong><a name="2006-10-05T010935.392689Z"></a>
2006-10-05T01:09:35.392689Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Following Acrobat Reader 5, ignore everything outside of begincmap..endcmap
Bug 688812, customer 170.

</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2006-10-05T010055.479409Z"></a>
2006-10-05T01:00:55.479409Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Avoid the operand stack overflow. Construct CharStrings ductionary without
.dicttomark operator. Bug 688802, customer 130.

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2006-10-05T004754.384597Z"></a>
2006-10-05T00:47:54.384597Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use correct transformation matrix for calculating the current point movement
for PDF text rendering mode 3. Bug 688756, customer 700.

</pre>
<p>[lib/pdf_ops.ps]</p>
</blockquote>

<p><strong><a name="2006-10-04T132944.744703Z"></a>
2006-10-04T13:29:44.744703Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a reference to an incorrect bug number in toolbin/vg_bugs.supp
</pre>
<p>[toolbin/vg_bugs.supp]</p>
</blockquote>

<p><strong><a name="2006-10-04T123021.555827Z"></a>
2006-10-04T12:30:21.555827Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix off-by-one error in the PDF font subset prefix generator that
mixed in an uninitialised byte when the object size was odd.
This error caused indeterministic PDF generation and Valgrind warnings.
Bug 688911.

</pre>
<p>[src/gdevpdtb.c toolbin/vg_bugs.supp]</p>
</blockquote>

<p><strong><a name="2006-10-04T110921.389337Z"></a>
2006-10-04T11:09:21.389337Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use open_device procedure to identify the type of the device instead of the
standard gs_object_type() because gs_cpath_accum_device is allocaded on
the stack i.e. has no block header with a descriptor but has dev-&gt;memory set
like a heap-allocated device. Bug 688874.

</pre>
<p>[src/gxfill.c src/gzspotan.c src/gzspotan.h]</p>
</blockquote>

<p><strong><a name="2006-10-03T180837.387486Z"></a>
2006-10-03T18:08:37.387486Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Pacify Valgrind with not touching an uninitialized data.

DETAILS :

Bug 688873 "pdfwrite :Valgrind reports uninitialized data".

The old code checked penum-&gt;text.x_widths, penum-&gt;text.y_widths
and shifted them forth and back when they are uninitialized.
It was not harmful because those pointers were not defererenced.
Also space.s_char was checked when unitialized. 
In those cases it should not be accessed.

</pre>
<p>[src/gdevpdtc.c src/gdevpdte.c]</p>
</blockquote>

<p><strong><a name="2006-10-03T003114.024018Z"></a>
2006-10-03T00:31:14.024018Z Ralph Giles</strong></p>
<blockquote>
<pre>
Port additional UFST initialization changes from ghostpcl trunk.
</pre>
<p>[src/fapiufst.c]</p>
</blockquote>

<p><strong><a name="2006-10-02T232612.368734Z"></a>
2006-10-02T23:26:12.368734Z Ralph Giles</strong></p>
<blockquote>
<pre>
Port UFST-related changes from the ghostpcl tree, r2472 to r2532. This
introduces gx_UFST_init() and _fini() functions, and make both PCL and 
PS ufst initialization use these functions instead of calling ufst
directly, so that the same ufst config is shared between the two.

Also, update the copyright headers, and defined a needed enum entry for 
UFST MicroType fonts.
</pre>
<p>[src/gxfapiu.c src/gxfapiu.h src/gxftype.h]</p>
</blockquote>

<p><strong><a name="2006-10-02T232105.393683Z"></a>
2006-10-02T23:21:05.393683Z Ralph Giles</strong></p>
<blockquote>
<pre>
Set normal eol and keyword substitution flags.
</pre>
<p>[src/gxfapiu.c src/gxfapiu.h]</p>
</blockquote>

<p><strong><a name="2006-10-02T190230.811324Z"></a>
2006-10-02T19:02:30.811324Z Ralph Giles</strong></p>
<blockquote>
<pre>
Make gs_image_common_init() a proper public function since it is called 
by the PCL interpreter.
</pre>
<p>[src/gsimage.c src/gsimage.h]</p>
</blockquote>

<p><strong><a name="2006-10-02T141053.409280Z"></a>
2006-10-02T14:10:53.409280Z Stefan Kemper</strong></p>
<blockquote>
<pre>

Add boolean USE_ttfReader to gs_type42_font_init()
In general this is always set true.  If this is set false the caller
will disable the attachment of ttfReader for dynalab ttf font hinting 
and the caller is expected to do all the gs_type42 font initialization
that was required prior to the addition of ttfReader to the code. 

Add an early out from gs_type42_font_init() that bypasses some table 
generation that isn't needed when USE_ttfReader is false.  Pulling the
return statement here will reenable this code and is harmless except for 
some small memory leaks.

Currently only the PXL downloaded ttf fonts use the false case init,
to render fonts with UFST not with FAPI ufst.

NO expected pdf or ps or pcl differences since the code path is identical.
  

</pre>
<p>[src/gxfcopy.c src/gxccman.c src/gxfont42.h src/gstype42.c src/zfont42.c]</p>
</blockquote>

<p><strong><a name="2006-09-28T055604.096363Z"></a>
2006-09-28T05:56:04.096363Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add an error callback to the example jasper applications. Previously they
always failed (or succeeded) silently.

DETAILS:

The fprintf() calls were replaced with jas_eprintf() in this code along
with everywhere else, but no actual callback was installed, so the 
applications weren't able to give any feedback at all. So we now provide
a simple callback that just passes the message on to stderr as is appropriate
for a library client.
</pre>
<p>[jasper/src/appl/imgcmp.c jasper/src/appl/jasper.c jasper/src/appl/jasper_sdl.c jasper/src/appl/imginfo.c jasper/src/appl/jiv.c]</p>
</blockquote>

<p><strong><a name="2006-09-27T203741.367020Z"></a>
2006-09-27T20:37:41.367020Z Ralph Giles</strong></p>
<blockquote>
<pre>
Duplicate JPX image channels if the cmap box has multiple references to
satisfy the expectations of later parsing. Bug 688869.

DETAILS:

A paletted jpx image must contain a 'cmap' box that describes how to
build the output image channel by channel out of some combination of
decoded image components, which can be used either directly, or mapped
through a component of the included palette.

Previously, jasper created a new image component whenever a palette 
mapping was satisfied, but did nothing when the cmap specified a decoded
component was meant to be used directly. This created two problems: first
the cmap value was ignored, so if the direct mapping output channels were
in a different order from the decoded components, the would not be marked
correctly. Second, if multiple channels were mapped from the single decoded
component, this was not recorded and the image passed up from the decoder
would be "missing" a channel because component lookups don't go through
the decoded cmap table.

As I read the specification, we should really be creating a completely new
image by applying the cmap data to the decoded image. However, for PDF we
need access to the raw indexed image component before palette application,
and just duplicating directly references components within the same image
is a less invasive change.
</pre>
<p>[jasper/src/libjasper/jp2/jp2_dec.c jasper/src/libjasper/base/jas_image.c jasper/src/libjasper/include/jasper/jas_image.h]</p>
</blockquote>

<p><strong><a name="2006-09-25T215055.223674Z"></a>
2006-09-25T21:50:55.223674Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a typo in the previous revision.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2006-09-25T214534.607229Z"></a>
2006-09-25T21:45:34.607229Z Ralph Giles</strong></p>
<blockquote>
<pre>
Have the configure script check for fopen64 before using it.
Bug 688394.

DETAILS:

We use this as a shorthand to check for the marked *64() stdio
calls, and based on that define HAVE_FILE64, which is used in 
the unix platform code to select whether to call the marked
or normal FILE code when _LARGEFILE64_SOURCE is not defined.

This is required on MacOS X which does not provide fopen64()
and friends (or O_LARGEFILE) but nevertheless implements 
reasonable large file support with the normal routines on 
32-bit architectures without defining _LARGEFILE*_SOURCE.

The result should be the same with the autoconf build on
architectures where the previous code worked, including 
linux and cygwin. When building manually without passing
-DHAVE_FILE64, or on platforms that don't provide the 
marked 64-bit versions, we will now fall back to the 
vanilla functions, and so the bug may re-occur there. This
is better than failing to link on such platforms, which
was the previous behavior.
</pre>
<p>[src/Makefile.in src/configure.ac src/gp_unifs.c]</p>
</blockquote>

<p><strong><a name="2006-09-24T235046.301070Z"></a>
2006-09-24T23:50:46.301070Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix calculation of the PDF font subset prefix. This change has little effect,
except enabling previously unreachable code and generating different prefixes
in some cases.

</pre>
<p>[src/gdevpdtb.c]</p>
</blockquote>

<p><strong><a name="2006-09-24T132231.256099Z"></a>
2006-09-24T13:22:31.256099Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
New version of vg_bugs.supp for the recent Valgrind and gcc. This file covers
all bugs detected on the regression test suite except the bugs in the system calls
and CRTL, which are difficult to suppres in the platform-independet way.
</pre>
<p>[toolbin/vg_bugs.supp]</p>
</blockquote>

<p><strong><a name="2006-09-22T174233.433152Z"></a>
2006-09-22T17:42:33.433152Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change s/stream/strm/ to fix a MSVC 6 warning: C4224: nonstandard extension
used: formal parameter 'stream' was previously defined as a type.
</pre>
<p>[src/gp_iwatc.c src/gp_macio.c src/gp_mswin.c src/gp_os2.c src/gp_unifs.c src/gp.h src/gp_vms.c]</p>
</blockquote>

<p><strong><a name="2006-09-22T005132.310174Z"></a>
2006-09-22T00:51:32.310174Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc warnings.

</pre>
<p>[src/gdevpdtt.c src/gdevpdtw.c src/devs.mak]</p>
</blockquote>

<p><strong><a name="2006-09-21T202401.154825Z"></a>
2006-09-21T20:24:01.154825Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Don't use sscanf on a non 0-terminated PS strings.

DETAILS :

This redoes the revision 7062 change due to MSVC compiler warning.

The old code has 2 unpleasant hings :
1. MSVC yelds a warning about breaking 'const'.
2. It assumes no spaces at end of a serialized pdfmark argument value.

The new code should be clean.
 
</pre>
<p>[src/gdevpdfm.c]</p>
</blockquote>

<p><strong><a name="2006-09-21T192148.437020Z"></a>
2006-09-21T19:21:48.437020Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdf14 device) : Properly intersect rects when composing transparency buffers (continued).

DETAILS :

Bug 688631 "PDF segfault".

The old code supposed : the higher buffer, the smaller rect.
Not shure why. The test sample includes the opposite case.

Tha last patch for the subject appears incomplete.
 
</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2006-09-21T123625.384099Z"></a>
2006-09-21T12:36:25.384099Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Wrinting a PDF/A, convert True Type fonts into CIDFontType2 (continued 2).

DETAILS :

This completes the fix the bug 688790  
"pdfwrite : The PDF/A conversion needs to re-encode texts".

Adobe PDF/A preflight tool appears to check whether all glyphs
in the font have corresponding entries in W, W2 or Width array.
This includes unused glyphs and .notdef .
This patch implements creating a W array element for
.notdef when a Type 42 font is being converted into CIDFontType2.

Besides that, before this patch, when converting a Type 42 into
CIDFontType2, the W array was not written at all,
because pdf_write_embedded_font did not know about the conversion.
Adding a new argument to it for passing that information.

</pre>
<p>[src/gdevpdtb.c src/gxfcopy.c src/gdevpdtd.c src/gdevpdtt.c src/gdevpdtb.h src/gdevpdtw.c src/gxfcopy.h]</p>
</blockquote>

<p><strong><a name="2006-09-20T182617.744657Z"></a>
2006-09-20T18:26:17.744657Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix Valgrind warnings: (1) don't use sscanf on a non 0-terminated PS strings.
Temporaty replace the last character of the string with '\0' before scanning.
(2) Don't assign a structure to itself. Check for this case and skip the
assignment. Bug 688890.

</pre>
<p>[src/gdevpdfm.c src/gshtscr.c src/gdevprn.c]</p>
</blockquote>

<p><strong><a name="2006-09-20T120104.572458Z"></a>
2006-09-20T12:01:04.572458Z leonardo</strong></p>
<blockquote>
<pre>
Fix : pdfinflt.ps didn't work with some files.

DETAILS :

This is a minimal change for my current need.
This patch relates to the bug 687796, but doesn't fix it.

</pre>
<p>[toolbin/pdfinflt.ps]</p>
</blockquote>

<p><strong><a name="2006-09-19T234803.361024Z"></a>
2006-09-19T23:48:03.361024Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a typo that cause jpx decoding to fail for all files.
</pre>
<p>[jasper/src/libjasper/jp2/jp2_dec.c]</p>
</blockquote>

<p><strong><a name="2006-09-19T234543.473583Z"></a>
2006-09-19T23:45:43.473583Z Ralph Giles</strong></p>
<blockquote>
<pre>
Propagate error messages from the jasper library.</pre>
<p>[src/lib.mak src/sjpx.c]</p>
</blockquote>

<p><strong><a name="2006-09-19T194020.717813Z"></a>
2006-09-19T19:40:20.717813Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Wrinting a PDF/A, convert True Type fonts into CIDFontType2 (continued).

DETAILS :

This is a partial fix the bug 688790  
"pdfwrite : The PDF/A conversion needs to re-encode texts".

This is a code restructurization against missed function prototypes.
The change is algorithmically equivalent.

</pre>
<p>[src/gdevpdtf.c src/gdevpdtw.c src/gdevpdtf.h src/gdevpdtw.h]</p>
</blockquote>

<p><strong><a name="2006-09-19T185910.571301Z"></a>
2006-09-19T18:59:10.571301Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Wrinting a PDF/A, convert True Type fonts into CIDFontType2.

DETAILS :

THis is a partial fix the bug 688790  
"pdfwrite : The PDF/A conversion needs to re-encode texts".

PDF/A doesn't allow True Type fonts with Encoding Differences.
Therefore we convert such fonts into CIDFontType2.
The main work is done with 2 functions :
pdf_convert_truetype_font_descriptor and
pdf_convert_truetype_font.
See comments in code about the conversion algorithm.

Minor change (gdevpdtw.c) : The old code always compressed CIDToGIDMap.
The new code does dependently on the CompressFonts distiller parameter.
Except that, for a non-PDFA run the code change should be equivalent.

Now the font conversion works, but Adobe preflight tool
reports missed glyphs by unknown reason.
Will need a separate patch for that.

</pre>
<p>[src/gdevpdfx.h src/gdevpdtd.c src/gdevpdtf.c src/gdevpdtw.c src/gdevpdfb.h src/gdevpdtf.h]</p>
</blockquote>

<p><strong><a name="2006-09-19T160849.517323Z"></a>
2006-09-19T16:08:49.517323Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Work around a bug in the image operator, which doesn't always restore the
operand stack when it fails.
Bugs  688532, 688646, 688672, 688736, 688740, 688899.
</pre>
<p>[lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2006-09-19T095525.954073Z"></a>
2006-09-19T09:55:25.954073Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Uninitialized variables.

DETAILS :

1. ps_encoding_index sometimes was not initialized in gdevpdtt.c .
   Bug 688898 "ps2pdf segfaults in gdevpdtt.c: pdf_reserve_char_code_in_pdfont ()".

2. Cygwin/gcc reports a possibly uninitialized variable in gdevpdfu.c .
   Actually the compiler is not enough clever.

3. Removed unused variables in gdevpdtt.c .

</pre>
<p>[src/gdevpdtt.c src/gdevpdfu.c]</p>
</blockquote>

<p><strong><a name="2006-09-19T082045.476798Z"></a>
2006-09-19T08:20:45.476798Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Generalize pdf_finish_font_descriptors (continued).

DETAILS :

This is a preparation for the bug 688790  
"pdfwrite : The PDF/A conversion needs to to re-encode texts".
The last patch appears incomplete.
This adds the pdf_resource_type_t parameter to pdf_finish_resources,
and defines pdf_convert_truetype_font_descriptor for future implementation.

This change is algorithmically equivalent.

</pre>
<p>[src/gdevpdtd.c src/gdevpdtf.c src/gdevpdfu.c src/gdevpdtw.c src/gdevpdtd.h src/devs.mak src/gdevpdtf.h]</p>
</blockquote>

<p><strong><a name="2006-09-19T071254.902919Z"></a>
2006-09-19T07:12:54.902919Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Generalize pdf_finish_font_descriptors.

DETAILS :

This is a preparation for the bug 688790  
"pdfwrite : The PDF/A conversion needs to to re-encode texts".
It generalizes pdf_finish_font_descriptors to
pdf_finish_resources. Also define a stub for
pdf_convert_truetype_font.

This change is algorithmically equivalent.

</pre>
<p>[src/gdevpdtd.c src/gdevpdfu.c src/gdevpdtw.c src/gdevpdtd.h]</p>
</blockquote>

<p><strong><a name="2006-09-19T035534.654291Z"></a>
2006-09-19T03:55:34.654291Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add the PDF/A and PDF/X prefix source files to the installed library 
file list. Bug 688861.
</pre>
<p>[src/unixinst.mak]</p>
</blockquote>

<p><strong><a name="2006-09-19T023301.156102Z"></a>
2006-09-19T02:33:01.156102Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a few new files to the unix makefile installation target. In 
particular, opdfread.ps is needed by the ps2write device. We also
install the new ps2ps2 convenience script for invoking it. Bug 688861.
</pre>
<p>[lib/ps2ps2 src/unixinst.mak]</p>
</blockquote>

<p><strong><a name="2006-09-19T022159.699240Z"></a>
2006-09-19T02:21:59.699240Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a broken link. Fixes bug 688896.
</pre>
<p>[doc/Ps2pdf.htm]</p>
</blockquote>

<p><strong><a name="2006-09-16T023146.612720Z"></a>
2006-09-16T02:31:46.612720Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Change s/steram/stream/ introduced in rev. 7040 and causing compile errors
on old versions of MSVC. Bug 688893.

</pre>
<p>[src/gp_mswin.c src/gdevpdfi.c]</p>
</blockquote>

<p><strong><a name="2006-09-14T172956.804569Z"></a>
2006-09-14T17:29:56.804569Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Copy a non 0-terminated PS string to a local buffer to avoid scanning past
the end of the string. Also fix a few compiler warnings.
Bug 688882.
</pre>
<p>[src/gdevpdfp.c]</p>
</blockquote>

<p><strong><a name="2006-09-14T171941.966384Z"></a>
2006-09-14T17:19:41.966384Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Pacify Valgrind. Initialize penum-&gt;planes[i].source.data in gsimage.c
These pointers are enumerated during garbage collection.
Bug 688886.
</pre>
<p>[src/gsimage.c]</p>
</blockquote>

<p><strong><a name="2006-09-14T121543.242134Z"></a>
2006-09-14T12:15:43.242134Z leonardo</strong></p>
<blockquote>
<pre>
Fix (type1 hinter) : Delayedly adjust matrix precision with sbw data.

DETAILS :

Bug 688875 "type1 hinter: Valgrind reports uninitialized data".

The old code initializes matrices after importing data from sbw instruction.
If an sbw argument is big, t1_hinter__adjust_matrix_precision
adjusts the ctmf matrix coeffitients, which appear uninitialized
at that time. 

In most cases the bug has no consequences besides bothering Valgrind.
Only a harmful case was a big glyph width after small coordinates of all outline poles.
We don't know whether it practically appears.

The new code delays the accounting sbw arguments for the
time when all poles are imported. At that time ctmf
is definitely initialized, and the trailing moveto
already accounted the glyph width. So it only needs to account
the glyph origin for the case when its coordinate is 
a big negative number (a pretty rare case though).

</pre>
<p>[src/gxhintn.c]</p>
</blockquote>

<p><strong><a name="2006-09-14T043159.160662Z"></a>
2006-09-14T04:31:59.160662Z Ralph Giles</strong></p>
<blockquote>
<pre>
Make the gs configure check the exit code of the jasper configure script 
and print an error if it fails, avoiding a later build error if 
jas_config_ac.h is not generated. Patch from Marcos H. Woehrmann. 
Closes bug 688887.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2006-09-14T020708.908291Z"></a>
2006-09-14T02:07:08.908291Z Ralph Giles</strong></p>
<blockquote>
<pre>
Check for a jpx image decoding fewer than the expected number of 
channels, returning an error instead of a segfault. Work around
for bug 688869, customer 531.
</pre>
<p>[jasper/src/libjasper/jp2/jp2_dec.c]</p>
</blockquote>

<p><strong><a name="2006-09-14T015735.708945Z"></a>
2006-09-14T01:57:35.708945Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add correct copyright header and revision Id to some recently added 
files. Also set native eol-style.
</pre>
<p>[src/strmio.c src/wtsimdi.c src/strmio.h src/gdevimdi.c]</p>
</blockquote>

<p><strong><a name="2006-09-13T172329.059613Z"></a>
2006-09-13T17:23:29.059613Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : CIDFontType2 must not embed into PDF 1.2 .

DETAILS :

Bug 688889 "pdfwrite : CIDFontType2 must not embed with CompatibilityLevel=1.2".

The last patch fixed it incorrectly : it skips the font embedding 
rather than converts the font into a non-CID.
This patch does convert the font into a Type 3 bitmap font.

</pre>
<p>[src/gdevpdtt.c src/gdevpdtf.c]</p>
</blockquote>

<p><strong><a name="2006-09-13T115910.663495Z"></a>
2006-09-13T11:59:10.663495Z leonardo</strong></p>
<blockquote>
<pre>
Upgrading the clist file access with 64 bits file access.

DETAILS :

Bug 688394 "clist playback of large pdf image segfaults".

clist file position variable changed type to int64_t.
 
</pre>
<p>[src/gxclmem.c src/gxclfile.c src/gxclist.c src/gxcldev.h src/gxclmem.h src/gxband.h src/gxclread.c src/gxclio.h src/gxclutil.c]</p>
</blockquote>

<p><strong><a name="2006-09-13T115746.585499Z"></a>
2006-09-13T11:57:46.585499Z leonardo</strong></p>
<blockquote>
<pre>
Implementing a 64 bits file access.

DETAILS :

This is a preparation for a fix for 
bug 688394 "clist playback of large pdf image segfaults".

This is a preliminary implementation.
Now it compiles for MSVC8, Linux/gcc .
For other platforms/compilers it is stubbed with 32 bits file access.

This patch requires to define  -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
compiler options on Linux in Makefile .

We could not figure out why Cygwin/gcc defines fopen64, ftello64, fseeko64,
and then cannot link them. We didn't find imlementations of those functions 
in C libraries.
 
</pre>
<p>[src/lib.mak src/gp_iwatc.c src/gp_macio.c src/gpmisc.c src/gp_mswin.c src/gpmisc.h src/gp_os2.c src/gp_unix.c src/gp_unifs.c src/gp.h src/gp_vms.c]</p>
</blockquote>

<p><strong><a name="2006-09-13T115634.416452Z"></a>
2006-09-13T11:56:34.416452Z leonardo</strong></p>
<blockquote>
<pre>
Unwinding the revision 7038 due to wrong log message.
</pre>
<p>[src/lib.mak src/gp_iwatc.c src/gp_macio.c src/gpmisc.c src/gp_mswin.c src/gpmisc.h src/gp_os2.c src/gp_unix.c src/gp_unifs.c src/gp.h src/gp_vms.c]</p>
</blockquote>

<p><strong><a name="2006-09-13T113629.213707Z"></a>
2006-09-13T11:36:29.213707Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc warnings.

DETAILS :

This includes fixes for potentionally harmful warnings :

Uninitialized variable : interp.c, zupath.c .

Missing function prototype : zfile.h, stream.h (for sfxstdio.c),
 
</pre>
<p>[src/lib.mak src/gp_iwatc.c src/gp_macio.c src/gpmisc.c src/gp_mswin.c src/gpmisc.h src/gp_os2.c src/gp_unix.c src/gp_unifs.c src/gp.h src/gp_vms.c]</p>
</blockquote>

<p><strong><a name="2006-09-13T031802.411968Z"></a>
2006-09-13T03:18:02.411968Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes a minor logic bug relating to handleerror introduced by rev 6970.
</pre>
<p>[lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2006-09-13T000823.753905Z"></a>
2006-09-13T00:08:23.753905Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Improve the encoding choice for 'glyphshow'.

DETAILS :

Bug 688889 "pdfwrite : CIDFontType2 must not embed with CompatibilityLevel=1.2".
Also fixing the test case of the bug 688857 with CompatibilityLevel=1.4
(some characters were converted into outlines).

1. Embedded a CMap, which is not allowed in PDF 1.2 (gdevpdtc.c).

2. CIDFontType2 must not embed inro PDF 1.2 (gdevpdtf.c).

3. Improved pdf_make_text_glyphs_table_unencoded about the choice of
   character codes for converting /name glyphshow into a PDF text (gdevpdtt.c).
   See comments in code.

</pre>
<p>[src/gdevpdtc.c src/gdevpdtt.c src/gdevpdte.c src/gdevpdtf.c src/gdevpdtf.h]</p>
</blockquote>

<p><strong><a name="2006-09-12T050758.847657Z"></a>
2006-09-12T05:07:58.847657Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move the debugging information to a single line to reduce log noise.
</pre>
<p>[src/mkromfs.c]</p>
</blockquote>

<p><strong><a name="2006-09-11T202601.824717Z"></a>
2006-09-11T20:26:01.824717Z Ralph Giles</strong></p>
<blockquote>
<pre>
Check in working files for the GPL imdi (integer multi-dimensional 
interpolation) library for color mapping. This is needed by the imdi
device. Port from the ghostpcl tree.
</pre>
<p>[imdi/arch.h imdi/imdi.c imdi/Jamfile imdi/imdi.h imdi/imdi_imp.h imdi/imdi_k.c imdi/cctiff.c imdi/LICENSE imdi/imdi_k.h imdi/imdi_tab.c imdi/config.h imdi/imdi_gen.c imdi/README imdi/cgen.c imdi/imdi_tab.h imdi/copyright.h imdi imdi/imdi_gen.h]</p>
</blockquote>

<p><strong><a name="2006-09-11T070218.845878Z"></a>
2006-09-11T07:02:18.845878Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Replaces the unnecessary extra 'stopped' around uses of .completefont
(introduced in 7017) with uses of .errorexec, which was created for exactly
this purpose; restructures .completefont slightly so if .buildfontxxx
signals an error, that error will be reported rather than invalidfont.
(This behavior matches the Adobe interpreters.)
</pre>
<p>[lib/gs_fonts.ps]</p>
</blockquote>

<p><strong><a name="2006-09-11T033251.278989Z"></a>
2006-09-11T03:32:51.278989Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Makes zbuildfont0 generate a rangecheck error if the Encoding of a
SubsVector-based font is not large enough for the entire code space, for
greater Adobe compatibility.  (The graphics library only causes an error if
a show operator would actually reference an element beyond the end of the
Encoding.)
</pre>
<p>[src/zfont0.c]</p>
</blockquote>

<p><strong><a name="2006-09-11T032939.283562Z"></a>
2006-09-11T03:29:39.283562Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Makes kshow generate invalidfont if the current font is a composite font,
per PLRM.  (The graphics library does enforce this restriction, but in
gs_kshow_n_init, not in gs_kshow_begin, and the interpreter uses the
latter.)
</pre>
<p>[src/zchar.c]</p>
</blockquote>

<p><strong><a name="2006-09-10T222431.060699Z"></a>
2006-09-10T22:24:31.060699Z leonardo</strong></p>
<blockquote>
<pre>
Fix : pfont-&gt;uid.xvalues uses a wrong allocator 

DETAILS :

Bug 688883 "pfont-&gt;uid.xvalues uses a wrong allocator".

In the old code build_gs_simple_font allocates uid in the current memory, 
but few moments later build_gs_sub_font changes the current space to the space 
of the font dictionary, and allocates the font structure in it.

The new code allocates the font's uid in same space as the font dictionary.

</pre>
<p>[src/zbfont.c]</p>
</blockquote>

<p><strong><a name="2006-09-10T155510.276590Z"></a>
2006-09-10T15:55:10.276590Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Pacify Valgrind. Initialize an uninitialized variable and break up an
expression, which, after overly aggressive optimization, causes an access
to uninitialized memory. Partial fix for the bug 688845.
</pre>
<p>[src/sfxstdio.c src/zcontrol.c]</p>
</blockquote>

<p><strong><a name="2006-09-10T151603.635497Z"></a>
2006-09-10T15:16:03.635497Z Ray Johnston</strong></p>
<blockquote>
<pre>
Change to use 'export' rather than 'checkout' to decrease the size of the
local directory. We don't need the .svn tree for the test.
</pre>
<p>[toolbin/search-svn-revs]</p>
</blockquote>

<p><strong><a name="2006-09-09T192214.993650Z"></a>
2006-09-09T19:22:14.993650Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use an integer format to print uint32_t value instead of a long format.
We don't support 16-bit platforms but we do support 64-bit platforms where
uint32_t and long are of different size. Bug 688860.
	</pre>
<p>[src/mkromfs.c]</p>
</blockquote>

<p><strong><a name="2006-09-08T171410.868705Z"></a>
2006-09-08T17:14:10.868705Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for matrix operation floating point accuracy differences in the
CET 10-xx.ps files.

DETAILS:

This fix adds casts to float to produce the same floating point results
from matrix calculations as expected by the CET.
</pre>
<p>[src/gsmatrix.c src/gscoord.c]</p>
</blockquote>

<p><strong><a name="2006-09-07T115903.339408Z"></a>
2006-09-07T11:59:03.339408Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Provide a conservative choice of BaseEncoiding.

DETAILS :

Bug 688823 "large files embedding AndaleMonoWTG".

The old code choosen BaseEncoding for each text string independently 
on others. It caused creating multiple font copies due to encoding conflict.
The new code implements a new font resource property 
preferred_encoding_index to make the choice be conservative
in case of multiple possibilities.

</pre>
<p>[src/gdevpdtt.c src/gdevpdtf.c src/gdevpdtf.h]</p>
</blockquote>

<p><strong><a name="2006-09-07T064120.228510Z"></a>
2006-09-07T06:41:20.228510Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix rangecheck problem (688841) and wrong .notdef appearance (688803)
for customer #130.
</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2006-09-05T210803.225425Z"></a>
2006-09-05T21:08:03.225425Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdf14 device) : Properly intersect rects when composing transparency buffers.

DETAILS :

Bug 688631 "PDF segfault".

The old code supposed : the higher buffer, the smaller rect.
Not shure why. The test sample includes the opposite case.
 
</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2006-09-04T224741.607858Z"></a>
2006-09-04T22:47:41.607858Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add Valgrind error suppression files for Ghostscript and 3rd party libraries to
gs/toolbin .
</pre>
<p>[toolbin/vg_bugs.supp toolbin/vg_okay.supp]</p>
</blockquote>

<p><strong><a name="2006-09-04T125036.207010Z"></a>
2006-09-04T12:50:36.207010Z leonardo</strong></p>
<blockquote>
<pre>
Fix (stroking) : Zero lengh dashes have been missed, part 1.

DETAILS :

Bug 688838 "stroking: A zero length dash missed".
Bug 687720 "Zero length lines must not stroke" (recently reopened).

This patch defines a new path element type dash_segment,
and uses it for internal needs of the stroking algorithm.

The old code skipped zero length dashes with a non-round cap.
It appears incompatible to Adobe CPSI.
The new code renders zero length dashes with any cap type,
if the path is not degenerate.

The new type of path segment works for storing the path tangent
at the dash start point. The tangent can't represent with a small line segment
(as it tried in old hacks) due to insufficient precision of 'fixed'.

In subpath_expand_dashes the branch "within epsilon of the end
of the dash element" have been changed for a better Adobe compatibility
with looking ahead for a zero length dash pattern.
When a zero length dash fall to a path corner,
the old code choosen the direction of the next segment (after the corner).
The new code (as Adobe compatibile) chooses the direction of the last segment
(before the corner).

In the old code of gx_stroke_path_only_aux we don't understand the branch
"if (pgs_lp-&gt;dot_length != 0) break;"
It look contradicting to the comment above it.
Leaving it as it is, but the condition has been changed to 
(pgs_lp-&gt;dot_length != 0 &amp;&amp; pseg-&gt;type != s_dash)
to comply with the new logic. Likely dot_length is now a rudiment.

The old code arbitrary applied a horizontal stroke adjustment for 
zero length dashes. The new code uses the direction of the path tangent.
Due to that some dashes got ununiform shapes, and we improved 
the stroke adjustment against undiserable regression with PixelisAd.pdf.
The new code adjusts horizontal and vertical strokes,
each stroke by both directions X and Y, if the dash length
is greater than 1 pixel, and the dash is isolated. 
Otherwise the transversal adjustment applies only.

The old code did not render zero length subpathes 
when .setdotlength was called with a non-zero argument.
It happens since Revision 4173.
The new code restores the correct behavior, which is important
for the PCL interpreter.

An unfixed problem :
When a dash pattern is very short, 
the last dash of a segment appears ununiform due 
to accumulating a significant rounding error.
This problem to be fixed separately in order to
simplify the regression analyzis.

Note that this patch doesn't provide an HP LazerJet compatibility,
which orients zero length dashes at path corner differently than Adobe.
Also HP LazerJet doesn't paint zero length pathes with round caps as PLRM3 specifies.

</pre>
<p>[src/lib.mak src/gxpdash.c src/gxpath.h src/gzpath.h src/gxstroke.c src/gxpcopy.c src/gxpath.c]</p>
</blockquote>

<p><strong><a name="2006-09-04T114017.503680Z"></a>
2006-09-04T11:40:17.503680Z leonardo</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Didn't write the OPDFRead procset.

DETAILS :

This patch includes 3 things :

1. In gdevpdfd.c : A temporary fix for Bug 688856  
"Problems with ps2write (see comment #5)".
We keep the bug open because it still requires our
attention about the order of initialization events.

2. In gdevpdtt.c : Allow writing True Types with glyph indices over 255.
The old code is compatible to a bug in Adobe reader 3,
which is irrelevant to ps2write. The new code 
keeps the old logic with pdfwrite and skips the check
with ps2write.

3. In opdfread.ps : .max was undefined.

This patch helps to work on the customer bug 688790  
"pdfwrite : The PDF/A conversion needs to to re-encode texts"
 
</pre>
<p>[src/gdevpdtt.c lib/opdfread.ps src/gdevpdfd.c]</p>
</blockquote>

<p><strong><a name="2006-09-01T232322.779504Z"></a>
2006-09-01T23:23:22.779504Z Ralph Giles</strong></p>
<blockquote>
<pre>
Port in progress IMDI device from the gs853merge branch.

DETAILS:

This implements a contone device that does accurate colorspace 
transforms based on ICCLib/Argyle IMDI. This is work in progress
by Dan Coby. It expectes the imdi source code off the gs top-level;
this define IMDISRCDIR is in devs.mak, but should be moved to the
top level makefile as with the other 3rd party library sources.

Committing to trunk so as not to lose the work when the merge branch 
goes away. New development should happen here.
</pre>
<p>[src/wtsimdi.c src/devs.mak src/gdevimdi.c]</p>
</blockquote>

<p><strong><a name="2006-09-01T231613.866145Z"></a>
2006-09-01T23:16:13.866145Z Ralph Giles</strong></p>
<blockquote>
<pre>
The official resource path is Resource/Font not Resource/Fonts
</pre>
<p>[src/Makefile.in]</p>
</blockquote>

<p><strong><a name="2006-08-31T215616.536344Z"></a>
2006-08-31T21:56:16.536344Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 'invalid restore' in CET test file 16-04.ps.

DETAILS:

There are were complications.  1)  The procedure .completfont was not properly
signalling an error when it occured.  2)  This procedure is used from both
definefont and findfont.  We need the error to be indicated as coming from
the appropriate procedure.

The fix for this problem is to fix .completefont to properly report errors
and to add stopped contexts around each of the invocations of .completefont,
loading the errorname from .completefont and calling signalerror again with
the appropriate procedure name.
</pre>
<p>[lib/gs_fonts.ps]</p>
</blockquote>

<p><strong><a name="2006-08-31T103411.431819Z"></a>
2006-08-31T10:34:11.431819Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Improving the documentation about computing a text object tag in gspaint.c .

DETAILS :

It's how I understand it while communicating with Stefan and Henry.
I'll post it to code review for possible further improvements.
 
</pre>
<p>[src/gspaint.c]</p>
</blockquote>

<p><strong><a name="2006-08-31T095351.102347Z"></a>
2006-08-31T09:53:51.102347Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc warnings.

DETAILS :

This includes fixes for potentionally harmful warnings :

Uninitialized variable : interp.c, zupath.c .

Missing function prototype : zfile.h, stream.h (for sfxstdio.c),
 
</pre>
<p>[src/gxi16bit.c src/gxhintn.c src/zstack.c src/stream.h src/interp.c src/files.h src/gswts.c src/gdevjpeg.c src/zupath.c]</p>
</blockquote>

<p><strong><a name="2006-08-30T190415.573176Z"></a>
2006-08-30T19:04:15.573176Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Adds an Id line, accidentally omitted on initial checkin.
</pre>
<p>[toolbin/ocheck.py]</p>
</blockquote>

<p><strong><a name="2006-08-30T183850.635148Z"></a>
2006-08-30T18:38:50.635148Z Ralph Giles</strong></p>
<blockquote>
<pre>
Print the hostname and architecture of the machine running the 
regression to better distinguish multiple reports. This calls
common unix tools and may therefore reduce portability.

Also, print something to acknowledge empty fields in the report.
</pre>
<p>[toolbin/tests/run_nightly]</p>
</blockquote>

<p><strong><a name="2006-08-30T163743.892868Z"></a>
2006-08-30T16:37:43.892868Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Adds a new tool, ocheck.py, for analyzing the dependency structure of object
modules.  (It was originally created for detecting references from the
library to the PostScript interpreter.)  While written in Python, it
requires GNU-compatible 'nm' and 'objdump' programs, and also uses Python's
subprocess module, so it may only run on Unix/Linux systems.
</pre>
<p>[toolbin/ocheck.py]</p>
</blockquote>

<p><strong><a name="2006-08-30T002455.621075Z"></a>
2006-08-30T00:24:55.621075Z Ralph Giles</strong></p>
<blockquote>
<pre>
Port Stefan Kemper's object tagging work from the gs853merge branch of 
the ghostpcl tree. This implements a simple and somewhat ad hoc method 
of generating tag bits (as for RGBK generation) marking text and vector 
vs image pixels.

DETAILS:

This conflicts with Dan Coby's fix for bug 688638 in r6702. Dan will 
resolve the conflict as part on new work he's doing on the code.
</pre>
<p>[src/lib.mak src/gstext.c src/gdevbit.c src/gspaint.c src/devs.mak src/gsutil.c]</p>
</blockquote>

<p><strong><a name="2006-08-29T153838.438783Z"></a>
2006-08-29T15:38:38.438783Z leonardo</strong></p>
<blockquote>
<pre>
Fix : MSVC compiler warning.

</pre>
<p>[src/strmio.c]</p>
</blockquote>

<p><strong><a name="2006-08-29T044522.639369Z"></a>
2006-08-29T04:45:22.639369Z Ray Johnston</strong></p>
<blockquote>
<pre>
Port changes over from the gs853merge tree to allow building a graphics
lib with strmio, but without any interpreter modules (PCL6).
</pre>
<p>[src/stream.h src/sfxstdio.c src/files.h src/zfile.c src/stream.c]</p>
</blockquote>

<p><strong><a name="2006-08-29T042649.196416Z"></a>
2006-08-29T04:26:49.196416Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add missing dependency for sarc4 filter module in pdfwrite. Needed when
PDF interpreter is not included, but pdfwrite is.

</pre>
<p>[src/devs.mak]</p>
</blockquote>

<p><strong><a name="2006-08-29T042340.404599Z"></a>
2006-08-29T04:23:40.404599Z Ray Johnston</strong></p>
<blockquote>
<pre>
Set s-&gt;position to aero initially so that sftell before any other operation
will be correct. Reformat prototypes in strmio.h to single line format.
</pre>
<p>[src/strmio.c src/strmio.h]</p>
</blockquote>

<p><strong><a name="2006-08-29T034336.531545Z"></a>
2006-08-29T03:43:36.531545Z Ralph Giles</strong></p>
<blockquote>
<pre>
Port jpeg device scale and translate functions from GhostPCL.

DETAILS:

This patch adds four new parameters to the jpeg devices. In addition to 
Quality, one can now set float parameters ViewScaleX, ViewScaleY, 
ViewTransX, and ViewTransY so set a scale and offset to use when 
rasterizing the page.

This patch also expands some of the device parameter macros and cleans 
up the comments. 
</pre>
<p>[src/gdevjpeg.c]</p>
</blockquote>

<p><strong><a name="2006-08-26T191358.371290Z"></a>
2006-08-26T19:13:58.371290Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for CET test file 18-02F.ps.  The makepattern operator creates a pattern
dictionary that contains an 'Implementation' entry. The PLRM 3rd says the
following about the contents of the Implementation entry:  "The type and
value of this entry are implementation-dependent."  However 18-02F.ps page 2
expects that this entry be an array and that the second element of the array
be a gstate.  We are making GS compatible with what the CET expects.
</pre>
<p>[lib/gs_lev2.ps]</p>
</blockquote>

<p><strong><a name="2006-08-26T004326.480835Z"></a>
2006-08-26T00:43:26.480835Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix comment formatting.
</pre>
<p>[src/gsptype1.c]</p>
</blockquote>

<p><strong><a name="2006-08-23T014229.044863Z"></a>
2006-08-23T01:42:29.044863Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix missing return of combined string length and add missing return cundition
documentation.
</pre>
<p>[src/gpmisc.c]</p>
</blockquote>

<p><strong><a name="2006-08-21T203748.696370Z"></a>
2006-08-21T20:37:48.696370Z Ray Johnston</strong></p>
<blockquote>
<pre>
Handle IODevice specifications in file name in gp_file_name_combine_generic
by detecting leading '%' and returning the filename unchanged. The file_name_
combine logic is platform dependent, but IODevices don't use the same rules,
so an IODevice prefix can't be meaningfully processed.

DETAILS:

IN theory, a %os% header should be treated differently, but for now handle
this as an IODevice case. This means that a %os% prefix can be used to avoid
processing such as changing A/../B to B.

</pre>
<p>[src/gpmisc.c]</p>
</blockquote>

<p><strong><a name="2006-08-19T173354.163240Z"></a>
2006-08-19T17:33:54.163240Z Ray Johnston</strong></p>
<blockquote>
<pre>
Revert previous change that could cause an infinite loop until I can
figure out this "file_name_combine" logic in order to handle the %device%
syntax without the hang.
</pre>
<p>[src/gpmisc.c]</p>
</blockquote>

<p><strong><a name="2006-08-18T103425.106987Z"></a>
2006-08-18T10:34:25.106987Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Quiet the heal validation procedure.

DETAILS :

See comment in code.

</pre>
<p>[src/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2006-08-18T075659.656655Z"></a>
2006-08-18T07:56:59.656655Z leonardo</strong></p>
<blockquote>
<pre>
Fix : MSVC8 compiler warnings.

DETAILS :

gs_lib_ctx_get_non_gc_memory_t is called in sfopen and the result is passed to
file_open_stream, which assumes non-const.

A better fix would be to assume gs_memory_te to be const for allocators
and for functions and for structures which pass it transparently to allocators.
Actually allocators modify only a subclass data,
so that 'const' may be safely broken inside the allocator method
when casting to the subclass.
The garbager modifies exactly gs_memory_t pointers,
but it is NOT called from allocators.

The "better" fix requires changes to lots of modules,
so we choose the easiest fix for now.

Minor changes : 
1. Unuseful variable in fapiufst.c unintentiopnally contributed with the last patch.
2. "const char *" to "const byte *" warning in strmio.c .

</pre>
<p>[src/strmio.c src/gslibctx.c src/fapiufst.c src/gslibctx.h]</p>
</blockquote>

<p><strong><a name="2006-08-18T044211.979343Z"></a>
2006-08-18T04:42:11.979343Z Ray Johnston</strong></p>
<blockquote>
<pre>
Modifications to switch to "strmio" stream I/O so that we can read from
either OS file system or IODevice files (such as %rom% file system).
Also remove unneeded i_ctx_p from fapi_*_instantiate functions (so that
we don't need the PS interpreter). The strmio functions are now included
in the graphics lib build (always).

Change fapiufst to use strmio instead of FILE * file IO. A separate change
is needed in UFST code to do this (fc_dafil.*)

Add UFST_ROMFS_ARGS to add the fco's to the %rom% file list. Note that the
UFST_ROMFS_ARGS are not defined in any top level makefile in the gs tree
but are used by the language_switch build where they have been tested.

Remove some 'hard coded' paths in the fapiufst module (F:/...)
</pre>
<p>[src/iplugin.h src/lib.mak src/strmio.c src/int.mak src/fapiufst.c src/strmio.h src/gpmisc.c lib/gs_fapi.ps src/iplugin.c lib/FAPIconfig-FCO src/fapi_ft.c]</p>
</blockquote>

<p><strong><a name="2006-08-18T040448.484817Z"></a>
2006-08-18T04:04:48.484817Z Ray Johnston</strong></p>
<blockquote>
<pre>
Refactor several FILE stream related routines to sfxstdio.c so that zfile
will not be needed in order to use strmio functions coming soon. We want
to be able to use strmio without the PS interpreter.
</pre>
<p>[src/stream.h src/sfxstdio.c src/zfile.c]</p>
</blockquote>

<p><strong><a name="2006-08-17T152755.324234Z"></a>
2006-08-17T15:27:55.324234Z leonardo</strong></p>
<blockquote>
<pre>
Fix (resource machinery) : 'resourceforall' truncated names of file-based resources.

DETAILS :

Bug 688737 "'resourceforall' truncates names of file-based resources".
Thanks to SaGS for the good analyzis done in the bug report.

When enumerating file-based resources, the library
enumerates resource file paths and then needs to
decompose a file path into a directory name and the resource name.
The resource name, which matches the specified template,
is always a suffix of the path. Thus to know the resource name,
one needs to compute the length of the suffix.
However the latter is not trivial
due to mixing 2 syntacies : the Postscript template string syntax,
and the file path syntax of the underlying operating system.

To know the suffix length, the old code computed
the difference of the directory path template length,
and the template argument length.
Hoewver the directory path length in not equal to
the directory path template length if the patch
includes symbols, which need an escapement when converting
a string to a template string.

The new code passes lengthes of source directory paths though the
.generate_dir_list_templates procedure, so that they don't need to 
restore from the generated templates. 
The patch enhances the function with inserting source length between the
generated template list elements. The new function
gets an additional boolean operand, which tells whether to insert
lenthes or not. The enhanced function is renemaed into
.generate_dir_list_templates_with_length .
The old name .generate_dir_list_templates is defined for
the backward compatibility as a specialization of the new function.
The new function works for ResourceForAll .

</pre>
<p>[lib/gs_res.ps lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2006-08-16T172310.339348Z"></a>
2006-08-16T17:23:10.339348Z leonardo</strong></p>
<blockquote>
<pre>
Fix (font renderer) : Clean up the character cache after a character rendering fails.

DETAILS :

When a character rendering fails, the old code leaves 
character data allocated in the cache but the character
is not added to the hash table. It breaks a global invariant
(1 to 1 correspondence of hash table entries and cached characters),
which is assumed by other cache accessors. As a result it 
causes an infinite loop when the function alloc_char_in_chunk 
is later called for another character and needs to release cache 
space from the "incomplete" character. 
Thanks to Peter L. Deutsch for analyzis.

The infinite loop occurance looks pretty stochastic because 
it depends on many factors, such as cache size and sizes rendered of glyphs.

The new code performs a cache cleanup 
when leaving a character rendering with error code.
See comments in code for more details.

This fix changes the prototype of gs_type42_append,
which is called from the PCL interpreter.
It should fix the problem with True Type fonts
in the PCL interpreter.

For type 1 fonts the cleanup code is a part of the PS interpreter
rather than a part of the graphics library.
It is not harmful because PCL interpreter doesn't render Type 1 fonts.
A better fix needs to modify the prototype of 
type1_exec_init and store the gs_show_enum pointer into the gs_type1_state instance,
to provide the cleanup in type1_continue_dispatch.
It would look ugly, so we don't do it now without a strong necessity.

Debugged with CET tests 13-12.PS, 13-22.PS .

</pre>
<p>[src/lib.mak src/zchar42.c src/gxfont42.h src/int.mak src/gstype42.c src/zchar1.c]</p>
</blockquote>

<p><strong><a name="2006-08-16T000937.858838Z"></a>
2006-08-16T00:09:37.858838Z Dan Coby</strong></p>
<blockquote>
<pre>
The ustrokepath operator has an optional matrix parameter.
This matrix is concatenated to the CTM.  The specified path
is then stroked.  This change restores the original CTM after
the path has been stroked.  Fixes the much25 test on page 2
of the CET test file 10-15.ps.
</pre>
<p>[src/zupath.c]</p>
</blockquote>

<p><strong><a name="2006-08-14T230538.304015Z"></a>
2006-08-14T23:05:38.304015Z Ralph Giles</strong></p>
<blockquote>
<pre>
Enable COMPILE_INITS by default in the autoconf build, as suggested by 
Ray Johnston.
</pre>
<p>[src/configure.ac]</p>
</blockquote>

<p><strong><a name="2006-08-14T224733.394093Z"></a>
2006-08-14T22:47:33.394093Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix a type size issue that prevented mkromfs from running correctly on 
64 bit machines. Bug 688792.
</pre>
<p>[src/mkromfs.c]</p>
</blockquote>

<p><strong><a name="2006-08-14T220843.391773Z"></a>
2006-08-14T22:08:43.391773Z Dan Coby</strong></p>
<blockquote>
<pre>
Add operand type checks and length checks for the currentmatrix,
identmatrix, and setmatrix operators.  This is done to match
error types expected by the CET.  10-03.ps page 2 tests
currentmatrix.  10-06.ps page 1 tests identmatrix.  10-14.ps
page 2 tests setmatrix.
</pre>
<p>[lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2006-08-14T125458.867665Z"></a>
2006-08-14T12:54:58.867665Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Report rangecheck or typecheck errors rather than undefined when the image type
is not known. Partial fix for 12-07a.ps and 12-08b.ps .
</pre>
<p>[lib/gs_img.ps]</p>
</blockquote>

<p><strong><a name="2006-08-14T094608.791598Z"></a>
2006-08-14T09:46:08.791598Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Return undefinedresult instead of rangecheck from dict_int_null_param()
and dict_uint_param() procedures when the key is not found.
Partial fix for 12-07a.ps and 12-08b.ps .
</pre>
<p>[src/idparam.c]</p>
</blockquote>

<p><strong><a name="2006-08-13T032806.727937Z"></a>
2006-08-13T03:28:06.727937Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Emulate sequential operand checking for colorimage operator.
Reject strings of different length as multiple date sources for sampled images.
Fix a typo in img_unbuild_image_dict procedure.
</pre>
<p>[src/zimage.c lib/gs_img.ps]</p>
</blockquote>

<p><strong><a name="2006-08-11T194411.724459Z"></a>
2006-08-11T19:44:11.724459Z leonardo</strong></p>
<blockquote>
<pre>
Fix : gs_fillpage passed a low level color to high level devices.

DETAILS :

This was occasionally detected while working on the bug 688641.
gs_fillpage inaccurately checked whether the device can handle high level colors,
and sometimes passed low level color instead high level color.
It happens so because gx_hld_is_hl_color_available works only after a color is set.

We don't expect a behavior change for pdfwrite, ps2write from this patch, 
because they ignore the initial page fill, which gs_fillpage performs.
Other devices don't handle high level color, so the change doesn't affect them also. 

</pre>
<p>[src/gspaint.c]</p>
</blockquote>

<p><strong><a name="2006-08-11T175036.791125Z"></a>
2006-08-11T17:50:36.791125Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A stronger condition for skipping the initial fill with a white color.

DETAILS :

Bug 688641 "pdfwrite is_in_page is broken, leads to spurious transparency".

The old code skept any number initial fills with a white color.
The new code skips only if the filling box is entire page.
Also the condition about nested streams (sbstack_depth == 0) was wrong for ps2write.

</pre>
<p>[src/gdevpdfd.c]</p>
</blockquote>

<p><strong><a name="2006-08-11T130934.153091Z"></a>
2006-08-11T13:09:34.153091Z leonardo</strong></p>
<blockquote>
<pre>
Fix (type 1 hinter) : Prevent an infinite loop on an incorrect contour.

DETAILS :

Bug 688676 "Ghostscript 8.53 enters infinite loop rendering a font".

The old code inaccurately worked with 'closepath' segments when 
trying to apply a hint.

</pre>
<p>[src/gxhintn.c]</p>
</blockquote>

<p><strong><a name="2006-08-11T114847.724620Z"></a>
2006-08-11T11:48:47.724620Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Upgrading the documentation about AutoFilter*Images.

</pre>
<p>[doc/Ps2pdf.htm]</p>
</blockquote>

<p><strong><a name="2006-08-10T111334.225727Z"></a>
2006-08-10T11:13:34.225727Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Wrong xref : Unuseful object ID when a font is not really used in the document.

DETAILS :

Bug 688824 "invalid xref table from pdfwrite",

The old code reserved an object ID for the FontFile object
when the font is set but no text rendered with the font in the document.
The new code skips creating the FontFile object if
no object ID assigned to the font descriptor.

</pre>
<p>[src/gdevpdtd.c]</p>
</blockquote>

<p><strong><a name="2006-08-10T073745.977950Z"></a>
2006-08-10T07:37:45.977950Z leonardo</strong></p>
<blockquote>
<pre>
Fix : MSVC8 compiler warnings.

</pre>
<p>[src/gdevdflt.c src/zfunc0.c]</p>
</blockquote>

<p><strong><a name="2006-08-09T174858.178137Z"></a>
2006-08-09T17:48:58.178137Z Raph Levien</strong></p>
<blockquote>
<pre>
Fix: Change pdfwrite pattern bbox to use PDF compliant syntax for float
bbox coordinates, rather than sprintf %g. Fixes (reopened) bug #688167.

</pre>
<p>[src/gdevpdfv.c]</p>
</blockquote>

<p><strong><a name="2006-08-09T012921.048118Z"></a>
2006-08-09T01:29:21.048118Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Changes the equality algorithm for FontID objects to match Adobe
interpreters (we think).  NOTE: THIS IS A NON-BACKWARD-COMPATIBLE CHANGE
(but one that is unlikely to have any adverse consequences).
</pre>
<p>[src/iutil.c]</p>
</blockquote>

<p><strong><a name="2006-08-09T003212.853814Z"></a>
2006-08-09T00:32:12.853814Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688822 failure to repair broken xref table.

DETAILS:

The given test file has problems.  The file was not mangled.  the
application that created the file has some problems.  However Acrobat
7.0 is able to display the file.

The file does not specify the application which created the file.

The file misspells the key word startxref (it says startref).  The
xref location is given as 54593016.  The file only has 2,210,991 bytes.
The the location is off by over a factor of 20.

The fix consists of making the xref rebuild logic tolerant of the
misspelling and verifying that the given xref location is within the
file.
</pre>
<p>[lib/pdf_main.ps lib/pdf_rbld.ps]</p>
</blockquote>

<p><strong><a name="2006-08-09T001729.773469Z"></a>
2006-08-09T00:17:29.773469Z Dan Coby</strong></p>
<blockquote>
<pre>
Change the error reporting to match the CET expected values for CET
test file 10-01.ps page 3.  We now correctly report stackunderflow
and type checks on this page.

</pre>
<p>[src/iutil.c]</p>
</blockquote>

<p><strong><a name="2006-08-09T001109.435929Z"></a>
2006-08-09T00:11:09.435929Z Ray Johnston</strong></p>
<blockquote>
<pre>
Remove an optimization that doesn't make a measurable difference in
preparation for restructuring FILE * stream functions into the graphics
library (out of zfile.c).
</pre>
<p>[src/zfile.c]</p>
</blockquote>

<p><strong><a name="2006-08-08T160453.066224Z"></a>
2006-08-08T16:04:53.066224Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes a just-introduced bug in the stackunderflow case of the user path
operators.
</pre>
<p>[src/zupath.c]</p>
</blockquote>

<p><strong><a name="2006-08-07T172614.883418Z"></a>
2006-08-07T17:26:14.883418Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Makes ifelse and if operators check the type of the topmost argument before
checking other arguments.

</pre>
<p>[src/interp.c src/zcontrol.c]</p>
</blockquote>

<p><strong><a name="2006-08-07T083834.292323Z"></a>
2006-08-07T08:38:34.292323Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Makes error returns from ineofill (and many other user path operators) match
Adobe interpreters.
</pre>
<p>[src/zupath.c]</p>
</blockquote>

<p><strong><a name="2006-08-06T203634.745839Z"></a>
2006-08-06T20:36:34.745839Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Makes dictstack check for the array size before checking for the access status.
</pre>
<p>[src/zdict.c]</p>
</blockquote>

<p><strong><a name="2006-08-06T141341.382704Z"></a>
2006-08-06T14:13:41.382704Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Return typecheck rather than invalidaccess when given a literal
array instead of a procedure.
</pre>
<p>[src/iutil.c]</p>
</blockquote>

<p><strong><a name="2006-08-06T013432.877045Z"></a>
2006-08-06T01:34:32.877045Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Makes rectfill, rectstroke, and rectclip generate typecheck rather than
rangecheck when given an argument of the wrong size or content.
</pre>
<p>[src/zdps1.c src/ibnum.c]</p>
</blockquote>

<p><strong><a name="2006-08-05T043311.593911Z"></a>
2006-08-05T04:33:11.593911Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
For greater Adobe compatibility, moves all non-standard entries out of
errordict: the handler for unknownerror to a new gserrordict (known to the
interpreter), and .GShandleerror to systemdict.  Similarly, moves making
errordict entries for optional features (including Level 2) to the feature
implementation file, so that e.g. the DPS entries don't appear in non-DPS
systems.
</pre>
<p>[lib/gs_dps.ps lib/gs_dps2.ps src/interp.c src/ierrors.h lib/gs_init.ps src/gserrors.h]</p>
</blockquote>

<p><strong><a name="2006-08-05T031754.678058Z"></a>
2006-08-05T03:17:54.678058Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Makes astore generate invalidaccess rather than typecheck when
given a packed array.
</pre>
<p>[src/zarray.c]</p>
</blockquote>

<p><strong><a name="2006-08-05T021649.849366Z"></a>
2006-08-05T02:16:49.849366Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
When an error occurs within an operator procedure, arranges for the 'error
object' to be the pseudo-operator rather than the current interpreter
object, to mimic the behavior of primitive operators, for greater Adobe
compatibility.  This can be overridden locally for callouts such as from
filenameforall or resourceforall, using the new .errorexec operator.
</pre>
<p>[src/iconf.c src/interp.c src/opextern.h lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2006-08-04T224853.701035Z"></a>
2006-08-04T22:48:53.701035Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Adds braces around the body of the new return_with_error_tx_op macro, to
avoid an ambiguous 'else'.
</pre>
<p>[src/interp.c]</p>
</blockquote>

<p><strong><a name="2006-08-04T214308.671407Z"></a>
2006-08-04T21:43:08.671407Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Makes astore to a 0-length array valid regardless of the array access status.
</pre>
<p>[src/zarray.c]</p>
</blockquote>

<p><strong><a name="2006-08-04T182819.632057Z"></a>
2006-08-04T18:28:19.632057Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Makes roll operator generate stackunderflow rather than rangecheck when 
there's not enough elements on the stack.

</pre>
<p>[src/zstack.c]</p>
</blockquote>

<p><strong><a name="2006-08-04T181109.614818Z"></a>
2006-08-04T18:11:09.614818Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Makes index operator generate stackunderflow rather than rangecheck when 
there's no element on the stack pointed by the argument.

</pre>
<p>[src/zstack.c]</p>
</blockquote>

<p><strong><a name="2006-08-04T172908.193973Z"></a>
2006-08-04T17:29:08.193973Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Makes copy operator generate rangecheck rather than stackunderflow when given
a negative argument.
</pre>
<p>[src/zgeneric.c]</p>
</blockquote>

<p><strong><a name="2006-08-04T165518.531677Z"></a>
2006-08-04T16:55:18.531677Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Makes the array operator return limitcheck rather than rangecheck if the
requested size is too large.
</pre>
<p>[src/zarray.c]</p>
</blockquote>

<p><strong><a name="2006-08-04T154634.786064Z"></a>
2006-08-04T15:46:34.786064Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Makes packedarray generate stackunderflow rather than rangecheck when given
a too-large positive argument.
</pre>
<p>[src/zpacked.c]</p>
</blockquote>

<p><strong><a name="2006-08-04T152042.125769Z"></a>
2006-08-04T15:20:42.125769Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Replaces relevant uses of index by .argindex, and adds a few other checks,
so that pseudo-operators will cause a stackunderflow rather than a
rangecheck when given too few arguments.  Only the following init files have
been modified: gs_{btokn,dps1,dps2,init,lev2}.ps -- many more require
updating.  However, since the only reason for this change is to satisfy the
Genoa test suite, further updates can be done as needed.
</pre>
<p>[lib/gs_dps1.ps src/zstack.c lib/gs_dps2.ps lib/gs_lev2.ps lib/gs_btokn.ps lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2006-08-04T140713.211741Z"></a>
2006-08-04T14:07:13.211741Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Work around a bug in "MSVC .net 2005 express" CRTL, which doesn't support
"%+02d" format.
</pre>
<p>[src/iutil.c]</p>
</blockquote>

<p><strong><a name="2006-08-04T042248.633454Z"></a>
2006-08-04T04:22:48.633454Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Set the correct error object when special operators (x_add, etc.) fail.

DETAILS:
If control reaches the special operators (x_add, etc.) as a result of
interpreting an executable name, iref points to the name, not the
operator, so the name rather than the operator becomes the error object,
which is wrong.  We detect and handle this case explicitly when an error
occurs, so as not to slow down the non-error case.
</pre>
<p>[src/interp.c]</p>
</blockquote>

<p><strong><a name="2006-08-04T040845.729436Z"></a>
2006-08-04T04:08:45.729436Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Re-format the exponent in floating point numbers to satisfy Genoa CET test.
</pre>
<p>[src/iutil.c]</p>
</blockquote>

<p><strong><a name="2006-08-03T054328.564474Z"></a>
2006-08-03T05:43:28.564474Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes bug: several dictionary operators (known, undef, where) did not cause
a typecheck error if the 'key' argument was a null.
</pre>
<p>[src/idict.c src/zdict.c src/idict.h]</p>
</blockquote>

<p><strong><a name="2006-08-03T051023.146390Z"></a>
2006-08-03T05:10:23.146390Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
On Level &gt;=2 systems, makes .undef a synonym for undef rather than vice
versa, to produce Adobe-compatible stack traces on errors.
</pre>
<p>[src/zdict.c lib/gs_dps1.ps]</p>
</blockquote>

<p><strong><a name="2006-08-02T213804.138968Z"></a>
2006-08-02T21:38:04.138968Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Fixes eq and ne so that an array is never eq to a packedarray, even if both
have zero length.
</pre>
<p>[src/iutil.c]</p>
</blockquote>

<p><strong><a name="2006-08-02T211017.237822Z"></a>
2006-08-02T21:10:17.237822Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
On Level &gt;=2 systems, makes .dicttomark a synonym for &gt;&gt; rather than vice
versa, to produce Adobe-compatible stack traces on errors.
</pre>
<p>[src/zdict.c lib/gs_lev2.ps]</p>
</blockquote>

<p><strong><a name="2006-08-02T210857.885732Z"></a>
2006-08-02T21:08:57.885732Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Removes dpsnext from the default FEATURE_DEVS, since the presence of
deviceinfo creates an Adobe incompatibility in Genoa PS LL3 CET 20-23.
</pre>
<p>[src/Makefile.in]</p>
</blockquote>

<p><strong><a name="2006-08-02T194726.316967Z"></a>
2006-08-02T19:47:26.316967Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 'invalid restore' in CET 09-47n.ps.

DETAILS:

The test file has a very bad call to the setpattern operator.
For this pattern, setpattern is expecting both the pattern dict and
a set of four color values.  None of the color values are present.
THe pattern color space processing logic was roling the stack to
verify that the color values are either integers or reals.  This
correctly produces an error.  However the stack was left disordered.
This resulted in the invalid restore since the pattern dict (local
memory) was still of the stack when the restore was executed.

Note:  The first attempt at a fix involved trying to use the procedure
check_num_stack (which is used by all of the other color spaces).
Instead of rolling the stack, a mark was placed and the color values
were copied to the top for check_num_stack.  If an error was detected
then a cleartomark was done.  This fails with the given test file since
there are marks in the stack where the color values should be.  Thus
the cleartomark did not clear to the proper mark.

The final solution involves sinply checking the type of the color values
inline instead of rolling the stack and using check_num_stack.
</pre>
<p>[lib/gs_patrn.ps]</p>
</blockquote>

<p><strong><a name="2006-08-02T180856.997894Z"></a>
2006-08-02T18:08:56.997894Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Makes "(/) token" correctly return an empty name rather than causing a
syntaxerror.
</pre>
<p>[src/iscan.c]</p>
</blockquote>

<p><strong><a name="2006-08-02T180532.494329Z"></a>
2006-08-02T18:05:32.494329Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Changes cvs for reals: '&lt;int&gt;e&lt;expt&gt;' is no longer changed to
'&lt;int&gt;.0e&lt;expt&gt;', and 0.0001 (a boundary case) now converts to '0.0001'
rather than '1.0e+04'.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE for
compatibility with Adobe interpreters.
</pre>
<p>[src/iutil.c]</p>
</blockquote>

<p><strong><a name="2006-08-02T122912.940833Z"></a>
2006-08-02T12:29:12.940833Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Changes pathbbox from an operator procedure to an operator, in order to
match the stack trace (on an error) from Adobe interpreters (checked by the
Genoa CET).
</pre>
<p>[src/zpath1.c lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2006-08-02T043545.952210Z"></a>
2006-08-02T04:35:45.952210Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Pops arguments off the stack if an error occurs while interpreting a user
path (for Adobe compatibility); enforces the user path order requirements
(ucache must come first if at all, setbbox must come first or immediately
after ucache, setbbox is required).
</pre>
<p>[src/zupath.c]</p>
</blockquote>

<p><strong><a name="2006-08-02T011435.678026Z"></a>
2006-08-02T01:14:35.678026Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make string operator error reprorting similar to Distiller's.
</pre>
<p>[src/zstring.c]</p>
</blockquote>

<p><strong><a name="2006-08-02T004725.925799Z"></a>
2006-08-02T00:47:25.925799Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make putinterval operator error reprorting similar to Distiller's.
</pre>
<p>[src/zgeneric.c]</p>
</blockquote>

<p><strong><a name="2006-08-01T224334.939677Z"></a>
2006-08-01T22:43:34.939677Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make get operator error reprorting similar to Distiller's.
</pre>
<p>[src/zgeneric.c]</p>
</blockquote>

<p><strong><a name="2006-08-01T211202.550966Z"></a>
2006-08-01T21:12:02.550966Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make forall operator error reprorting similar to Distiller's.
</pre>
<p>[src/zgeneric.c]</p>
</blockquote>

<p><strong><a name="2006-08-01T185257.821971Z"></a>
2006-08-01T18:52:57.821971Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make copy operator error reprorting similar to Distiller's.
</pre>
<p>[src/zgeneric.c]</p>
</blockquote>

<p><strong><a name="2006-08-01T165554.568960Z"></a>
2006-08-01T16:55:54.568960Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make anchorsearch error reprorting compatible with Distiller.
</pre>
<p>[src/zstring.c]</p>
</blockquote>

<p><strong><a name="2006-08-01T011030.751173Z"></a>
2006-08-01T01:10:30.751173Z Ralph Giles</strong></p>
<blockquote>
<pre>
Require transparency support when building the graphics library.

DETAILS:

Prior to this change, Ghostscript would not build without translib.dev
because the ADDCOMP pdf14trans line in libs.dev, which defined the device
but did not pull in its implementation. Normally this happens through 
pdf.dev.

A better fix might be to move the pdf14trans line to pdf.dev and let
those needing transparency support outside of pdf add translib.dev
explicitly to FEATURE_DEVS.
</pre>
<p>[src/lib.mak]</p>
</blockquote>

<p><strong><a name="2006-08-01T000602.095465Z"></a>
2006-08-01T00:06:02.095465Z Ralph Giles</strong></p>
<blockquote>
<pre>
MD5 is required by the persistent cache implementation on unix. Add it to the platform dependency list.
</pre>
<p>[src/unix-aux.mak]</p>
</blockquote>

<p><strong><a name="2006-07-31T184916.317202Z"></a>
2006-07-31T18:49:16.317202Z Ralph Giles</strong></p>
<blockquote>
<pre>
Pass a 32-element string to cvrs in instances where the int could be more 
than 32 bits on some architectures. After a sketch by L. Peter Deutsch,
Closes bug 688794.

DETAILS:

An &lt;int&gt; in the Ghostscript ps interpreter is a C long, and so on 64 bit Linux, for example, it will be 64 bits, which in these instances require more than 8 characters for representation in hex. We use 32 characters (128 bits of hex) to be on the safe side.

The PLRM says the size of an int is implementation dependent. It can also be argued that it assumes this is 32 bits. In fact, one of the Genoa tests fails with longer ints. We choose to follow the clearest statement here, that the size is up to us.
</pre>
<p>[lib/pdf_font.ps lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2006-07-31T173929.043892Z"></a>
2006-07-31T17:39:29.043892Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the 'dosdefault' stamp file, whose creation causes problems on 
MS Windows 9X. Closes bug 688816.
</pre>
<p>[src/msvccmd.mak]</p>
</blockquote>

<p><strong><a name="2006-07-31T023925.938560Z"></a>
2006-07-31T02:39:25.938560Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Makes gs match an apparent bug in Adobe interpreters, which cause an
invalidaccess error when 'exec'ing a noaccess literal (other than
dictionaries).  Fixes a "failure" in Genoa PS3 CET 24-09.

</pre>
<p>[src/zcontrol.c]</p>
</blockquote>

<p><strong><a name="2006-07-31T023814.326304Z"></a>
2006-07-31T02:38:14.326304Z L. Peter Deutsch</strong></p>
<blockquote>
<pre>
Makes gs match the behavior of Adobe interpreters, which allow executing
noaccess on a readonly or noaccess dictionary, even though Red Book 3 says
that changing the access of a read-only dictionary is not allowed.  Fixes a
"failure" in Genoa PS3 CET 24-09.

</pre>
<p>[src/ztype.c]</p>
</blockquote>

<p><strong><a name="2006-07-28T062257.072635Z"></a>
2006-07-28T06:22:57.072635Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Incorrect image conversion with CompatibilityLevel=1.2 .

DETAILS :

Bug 688766 "Wrong graphics after ps2ps2 conversion."
Bug 688772 "Bad PDF generated with -dCompatibilityLevel=1.2"

Patch from SaGS.

1. pdf_begin_typed_image() did not synchronize the clipping path in some cases (gdevpdfi.c).
2. Delayed the synchronization for after checking the matrix singularity
   against writing an unuseful clipping before a skipped image. 
2. write_image_with_clip improiperly placed the 2nd and further subimages
   due to dropping the image's 'cm' with the subimage's 'Q'.
3. gx_image_enum_begin computed a wrong clipping box.
   In the new code pdf_setup_masked_image_converter installs
   a better get_clipping_box method, which is implemented 
   with the new function lcvd_get_clipping_box_shifted_from_mdev.
4. pdf_image3_make_mcde passed the clipping path to a memory device,
   which uses a different coordinate system. The new code does not
   pass the clipping path (gdevpdfi.c) and uses the device clipping box instead.

For more details see Bug 688766.

</pre>
<p>[src/gdevpdfx.h src/gdevpdfd.c src/gdevpdfi.c]</p>
</blockquote>

<p><strong><a name="2006-07-28T012329.511044Z"></a>
2006-07-28T01:23:29.511044Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for pages 4, 5, 13, 14 of the CET test file 12-02.ps.
This file creates colorimages with a size of zero.  The CET
expects that these colorimages will be ignored.
</pre>
<p>[lib/gs_img.ps]</p>
</blockquote>

<p><strong><a name="2006-07-27T070636.388322Z"></a>
2006-07-27T07:06:36.388322Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for segv in CET files 32-32.ps and 22-11.ps.  Both
files use binary object sequences with an object type of
'user name' however no user names have been defined.
The fix consists of checking for this situation and returning
an e_undefined error.  (The choice of error is because CPSI
also returns a 'undefined' error.
</pre>
<p>[src/iscanbin.c]</p>
</blockquote>

<p><strong><a name="2006-07-27T011559.601586Z"></a>
2006-07-27T01:15:59.601586Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Accept string values of page device, halftone, and rendering intent names.
PLRM specifies that all these values can be names or strings.
Bug 688776.

</pre>
<p>[lib/gs_lev2.ps]</p>
</blockquote>

<p><strong><a name="2006-07-26T050357.276453Z"></a>
2006-07-26T05:03:57.276453Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for CET test file 12-14c.ps.  This file was seg faulting.
The cause was some uniniitalized pointers that were being
freed when given invalid function parameters.  (The test file
was verifying the handling of invalid functions.)

</pre>
<p>[src/zfunc0.c]</p>
</blockquote>

<p><strong><a name="2006-07-25T182943.943994Z"></a>
2006-07-25T18:29:43.943994Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix CIDFontType 4 (FontType 32) handling so that read-only font dicts
can be used. Fixes PSLL3 CET 35-02.ps 'invalidaccess in -put-'.
</pre>
<p>[lib/gs_typ32.ps]</p>
</blockquote>

<p><strong><a name="2006-07-23T192514.174116Z"></a>
2006-07-23T19:25:14.174116Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the requirement for HAVE_LONG_LONG to be defined before generating
ARCH_LOG2_SIZEOF_LONG_LONG. Since this was added, we've begun requiring
both signed and unsigned 64 bit types. Almost all platforms with a 64 bit
int provide long long, so this defaulting to on is a better approach.

We make an exception for MSVC which we support and which does not provide
'long long'. The requirement for a 64 bit type is taken care of by a matching
platform-specific #ifdef section in stdint_.h.

To add support for other such platforms, add another platform option to this
#ifdef and a corresponding section to stdint_.h.

Bug 688805 for customer 613.
</pre>
<p>[src/genarch.c]</p>
</blockquote>

<p><strong><a name="2006-07-21T204822.048908Z"></a>
2006-07-21T20:48:22.048908Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add in aliases for glyphs that have the same Unicode value in the Adobe
Glyph List version 2.0. If both names are defined (presumably unique)
don't change them. If either name is known, make the other name an alias.
Bug 688799 and 688800 for customer 130.

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2006-07-20T223531.758145Z"></a>
2006-07-20T22:35:31.758145Z Raph Levien</strong></p>
<blockquote>
<pre>
Finishes implementation of LeadingEdge parameter, primarily intended for
rotating pages to fit paper tray orientation. The LeadingEdge parameter
is an Adobe-defined setpagedevice parameter, and can be set by 
PostScript code for explicit control over rotation, or can be set by the
device to reflect device knowledge of the tray orientation (the 
mechanism for the latter is documented in Drivers.htm). This patch
completely replaces the old TrayOrientation parameter, which had similar 
goals but was not standard, and fixes some problems with that 
implementation.
</pre>
<p>[src/gsdparam.c src/gdevdflt.c doc/Drivers.htm src/gxdevice.h doc/Language.htm lib/gs_setpd.ps src/gsdevice.c src/gxdevcli.h]</p>
</blockquote>

<p><strong><a name="2006-07-20T191825.263338Z"></a>
2006-07-20T19:18:25.263338Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc warned unuseful variables.

</pre>
<p>[src/zfont0.c src/zbfont.c src/gdevpdfg.c]</p>
</blockquote>

<p><strong><a name="2006-07-20T185707.315529Z"></a>
2006-07-20T18:57:07.315529Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 28.

DETAILS :

Disable a debug-purpose code, which unintentionally left in the last patch.

</pre>
<p>[src/fapiufst.c]</p>
</blockquote>

<p><strong><a name="2006-07-20T185028.389414Z"></a>
2006-07-20T18:50:28.389414Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 27.

DETAILS :

Provide a static list of FCO handles,
which are useful for a multilanguage embedded systems.

We define a storage for 2 handles because currently we need only 2 ones -
one for Windings and another for all other fonts.
FCO plugin does not go to this list, because it
doesn't define a font.

</pre>
<p>[src/lib.mak src/fapiufst.c src/gxfapiu.c src/gxfapiu.h]</p>
</blockquote>

<p><strong><a name="2006-07-20T064550.863988Z"></a>
2006-07-20T06:45:50.863988Z Ray Johnston</strong></p>
<blockquote>
<pre>
Establish alias glyph names (instead of replacement names) for example
Ldotaccent as an alias for Ldot. Bug 688799 for customer 130.
--this line, and those below, will be ignored--

m    gs_ttf.ps
</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2006-07-19T225224.858615Z"></a>
2006-07-19T22:52:24.858615Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688788 /rangecheck in resolveR.

DETAILS:

The file is damaged and has to have it xref table rebuilt.

Ralph Giles correctly guessed the cause of the problem
with his comment:
  "The file is corrupted by the addition of a leading
   newline; after removing the initial '0x0d 0x0a'
   character sequence the file renders fine. This offset
   is apparently confusing the xref table repair."

We have a value called PDFoffset which indicates the amount
of white space at the beginning of a file.  This value is
added to all xref table entry file locations when they are
referenced.  The xref rebuild logic was creating xref
locations which give the file position without considering
the value of PDFoffset.  The fix consists of simply subtracting
the values of PDFoffset from the xref object locations when
the xref tables are rebuilt.
</pre>
<p>[lib/pdf_rbld.ps]</p>
</blockquote>

<p><strong><a name="2006-07-19T223815.499527Z"></a>
2006-07-19T22:38:15.499527Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688787 /undefined in /BXlevel.

DETAILS:

The given test file has definite problems.  Most of the
xref entries are off by one byte.  Several of the xref
entries are off by thousands of bytes.  However the worst
problem is the value given for startxref.  This value
is off by tens of thousands of bytes.

The xref rebuild logic needs to find the final trailer
dictionary.  It uses the startxref value to find this
dictionary.  Since the file is damaged the rebuild logic
does not simply assume that the trailer dictionary is at
the given location.  Instead this logic compares ithe value
to the size of the file.  If less than one half of the size
of the file then we search at the beginning of the file.
This generally works for 'linearized' PDF files.  Othewise
the rebuild logic search for the last trailer dict in the
file.  This works for most non linearized files.

This file indicates that the trailer dict should be at
the start of the file.  However the trailer dict is at
the end of the file.  The fix consists of searching at
the end of the file when a trailer dict is not found at
the start of a file.
</pre>
<p>[lib/pdf_rbld.ps]</p>
</blockquote>

<p><strong><a name="2006-07-17T191134.040541Z"></a>
2006-07-17T19:11:34.040541Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Support OS/2 table version 2 in True Type fonts.

DETASILS :

We don't use the new fields in the 96-byte structure and continue to
create 86-byre structures. The extra space is used as a buffer when
we copy the structure intact.

Bug 688536 "/invalidfont in --show-- when trying to convert the PDF file".
Patch from Alex with an improvement against regressions.

</pre>
<p>[src/gxttf.h src/gdevpsft.c]</p>
</blockquote>

<p><strong><a name="2006-07-13T213515.090210Z"></a>
2006-07-13T21:35:15.090210Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A further improvement for the text rotation logic.

DETASILS :

Bug 688793 "document pages rotated with Ghostscript, not with Acrobat"

This patch implements Raph's suggestion how I understand it.

[beg quote]
There are two issues here. First, the document-global viewing_orientation info
isn't being copied into the page-specific info. [skipped]

Second, when the inferred text rotation and the dsc orientation can't match
(i.e. are off by an odd multiple of 90 degrees), precedence is given to the text
rotation. [skipped]

[Skipped] reverse the precedence so that if
both dsc orientation is set and text rotation is inferred, use the dsc value.
[end quote]

See the bug 688793 for more details.

I marked the change with Bug688793 macro
because I can't say that I fully foresee its consequences.
The mark will help to analyze problems if any appear.

</pre>
<p>[src/gdevpdf.c]</p>
</blockquote>

<p><strong><a name="2006-07-13T123703.107591Z"></a>
2006-07-13T12:37:03.107591Z leonardo</strong></p>
<blockquote>
<pre>
Fix : MSVC8 compiler warnings.

</pre>
<p>[src/ziodevsc.c]</p>
</blockquote>

<p><strong><a name="2006-07-13T122538.449013Z"></a>
2006-07-13T12:25:38.449013Z leonardo</strong></p>
<blockquote>
<pre>
Fix (True Type font loader) : A wrong encoding created when no 'post' presents.

DETAILS :

Bug 688789 "incorrect encoding displayed using ArialUnicodeMS".

The old code in .charkeys computes (with dropping minor details) :
    CharStrings = glyphencoding^-1
    Encoding = cmap*glyphencoding

It is correct when 'post' presents due to glyphencoding = post,  
and post maps glyph indices to glyph names.

In the test case (with no 'post') .charkeys must compute (with dropping same details) :
    CharStrings = glyphencoding^-1 * cmap
    Encoding = glyphencoding
because glyphencoding is stubbed with an encoding.

I'm not sure why the old code worked so long with no problem.
Likely every font manufacturers loved to define 'post'.
Now we got one which doesn't.

BTW, I guess an useful optimization would be to replace 'numloca'
with a better estimation. In the test case it appears too big,
so we process a huge trash and then drop it.
The better estimation, the smaller time consumption.

Another useful optimization is marked with
"% a stub for a while. Must skip the entry."
in the new code. Dalaying it for better times.

Inserted a debug printing for CharStrings.
Using it one can se how big trash it processes.

The old code truncates Encoding if it is longer than 'loca'.
It appears wrong with the new CharString composition logics
- creates a tool short Encoding for fonmts in bug_687457.pdf .
The truncation has been removed from .charkeys .
It should work fine because recently we improved
C code about acessing glyphs outside 'loca' -
see the revision 6874.

The test case to be added to comparefiles.

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2006-07-13T053811.096275Z"></a>
2006-07-13T05:38:11.096275Z Dan Coby</strong></p>
<blockquote>
<pre>
Remove a mixture of DOS and Unix style line endings.

</pre>
<p>[src/gsnamecl.c]</p>
</blockquote>

<p><strong><a name="2006-07-13T011611.812282Z"></a>
2006-07-13T01:16:11.812282Z Ray Johnston</strong></p>
<blockquote>
<pre>
Remove (now) superfluous stdout_buf and stderr_buf areas from main instance
(no longer needed -- buffers are allocated when stdio is opened).
</pre>
<p>[src/iminst.h]</p>
</blockquote>

<p><strong><a name="2006-07-12T214607.133984Z"></a>
2006-07-12T21:46:07.133984Z Ray Johnston</strong></p>
<blockquote>
<pre>
Clean up some gcc warnings created by last commit.
</pre>
<p>[src/imain.c src/sfxstdio.c src/zfproc.c src/ziodevsc.c]</p>
</blockquote>

<p><strong><a name="2006-07-12T213000.448371Z"></a>
2006-07-12T21:30:00.448371Z Ray Johnston</strong></p>
<blockquote>
<pre>
Change stdio callback mechanism to call directly from the stream processing
function, not requiring a CALLC callout all the way back through the interp
to 'imain.c' This simplifies some of the calling and is more efficient.

DETAILS:

gsapi_ and/or gsdll_ clients will see no difference.

</pre>
<p>[src/imain.c src/interp.c src/zfileio.c src/zfproc.c src/ziodevs.c src/ziodevsc.c src/files.h src/iminst.h src/ierrors.h]</p>
</blockquote>

<p><strong><a name="2006-07-12T212401.592491Z"></a>
2006-07-12T21:24:01.592491Z Ray Johnston</strong></p>
<blockquote>
<pre>
Refactor 'file_prepare_stream' for use by non-PS (graphics library only)
clients such as gsiorom (the %rom% device can be used by non-PS builds).
</pre>
<p>[src/sfxstdio.c src/zfile.c]</p>
</blockquote>

<p><strong><a name="2006-07-12T211934.152242Z"></a>
2006-07-12T21:19:34.152242Z Ray Johnston</strong></p>
<blockquote>
<pre>
Header file missed on previous commit to refactor 'file_prepare_stream'
for use by graphics library (no PS interpreter) clients (gsiorom.c).
</pre>
<p>[src/stream.h]</p>
</blockquote>

<p><strong><a name="2006-07-12T211511.292479Z"></a>
2006-07-12T21:15:11.292479Z Ray Johnston</strong></p>
<blockquote>
<pre>
Get rid of deprecated %static% device. This has been replaced by the more
efficient and versatile %rom% device.
</pre>
<p>[src/int.mak src/ziodevst.c]</p>
</blockquote>

<p><strong><a name="2006-07-12T175916.470870Z"></a>
2006-07-12T17:59:16.470870Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : More PDF/A-1b complience, continued 6.

DETAILS :

Bug 688783 "commit 6892 mis-uses the TZ environmental".

Completely removed the time zone computation because
it's not working properly with some compilers.
Always write the UTC time instead.
It looks compliant with all PDF/A, PDF 1.6, ANSI C and 
http://www.w3.org/TR/NOTE-datetime standards.

</pre>
<p>[src/gdevpdf.c]</p>
</blockquote>

<p><strong><a name="2006-07-12T122410.438308Z"></a>
2006-07-12T12:24:10.438308Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : More PDF/A-1b complience, continued 5.

DETAILS :

Bug 688783 "commit 6892 mis-uses the TZ environmental".

An improved code with using CRTL functions to compute the tize zone.
This works on both my local Windows and on Linux on peeves.

</pre>
<p>[src/gdevpdf.c]</p>
</blockquote>

<p><strong><a name="2006-07-12T112628.547453Z"></a>
2006-07-12T11:26:28.547453Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : More PDF/A-1b complience, continued 4.

DETAILS :

Bug 688783 "commit 6892 mis-uses the TZ environmental".

An improved code with using CRTL functions to compute the tize zone.
Thanks to SaGS for suggestion.

</pre>
<p>[src/gdevpdf.c]</p>
</blockquote>

<p><strong><a name="2006-07-11T213255.057296Z"></a>
2006-07-11T21:32:55.057296Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : More PDF/A-1b complience, continued 3.

DETAILS :

Bug 688742 "PDF/A label missing error in Acrobat preflight", part 2.
Bug 688783 "commit 6892 mis-uses the TZ environmental".

Use CRTL functions to compute the tize zone.
Thanks to SaGS for suggestion.

</pre>
<p>[src/gdevpdf.c doc/Ps2pdf.htm src/devs.mak]</p>
</blockquote>

<p><strong><a name="2006-07-10T110018.723002Z"></a>
2006-07-10T11:00:18.723002Z Tor Andersson</strong></p>
<blockquote>
<pre>
remove the null memory context argument to errprintf in gs_throw_imp that was accidentally left in from when the function was ported over from ghostpcl.</pre>
<p>[src/gsmisc.c]</p>
</blockquote>

<p><strong><a name="2006-07-09T140423.380577Z"></a>
2006-07-09T14:04:23.380577Z Ralph Giles</strong></p>
<blockquote>
<pre>
Compile in read support when building libpng. It is needed for XPS 
parsing.
</pre>
<p>[src/libpng.mak]</p>
</blockquote>

<p><strong><a name="2006-07-07T172251.824275Z"></a>
2006-07-07T17:22:51.824275Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix gcc reported problems.
</pre>
<p>[src/mkromfs.c]</p>
</blockquote>

<p><strong><a name="2006-07-07T002645.026656Z"></a>
2006-07-07T00:26:45.026656Z Ray Johnston</strong></p>
<blockquote>
<pre>
Correct typo in header that MSVC ignores.
</pre>
<p>[src/files.h]</p>
</blockquote>

<p><strong><a name="2006-07-06T235924.561744Z"></a>
2006-07-06T23:59:24.561744Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix missed edit to remove RESOURCE_LIST from top makefiles.
</pre>
<p>[src/msvclib.mak]</p>
</blockquote>

<p><strong><a name="2006-07-06T213250.019697Z"></a>
2006-07-06T21:32:50.019697Z Ray Johnston</strong></p>
<blockquote>
<pre>
Several %rom% related improvements. Add PSRESDIR macro to define the location
of the Resource/ path during the build. Remove the RESOURCE_LIST from the top
level makefiles (list now only in src/int.mak). Correct the font path to the
Adobe standard Resource/Font. Change the GS_LIB_DEFAULT to include Resource/Font
rather than the useless Resource path.

Change the %rom% device to return a custom 'block' stream that decompresses
by blocks into the buffer so that the entire file is never decompressed into
a 'string' for a sread_string type stream. The 'file_prepare_stream' is now
exported for use by gsiorom.c.

DETAILS:

That wasn't enough ?

One hack is that the s-&gt;file pointer in the stream_s is used to hold the pointer
to the node header in the %rom% file system. This seemed to make some sense.
Unlike the FILE * structure (which is somewhat opaque), there is no dynamic
state info in a node -- the s-&gt;position and read pointer within cbuf are enough
to allow read_process, seek, and available procs to operate.

The buffer is slighty larger than the ROMFS_BLOCKSIZE to allow for some data
(up to 256 bytes) not being consumed from the buffer when read_process is
used to refill the buffer. This way we can decompress directly into the cbuf
(at the correct point, of course) and avoid another buffer and copy. This
also means that each 'block' is always at or near the front of cbuf. After
a seek, the block will load at the beginning of cbuf (assuming we did not
already have the requested pos in the buffer).

As with 'file' type streams, the s-&gt;read_id is bumped so that the stream
access functions will see the file as 'invalid' (read_id won't match rsize).
The cbuf is also freed when the file is closed (to prevent leaks in a non
GC memory system).

NOTE: IT IS THE CALLER'S RESPONSIBILITY TO FREE THE STREAM RETURNED BY THE
romfs_open_file() function using the memory in the s-&gt;memory allocator. In
PostScript, since the -file- ref can be passed around among objects, the
GC is relied upon to free when no further references exist.


</pre>
<p>[src/gsiorom.c src/watcw32.mak src/macosx.mak src/int.mak src/dvx-gcc.mak src/unixansi.mak src/msvclib.mak src/os2.mak src/bcwin32.mak src/ugcclib.mak src/unix-gcc.mak src/msvc32.mak src/macos-mcp.mak src/files.h src/zfile.c src/watclib.mak]</p>
</blockquote>

<p><strong><a name="2006-07-06T171215.527898Z"></a>
2006-07-06T17:12:15.527898Z Stefan Kemper</strong></p>
<blockquote>
<pre>
Fix null ptr dereference committed on rev 6866

DETAILS:

In the case where gx_alloc_char_bits is called with a null
device pointer the default of 72 dpi is used.

</pre>
<p>[src/gxccman.c]</p>
</blockquote>

<p><strong><a name="2006-07-06T111042.178658Z"></a>
2006-07-06T11:10:42.178658Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Replace empty MediaBox or CropBox box with a box that is equal to the current
page size. Bug 688744, customer 384.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2006-07-06T002431.497014Z"></a>
2006-07-06T00:24:31.497014Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Modify cmap table handling routines to support a large ( &gt;= 64K ) table
represented as an array of strings.
Bug 688688, customer 562.

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2006-07-05T210653.575845Z"></a>
2006-07-05T21:06:53.575845Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : More PDF/A-1b complience, continued 2.

DETAILS :

Bug 688742 "PDF/A label missing error in Acrobat preflight", part 4.

This is an experimental patch, which drops the setting of
the symbolic flag for fonts in PDF/A documents.
Doing so because the Acrobat preflight tool 
doesn't allow Encoding for symbolic True Type fonts.

The decision for setting the symbolic flag for most fonts has been
done a long ago, and currently we cannot reconstruct all the related history.
We suspect that in novadays that decision appears obsolete.
We commit this patch to allow an accumulation of information
about how this flag affects 3d party software.

</pre>
<p>[src/gdevpdtd.c src/gdevpdtd.h]</p>
</blockquote>

<p><strong><a name="2006-07-05T202810.067306Z"></a>
2006-07-05T20:28:10.067306Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : More PDF/A-1b complience, continued.

DETAILS :

Bug 688742 "PDF/A label missing error in Acrobat preflight", part 3.

1. Substitute the DeviceRGB color space.
2. Write the instance ID into the pdfaid item.
3. /Type/Metadata/Subtype/XML is required for metadata stream dictionary.

</pre>
<p>[lib/gs_devcs.ps src/gdevpdfe.c]</p>
</blockquote>

<p><strong><a name="2006-07-05T181752.450829Z"></a>
2006-07-05T18:17:52.450829Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use /PageSize from the currrent page device dictionary when the /MediaBox pget
fails. Bug 688771, customer 581.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2006-07-05T140349.473556Z"></a>
2006-07-05T14:03:49.473556Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : More PDF/A-1b complience.

DETAILS :

Bug 688742 "PDF/A label missing error in Acrobat preflight", part 2.

1. Always embed all fonts when writing a PDF/A document.
2. Provide a precize time and time zone (see the documentation change included).
3. Wrtte an OutputConditionIdentifier.
   
See the documentation change for details.

</pre>
<p>[src/gdevpdf.c doc/Ps2pdf.htm src/gdevpdtf.c src/gdevpdfe.c lib/PDFA_def.ps src/devs.mak]</p>
</blockquote>

<p><strong><a name="2006-07-05T102603.786036Z"></a>
2006-07-05T10:26:03.786036Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Write out the PDF/A compliance label.

DETAILS :

Bug 688742 "PDF/A label missing error in Acrobat preflight".
Patch from Eduard Tiganas.

</pre>
<p>[src/gdevpdfe.c]</p>
</blockquote>

<p><strong><a name="2006-07-04T231313.666885Z"></a>
2006-07-04T23:13:13.666885Z Ralph Giles</strong></p>
<blockquote>
<pre>
Modularize the soname and link flags for the unix shared library build
to facilitate use on different platforms.
</pre>
<p>[src/unix-dll.mak]</p>
</blockquote>

<p><strong><a name="2006-07-04T213143.405686Z"></a>
2006-07-04T21:31:43.405686Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Increase the operand stack size limit to the current working maximum = 65414.
Bug 688764.

DETAILS:
PostScript stack cannot exceed the size of a PostScript array (65535) because
the stack is copied to an array when the stack overflows.

The stack space is allocated in blocks. The stack overflow is checked when the
new block is allocated. If the MaxOpStack is set close enough to 65535 the
actual stack size exceeds 65535 at the moment of stack overflow.

This condition is detected when the stack is copied to an array during
stackoverflow processing, causing a low level stack dump. 

</pre>
<p>[lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2006-07-02T115018.654475Z"></a>
2006-07-02T11:50:18.654475Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix calculation of the index in the DecodeDEF[G] table. The old code rendered
wildly different colors when the range of RangeDEF[G] was not close to 1.
Bug 688763.

</pre>
<p>[src/gsciemap.c]</p>
</blockquote>

<p><strong><a name="2006-07-01T150830.368356Z"></a>
2006-07-01T15:08:30.368356Z Ray Johnston</strong></p>
<blockquote>
<pre>
Replace &#36;Id lines inadvertently removed.
</pre>
<p>[src/imain.c src/zfile.c]</p>
</blockquote>

<p><strong><a name="2006-06-30T200021.389005Z"></a>
2006-06-30T20:00:21.389005Z Ray Johnston</strong></p>
<blockquote>
<pre>
Changes to make the JOBSERVER and exitserver operate correctly. This is
essential to proper CET and FTS execution.

DETAILS:

The primary changes to allow exitserver to work from files, stdin, strings
and executive mode were making sure that the strings, procedures and
files (or subfildecode filters) were all in "system vm" which is always
a 'stable' memory immune from save/restore (curing the /invalidrestore
errors previously seen). To support executive mode, the statementedit
and lineedit IODevices always allocate in system VM (imemory_system) as
well.

Also changed was to omit the grestoreall in .startnewjob after the
restore since this would go back to the previous 'null' device and
close the device we want (e.g. x11 or display).

This relates to bug 688312, which I will close after determining if
there is any other documentation needed. Also this fixes #201952 which
was previously closed as WONTFIX.

Note that with -dJOBSERVER Ghostscript (unlike ghostpcl) will run the
-c string or the files on the command line or the input to the GS&gt;
prompt as an encapsulated job and multiple files on the command line
will NOT be treated as separate jobs. File that contain a ^D (0x04)
at the end _WILL_ restore the VM state and start a new encapsulated
job for subsequent interpreter actions.

To run an inital file in 'exitserver' mode (affecting the permanent
server state), the -c "true 0 startjob pop" -f can be used prior to
the file. To run files as individual encapsulated jobs (when it is
not known if the job ends with ^D) simply add a file that contains
a ^D between each job on the command line. For example, if '04' is
a file that contains a ^D:

gs -dJOBSERVER x.ps 04 y.ps 04 z.ps -c "true 0 startjob quit"

Also note above that since 'quit' is defined as 'stop' in order to
actually quit you have to go to exitserver mode first (true 0 startjob)
or use the -dBATCH option.

</pre>
<p>[src/imain.c src/zfilter.c lib/gs_lev2.ps src/ziodev.c src/opextern.h src/zdevice.c src/zfile.c lib/gs_init.ps src/zsysvm.c]</p>
</blockquote>

<p><strong><a name="2006-06-30T191440.807461Z"></a>
2006-06-30T19:14:40.807461Z Ray Johnston</strong></p>
<blockquote>
<pre>
Clean up memory when the gsapi_delete_instance is called. Prevents leaks
from repeated invocations of ghostscript gsapi_ instances. Bug 688181.

</pre>
<p>[src/iapi.c]</p>
</blockquote>

<p><strong><a name="2006-06-29T042555.982235Z"></a>
2006-06-29T04:25:55.982235Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add support of AdjustWidth parameter to tiffg32d and tiffg4 devices.
Bug 688748.

DETAILS:
According to Devices.htm, all black-and-white TIFF devices support AdjustWidth
parameter, but tiffg32d and tiffg4 didn't, always adjusting the page size.
The user had no way to switch off this, possibly undesired, feature.

</pre>
<p>[doc/Devices.htm src/gdevtfax.c]</p>
</blockquote>

<p><strong><a name="2006-06-29T040716.134871Z"></a>
2006-06-29T04:07:16.134871Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add embedded OpenType support to the PDF interpreter.
Bug 688729, customer 700.

DETAILS:
According to the OpenType specification, OTTO tag is used only when the font
file has CFF data. We need to add more checking if we encounter OTTO fonts with
TTF data.

</pre>
<p>[lib/pdf_font.ps lib/gs_cff.ps]</p>
</blockquote>

<p><strong><a name="2006-06-28T202434.110786Z"></a>
2006-06-28T20:24:34.110786Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Improve the filter choice logic.

DETAILS :

Bug 688773 "/JPXEncode always used when -dCompatibilityLevel=1.5".

"[Color|Gray|]AutoFilterStrategy = /JPEG2000" applied when 
"AutoFilter[Color|Gray]Images == false".

</pre>
<p>[src/gdevpsdi.c]</p>
</blockquote>

<p><strong><a name="2006-06-28T162952.237586Z"></a>
2006-06-28T16:29:52.237586Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Luratech filters must not apply to indexed images.

DETAILS :

1. The old code erroneusely sets up the image compression chooser
   for Indexed images (gdevpdfi.c).

2. Don't allow the lossless JPXEncode for indexed images (gdevpsdi.c).
   (This change has no effect with no Luratech).

</pre>
<p>[src/gdevpsdi.c src/gdevpdfi.c]</p>
</blockquote>

<p><strong><a name="2006-06-28T095713.290010Z"></a>
2006-06-28T09:57:13.290010Z leonardo</strong></p>
<blockquote>
<pre>
Fix (TT font loader) : Work around a wrong specificID.

DETAILS :

The test document includes a name record with platformID=3, specificID=768.
We could not find a dicument, which allows such combination,
and we believe it is incorrect.
This patch implements a general workaround for strings,
which consist of 2-byte characters, each of which has a zero leading byte.

Bug 688769 "pdfwrite : an Incorrect embedded font object".

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2006-06-28T004547.790609Z"></a>
2006-06-28T00:45:47.790609Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Preserve ToUnicode for Type 0 fonts when re-distilling a PDF.

DETAILS :

The old code didn't account ToUnicode CMaps of Type 0 fonts in PDF documents :
1. It attached GlyphNames2Unicode after defonefont happens, so that C code never got it.
2. gdevpdtc.c didn't check Type 0 fonts for GlyphNames2Unicode.

The fix consists of 2 parts :
1. The new code in gs/lib factors out an auxiliary function .composefontdict from composefont .
   That function is called before .processToUnicode in pdf_font.ps for Type 0 font.
2. The new code in gs/src factors out the new function get_GlyphNames2Unicode,
   which now works for Type 0 fonts also. The change to gdevpdtc.c
   checks whether a Type 0 fonts has GlyphNames2Unicode.
   If a Type 0 font has GlyphNames2Unicode, it comes from a PDF, 
   and thus descendent fonts have no GlyphNames2Unicode.

Minor change : Don't search Resource/Decoding/Unicode for CIDs
when composing a ToUnicode CMap, because that resource translates glyph names only.

Bug 688768 "pdfwrite: missing ToUnicode".

</pre>
<p>[src/bfont.h lib/pdf_font.ps src/gdevpdtc.c src/zfont0.c src/zbfont.c lib/gs_cmap.ps]</p>
</blockquote>

<p><strong><a name="2006-06-27T180559.082925Z"></a>
2006-06-27T18:05:59.082925Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Don't create a group from an image with SMask.

DETAILS :

An image with SMask is implemented in the PDF interpreter with creating a
temporary internal transparency group (see doimagesmask in pdf_draw.ps).
The old code copyed that group to the PDF output when re-distilling a PDF.

This patch implements the new key .image_with_SMask
for the .begintransparencygroup dictionary operand for
designating the internal group, and the flags :
	gx_device_pdf_s::image_with_SMask
	gs_transparency_group_params_s::image_with_SMask
	gs_pdf14trans_params_s::image_with_SMask
for passing this info to gdevpdft.c .

Bug 688767 "pdfwrite: bad transparency group".

</pre>
<p>[src/gdevpdfx.h src/gstrans.c src/ztrans.c src/gdevpdft.c src/gstparam.h lib/pdf_draw.ps src/gdevpdfb.h src/gstrans.h]</p>
</blockquote>

<p><strong><a name="2006-06-26T175755.566936Z"></a>
2006-06-26T17:57:55.566936Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 27.

DETAILS :

Fix the FreeType bridge to compile with the new FAPI interface definition.

</pre>
<p>[src/int.mak src/fapi_ft.c]</p>
</blockquote>

<p><strong><a name="2006-06-26T170142.828008Z"></a>
2006-06-26T17:01:42.828008Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Improve the documentation about generating a PDFX document.

DETAILS :

Fixes the part of the bug
688463 "Overprint can not render with with -dUseCIEColor",
which is related to PDFX (the comment #11).

</pre>
<p>[doc/Ps2pdf.htm]</p>
</blockquote>

<p><strong><a name="2006-06-23T191503.500541Z"></a>
2006-06-23T19:15:03.500541Z Ray Johnston</strong></p>
<blockquote>
<pre>
Substantial performance improvement on Windows platforms to
JPEG2000/JPXDecode filter made by making jasper 'seek' work
within the buffer.  Bug 688073 and 688758 for customer #531.

DETAILS:

This wasn't a very big change, but by avoiding going to the OS
for 'seek' operations, the Windoze performance was improved
&gt;40 fold. On linux this doesn't make any improvement but the
OS must be a lot more efficient (I'm actually surprised by
this). The time for the customer file with 688758 runs in
10 seconds (at 40dpi x11) on peeves before and after the fix.
On my Windoze 2.8Ghz P4 (peeves is 3.2GHz P4) the time is
43 seconds after the fix.

</pre>
<p>[jasper/src/libjasper/base/jas_stream.c jasper/src/libjasper/include/jasper/jas_stream.h]</p>
</blockquote>

<p><strong><a name="2006-06-21T223335.061227Z"></a>
2006-06-21T22:33:35.061227Z leonardo</strong></p>
<blockquote>
<pre>
Fix (CIDFontType 1) : Check for GDBytes elements to point past the 'loca' table end.

DETAILS :

Bug 688669 "/invalidfont in --@0x100194e0--".

The old code didn't check GDBytes consistency, taking occasional data
past the 'loca' table with an occasional result.

Note that the change to z11_CIDMap_proc in zfcid1.c trows exception,
which is handled by the procedure %Type11BuildGlyph
in gs_cidfn.ps with substituting .notdef .

The test document embeds an incorrect True Type data for the font OBMKGG+H2gtrM. 
The True Type header specifies the size of 'loca' table equals to 12 bytes. 
In the sfnts array it is a separate string with the array index 2.
Then it renders the glyph index 3 accessing outside the loca table. 
It hapens while rendering the text :

/TT5 1 Tf
0.365 0 TD
&lt;0001&gt;Tj

Probably the problem happens because 2 font descriptors (43 0 obj and 38 0 obj, 
which correspond to local font names /TT4 and /TT5) refer to same single font data 39 0 obj. 
This data is an embedded font subset, which is enough for /TT4 and has no 
glyphs for /TT5. This problem to be reported to Adobe Distiler 6, 
which created the test document. Is the version 7 better ?
(can't check due to no Postscript source).

In the test case .notdef is the CID 0 and defined in the font as a hollow box.
Don't know why Adobe doesn't print it in the test document.
That's another story. The font doesn't define a space character.

</pre>
<p>[src/zfcid1.c src/gstype42.c]</p>
</blockquote>

<p><strong><a name="2006-06-21T111727.414299Z"></a>
2006-06-21T11:17:27.414299Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 26.

DETAILS :

Provide a locking of a global static UFST instance
for a multilanguage embedded systems.

</pre>
<p>[src/fapiufst.c src/gxfapiu.c src/gxfapiu.h]</p>
</blockquote>

<p><strong><a name="2006-06-20T171659.040107Z"></a>
2006-06-20T17:16:59.040107Z leonardo</strong></p>
<blockquote>
<pre>
Fix (FAPI Font resource, CIDFont emulation) : Relative paths with FAPIconfig-FCO.

DETAILS :

Set current directory as a font file search origin.

</pre>
<p>[lib/FAPIconfig-FCO]</p>
</blockquote>

<p><strong><a name="2006-06-20T165522.666128Z"></a>
2006-06-20T16:55:22.666128Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 25.

DETAILS :

Provide the configuration with no Type 1 and no True Type parsers
for a compatibility with the PCL build.

</pre>
<p>[src/fapiufst.c]</p>
</blockquote>

<p><strong><a name="2006-06-20T163115.616110Z"></a>
2006-06-20T16:31:15.616110Z leonardo</strong></p>
<blockquote>
<pre>
Fix (UFST resource handling) : Provide an uniform way for specifying FAPI font map and configuration.

DETAILS :

1. The new command line argument FAPIfontmap specifies a FAPI font map file.
   The old argument FCOmap has been removed. 

2. The new command line argument FAPIcidfmap specifies a FAPI font map file.
   The old code hardcoded a particular value.

3. FAPIfontmap may include both general records, and special record groups for
   describing FCO elements. 
   
See the documentation change for details.

</pre>
<p>[lib/FCOfontmap-PCLPS3 lib/FCOfontmap-PS3 doc/Use.htm doc/Develop.htm lib/FAPIfontmap lib/FAPIconfig lib/gs_fapi.ps lib/FAPIconfig-FCO lib/FCOfontmap-PCLPS2]</p>
</blockquote>

<p><strong><a name="2006-06-20T150405.008037Z"></a>
2006-06-20T15:04:05.008037Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 24.

DETAILS :

Remove dead development branches.

</pre>
<p>[src/fapiufst.c]</p>
</blockquote>

<p><strong><a name="2006-06-20T144958.556233Z"></a>
2006-06-20T14:49:58.556233Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 23.

DETAILS :

Account the replaced Mrtrics when the renderer can't handle it.
It was a real bug in the FAPI client.

</pre>
<p>[src/zfapi.c]</p>
</blockquote>

<p><strong><a name="2006-06-20T123533.822923Z"></a>
2006-06-20T12:35:33.822923Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 22.

DETAILS :

Implementing the design bounding box expansion and warnings
against cropping glyphs when caching.

</pre>
<p>[src/ifapi.h src/fapiufst.c src/zfapi.c]</p>
</blockquote>

<p><strong><a name="2006-06-20T095108.611471Z"></a>
2006-06-20T09:51:08.611471Z leonardo</strong></p>
<blockquote>
<pre>
Fix (FAPI) : The cache device had a wrong HWResolution.

DETAILS :

It was set to 72 dpi independently on the target device.
Ghostscript font renderer doesn't rely on it, but UFST does.
Due to that UFST generated different rasters with and without NOCACHE.

</pre>
<p>[src/gxchar.c src/gxccman.c]</p>
</blockquote>

<p><strong><a name="2006-06-20T094621.713177Z"></a>
2006-06-20T09:46:21.713177Z leonardo</strong></p>
<blockquote>
<pre>
Fix (FAPI Font resource, CIDFont emulation) : Always convert FontName into a name (continued).

DETAILS :

The last patch appears incomplete.

</pre>
<p>[lib/gs_fntem.ps]</p>
</blockquote>

<p><strong><a name="2006-06-20T093723.049325Z"></a>
2006-06-20T09:37:23.049325Z leonardo</strong></p>
<blockquote>
<pre>
Fix (FAPI Font resource, CIDFont emulation) : Always convert FontName into a name.

DETAILS :

The old code could create fonts with a string as the FontName or CIDFontName value.
It caused an invalidaccess when the string is local and the font dictionary is global.
Debugged with alphabet.ps .

</pre>
<p>[lib/gs_fntem.ps]</p>
</blockquote>

<p><strong><a name="2006-06-20T084827.280806Z"></a>
2006-06-20T08:48:27.280806Z leonardo</strong></p>
<blockquote>
<pre>
Fix (FAPI Font resource, CIDFont emulation) : Load resident fonts into global VM (continued).

DETAILS :

The last patch appears incorrect in the part 3 :
[beg quote]
3. A minor change in gs_type1.ps creates FontInfo in same VM
   where the font dictionary resides. 
[ebnd quote]
and caused pdfwrite regressions.

This path fixes that.

</pre>
<p>[lib/gs_type1.ps]</p>
</blockquote>

<p><strong><a name="2006-06-19T013639.845267Z"></a>
2006-06-19T01:36:39.845267Z leonardo</strong></p>
<blockquote>
<pre>
Fix (FAPI Font resource, CIDFont emulation) : Load resident fonts into global VM.

DETAILS :

1. MakeInstance creates instances in global VM.

2. A bug in gs_fntem.ps : accessed "1 index" instead "0 index".
   Apparently they were always equal. Now they are not.

3. A minor change in gs_type1.ps creates FontInfo in same VM
   where the font dictionary resides. 

Debugged with 129-01.ps .

</pre>
<p>[lib/gs_cidtt.ps lib/gs_fntem.ps lib/gs_fapi.ps lib/gs_type1.ps]</p>
</blockquote>

<p><strong><a name="2006-06-18T234016.946225Z"></a>
2006-06-18T23:40:16.946225Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 21.

DETAILS :

A bug in the FAPI client :
Truncate the "~GS~" suffix, which the PDF interpreter adds
when creating extended glyph names.

Debugged with ADOBE1-4.pdf .

</pre>
<p>[src/zfapi.c]</p>
</blockquote>

<p><strong><a name="2006-06-18T213833.730811Z"></a>
2006-06-18T21:38:33.730811Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 20.

DETAILS :

An UFST bug tolerance about the .nmotdef appearence.
See comment in code.

</pre>
<p>[src/fapiufst.c]</p>
</blockquote>

<p><strong><a name="2006-06-18T200350.504209Z"></a>
2006-06-18T20:03:50.504209Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 19.

DETAILS :

An UFST bug tolerance about the hollow box design scale.

</pre>
<p>[src/fapiufst.c]</p>
</blockquote>

<p><strong><a name="2006-06-18T192503.018019Z"></a>
2006-06-18T19:25:03.018019Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 18a.

DETAILS :

Adjust symbolic Decodings with UFST 5.0 specifics.

</pre>
<p>[Resource/Decoding/FCO_Dingbats Resource/Decoding/FCO_Symbol Resource/Decoding/FCO_Wingdings]</p>
</blockquote>

<p><strong><a name="2006-06-15T205237.321465Z"></a>
2006-06-15T20:52:37.321465Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 18.

DETAILS :

1. Outline fonts ignored Stroke Width ( a real bug in the FAPI client code ).
2. Fixing missed pixels in outline fonts.

</pre>
<p>[src/fapiufst.c src/zfapi.c]</p>
</blockquote>

<p><strong><a name="2006-06-15T104120.991984Z"></a>
2006-06-15T10:41:20.991984Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 17.

DETAILS :

Provide the UFST callback dispatching for the language switching project.
See comment in code.

Actually thois restores the old gxfapi.c (which was recently removed) 
with minor modifications, and the module name is changed
for a better reflection of the purpose.

</pre>
<p>[src/lib.mak src/int.mak src/fapiufst.c doc/Develop.htm src/gxfapiu.c src/gxfapiu.h]</p>
</blockquote>

<p><strong><a name="2006-06-14T210334.912427Z"></a>
2006-06-14T21:03:34.912427Z Ralph Giles</strong></p>
<blockquote>
<pre>
Turn on Id keyword substitution and native line endings.
</pre>
<p>[lib/winmaps.ps]</p>
</blockquote>

<p><strong><a name="2006-06-14T094133.338945Z"></a>
2006-06-14T09:41:33.338945Z leonardo</strong></p>
<blockquote>
<pre>
Fix (UFST resource handling) : Provide alternative FCO map files. 

DETAILS :

1. The new command line argument FCOmap specifies an FCO map file.
   The old code hardcoded FCOfontmap.

2. Addint new FCO map files FCOfontmap-PCLPS2, FCOfontmap-PCLPS3, FCOfontmap-PS3
   for various FCO files. The old file FCOfontmap to be removed.

3. The new command line argument FCOfontfile2 works for locating the Wingdings FCO file.

</pre>
<p>[doc/Develop.htm]</p>
</blockquote>

<p><strong><a name="2006-06-14T093549.305252Z"></a>
2006-06-14T09:35:49.305252Z leonardo</strong></p>
<blockquote>
<pre>
Fix (UFST resource handling) : Provide alternative FCO map files. 

DETAILS :

1. The new command line argument FCOmap specifies an FCO map file.
   The old code hardcoded FCOfontmap.

2. Addint new FCO map files FCOfontmap-PCLPS2, FCOfontmap-PCLPS3, FCOfontmap-PS3
   for various FCO files. The old file FCOfontmap to be removed.

3. The new command line argument FCOfontfile2 works for locating the Wingdings FCO file.

</pre>
<p>[lib/FCOfontmap-PCLPS3 lib/FCOfontmap-PS3 doc/Use.htm lib/gs_fapi.ps lib/FCOfontmap lib/FCOfontmap-PCLPS2]</p>
</blockquote>

<p><strong><a name="2006-06-14T082503.916153Z"></a>
2006-06-14T08:25:03.916153Z leonardo</strong></p>
<blockquote>
<pre>
Fix (FAPI) : Implement a lazy font object acquisition, part 2.

DETAILS :

The old code creates a font object per character
due to a complex protocol of gs_show_enum.
Rather font renderers usually cache font objects,
the data format accommodation appears too expensive.

Main change : 
1. FAPI_do_char uses I-&gt;face to check whether
   it is same font-matrix request as for a previous call.
   If so, it uses the old font object stored in the renderer.

Minor changes :
2. enum FAPI_descendant_code_s is defined for clarity instead an int type.
3. Interface functions drop the subfont and bVertical operands.
   They are moved into FAPI_font structure, which was passed by 
   a neighbour argument.
4. The new function release_typeface takes care for a complete cleanup
   in a single code portion.

</pre>
<p>[src/ifapi.h src/fapiufst.c src/fapi_ft.c src/zfapi.c]</p>
</blockquote>

<p><strong><a name="2006-06-14T050307.378642Z"></a>
2006-06-14T05:03:07.378642Z leonardo</strong></p>
<blockquote>
<pre>
Fix (FAPI) : Implement a lazy font object acquisition, part 1.

DETAILS :

The old code creates a font object per character
due to a complex protocol of gs_show_enum.
Rather font renderers usually cache font objects,
the data format accommodation appears too expensive.

This change is algorithmically equivalent.
It moves necessary data to the renderer interface structure,
so that it may be useful for lazy font object creation.

The new structure FAPI_face stores a "key" for
requesting a font-matrix pair from a renderer.
It is reserved for further improvements.

</pre>
<p>[src/ifapi.h src/int.mak src/fapiufst.c src/fapi_ft.c src/zfapi.c]</p>
</blockquote>

<p><strong><a name="2006-06-14T021247.303815Z"></a>
2006-06-14T02:12:47.303815Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use more aggressive PDF identification. Consider PDF every file that has
"%PDF-1." not preceeded by "%!PS" in the first 127 bytes of the file.
Bug 688743.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2006-06-14T002319.323225Z"></a>
2006-06-14T00:23:19.323225Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix broken definition of customcolorimage.
Bug 688750.

</pre>
<p>[lib/gs_lev2.ps]</p>
</blockquote>

<p><strong><a name="2006-06-13T170152.331288Z"></a>
2006-06-13T17:01:52.331288Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 16.

DETAILS :

Provide a working mode with no *.ss files and/or with no FCO plugin.

</pre>
<p>[src/fapiufst.c]</p>
</blockquote>

<p><strong><a name="2006-06-12T220757.059825Z"></a>
2006-06-12T22:07:57.059825Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 15.

DETAILS :

Fixed file paths on Linux.

</pre>
<p>[src/fapiufst.c src/zfapi.c]</p>
</blockquote>

<p><strong><a name="2006-06-08T175904.960338Z"></a>
2006-06-08T17:59:04.960338Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add code in getencoding to accept an array for the Encoding in a Font dict.
Only a name or dictionary are legal PDF. Bug 688741.

DETAILS:

Adobe Acrobat Reader lists "Encoding: Standard" for this font, but we get
the correct results by using the Encoding array given in the font.

</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2006-06-08T014613.481025Z"></a>
2006-06-08T01:46:13.481025Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix string overflow in cvrs on 64-bit systems. Suppress the sign expansion of
unique ID. Bug 688725.

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2006-06-08T012636.293278Z"></a>
2006-06-08T01:26:36.293278Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make the pointer the last element of gs_pixel_image_t structure.
Otherwise, on LP64 platforms, the padding at the end of the structure
overwrites the 1st member of the derived structure when the base structure
is assigned to the derived structure.
Bugs 613909, 688725.

</pre>
<p>[src/gximage3.c src/gsiparam.h]</p>
</blockquote>

<p><strong><a name="2006-06-07T192014.417139Z"></a>
2006-06-07T19:20:14.417139Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix handling of TrueType fonts with a large number of glyphs in the 'post'
table. Bug 688723 for customer number #130.

DETAILS:

First, avoid using the 'postfirst' string to scan the post table.
Second, avoid putting a large array on the op stack when building
the 'postnames' and 'glyphencoding' arrays (pre allocate them and
simply 'put' the values in). Third, don't create dummy names for
.notdef glyphs when building up the CharStrings dict.

With all of these changes, the TT font with 16000 actual named
glyohs can be loaded as a Type 42 font and doesn't overflow the
current default MaxOpStack (50000) or the 64K name limit when
EXTEND_NAMES=0 (the default).

In the future, if we see a font with too many named glyhs, we
may get a 'limitcheck in --cvn--' which will tell us we need to
build with EXTEND_NAMES=1. At that time we can decide if we want
to increase the default for EXTEND_NAMES.

</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2006-06-07T152651.814233Z"></a>
2006-06-07T15:26:51.814233Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct the copyright holder and Id keyword after the licese header reversion.
</pre>
<p>[src/md5.c src/md5.h]</p>
</blockquote>

<p><strong><a name="2006-06-03T063451.036122Z"></a>
2006-06-03T06:34:51.036122Z leonardo</strong></p>
<blockquote>
<pre>
Fix (Font resource machinery) : Improve finding encodings in gs_fntem.ps (issue 2).

DETAILS :

It's a temporary work around the bug 688710 "Fix the Encoding resource category"
for the UFST integration project.

</pre>
<p>[lib/gs_fntem.ps]</p>
</blockquote>

<p><strong><a name="2006-06-02T185015.915729Z"></a>
2006-06-02T18:50:15.915729Z Dan Coby</strong></p>
<blockquote>
<pre>
Make capture_spot_equivalent_cmyk_colors global.

</pre>
<p>[src/gsequivc.c src/gsequivc.h]</p>
</blockquote>

<p><strong><a name="2006-06-02T013720.018191Z"></a>
2006-06-02T01:37:20.018191Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix an infinite loop on 64-bit platforms; make the size of max_import_coord to
be as big as the size of the 'fixed' type.
Bug 688724.

</pre>
<p>[src/gxhintn.h]</p>
</blockquote>

<p><strong><a name="2006-06-01T154530.982915Z"></a>
2006-06-01T15:45:30.982915Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 15.

DETAILS :

Improving the font mapping.

</pre>
<p>[lib/FCOfontmap]</p>
</blockquote>

<p><strong><a name="2006-06-01T140952.659638Z"></a>
2006-06-01T14:09:52.659638Z leonardo</strong></p>
<blockquote>
<pre>
Add Wingdings Encoding, Decoding resource files.

</pre>
<p>[Resource/Encoding/Wingdings Resource/Encoding Resource/Decoding/FCO_Wingdings]</p>
</blockquote>

<p><strong><a name="2006-06-01T134448.615495Z"></a>
2006-06-01T13:44:48.615495Z leonardo</strong></p>
<blockquote>
<pre>
Fix (Font resource machinery) : Improve finding encodings in gs_fntem.ps .

DETAILS :

It's a temporary work around the bug 688710 "Fix the Encoding resource category"
for the UFST integration project.

</pre>
<p>[lib/gs_fntem.ps]</p>
</blockquote>

<p><strong><a name="2006-06-01T114208.068704Z"></a>
2006-06-01T11:42:08.068704Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 14.

DETAILS :

Returning the hack about rendering a space instead hollow box.
See comment in code.

</pre>
<p>[src/fapiufst.c]</p>
</blockquote>

<p><strong><a name="2006-06-01T075053.652962Z"></a>
2006-06-01T07:50:53.652962Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 13.

DETAILS :

Fix the replaced left side bearing.
Debugged with 093-01.ps, the box 093-03.

</pre>
<p>[src/zfapi.c]</p>
</blockquote>

<p><strong><a name="2006-06-01T061600.401809Z"></a>
2006-06-01T06:16:00.401809Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 12.

DETAILS :

Add a dependency missed in the last patch.

</pre>
<p>[src/int.mak]</p>
</blockquote>

<p><strong><a name="2006-06-01T015455.252144Z"></a>
2006-06-01T01:54:55.252144Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Clean up the code that opens starting arg files (@ files). Use iodev_default
when it is available. Otherwise use the staticly initialized %os% device.
Bug 688720.

</pre>
<p>[src/gsiodev.c src/zfile.c]</p>
</blockquote>

<p><strong><a name="2006-06-01T000921.528804Z"></a>
2006-06-01T00:09:21.528804Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix FPE in t1_hinter__set_stem_snap() on Alpha. Don't process stem snap
elements when there's none. Bug 688727.

</pre>
<p>[src/gxhintn.c]</p>
</blockquote>

<p><strong><a name="2006-05-31T171039.858313Z"></a>
2006-05-31T17:10:39.858313Z Stefan Kemper</strong></p>
<blockquote>
<pre>
Revert copywrite notices for public domain code used by ghostscript.
</pre>
<p>[src/gdevsgi.h src/gdevifno.c src/md5.c src/gdevsgi.c src/md5.h src/md5main.c src/gdev4693.c src/gp_vms.c]</p>
</blockquote>

<p><strong><a name="2006-05-31T152952.122361Z"></a>
2006-05-31T15:29:52.122361Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 11.

DETAILS :

1. AgfaUFST plugin is renamed into UFST, because the manufacturer (Monotype Imaging) separated from Agfa.
2. Provide loading UFST plugin with UFST_PlugIn command line option.
3. The command line option UFSTdir is renamed into UFST_ssdir
4. Adjust FCOfontmap to PCLPS2 fonts.
5. Improve comments for EF_SUBSTHOLLOWBOX_TYPE.

</pre>
<p>[doc/Use.htm doc/Make.htm lib/FAPIcidfmap src/fapiufst.c lib/FAPIfontmap lib/gs_fapi.ps lib/FCOfontmap]</p>
</blockquote>

<p><strong><a name="2006-05-31T145147.948908Z"></a>
2006-05-31T14:51:47.948908Z Ralph Giles</strong></p>
<blockquote>
<pre>
In generating the changelog files in the documentation, treat "DIFFERENCES:"
the same as "EXPECTED DIFFERENCES:". Also trim everything from the log message
after this point since that section is of ephemeral interest. Bug 688715.

Note that this means nothing important should be placed after such a section heading.
</pre>
<p>[toolbin/split_changelog.py]</p>
</blockquote>

<p><strong><a name="2006-05-31T012142.643282Z"></a>
2006-05-31T01:21:42.643282Z Ralph Giles</strong></p>
<blockquote>
<pre>
Minor release documentation updates.
</pre>
<p>[doc/Release.htm]</p>
</blockquote>

<p><strong><a name="2006-05-31T004440.105558Z"></a>
2006-05-31T00:44:40.105558Z Ralph Giles</strong></p>
<blockquote>
<pre>
macos-mcp.mak is now distributed with all releases.
</pre>
<p>[doc/Make.htm]</p>
</blockquote>

<p><strong><a name="2006-05-31T002437.164443Z"></a>
2006-05-31T00:24:37.164443Z Ralph Giles</strong></p>
<blockquote>
<pre>
Merge license clarifications from the GPL Ghostscript 8.51 release 
documentation.
</pre>
<p>[doc/Fonts.htm doc/Commprod.htm]</p>
</blockquote>

<p><strong><a name="2006-05-30T135604.780494Z"></a>
2006-05-30T13:56:04.780494Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix incorrect element size argument of qsort(), that causes SEGV on
platforns with sizeof(void *) != sizeof(int) since rev. 6669.
Bug 688721.

</pre>
<p>[src/gxfcopy.c]</p>
</blockquote>

<p><strong><a name="2006-05-26T140902.598171Z"></a>
2006-05-26T14:09:02.598171Z Tor Andersson</strong></p>
<blockquote>
<pre>
Ignore errors when zlib streams fail on the checksum. Fixes bug 688716.</pre>
<p>[src/szlibd.c]</p>
</blockquote>

<p><strong><a name="2006-05-25T105109.698836Z"></a>
2006-05-25T10:51:09.698836Z leonardo</strong></p>
<blockquote>
<pre>
Fix (Font resource machinery) : Apply general methoid for finding a font substitute.

DETAILS :

If a font isn't found, the old code loads Courier definted in Fontmap.GS .
This causes problems with FAPI, which defines its own Courier in
FAPIfontmap.

The new code re-starts the search from the top of the 
resource substitution logic, which may be enhanced multiple times with
Font resource category redefinition, particularly with MappedCategoryRedefiner.

</pre>
<p>[lib/gs_fonts.ps]</p>
</blockquote>

<p><strong><a name="2006-05-25T071251.456665Z"></a>
2006-05-25T07:12:51.456665Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 10.

DETAILS :

This code change doesn't affect a regular build with no UFST bridge.

Fixing Cygwin/gcc warnings.

</pre>
<p>[src/fapiufst.c]</p>
</blockquote>

<p><strong><a name="2006-05-25T065355.033342Z"></a>
2006-05-25T06:53:55.033342Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 9.

DETAILS :

This code change doesn't affect a regular build with no UFST bridge.

This patch provides building and running with both UFST_REENTRANT 0 and UFST_REENTRANT 1.

</pre>
<p>[src/fapiufst.c]</p>
</blockquote>

<p><strong><a name="2006-05-25T053745.106052Z"></a>
2006-05-25T05:37:45.106052Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 8.

DETAILS :

This code change doesn't affect a regular build with no UFST bridge.

1. Implementing PaintType 2 for fonts.

3. Fixed wording in a comment in fapiufst.c .

</pre>
<p>[src/ifapi.h src/fapiufst.c src/zfapi.c]</p>
</blockquote>

<p><strong><a name="2006-05-25T050921.683800Z"></a>
2006-05-25T05:09:21.683800Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 7.

DETAILS :

This code change doesn't affect a regular build with no UFST bridge.

1. Fixing another problem with coordinate rounding - see comments in code.

2. Removing unused variables.

3. A minor code cleanup in zfapi.c : removed a rudimentary check that never suceeds.

</pre>
<p>[src/fapiufst.c src/zfapi.c]</p>
</blockquote>

<p><strong><a name="2006-05-24T182316.110633Z"></a>
2006-05-24T18:23:16.110633Z Ralph Giles</strong></p>
<blockquote>
<pre>
Cast character values to (unsigned char) before calling isprint() and
friends. They are designed to work only with ASCII characters, but
some implementations support passing 8 bit character data but only
if it is positive to avoid conflict with a (-1) definition of EOF.
Thus we should cast to map the high characters from negative to
positive values on systems where char is signed by default. Bug
687529.
</pre>
<p>[icclib/icc.c src/dscparse.c src/gsmisc.c src/imainarg.c]</p>
</blockquote>

<p><strong><a name="2006-05-24T181133.648730Z"></a>
2006-05-24T18:11:33.648730Z Ralph Giles</strong></p>
<blockquote>
<pre>
Define specific compilers for the jbig2 and jpx libraries so their
CFLAGS are passed to the compiler first. This should prevent version
skew problems when building on systems with other versions of the
same headers installed elsewhere.
</pre>
<p>[src/lib.mak src/int.mak src/jasper.mak]</p>
</blockquote>

<p><strong><a name="2006-05-24T171927.863933Z"></a>
2006-05-24T17:19:27.863933Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move a negation inside the test(1) exprepression for better portability.
Fixes bug 688713.
</pre>
<p>[lib/ps2epsi]</p>
</blockquote>

<p><strong><a name="2006-05-24T133111.438055Z"></a>
2006-05-24T13:31:11.438055Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 6.

DETAILS :

This code change doesn't affect a regular build with no UFST bridge.
Fixing minor problems with coordinate rounding.

</pre>
<p>[src/fapiufst.c src/zfapi.c]</p>
</blockquote>

<p><strong><a name="2006-05-24T121241.294216Z"></a>
2006-05-24T12:12:41.294216Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 5.

DETAILS :

This code change doesn't affect a regular build with no UFST bridge.

Completely remove gxfapi.c, gxfapi.h .
Now FAPI is the interpreter part and doesn't need a special module in the graphics library.
Also UFST bridge is now fully reentrant.

</pre>
<p>[src/lib.mak src/gxfapi.c src/fapiufst.c src/gxfapi.h]</p>
</blockquote>

<p><strong><a name="2006-05-24T111526.002807Z"></a>
2006-05-24T11:15:26.002807Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 4.

DETAILS :

This code change doesn't affect a regular build with no UFST bridge.
The change corresponding to the UFST patch with improved subglyph placement.

1. Fixed a bug about text size when rendering comparefiles/two_encodings.ps .
(changes related to orig_FontMatrix).

2. Implementing a command line option for UFSTdir for specifying a 
symbol set file directory for UFST. See change to doc/Use.htm
about user interface.

For doing (2) we pass a parameter to the ensure_open method of
a FAPI server plugin. Note it is a string, therefore Postscript code
must serialize complex parameters. Now it's not complex
because we pass a single option to a single plugin.

</pre>
<p>[src/ifapi.h doc/Use.htm src/fapiufst.c lib/gs_fapi.ps src/fapi_ft.c src/zfapi.c]</p>
</blockquote>

<p><strong><a name="2006-05-24T071233.924004Z"></a>
2006-05-24T07:12:33.924004Z leonardo</strong></p>
<blockquote>
<pre>
Fix : 'space' charater was missed in Unicode Decoding resource.

</pre>
<p>[Resource/Decoding/Unicode Resource/Decoding/FCO_Unicode]</p>
</blockquote>

<p><strong><a name="2006-05-23T121359.337888Z"></a>
2006-05-23T12:13:59.337888Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 3.

DETAILS :

This code change doesn't affect a regular build with no UFST bridge.

The change corresponding to the UFST patch with improved subglyph placement.

</pre>
<p>[src/fapiufst.c]</p>
</blockquote>

<p><strong><a name="2006-05-23T071303.590113Z"></a>
2006-05-23T07:13:03.590113Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Implementing FCOfontmap to simplify running UFST with resident fonts only.
See the documentation change included in this patch.

</pre>
<p>[lib/xlatmap lib/gs_fapi.ps lib/FCOfontmap]</p>
</blockquote>

<p><strong><a name="2006-05-23T070416.420792Z"></a>
2006-05-23T07:04:16.420792Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0, part 2.

DETAILS :

This code change doesn't affect a regular build with no UFST bridge.

1. Providing ununique character codes in Decoding resources (ifapi.h, zfapi.h).
   The old field FAPI_char_ref::char_code is now depricated,
   but we still provide the backward compatibility.
   FAPI_char_ref::char_codes will work instead FAPI_char_ref::char_code.
   UFST bridge and FreeType bridge don't implement ununique character codes yet.
   This feature isn't debuged but stored for further developemnt.

2. Improving the 'xlatmap' handling for Microtype font type (fapiufst.c).

3. Enlarde the decodingID field (fapiufst.c).

4. Preserve Decoding if it is specified in the fomt dictionary.

5. Fixing FONTCONTEXT data for FCO font type (fapiufst.c).

6. Obtaining design_bbox with USBOUNDBOX feature of UFST 5.0.
   It requires a patch to UFST 5.0.   

</pre>
<p>[src/ifapi.h src/fapiufst.c src/zfapi.c]</p>
</blockquote>

<p><strong><a name="2006-05-23T064801.451051Z"></a>
2006-05-23T06:48:01.451051Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : More decoding resources since FCOs assume slightly different encodings.

</pre>
<p>[Resource/Decoding/FCO_Dingbats Resource/Decoding/FCO_Symbol Resource/Decoding/FCO_Unicode]</p>
</blockquote>

<p><strong><a name="2006-05-21T023604.902497Z"></a>
2006-05-21T02:36:04.902497Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update release documentation somewhat to reflect current practice.
</pre>
<p>[doc/Release.htm]</p>
</blockquote>

<p><strong><a name="2006-05-21T022148.624607Z"></a>
2006-05-21T02:21:48.624607Z Ralph Giles</strong></p>
<blockquote>
<pre>
Bump version number after the 8.54 release.
</pre>
<p>[doc/News.htm lib/gs_init.ps src/gscdef.c src/version.mak]</p>
</blockquote>

<p><strong><a name="2006-05-20T202929.474563Z"></a>
2006-05-20T20:29:29.474563Z Ralph Giles</strong></p>
<blockquote>
<pre>
Merge changes from the 8.54 branch to support svn in the release 
utilities.
</pre>
<p>[toolbin/pre.tcl toolbin/split_changelog.py]</p>
</blockquote>

<p><strong><a name="2006-05-20T202709.924280Z"></a>
2006-05-20T20:27:09.924280Z Ralph Giles</strong></p>
<blockquote>
<pre>
Merge documentation updates from the 8.54 release branch. This updates 
the release date and changelogs.
</pre>
<p>[doc/History7.htm doc/Projects.htm doc/History8.htm doc/Use.htm doc/Readme.htm doc/Maintain.htm doc/Deprecated.htm doc/Source.htm doc/Install.htm doc/Changes.htm doc/Copying.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm doc/Commprod.htm doc/Release.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm doc/Fonts.htm doc/Ps2ps2.htm doc/Develop.htm doc/Ps2pdf.htm doc/Helpers.htm doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp doc/Htmstyle.htm doc/News.htm doc/Make.htm doc/Details8.htm doc/Testing.htm doc/Unix-lpr.htm doc/Ps-style.htm doc/C-style.htm doc/History1.htm doc/History2.htm doc/History3.htm doc/History4.htm doc/Details.htm doc/Ps2epsi.htm doc/History5.htm doc/History6.htm]</p>
</blockquote>

<p><strong><a name="2006-05-19T011920.532036Z"></a>
2006-05-19T01:19:20.532036Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Allocate scanline_buffer for DCTDecode filter in stable memory to prevent it
from being freed twice: by restoring the state before the filter was used for
reading and by closing the filter.
Bug 688694 from the customer 632.

</pre>
<p>[src/sdctd.c]</p>
</blockquote>

<p><strong><a name="2006-05-18T165154.327153Z"></a>
2006-05-18T16:51:54.327153Z Ray Johnston</strong></p>
<blockquote>
<pre>
Change example code so that users/customers that copy it will avoid the
memory leak mentioned in bug 688599.

</pre>
<p>[src/gs.c]</p>
</blockquote>

<p><strong><a name="2006-05-17T233129.652305Z"></a>
2006-05-17T23:31:29.652305Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688675  Reading / Converting PDF File created with Adobe
Lifecycle Designer 7.0.

DETAILS:

The test file has xref tables with incorrect generation numbers for
serveral entries.  The xref verification logic finds the mismatch
between the generation numbers specified in the xref and the generation
numbers in the objects.  It then attempts to requild the xref table.
This fails since the xref rebuild logic does not handle rebuilding
compressed object streams.  As a result the file cannot be displayed.

The fix consists of three parts.

1.  Change the xref verification logic to exit if compressed object
streams are detected.  I am not attempting to recover objects in
compressed object streams since anything that damages a file will
generally trash any compressed data.

2.  Change the logic which checks the generation number to simply
print a warning but to continue.  Previously this logic would print
a warning and then reject the object. Rejecting an object generally
causes an error to occur as the PDF interpreter attempts to use the
object.  The warning message was also enhanced to print both the
expected and actually generation numbers.  The given test file
produces about 400 warning messages.

3.  Enhance the comments for the print_xref.

Note:  Thanks to Alex for his work in determining that the file can be
processed if these changes are made.
</pre>
<p>[lib/pdf_main.ps lib/pdf_base.ps lib/pdf_rbld.ps]</p>
</blockquote>

<p><strong><a name="2006-05-17T195541.010790Z"></a>
2006-05-17T19:55:41.010790Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for yet another non-spec PDF that Adobe Acrobat Reader handles silently.
(missing whitespace after 'endobj'). Bug 688695 for customer 580.

DETAILS:

Since the extra checking for /endobj.*/ only happens when we are about to
issue 'Unknown operator' tokenerror, the performance impact of this hack
is non-existent for valid PDF files.

</pre>
<p>[lib/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2006-05-17T183907.604408Z"></a>
2006-05-17T18:39:07.604408Z Ralph Giles</strong></p>
<blockquote>
<pre>
Use pkg-config to request linking with GTK 2 in the unix dll build
instead of the older gtk-config with specifies GTK 1. This will break
the (generally unsupported) dll build on very old systems but fixes
it for most current and near future platforms. Bug 688701.
</pre>
<p>[src/unix-dll.mak]</p>
</blockquote>

<p><strong><a name="2006-05-17T183400.699127Z"></a>
2006-05-17T18:34:00.699127Z Ralph Giles</strong></p>
<blockquote>
<pre>
Enable the cfax device in the default autoconf build for the convenience
of free users. This is required to use Ghostscript to drive capifax devices.

DETAILS:

In general we don't enable random devices used by a subset of users, but
we already include the three raw fax devices, so it isn't worth objecting
to a fourth. CAPI fax is commonly used over ISDN in Europe.

In the future we'd like to support device selection from the configure
commandline, similar to what is done in ESP Ghostscript. With that it
would be reasonable to remove most of the little-used devices since
package build systems will have a standard way to select their set, and
we will have a standard way to enable all supported devices for testing.
</pre>
<p>[src/Makefile.in]</p>
</blockquote>

<p><strong><a name="2006-05-17T180604.522955Z"></a>
2006-05-17T18:06:04.522955Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove ARCH_STRUCT_ALIGN_MOD entirely and revert to 
ARCH_ALIGN_MEMORY_MOD not having the extra jmp_buf
alignment requirements. This satisfies the assumption
that structure alignment and sizeof(ref) agree in
the Ghostscript code and should finally fix 687643.

Also add a cast back to jmp_buf in the alignment
macro setjmp_.h. Fixes bug 688698. Patch from
Alex Cherepanov.
</pre>
<p>[src/std.h src/setjmp_.h src/genarch.c]</p>
</blockquote>

<p><strong><a name="2006-05-17T152429.868984Z"></a>
2006-05-17T15:24:29.868984Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add recent new files to the listing in the developer documentation.
</pre>
<p>[doc/Develop.htm]</p>
</blockquote>

<p><strong><a name="2006-05-17T151451.387610Z"></a>
2006-05-17T15:14:51.387610Z Ralph Giles</strong></p>
<blockquote>
<pre>
Set native eol-style and and enable Id keyword substitution.
</pre>
<p>[lib/FCOfontmap]</p>
</blockquote>

<p><strong><a name="2006-05-17T113454.678587Z"></a>
2006-05-17T11:34:54.678587Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Copyright banner and RCS line have been missed in the last commit.

</pre>
<p>[lib/FCOfontmap]</p>
</blockquote>

<p><strong><a name="2006-05-17T113320.081655Z"></a>
2006-05-17T11:33:20.081655Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Copyright banner and RCS line have been missed in the last commit.

</pre>
<p>[lib/FCOfontmap]</p>
</blockquote>

<p><strong><a name="2006-05-17T112955.042925Z"></a>
2006-05-17T11:29:55.042925Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Copyright banner and RCS line have been missed in the last commit.

</pre>
<p>[lib/FCOfontmap]</p>
</blockquote>

<p><strong><a name="2006-05-17T112320.989390Z"></a>
2006-05-17T11:23:20.989390Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Implementing FCOfontmap to simplify running UFST with resident fonts only.
See the documentation change included in this patch.

</pre>
<p>[doc/Use.htm lib/gs_fapi.ps lib/FCOfontmap]</p>
</blockquote>

<p><strong><a name="2006-05-17T045012.217865Z"></a>
2006-05-17T04:50:12.217865Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix so that dictionaries that grow preserve attributes.
Several problems reported including a potential security
hole when in SAFER mode. Thanks to mat Gh Savulescu
(SaGS) for the bug report, the patch and excellent
analysis of the problem.

DETAILS:

Ordinarily dictionaries have unprotected, non-exectue
status, but it is possible to "grow" executable or even
"read-only" dictionaries (contact Ray Johnston for an
explanation as provided by mat Gh Savulescu). The bug
in idict.c would not preserve the attributes, making
the dictionary not executable, and not readonly even
if those were the original attributes.

</pre>
<p>[src/idict.c]</p>
</blockquote>

<p><strong><a name="2006-05-16T095613.829816Z"></a>
2006-05-16T09:56:13.829816Z leonardo</strong></p>
<blockquote>
<pre>
UFST bridge : Upgrading to UFST 5.0 .

DETAILS :

This code change doesn't affect a regular build with no UFST bridge,
except an unimportant change to lib.mak .

This revision allows the UFST bridge to compile and work somehow.
This revision of UFST bridge was not systematically tested.

UFST 5.0 doesn't implement design bbox for non-FCO fonts,
therefore it is stubbed with Em box. 
In this case glyphs are cropped. 
For FCO fonts the implementation of USBOUNDBOX in UFST 5.0
appears incomplete, and it needs our patch to work properly.
The change to UFST 5.0 code is not included here.

</pre>
<p>[src/lib.mak src/ifapi.h src/gxfapi.c src/fapiufst.c src/gxfapi.h src/zfapi.c]</p>
</blockquote>

<p><strong><a name="2006-05-15T220753.891632Z"></a>
2006-05-15T22:07:53.891632Z Raph Levien</strong></p>
<blockquote>
<pre>
Commits setjmp_.h, which I left out of the previous patch.
</pre>
<p>[src/setjmp_.h]</p>
</blockquote>

<p><strong><a name="2006-05-15T212929.006940Z"></a>
2006-05-15T21:29:29.006940Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a typo resulting in inproper glyph placement with transposed text 
and a top left reference corner. Fixes bug 688645.
</pre>
<p>[jbig2dec/jbig2_text.c]</p>
</blockquote>

<p><strong><a name="2006-05-15T203529.086193Z"></a>
2006-05-15T20:35:29.086193Z Ralph Giles</strong></p>
<blockquote>
<pre>
Ignore common generated files.
</pre>
<p>[jasper jasper/src/libjasper/pgx jasper/src/libjasper jasper/src/libjasper/include/jasper jasper/src/libjasper/base jasper/src/libjasper/mif jasper/src/libjasper/jpc jasper/src/libjasper/bmp jasper/src/libjasper/jpg jasper/src/appl jasper/src/libjasper/include jasper/src jasper/src/libjasper/ras jasper/src/libjasper/pnm jasper/src/libjasper/jp2 jasper/src/msvc]</p>
</blockquote>

<p><strong><a name="2006-05-15T202721.734326Z"></a>
2006-05-15T20:27:21.734326Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove a generated source file from the included jasper library.
</pre>
<p>[jasper/src/libjasper/include/jasper/jas_config_ac.h]</p>
</blockquote>

<p><strong><a name="2006-05-15T184416.729159Z"></a>
2006-05-15T18:44:16.729159Z Raph Levien</strong></p>
<blockquote>
<pre>
FIX: Allocate jmp_buf with padding, to satisfy alignment constraints. 
Fixes bug #687643.
</pre>
<p>[src/lib.mak src/sjpegd.c src/sjpege.c src/sdct.h src/ttinterp.c src/ttobjs.h src/sjpegc.c]</p>
</blockquote>

<p><strong><a name="2006-05-12T233933.380797Z"></a>
2006-05-12T23:39:33.380797Z Ralph Giles</strong></p>
<blockquote>
<pre>
Document how to compile Ghostscript with the Luratech compression 
libraries. Bug 688665.
</pre>
<p>[doc/Make.htm]</p>
</blockquote>

<p><strong><a name="2006-05-12T231747.022921Z"></a>
2006-05-12T23:17:47.022921Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update Language.htm to better describe the current level of PDF support. 
Bug 688661.
</pre>
<p>[doc/Language.htm]</p>
</blockquote>

<p><strong><a name="2006-05-12T224754.173109Z"></a>
2006-05-12T22:47:54.173109Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add commented out line for manually enabling the luratech build with 
autoconf.
</pre>
<p>[src/Makefile.in]</p>
</blockquote>

<p><strong><a name="2006-05-12T222314.706617Z"></a>
2006-05-12T22:23:14.706617Z Ralph Giles</strong></p>
<blockquote>
<pre>
Always make read progress is s_jbig2encode process when there is data
available. Fixes bug #688658.
</pre>
<p>[src/sjbig2_luratech.h src/sjbig2_luratech.c]</p>
</blockquote>

<p><strong><a name="2006-05-11T045924.800767Z"></a>
2006-05-11T04:59:24.800767Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688686 segfault in find_bit_map().

DETAILS:

The addition of the compressed encoded color logic created a problem for
the psdrgb device.  This device shares most of its code with the psdcmyk
device.  The common print_page procedure uses devn_unpack_row.  This
routine was modified to work with the compressed encoded color values.
However the psdrgb device does not use the compressed encoded color logic.

The fix consists of checking for the presence or absence of a compressed
color list pointer.  The presence of this pointer indicates if the compressed
color logic is being used.  The appropriate uncompress logic is used.

</pre>
<p>[src/gdevdevn.c]</p>
</blockquote>


<h2><a name="Version8.54"></a>Version 8.54 (2006-05-17)</h2>

<p>This is the fifth stable release in the 8.5x series of Ghostscript.
It contains a numerous bug fixes and improvements.

<p> The following <a href="http://bugs.ghostscript.com/">bugs</a> were
open at the time of this release: <blockquote>
226943,
405501,
430175,
465936,
493348,
530011,
535932,
578865,
592160,
610478,
614298,
626295,
686747,
686853,
686865,
687011,
687039,
687063,
687084,
687095,
687108,
687125,
687146,
687193,
687196,
687219,
687229,
687231,
687257,
687271,
687280,
687295,
687297,
687303,
687304,
687314,
687316,
687327,
687342,
687345,
687346,
687375,
687397,
687399,
687414,
687445,
687460,
687475,
687480,
687484,
687492,
687498,
687514,
687520,
687529,
687531,
687536,
687559,
687561,
687593,
687595,
687608,
687630,
687650,
687666,
687674,
687677,
687679,
687680,
687695,
687697,
687702,
687715,
687721,
687728,
687729,
687731,
687775,
687780,
687782,
687793,
687796,
687805,
687814,
687825,
687844,
687850,
687863,
687887,
687896,
687903,
687904,
687907,
687915,
687919,
687931,
687950,
687957,
687960,
687970,
687974,
687977,
687978,
687981,
687983,
687988,
687992,
687996,
688006,
688007,
688009,
688020,
688022,
688024,
688026,
688032,
688035,
688036,
688039,
688042,
688047,
688054,
688058,
688061,
688064,
688066,
688071,
688072,
688073,
688075,
688081,
688095,
688108,
688124,
688129,
688130,
688134,
688151,
688152,
688159,
688166,
688181,
688184,
688187,
688200,
688203,
688204,
688207,
688210,
688215,
688225,
688227,
688239,
688243,
688249,
688258,
688260,
688267,
688269,
688274,
688278,
688280,
688282,
688283,
688288,
688291,
688295,
688311,
688312,
688317,
688318,
688320,
688323,
688329,
688332,
688333,
688337,
688338,
688339,
688342,
688358,
688359,
688360,
688361,
688363,
688372,
688375,
688378,
688383,
688386,
688387,
688389,
688394,
688395,
688396,
688400,
688413,
688425,
688427,
688428,
688429,
688434,
688436,
688437,
688440,
688446,
688448,
688463,
688468,
688473,
688474,
688475,
688477,
688479,
688483,
688490,
688493,
688495,
688500,
688515,
688517,
688518,
688526,
688528,
688532,
688533,
688536,
688539,
688540,
688542,
688543,
688557,
688565,
688570,
688573,
688580,
688581,
688588,
688596,
688598,
688599,
688601,
688604,
688605,
688610,
688613,
688616,
688617,
688619,
688621,
688623,
688626,
688627,
688631,
688633,
688634,
688635,
688636,
688637,
688638,
688639,
688640,
688641,
688643,
688646,
688647,
688650,
688651,
688652,
688653,
688655,
688669,
688671,
688672,
688673,
688674,
688675,
688676,
688678,
688683,
688687,
688688,
688689,
688691,
688692.
</blockquote>

<h3><a name="8.54_Incompatible_changes"></a>Incompatible changes</h3>

<p>
There are no known incompatible changes at this point.

<h3><a name="8.54_changelog"></a>Changelog</h3>

<p><strong><a name="2006-05-17T182707.676488Z"></a>
2006-05-17T18:27:07.676488Z Ralph Giles</strong></p>
<blockquote>
<pre>
Merge change from trunk.

Remove ARCH_STRUCT_ALIGN_MOD entirely and revert to 
ARCH_ALIGN_MEMORY_MOD not having the extra jmp_buf
alignment requirements. This satisfies the assumption
that structure alignment and sizeof(ref) agree in
the Ghostscript code and should finally fix 687643.

Also add a cast back to jmp_buf in the alignment
macro setjmp_.h. Fixes bug 688698. Patch from
Alex Cherepanov.
</pre>
<p>[/branches/ghostscript-8.54/src/std.h /branches/ghostscript-8.54/src/setjmp_.h /branches/ghostscript-8.54/src/genarch.c]</p>
</blockquote>

<p><strong><a name="2006-05-17T153218.088676Z"></a>
2006-05-17T15:32:18.088676Z Ralph Giles</strong></p>
<blockquote>
<pre>
Port the fix for bug #688149 from trunk. Originally committed by Ray 
Johnson.

Fix so that dictionaries that grow preserve attributes.                         
Several problems reported including a potential security                        
hole when in SAFER mode. Thanks to mat Gh Savulescu                             
(SaGS) for the bug report, the patch and excellent                              
analysis of the problem.                                                        
                                                                                
DETAILS:                                                                                                                                                        
Ordinarily dictionaries have unprotected, non-exectue                           
status, but it is possible to "grow" executable or even                         
"read-only" dictionaries (contact Ray Johnston for an                           
explanation as provided by mat Gh Savulescu). The bug                           
in idict.c would not preserve the attributes, making                            
the dictionary not executable, and not readonly even                            
if those were the original attributes.                                          
                                                                                
EXPECTED DIFFERENCES:                                                                                                                                           
None. (we don't run regression in SAFER mode and don't                          
rely on 'special' dict attributes).

</pre>
<p>[/branches/ghostscript-8.54/src/idict.c]</p>
</blockquote>

<p><strong><a name="2006-05-15T233249.061208Z"></a>
2006-05-15T23:32:49.061208Z Ralph Giles</strong></p>
<blockquote>
<pre>
Additional release date updates.
</pre>
<p>[/branches/ghostscript-8.54/doc/Details8.htm /branches/ghostscript-8.54/doc/History8.htm]</p>
</blockquote>

<p><strong><a name="2006-05-15T230316.814804Z"></a>
2006-05-15T23:03:16.814804Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update release date for 8.54rc2.
</pre>
<p>[/branches/ghostscript-8.54/doc/Issues.htm /branches/ghostscript-8.54/doc/DLL.htm /branches/ghostscript-8.54/doc/Drivers.htm /branches/ghostscript-8.54/man/pfbtopfa.1 /branches/ghostscript-8.54/doc/Commprod.htm /branches/ghostscript-8.54/doc/Release.htm /branches/ghostscript-8.54/doc/Xfonts.htm /branches/ghostscript-8.54/doc/Devices.htm /branches/ghostscript-8.54/doc/Language.htm /branches/ghostscript-8.54/src/version.mak /branches/ghostscript-8.54/man/gs.1 /branches/ghostscript-8.54/doc/Fonts.htm /branches/ghostscript-8.54/doc/Ps2ps2.htm /branches/ghostscript-8.54/man/pf2afm.1 /branches/ghostscript-8.54/doc/Develop.htm /branches/ghostscript-8.54/doc/Ps2pdf.htm /branches/ghostscript-8.54/man/printafm.1 /branches/ghostscript-8.54/doc/Helpers.htm /branches/ghostscript-8.54/man/pdf2dsc.1 /branches/ghostscript-8.54/doc/Psfiles.htm /branches/ghostscript-8.54/doc/Lib.htm /branches/ghostscript-8.54/doc/gs-vms.hlp /branches/ghostscript-8.54/man/gsnd.1 /branches/ghostscript-8.54/man/font2c.1 /branches/ghostscript-8.54/doc/Htmstyle.htm /branches/ghostscript-8.54/man/pdfopt.1 /branches/ghostscript-8.54/man/ps2pdf.1 /branches/ghostscript-8.54/man/pdf2ps.1 /branches/ghostscript-8.54/doc/News.htm /branches/ghostscript-8.54/doc/Details8.htm /branches/ghostscript-8.54/doc/Make.htm /branches/ghostscript-8.54/doc/Testing.htm /branches/ghostscript-8.54/doc/Unix-lpr.htm /branches/ghostscript-8.54/doc/C-style.htm /branches/ghostscript-8.54/doc/Ps-style.htm /branches/ghostscript-8.54/doc/History1.htm /branches/ghostscript-8.54/doc/History2.htm /branches/ghostscript-8.54/man/gslp.1 /branches/ghostscript-8.54/man/wftopfa.1 /branches/ghostscript-8.54/doc/History3.htm /branches/ghostscript-8.54/doc/Ps2epsi.htm /branches/ghostscript-8.54/doc/History4.htm /branches/ghostscript-8.54/man/ps2pdfwr.1 /branches/ghostscript-8.54/man/ps2ps.1 /branches/ghostscript-8.54/doc/History5.htm /branches/ghostscript-8.54/doc/History6.htm /branches/ghostscript-8.54/doc/History7.htm /branches/ghostscript-8.54/doc/Projects.htm /branches/ghostscript-8.54/doc/History8.htm /branches/ghostscript-8.54/man/dvipdf.1 /branches/ghostscript-8.54/man/ps2ascii.1 /branches/ghostscript-8.54/doc/Use.htm /branches/ghostscript-8.54/doc/Readme.htm /branches/ghostscript-8.54/doc/Source.htm /branches/ghostscript-8.54/doc/Deprecated.htm /branches/ghostscript-8.54/doc/Maintain.htm /branches/ghostscript-8.54/man/ps2epsi.1 /branches/ghostscript-8.54/doc/Install.htm /branches/ghostscript-8.54/doc/Copying.htm /branches/ghostscript-8.54/doc/API.htm]</p>
</blockquote>

<p><strong><a name="2006-05-15T225912.198801Z"></a>
2006-05-15T22:59:12.198801Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update changelogs for 8.54rc2.
</pre>
<p>[/branches/ghostscript-8.54/doc/News.htm /branches/ghostscript-8.54/doc/Details8.htm /branches/ghostscript-8.54/doc/Details.htm /branches/ghostscript-8.54/doc/Changes.htm /branches/ghostscript-8.54/doc/History8.htm]</p>
</blockquote>

<p><strong><a name="2006-05-15T225120.894499Z"></a>
2006-05-15T22:51:20.894499Z giles</strong></p>
<blockquote>
<pre>
Add setjmp_.h, which was left out of the patch fixing bug #687643.
</pre>
<p>[/branches/ghostscript-8.54/src/setjmp_.h]</p>
</blockquote>

<p><strong><a name="2006-05-15T213128.156524Z"></a>
2006-05-15T21:31:28.156524Z giles</strong></p>
<blockquote>
<pre>
Correct a typo resulting in inproper glyph placement with transposed 
text and a top left reference corner. Fixes bug 688645. Fix merged
from trunk.
</pre>
<p>[/branches/ghostscript-8.54/jbig2dec/jbig2_text.c]</p>
</blockquote>

<p><strong><a name="2006-05-15T210748.699439Z"></a>
2006-05-15T21:07:48.699439Z giles</strong></p>
<blockquote>
<pre>
Update MSVC build to refer to the release version of MS Visual Studio 
.NET 2005.
</pre>
<p>[/branches/ghostscript-8.54/doc/Make.htm /branches/ghostscript-8.54/src/msvc32.mak]</p>
</blockquote>

<p><strong><a name="2006-05-15T191706.838612Z"></a>
2006-05-15T19:17:06.838612Z giles</strong></p>
<blockquote>
<pre>
Update the usage line for the split_changelog utility.
</pre>
<p>[/branches/ghostscript-8.54/toolbin/split_changelog.py]</p>
</blockquote>

<p><strong><a name="2006-05-15T191613.375379Z"></a>
2006-05-15T19:16:13.375379Z giles</strong></p>
<blockquote>
<pre>
Correct a problem with the display device. The initialiser            
needs to be a scaler, not the array that was being used.
GCC on OS/2 was giving a warning about this. This makes it
consistent with gdevtsep.c. Patch from Russell Lang.
</pre>
<p>[/branches/ghostscript-8.54/src/gdevdsp.c]</p>
</blockquote>

<p><strong><a name="2006-05-15T190828.721428Z"></a>
2006-05-15T19:08:28.721428Z giles</strong></p>
<blockquote>
<pre>
Update changelogs.
</pre>
<p>[/branches/ghostscript-8.54/doc/News.htm /branches/ghostscript-8.54/doc/Details8.htm /branches/ghostscript-8.54/doc/Details.htm /branches/ghostscript-8.54/doc/Changes.htm /branches/ghostscript-8.54/doc/History8.htm]</p>
</blockquote>

<p><strong><a name="2006-05-15T190031.775976Z"></a>
2006-05-15T19:00:31.775976Z giles</strong></p>
<blockquote>
<pre>
FIX: Allocate jmp_buf with padding, to satisfy alignment constraints.           
Fixes bug #687643. Change merged from trunk.
</pre>
<p>[/branches/ghostscript-8.54/src/sdct.h /branches/ghostscript-8.54/src/ttinterp.c /branches/ghostscript-8.54/src/ttobjs.h /branches/ghostscript-8.54/src/sjpegc.c /branches/ghostscript-8.54/src/lib.mak /branches/ghostscript-8.54/src/sjpegd.c /branches/ghostscript-8.54/src/sjpege.c]</p>
</blockquote>

<p><strong><a name="2006-05-15T173628.446043Z"></a>
2006-05-15T17:36:28.446043Z giles</strong></p>
<blockquote>
<pre>
Port documentation updates from trunk.

DETAILS:

Document how to compile Ghostscript with the Luratech compression 
libraries. Bug 688665.

Update Language.htm to better describe the current level of PDF support. 
Bug 688661.
</pre>
<p>[/branches/ghostscript-8.54/doc/Make.htm /branches/ghostscript-8.54/doc/Language.htm]</p>
</blockquote>

<p><strong><a name="2006-05-15T173526.789659Z"></a>
2006-05-15T17:35:26.789659Z giles</strong></p>
<blockquote>
<pre>
Add commented out line for manually enabling the luratech build with 
autoconf. Change ported from trunk.
</pre>
<p>[/branches/ghostscript-8.54/src/Makefile.in]</p>
</blockquote>

<p><strong><a name="2006-05-15T173418.223579Z"></a>
2006-05-15T17:34:18.223579Z giles</strong></p>
<blockquote>
<pre>
Always make read progress is s_jbig2encode process when there is data
available. Fixes bug #688658. Port from trunk to the 8.54 branch.
</pre>
<p>[/branches/ghostscript-8.54/src/sjbig2_luratech.c /branches/ghostscript-8.54/src/sjbig2_luratech.h]</p>
</blockquote>

<p><strong><a name="2006-05-15T012953.383801Z"></a>
2006-05-15T01:29:53.383801Z dan</strong></p>
<blockquote>
<pre>
Port fix for 688686 segfault in find_bit_map() to 8.54 branch.

DETAILS:

The addition of the compressed encoded color logic created a problem for
the psdrgb device.  This device shares most of its code with the psdcmyk
device.  The common print_page procedure uses devn_unpack_row.  This
routine was modified to work with the compressed encoded color values.
However the psdrgb device does not use the compressed encoded color logic.

The fix consists of checking for the presence or absence of a compressed
color list pointer.  The presence of this pointer indicates if the compressed
color logic is being used.  The appropriate uncompress logic is used.

</pre>
<p>[/branches/ghostscript-8.54/src/gdevdevn.c]</p>
</blockquote>

<p><strong><a name="2006-05-11T012843.068966Z"></a>
2006-05-11T01:28:43.068966Z giles</strong></p>
<blockquote>
<pre>
Update the changelog xml2html script to handle the output of 
'svn log --verbose --xml' instead of 'cvs2cl'.
</pre>
<p>[/branches/ghostscript-8.54/toolbin/split_changelog.py]</p>
</blockquote>

<p><strong><a name="2006-05-10T220504.536292Z"></a>
2006-05-10T22:05:04.536292Z giles</strong></p>
<blockquote>
<pre>
Fix up pre.tcl a bit to handle svn Id: lines.
</pre>
<p>[/branches/ghostscript-8.54/toolbin/pre.tcl]</p>
</blockquote>

<p><strong><a name="2006-05-10T215736.424976Z"></a>
2006-05-10T21:57:36.424976Z giles</strong></p>
<blockquote>
<pre>
Propagate release number and data changes to the documentation.
</pre>
<p>[/branches/ghostscript-8.54/doc/Issues.htm /branches/ghostscript-8.54/doc/DLL.htm /branches/ghostscript-8.54/doc/Drivers.htm /branches/ghostscript-8.54/man/pfbtopfa.1 /branches/ghostscript-8.54/doc/Commprod.htm /branches/ghostscript-8.54/doc/Release.htm /branches/ghostscript-8.54/doc/Xfonts.htm /branches/ghostscript-8.54/doc/Devices.htm /branches/ghostscript-8.54/doc/Language.htm /branches/ghostscript-8.54/man/gs.1 /branches/ghostscript-8.54/doc/Fonts.htm /branches/ghostscript-8.54/doc/Ps2ps2.htm /branches/ghostscript-8.54/man/pf2afm.1 /branches/ghostscript-8.54/doc/Develop.htm /branches/ghostscript-8.54/doc/Ps2pdf.htm /branches/ghostscript-8.54/man/printafm.1 /branches/ghostscript-8.54/doc/Helpers.htm /branches/ghostscript-8.54/man/pdf2dsc.1 /branches/ghostscript-8.54/doc/Psfiles.htm /branches/ghostscript-8.54/doc/Lib.htm /branches/ghostscript-8.54/doc/gs-vms.hlp /branches/ghostscript-8.54/man/gsnd.1 /branches/ghostscript-8.54/man/font2c.1 /branches/ghostscript-8.54/doc/Htmstyle.htm /branches/ghostscript-8.54/man/pdfopt.1 /branches/ghostscript-8.54/man/ps2pdf.1 /branches/ghostscript-8.54/man/pdf2ps.1 /branches/ghostscript-8.54/doc/Details8.htm /branches/ghostscript-8.54/doc/Make.htm /branches/ghostscript-8.54/doc/Testing.htm /branches/ghostscript-8.54/doc/Unix-lpr.htm /branches/ghostscript-8.54/doc/C-style.htm /branches/ghostscript-8.54/doc/Ps-style.htm /branches/ghostscript-8.54/doc/History1.htm /branches/ghostscript-8.54/doc/History2.htm /branches/ghostscript-8.54/man/gslp.1 /branches/ghostscript-8.54/man/wftopfa.1 /branches/ghostscript-8.54/doc/History3.htm /branches/ghostscript-8.54/man/ps2ps.1 /branches/ghostscript-8.54/doc/Ps2epsi.htm /branches/ghostscript-8.54/doc/History4.htm /branches/ghostscript-8.54/man/ps2pdfwr.1 /branches/ghostscript-8.54/doc/History5.htm /branches/ghostscript-8.54/doc/History6.htm /branches/ghostscript-8.54/doc/History7.htm /branches/ghostscript-8.54/doc/Projects.htm /branches/ghostscript-8.54/doc/History8.htm /branches/ghostscript-8.54/man/dvipdf.1 /branches/ghostscript-8.54/man/ps2ascii.1 /branches/ghostscript-8.54/doc/Use.htm /branches/ghostscript-8.54/doc/Readme.htm /branches/ghostscript-8.54/doc/Source.htm /branches/ghostscript-8.54/doc/Deprecated.htm /branches/ghostscript-8.54/doc/Maintain.htm /branches/ghostscript-8.54/man/ps2epsi.1 /branches/ghostscript-8.54/doc/Install.htm /branches/ghostscript-8.54/doc/Copying.htm /branches/ghostscript-8.54/doc/API.htm]</p>
</blockquote>

<p><strong><a name="2006-05-10T215427.892199Z"></a>
2006-05-10T21:54:27.892199Z giles</strong></p>
<blockquote>
<pre>
Update the libpng version number to match the included release.
</pre>
<p>[/branches/ghostscript-8.54/src/ugcclib.mak /branches/ghostscript-8.54/src/macosx.mak /branches/ghostscript-8.54/src/watcw32.mak /branches/ghostscript-8.54/src/dvx-gcc.mak /branches/ghostscript-8.54/src/msvc32.mak /branches/ghostscript-8.54/src/unix-gcc.mak /branches/ghostscript-8.54/src/unixansi.mak /branches/ghostscript-8.54/src/macos-mcp.mak /branches/ghostscript-8.54/src/msvclib.mak /branches/ghostscript-8.54/src/all-arch.mak /branches/ghostscript-8.54/src/os2.mak /branches/ghostscript-8.54/src/watclib.mak /branches/ghostscript-8.54/src/bcwin32.mak /branches/ghostscript-8.54/src/openvms.mak]</p>
</blockquote>

<p><strong><a name="2006-05-10T214414.213811Z"></a>
2006-05-10T21:44:14.213811Z giles</strong></p>
<blockquote>
<pre>
Update version numbers and dates for release.
</pre>
<p>[/branches/ghostscript-8.54/src/winint.mak /branches/ghostscript-8.54/doc/News.htm /branches/ghostscript-8.54/src/gscdef.c /branches/ghostscript-8.54/src/version.mak /branches/ghostscript-8.54/src/dwsetup.rc]</p>
</blockquote>

<p><strong><a name="2006-05-10T210642.656903Z"></a>
2006-05-10T21:06:42.656903Z giles</strong></p>
<blockquote>
<pre>
Branch for the AFPL Ghostscript 8.54 release.
</pre>
<p>[/branches/ghostscript-8.54]</p>
</blockquote>

<p><strong><a name="2006-05-10T210511.037293Z"></a>
2006-05-10T21:05:11.037293Z Ralph Giles</strong></p>
<blockquote>
<pre>
We must reset the state structure pointers passed as userdata for the 
luratech library read and write callback from within the s_jpxe_process
method because the garbage collector may have move the struct since the
call to s_jpxe_init. Fixes bug 688657.

Thanks to Ray Johnston for his analysis of the issue.
</pre>
<p>[src/sjpx_luratech.c]</p>
</blockquote>

<p><strong><a name="2006-05-10T112325.592534Z"></a>
2006-05-10T11:23:25.592534Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Upgrade Japanese Unicode CMap resources from
ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/aj16.tar.Z
Bug 688685.

DIFFERENCES:
None
</pre>
<p>[Resource/CMap/UniJISX0213-UTF32-H Resource/CMap/UniJIS-UTF32-H Resource/CMap/UniJIS-UTF16-H Resource/CMap/UniJIS-UTF8-H]</p>
</blockquote>

<p><strong><a name="2006-05-08T174301.487840Z"></a>
2006-05-08T17:43:01.487840Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add checking for required Function in some shadings to prevent later
SEGV. Detected with CET 12-14b.ps

EXPECTED DIFFERENCES:

None. This CET tests known ILLEGAL cases. The CET is not part of the
nightly regression suite.
</pre>
<p>[src/zshade.c]</p>
</blockquote>

<p><strong><a name="2006-05-08T053929.301618Z"></a>
2006-05-08T05:39:29.301618Z Ray Johnston</strong></p>
<blockquote>
<pre>
Move internal type 'gs_pattern1_instance_t' and 'gs_pattern2_instance_t' into
an array for compatibility with CPSI and a poorly designed CET (09-03.ps).

DETAILS:

The CET doesn't bother to examine the array contents, so this ruse works.
Since patterns aren't that common, we go ahead and use a 2 element array
even though we only use the first element.

EXPECTED DIFFERENCES:

None.
</pre>
<p>[lib/gs_patrn.ps lib/gs_lev2.ps src/zcolor.c]</p>
</blockquote>

<p><strong><a name="2006-05-04T195723.542378Z"></a>
2006-05-04T19:57:23.542378Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix a missing image problem seen in 468-03 (part of 468-01.ps). Even though
this test appears to violate the rules in the PLRM for Mask and Data Image
sizes for ImageType3, Adobe CPSI and other RIPS ignore the problem.

EXPECTED DIFFERENCES:

468-01.ps
</pre>
<p>[src/gximage3.c]</p>
</blockquote>

<p><strong><a name="2006-05-03T152453.610732Z"></a>
2006-05-03T15:24:53.610732Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add a note about additional license change cleanup to be done when 
making GPL releases. Bug 688677.
</pre>
<p>[doc/Release.htm]</p>
</blockquote>

<p><strong><a name="2006-04-28T074358.270935Z"></a>
2006-04-28T07:43:58.270935Z leonardo</strong></p>
<blockquote>
<pre>
pdfwrite : Luratech filters must not apply to inline images, part 2.

DETAILS :

Bug 688679 "/syntaxerror in ID with luratech coded pdf".

The last patch appears incomplete. THis one fixes that.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpsdi.c]</p>
</blockquote>

<p><strong><a name="2006-04-27T173956.495819Z"></a>
2006-04-27T17:39:56.495819Z leonardo</strong></p>
<blockquote>
<pre>
Fix (UFST bridge) : Update makefile for UFST 4.6 .

DETAILS :

An .h file has been renamed.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/lib.mak src/int.mak]</p>
</blockquote>

<p><strong><a name="2006-04-27T173641.601504Z"></a>
2006-04-27T17:36:41.601504Z leonardo</strong></p>
<blockquote>
<pre>
pdfwrite : Luratech filters must not apply to inline images and for Indexed images.

DETAILS :

Bug 688659 "A wrong encoding with Luratech encoder".

1. JPXEncode, JBIG2Encode can't apply to inline images because
PDF specification doesn't define short names for them.

2. JPXEncode can't apply to Indexed images.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfb.c src/gdevpdfv.c src/gdevpsdi.c src/gdevpsdf.h src/gdevpdfi.c]</p>
</blockquote>

<p><strong><a name="2006-04-26T222654.710871Z"></a>
2006-04-26T22:26:54.710871Z Ralph Giles</strong></p>
<blockquote>
<pre>
As of libpng 1.2.10 we have to define PNG_NO_ASSEMBLY_CODE or include
one of the two asm files on MacOS X. We don't want to fiddle with
the source list based on compiler at this point (MSVC vs GCC) so
just do without the assembly as before.
</pre>
<p>[src/libpng.mak]</p>
</blockquote>

<p><strong><a name="2006-04-26T191655.695237Z"></a>
2006-04-26T19:16:55.695237Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix SEGV when 'reversepath' invoked with a currentpoint but no segments.
Detected with the CET Global Interference test.

EXPECTED DIFFERENCES:

The CET tests might run now ;-)
Otherwise no differences.
</pre>
<p>[src/gspath1.c]</p>
</blockquote>

<p><strong><a name="2006-04-26T011713.575661Z"></a>
2006-04-26T01:17:13.575661Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for 470-01 at some resolutions (90 dpi failed, 125 dpi worked). Zero
width or height clip box confused shading logic.

EXPECTED DIFFERENCES:

None. 470-01.ps was not in the comparefiles (yet). I will be adding it.
</pre>
<p>[src/gsshade.c]</p>
</blockquote>

<p><strong><a name="2006-04-25T173126.091156Z"></a>
2006-04-25T17:31:26.091156Z leonardo</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing ColorImageAutoFilterStrategy, GrayImageAutoFilterStrategy.

DETAILS :

This patch implements ColorImageAutoFilterStrategy, GrayImageAutoFilterStrategy 
destiller parameters, and applies them for choosing image encoding filters
when Ghostscript is built with Luratech filters.

1. Since the old architecture defines common image parameter lists for
pswrite and pdfwrite, now we need to pass CompatibilityLevel to
those common modules. Doing that in a hackish way with defining
a new field gx_device_psdf::ParamCompatibilityLevel,
and setting it whenever that stuff is called from pdfwrite.

2. Using it for the filter choice in psdf_setup_image_filters.

3. Enhance psdf_get_image_params and psdf_put_image_params with
ColorImageAutoFilterStrategy, GrayImageAutoFilterStrategy (gdevpsdp.c).

4. Passing the lossless option for JPXEncode filter in setup_image_compression,
and using that filter for lossless compression instead FlateEncode/LZWEncode
when it is available, depending on ColorImageAutoFilterStrategy, GrayImageAutoFilterStrategy.

5. With CompatibilityLevel&gt;=1.5, with 1bpp images we choose JBIG2Encode instead 
FlateEncode/LZWEncode when it is available.

Thus, when Luratech filters are available, with CompatibilityLevel&gt;=1.5,
Luratech filters work by default.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpsdp.c src/gdevpdfp.c src/gdevpdfb.c src/gdevpdfv.c src/gdevpsdi.c src/gdevpsdf.h src/gdevpdfi.c]</p>
</blockquote>

<p><strong><a name="2006-04-25T164009.951186Z"></a>
2006-04-25T16:40:09.951186Z Ralph Giles</strong></p>
<blockquote>
<pre>
Copy the new 1.2.10 libpng release into our tree.
</pre>
<p>[libpng]</p>
</blockquote>

<p><strong><a name="2006-04-25T163948.646150Z"></a>
2006-04-25T16:39:48.646150Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the included libpng 1.2.8.
</pre>
<p>[libpng]</p>
</blockquote>

<p><strong><a name="2006-04-25T031032.157126Z"></a>
2006-04-25T03:10:32.157126Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add hooks for setting the lossly compression quality target or lossless 
compression to the jpxe stream state. Both new parameters are optional,
but the set_defaults method must now be called for consistent behavior.

The quality option allows setting a quality value (1-100 inclusive) 
different from the default, currently 60. Setting the lossless flag
specifies lossless encoding and overrides any quality setting.
</pre>
<p>[src/sjpx_luratech.h src/gdevjpx.c src/sjpx_luratech.c]</p>
</blockquote>

<p><strong><a name="2006-04-22T015907.027378Z"></a>
2006-04-22T01:59:07.027378Z Ray Johnston</strong></p>
<blockquote>
<pre>
Change ASCII85Decode EOD handling to make sure that the EOD characters are
consumed before we provide the last bit of data to the caller. The ~&gt; sequence
(actually could be &lt;cr&gt; &lt;lf&gt; ~ &lt;cr&gt; &lt;lf&gt; &gt; ) left in the currentfile would
cause an /undefined error. Bug 688618.

DETAILS:

When the input is piped from %stdin the smaller buffers tripped over this
frequently with the test file simply because there were more buffer bounds
conditions.

Note that this area is _still_ not quite the way Adobe works, but without
major surgery and analysis of Adobe filter behaviour we aren't likely to
achieve 100% compatiblity.

Since we handle the case where the EOD sequence is in the part of the buffer
that we defer processing on (if last is false) we should be quite similar
as far as when we process the EOD since if a complete EOD wasn't in the
buffer previously, the '~' was left there. Now we avoid returning the last
word of data if the complete EOD isn't in the tail of the buffer.

If the EOD sequence seen in the tail is preceded by the 'real' EOD before
the tail in the current buffer, the "false positive" does no harm. Similarly
if there is a malformed EOD '~' not followed by '&gt;' (possibly with intervening
&lt;cr&gt;&lt;lf&gt;) the error condition will still be detected when the '~' is actually
parsed in the deocder.

EXPECTED DIFFRENCES:

None. The regression suite still runs fine for me, including FTS files that
use the ASCII85Decode filter such as 119-01.ps.

</pre>
<p>[src/sa85d.c]</p>
</blockquote>

<p><strong><a name="2006-04-22T011550.051226Z"></a>
2006-04-22T01:15:50.051226Z Ray Johnston</strong></p>
<blockquote>
<pre>
Yet another apparently broken PDF file that Acrobat Reader handles silently.
In this case a 'Tj' operator when the font is an embedded double byte font
(CIDFont) has an odd number of bytes in the string. Change to return a
.notdef' glpyh for the tail of the string. Bug 688670 fro customer 562.

EXPECTED DIFFERENCES:

None since we did not have any files with this problem.

</pre>
<p>[src/gsfcmap1.c]</p>
</blockquote>

<p><strong><a name="2006-04-21T011136.736823Z"></a>
2006-04-21T01:11:36.736823Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688648 Too many MAP file names.

DETAILS:

The Borland C++ 5.5 Builder no longer worked.  The problem was caused
by an earlier change:

r5596 | igor | 2004-12-20 14:17:39 -0800 (Mon, 20 Dec 2004) | 18 lines
Fix : Completely remove the platform dependent target lib.tr from makefiles

There was a note in that change message that it had not been tested with
the Borland compiler.  The bug was also subtle in that the only reason
that the linker command worked previously was because the lib.tr file
was empty.
</pre>
<p>[src/bcwin32.mak]</p>
</blockquote>

<p><strong><a name="2006-04-20T181411.385429Z"></a>
2006-04-20T18:14:11.385429Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Work around degenerate CTM while stroking a path.

DETAILS :

Bug 688606 "ps2pdf fails with Error: /undefinedresult in --stroke--".

The pdfwrite device uses an inverse CTM to satisfy
Adobe Reader constraing for user coordinates. 
The test document demonstrates another case when a 3d party software 
strokes a path with a degenerate CTM. The old code already implements
a workaround for a si,ilar case. However the old
condition in there appears too strong, and now
we make it weaker to pass a new class of degenerate CTMs.

NMot sure whether we should pass any degenerate CTM.
Will see if new ones appear.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfd.c]</p>
</blockquote>

<p><strong><a name="2006-04-18T173225.849734Z"></a>
2006-04-18T17:32:25.849734Z Ray Johnston</strong></p>
<blockquote>
<pre>
Implement the status operation for the %rom% device. Restructure the
makefiles to correct some dependency problems. The creation time of
files in the %rom% device are now set to the build time. The need
for this was established during bug 687094.

DETAILS:

Not tested on VMS or OS/2. Header file dependencies were missing. Now
the mkromfs ZLIB objs are a shared macro list as are the header list.

EXPECTED DIFFERENCES:

None since this only is used if COMPILE_INITS=1.

</pre>
<p>[src/lib.mak src/openvms.mak src/mkromfs.c src/gsiorom.c src/unix-aux.mak src/macos-mcp.mak src/msvctail.mak src/os2.mak]</p>
</blockquote>

<p><strong><a name="2006-04-16T190854.198111Z"></a>
2006-04-16T19:08:54.198111Z leonardo</strong></p>
<blockquote>
<pre>
Fix (MSVC build) : Always use nodebug CRTL when building a nodebug Ghostscript.

DETAILS :

The old makefile gave a wrong profiling result due to
linking with debug CRTL when TDEBUG=0 DEBUGSYM=1.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/msvc32.mak]</p>
</blockquote>

<p><strong><a name="2006-04-16T190141.671156Z"></a>
2006-04-16T19:01:41.671156Z leonardo</strong></p>
<blockquote>
<pre>
Fix (memory manager) : Reduce the CPU time consumption for 'restore', step 2.

DETAILS :

This fixes the bug
Bug 688602 "Displaying file with GS-8.53 is much slower than with GS-8.51"
with switching on the new code.
See the revision 6706 log message.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxalloc.h]</p>
</blockquote>

<p><strong><a name="2006-04-14T194913.902581Z"></a>
2006-04-14T19:49:13.902581Z leonardo</strong></p>
<blockquote>
<pre>
Fix (memory manager) : Reduce the CPU time consumption for 'restore'.

DETAILS :

This is a preparation for fixing 
Bug 688602 "Displaying file with GS-8.53 is much slower than with GS-8.51".
Currently the new code is disabled with the macro NO_INVISIBLE_LEVELS
defined in gxalloc.h . 

The performance flaw happened in revision 5980.
Before it the memery manager created "invisible" save levels
when the changes list becomes too long and needs a big time for 
restoring l_new marks. The idea was to skip marls for 
older changes so that they don't consume processor time.
The cost was an extra growth of the changes list,
because such changes are stored at second time
if happen again after the "invisible" 'save'.
While fixing the bug 68815 this optimization was lost
because it was not documented.

In same time, "invisible" 'save' levels appear logically incorrect,
because they cause the problem documented in the bug 68815.
This change implements same idea (the skipping of old changes
while 'restore'), but it does that with no extra 'save' levels.

The new implementation maintains a pointer 
gs_ref_memory_t::scan_limit, which points 
to a middle element of the changes list.
Elements after that pointers do not restore
l_new mark during 'restore'. Besides that,
this change introduces a new kind of change list elements,
which is marked with AC_OFFSET_ALLOCATED in the 'offset' field.
Such elements do not represent a memory content change, 
but they represent an allocation event for 'ref' arrays.
The l_new mark is restored for those refs,
which were allocated after the change element
pointed by gs_ref_memory_t::scan_limit.

To simplify debugging, we define a new switch
NO_INVISIBLE_LEVELS in gxalloc.h .
When NO_INVISIBLE_LEVELS is zero, 
an algorithmically equivalent change happens in isave.c
and igcref.c, and other modules are not affected.
In this case :

1. Factored out a new function mark_allocated (isave.c).
2. Added a new argument to save_set_new, save_set_new_changes
   to know that it is called for an invisible level (isave.c).
3. Factored out a new function igc_reloc_ref_ptr_nocheck (igcref.c).

When NO_INVISIBLE_LEVELS is 1 :

1. Invisible save levels are not created 
   (the change to alloc_save_state in isave.c).
2. Instead that, it creates a new kind of alloc_change_t element, 
   which is marked with AC_OFFSET_ALLOCATED in the 'offset' field.
   Such element points to the beginning of a newly allocated 'ref' array
   (either packed or not) (see alloc_save_change_alloc in isave.c).
3. The new function alloc_save_remove removes such elements when
   the object is being removed explicitely.
4. save_set_new is expanded to process the new kind of alloc_change_t elements.
   With such elements it calls mark_allocated (see above),
   so that the effect is same as before the patch.
5. The scanning of allocated objects in save_set_new is removed
   due to (3).
6. save_set_new_changes is extended with computing the size of 
   newly allocated 'ref' arrays, which are processed during the scan.
   It appears to be close to what save_set_new did while scanning
   allocated objects (the variable 'changed').
7. The new field gs_ref_memory_t::scan_limit stores a termination
   condition for scanning objects in save_set_new_changes.
   The value is stored when save_set_new_changes is called 
   from alloc_save_state as it was for creatng an invisible save level.
   Rather the new code doesn't create an invisible level, 
   the scan termination condition work as it were created.
8. save_set_new_changes uses the variable 'changed'
   for a proper setting of the termination condition.
   The condition is not exactly equivalent to the
   old one, because the old code also accounts 
   a scanning of non-ref objects, but the new code
   doesn't bother with them. Therefore new termination conditions
   appear in some different points than invisible levels did.
   Therefore the behavior isn't algorithmically equivalent.
9. The new code always restore to a 'visible' level.
   In same time, doing a 'restore', some of l_new marks
   may be left unrestored due to the scan tremination condition.
   This effect may be considered as caching a reasonable
   number of recently changed objects by marking with l_new.
   Older changes loose the l_new mark and their further changes
   will be stored again in the 'changes' list. 
   This causes an extra growth of the 'changes' list,
   but saves the processor time from redundant setting
   of multiple l_new marks when save-restore is executed
   multiple times after a big number of changes.
10. The garbager implements a special processing for 
   AC_OFFSET_ALLOCATED elements. The 'where' pointer is not
   enumerated and isn't tracked while the marking phase.
   Instead that the garbager calls a special function 
   alloc_save__filter_changes to remove those elements, 
   which point to unused ref blocks. Also a special function
   igc_reloc_ref_ptr_nocheck is used to relocate
   'where' pointers. See comments in code.
11. In AC_OFFSET_ALLOCATED elements 60% of their size
   appears unused. We would like to define a smaller
   structure for them, but we don't want 
   enlarge the CPU time expense for checking types
   in loops.

Thus NO_INVISIBLE_LEVELS 1 reconstructs the optimization, 
which was lost while fixing the bug 688153 with the revision 5980.
Rather the behavior isn't strongly equivalent,
the overall logic is mostly same.

Now we commit this patch with new code disabled.
We'll enable it separately after the regression testing
of the algorithmically equivalent part.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/isave.h src/gxalloc.h src/idosave.h src/igcref.c src/int.mak src/igc.c src/ialloc.c src/gsalloc.c src/isave.c]</p>
</blockquote>

<p><strong><a name="2006-04-14T175542.321007Z"></a>
2006-04-14T17:55:42.321007Z Ray Johnston</strong></p>
<blockquote>
<pre>
Indirect W, W2, Dw or DW2 values were not resolved at the correct point
which caused a check for 0 length W and W2 arrays to not work. Bug 688649.
</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2006-04-14T010331.516512Z"></a>
2006-04-14T01:03:31.516512Z Dan Coby</strong></p>
<blockquote>
<pre>
Remove a piece of extra code that came in as part of the 'Named color' logic.</pre>
<p>[src/gscdevn.c]</p>
</blockquote>

<p><strong><a name="2006-04-13T042447.344362Z"></a>
2006-04-13T04:24:47.344362Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix typo. IdoimSet was in RESOURCE_LIST instead of IdiomSet.
Thanks to "Edward" for spotting this. Bug 688644.
</pre>
<p>[src/bcwin32.mak src/openvms.mak src/ugcclib.mak src/macosx.mak src/watcw32.mak src/Makefile.in src/dvx-gcc.mak src/msvc32.mak src/unix-gcc.mak src/unixansi.mak src/macos-mcp.mak src/msvclib.mak src/os2.mak src/watclib.mak]</p>
</blockquote>

<p><strong><a name="2006-04-11T055623.659314Z"></a>
2006-04-11T05:56:23.659314Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688068 Problem with overprint in 1bit cmyk device.

DETAILS:

This problem was caused by an earlier change which was made for support
of ROPs in the GhostPCL product.  Logically there are some conflict
between the requirements for ROPs versus overprint.  See the discussion
in 688638 for the details.

Logically this change backs out the earlier change to big_map_color_rgb.
In actuality, a new routine call bit_decode_color was made which operates
like the earlier version of bit_map_color_rgb.  The new routine was created
since the current bit_map_color_rgb will be needed for ROP support.</pre>
<p>[src/gdevbit.c]</p>
</blockquote>

<p><strong><a name="2006-04-11T045424.181044Z"></a>
2006-04-11T04:54:24.181044Z Ray Johnston</strong></p>
<blockquote>
<pre>
The .ResourceFile logic did not work with the %rom% device since it relied
on the 'status' operator. This change avoids the use of 'status' by using
the 'file' operator in a stopped context. Bug 687094.

DETAILS:

The %rom% device needs to add a 'status' function that comes up with some
reasonable results.

EXPECTED DIFFERENCES:

None.
</pre>
<p>[lib/gs_res.ps]</p>
</blockquote>

<p><strong><a name="2006-04-06T003046.126294Z"></a>
2006-04-06T00:30:46.126294Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688625 5x to 15x slowdown between 8.50 and 8.53 (ref#10273).

DETAILS:

The given test file specifies a graphics state for almost every line drawn.
As a result, over 380,000 extra transparency mask initializations are done.
The extra time occurred when the PDF transparency processing was changed
being passed through the clist.These extra initializations were using both
CPU time and clist memory (disk) space.

The fix consists of only processing PDF transparency features when it
is actually needed by the file.  Note:  This was already being done
for most PDF transparency operations but not for the mask initializtion.</pre>
<p>[lib/pdf_ops.ps]</p>
</blockquote>

<p><strong><a name="2006-04-03T134322.538056Z"></a>
2006-04-03T13:43:22.538056Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix all obvious cases where the name of an operator for signalerror procedure
is searched in the dictionary stack instead of retrieving it from systemdict.
Bug 688548.

DIFFERENCES:
None
</pre>
<p>[lib/gs_lev2.ps lib/gs_img.ps lib/gs_dpnxt.ps lib/gs_cspace.ps]</p>
</blockquote>

<p><strong><a name="2006-04-02T001736.683425Z"></a>
2006-04-02T00:17:36.683425Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix rangecheck in shfill caused by floating point inaccuracies in the function
logic. Previous logic allowed for inaccuracy, but the value scaling was wrong
making the test too stringent. Bug 688574 for customer 531.

DETAILS:

This rangecheck failure was not consistent across various builds, but _was_
repeatable on peeves. The problem was a floating point calculation truncation
which caused a vaule to go outside of the defined range (in this case, the
value went negative and the limit was 0.0).

There was logic present in 'fn_1ItSg_is_monotonic' to allow for small
'out of bounds' conditions, but the value used was defined for a different
range and thus was too strict.

While fixing this (by splitting the 'small' values to different ones for
the 'b' range and the 'e' range) I also corrected many spelling errors
(s/noize/noise/ and s/beak/peak). I also regularized the small float
value to (float)1e-6 in the various modules.

</pre>
<p>[src/lib.mak src/gsfunc0.c src/gsfunc3.c src/gxpcopy.c]</p>
</blockquote>

<p><strong><a name="2006-04-01T221627.729522Z"></a>
2006-04-01T22:16:27.729522Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Work around a bug in GCC 2.96 for x86. Pre-load stack pages to avoid a SEGV.
Bug 688574.

DETAILS:
It is well known that GCC 2.96 for x86 sometimes forgets to adjust &#36;esp
and leaves automatic variables at small distance below the stack pointer.
Apparently, when the access to the automatic variable causes a page fault
Linux sends a SEGV signal instead of committing the page if the access
happens below the stack pointer. Pre-loading the stack pages from a known
good context resolves the problem.

DIFFERENCES:
None.

</pre>
<p>[src/gs.c]</p>
</blockquote>

<p><strong><a name="2006-04-01T150959.196553Z"></a>
2006-04-01T15:09:59.196553Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Recognize PDF fonts by the first 4 bytes of the font stream. Simplify
Type 1 font reader and PFB font reader.
Bug 688569 from customer 850.

DETAILS:
Some PDF files mis-identify font type of the embedded font streams or
include raw PDF font streams. Length1, Length2, Length3 may be wrong or
missing. Adobe Acrobat corrects these types transparently to the user.

All PDF font streams can be easily recognized by the 1st 4 bytes of
the font stream. The PFB stream can be recognized by the 1st 2 bytes.

The Type 1 font reader doesn't need to follow 3-part structure of the
Type 1 font but interpret it as a single stream. PDF specifies that
Type 1 fonts with binary-encoded eexec  streams can be embedded. One can
imagine a binary eexec stream that is mis-identified as a hexadecimal
eexec stream by a standard PostScript eexec operator. So the encoded
stream was converted to hexadecimal stream before rev. 6568 . In
practice we've never seen a stream that need a hexadecimal conversion
but had several real hexadecimal streams. When the hexadecimal
conversion was removed in rev. 6568, handling of 3-part Type 1 structure
became a rudiment with is removed now.

Existing code restores the operand and dictionary stacks after the font
interpretation. So no extra code is required to support fonts without
the 3rd part - zeros and cleartomark.

These changes enable Ghostscript to interpret many kinds of malformed
font streams but reduce it's utility as a verification tool. Checking
of the declared type, subtype, and length parameters vs. actual values
has been moved to the bug 688627 and will be implemented later.

DIFFERENCES:
None
</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2006-04-01T133502.551726Z"></a>
2006-04-01T13:35:02.551726Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix /ioerror when the length of the string data target is equal to number of
generated bytes. Calculate the exact number of \n characters inserted by
ASCIIHexEncode filter instead of the high bound
Bug 688569

DIFFERENCES:
None
</pre>
<p>[src/sstring.c]</p>
</blockquote>

<p><strong><a name="2006-04-01T131359.549095Z"></a>
2006-04-01T13:13:59.549095Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Enable redefinition of /image and /imagemask operators in PDF interpreter
whan DELAYBIND option is in effect.
Bug 688555

DETAILS:
pdf_draw.ps is loaded after gs_img.ps, gs_init.ps, gs_l2img.ps where /image and
/imagemask are redefined. So these names can be safely resolved at the
loading time, instead of taking the value from systemdict at run time as it was
done before.

DIFFERENCES:
None
</pre>
<p>[lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2006-03-31T010731.896512Z"></a>
2006-03-31T01:07:31.896512Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688608 image rendered black in PDF-file

DETAILS:

The test file for this problem has several 1 bit DeviceGray images.  The file also uses
the 'Darken' blending mode.  This result of this blending mode is the darker of the
background and source colors.

The problem was that 1 bit DeviceGray images are handled by the copy_mon device procedure.
The PDF 1.4 transparency compositor devices were using the gx_default_copy_mono procedure.
However this routine first sets the specified area to black and then sets the white regions.
Since the entire area is first set to black, the blending operation always produced a
black result.

The fix consists of creating a new copy_mono procedure for the PDF 1.4 transparency
compositor devices.  The new routine does not set the entire area to black first.</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2006-03-29T215036.299258Z"></a>
2006-03-29T21:50:36.299258Z Ray Johnston</strong></p>
<blockquote>
<pre>
Document the new '-o' option. Also minor cleanup in the same area.
</pre>
<p>[doc/Use.htm]</p>
</blockquote>

<p><strong><a name="2006-03-29T204328.951336Z"></a>
2006-03-29T20:43:28.951336Z Ray Johnston</strong></p>
<blockquote>
<pre>
Correct double "" typo that made 'usage:' not work.
</pre>
<p>[toolbin/search-svn-revs]</p>
</blockquote>

<p><strong><a name="2006-03-29T193910.090689Z"></a>
2006-03-29T19:39:10.090689Z Raph Levien</strong></p>
<blockquote>
<pre>
Adds -o&lt;fn&gt; switch to command, which is essentially an alias for 
-sOutputFile=&lt;fn&gt;, -dNOPAUSE, and -dBATCH.
</pre>
<p>[src/imainarg.c]</p>
</blockquote>

<p><strong><a name="2006-03-29T193105.448360Z"></a>
2006-03-29T19:31:05.448360Z Ralph Giles</strong></p>
<blockquote>
<pre>
The luratech JPEG 2000 encoder defaults to lossless coding mode,
which doesn't offer any size advantages over the older DCT encode
filter. Instead ask for quality-based rate control at 60 on a scale
of 1-100. This also requires switching to the 9,7 wavelet from the
reversible 5,3.
</pre>
<p>[src/sjpx_luratech.c]</p>
</blockquote>

<p><strong><a name="2006-03-28T010549.592416Z"></a>
2006-03-28T01:05:49.592416Z Ray Johnston</strong></p>
<blockquote>
<pre>
Return a success code from the clist compression initialization functions.
Bug 688603. Thanks to "Nix" for spotting this.

DETAILS:

This problem actually existed with the LZW comoression init as well as ZLIB.

</pre>
<p>[src/gxclzlib.c src/gxcllzw.c]</p>
</blockquote>

<p><strong><a name="2006-03-27T190129.123835Z"></a>
2006-03-27T19:01:29.123835Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix typo in double inclusion protection.
</pre>
<p>[src/sjpx_luratech.h]</p>
</blockquote>

<p><strong><a name="2006-03-27T185339.250165Z"></a>
2006-03-27T18:53:39.250165Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix a problem handling ' " and \ characters that gave false postives when checkin
sources for C++ comments. Remove some modules from the 'skip' list that did not
belong there (IMHO) -- they were probably there due to previous false positives.

DETAILS:

This module was already sort of hackish. It works better, but probably can still
be fooled. At least we now ignore the character following a '\' and can handle
things like '"' and "'" without getting confused.

EXPECTED DIFFERENCES:

src/gdevpdfe.c will no longer be listed as having C++ comments.

</pre>
<p>[toolbin/tests/check_comments.py]</p>
</blockquote>

<p><strong><a name="2006-03-25T013829.250332Z"></a>
2006-03-25T01:38:29.250332Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix luratech-based encode filters. We now appear to work correctly.

DETAILS:

Invert the JBIG2 image data before passing it to the encoder library. We 
allocate a scratch buffer for this because the buffer we are passed in
the read cursor struct is marked const. We now produce output with the 
correct meaning for 0 and 1 bits, but the output of the jbig2 output 
device is now inverted.

In both the jbig2 and jpx encode filters, repeatedly grow dynamic 
buffers until they reach the required size instead of assuming a
single doubling will be sufficient. This fixes a segfault inside
the library compressing large JPX images.
</pre>
<p>[src/sjbig2_luratech.h src/sjbig2_luratech.c src/sjpx_luratech.c]</p>
</blockquote>

<p><strong><a name="2006-03-24T235842.888065Z"></a>
2006-03-24T23:58:42.888065Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct an unitialized variable warning.
</pre>
<p>[src/gdevjbig2.c]</p>
</blockquote>

<p><strong><a name="2006-03-24T011006.296187Z"></a>
2006-03-24T01:10:06.296187Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use .languagelevel operator instead of languagelevel name to prevent
languagelevel redefinition to affect Ghostscript operation.
Bug 688583

DIFFERENCES:
None
</pre>
<p>[lib/gs_img.ps]</p>
</blockquote>

<p><strong><a name="2006-03-23T193206.035048Z"></a>
2006-03-23T19:32:06.035048Z Ray Johnston</strong></p>
<blockquote>
<pre>
Change PDF curve rendering to use 'accurate' curves. PostScript method
is retained for Adobe CPSI compatibility. Bug 688434.

EXPECTED DIFFERENCES:

All are varified as progressions (improvements). I will run update_specific
immediately after the patch is committed.

The file list is:

0.pdf
1_2001.pdf
1_pct_50_bang.pdf
86554321.pdf
Altona-Testsuite_p2_S_x3.pdf
Altona_Measure_1v1.pdf
Altona_Visual_bb_1v1_x3.pdf
Altona_Visual_sb_1v1_x3.pdf
BEST8-99-Path.fh7.pdf
BW0696FOLD1FRONT.pdf
Bug687724.pdf
Bug687828.pdf
Bug687840.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
GS_Stroke_error.pdf
Openhuis_pdf_zw.pdf
PixelisAd.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
SmoothShading.pdf
Svd.pdf
adesso8.pdf
ai2.pdf
annots.pdf
besttest.pdf
bugsample.pdf
bulletin.pdf
ca.pdf
chartab.pdf
chilis_black.pdf
chilis_red.pdf
file.pdf
file2.pdf
knight.pdf
messenger.pdf
messenger16.pdf
p2b-100.pdf
probe3.pdf
si_tg_brochure.pdf
time1.pdf
</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2006-03-23T123923.850800Z"></a>
2006-03-23T12:39:23.850800Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : The font copying and the font comparizon didn't work with segmented True Type data.

DETAILS :

Bug 688611 "Font included in the PDF file several times".

In Postscript documents Trus Type font data are segmented
to fit into a maximal Postscript string.
If a True Type table is bigger, it must be segmented.
When creating a stable font copy such case is rare,
because we copy small tables only (skipping such big tables as 'glyph'
in order to create a font subset).
In the supplied test case True Type font is so wrongly segmented,
that 'cvt' table consistes of 2 segments, rather it could fit into a single string.
Due to that the old code accessed occasional data after a segment break.

We believe that the test document is an incorrect Postscript,
but we decided to do effort for handling this case.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfcopy.c src/gdevpsft.c]</p>
</blockquote>

<p><strong><a name="2006-03-23T095647.387302Z"></a>
2006-03-23T09:56:47.387302Z leonardo</strong></p>
<blockquote>
<pre>
(pdfwrite) : Integrating Luratech modules for JPXEncode, JBIG2Encode.

DETAILS :

This imolements a better filter initialization and 
a proper writing of filter names to the PDF output file.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfx.h src/gdevpdfu.c src/gdevpsdi.c src/devs.mak]</p>
</blockquote>

<p><strong><a name="2006-03-22T183522.304671Z"></a>
2006-03-22T18:35:22.304671Z Raph Levien</strong></p>
<blockquote>
<pre>
FIX: Fixes segfault in wts persistent cache logic when no cache key is
generated. Fixes bug #688132.
</pre>
<p>[src/gswts.c]</p>
</blockquote>

<p><strong><a name="2006-03-22T181043.455701Z"></a>
2006-03-22T18:10:43.455701Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix printafm to properly handle files with more than 256 glyphs. Patch 
from Michail Vidiassov. Bug 688610.
</pre>
<p>[lib/printafm.ps]</p>
</blockquote>

<p><strong><a name="2006-03-22T164415.233805Z"></a>
2006-03-22T16:44:15.233805Z leonardo</strong></p>
<blockquote>
<pre>
(pdfwrite) : Integrating Luratech modules for JPXEncode, JBIG2Encode.

DETAILS :

This is a preliminary implementation.
The new filters in this revision isn't working well and need more debugging.

To build Ghostscript with new filters, specify 
"JBIG2_LIB=luratech JPX_LIB=luratech" in the command line when running 'make' utility.
Use this Postscript prefix to invoke new filters :

&lt;&lt; /ColorImageFilter /JPXEncode
   /GrayImageFilter /JPXEncode
   /MonoImageFilter /JBIG2Encode
&gt;&gt; setdistillerparams

JPXEncode requires CompatibilityLevel=1.5 , 
JBIG2Encode requires CompatibilityLevel=1.4 . 

IMPORTANT NOTE :
The change to gdevpsdi.c near line 239 slightly changes
the behavior in the case when no new filters involved.
When AutoFilter=true, the old code completely disregarded the filter 
specified in ColorImageFilter, GrayImageFilter.
The new code leaves it as a candidate for the automatic choice
if it is a non-lossless filter.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpsdp.c src/gdevpdfp.c src/gdevpsdi.c src/devs.mak]</p>
</blockquote>

<p><strong><a name="2006-03-22T145600.546050Z"></a>
2006-03-22T14:56:00.546050Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A minor code cleanup.

DETAILS :

This is a preparation for integrating Luratech modules for JPXEncode, JBIG2Encode.
This change is algorithmicly equivalent.

1. Allowed CompatibilityLevel=1.5 . Old code replaced with 1.4 .
   The new code behaves same as the old one.

2. In gdevpsdi.c set_defaults was called twice for same filter in some cases.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfp.c src/gdevpsdi.c]</p>
</blockquote>

<p><strong><a name="2006-03-22T084311.486957Z"></a>
2006-03-22T08:43:11.486957Z leonardo</strong></p>
<blockquote>
<pre>
Fix : MSVC, Cygwin/gcc warnings.

DETAILS :

Note 1:
This patch inserts 2 initializations into gswts.c against an indeterminzm,
but we don't case about correct values in those cases.

Note 2:
This patch removes the messing pointer type cast insetred with the last patch.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gsimage.c src/gxfcopy.c src/gxwts.h src/gdevpdfg.c src/gswts.c]</p>
</blockquote>

<p><strong><a name="2006-03-22T080449.413437Z"></a>
2006-03-22T08:04:49.413437Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix compile problems and MSVC warnings.
</pre>
<p>[src/gxwts.h src/gswts.c]</p>
</blockquote>

<p><strong><a name="2006-03-22T070500.066628Z"></a>
2006-03-22T07:05:00.066628Z Raph Levien</strong></p>
<blockquote>
<pre>
Patch to put WTS halftones in clist so that WTS halftoning works in
banded mode. Also uses persistent cache when available to save time
initializing the WTS halftone structures. Some memory cleanup and
optimization work remains.
</pre>
<p>[src/gp_unix_cache.c src/gswts.h src/gshtscr.c src/gxdhtserial.c src/gxwts.h src/gsht.c src/gswts.c src/gxclrast.c src/gxdevndi.c src/gp.h src/gxclimag.c]</p>
</blockquote>

<p><strong><a name="2006-03-22T045845.401369Z"></a>
2006-03-22T04:58:45.401369Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add ToWrite dictionary to complete the environment for pdfwrite.ps procedures
and enumerate JBIG2Globals parameter before the image to avoid recursion during
stream copying.
Bug 688556

DIFFERENCES:
None
</pre>
<p>[lib/pdfopt.ps]</p>
</blockquote>

<p><strong><a name="2006-03-21T120923.846370Z"></a>
2006-03-21T12:09:23.846370Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Order embedded fonts against an indeterminizm.

DETAILS :

Bug 688561 "PDF content depends on memory allocation."

The old code writes font data depending on glyph name indices,
which are Postscript name indices and depend on memory allocation order,
which depend on occasional factors and events.

This patch implements a font data ordering by glyph names,
which are strings. The ordering is implemented for
stable font copies, which only represent an embedded font
before writing it.

See comments added into gxfcopy.h .

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdtb.c src/gxfcopy.c src/gxfcopy.h]</p>
</blockquote>

<p><strong><a name="2006-03-20T233552.190540Z"></a>
2006-03-20T23:35:52.190540Z Ralph Giles</strong></p>
<blockquote>
<pre>
Implement RGB and CMYK output in the example JPX output device. The CMYK 
device isn't confirmed to be correct.
</pre>
<p>[src/devs.mak src/gdevjpx.c]</p>
</blockquote>

<p><strong><a name="2006-03-17T202658.555712Z"></a>
2006-03-17T20:26:58.555712Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add the new luratech integration and testing files to the 
file list in the documentation.
</pre>
<p>[doc/Develop.htm]</p>
</blockquote>

<p><strong><a name="2006-03-17T201646.140063Z"></a>
2006-03-17T20:16:46.140063Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add missing revision comment lines.
</pre>
<p>[src/gscedata.h src/gdevpdtv.c src/gdevpdtv.h src/gscedata.c]</p>
</blockquote>

<p><strong><a name="2006-03-17T071958.022114Z"></a>
2006-03-17T07:19:58.022114Z leonardo</strong></p>
<blockquote>
<pre>
Type 1 hinter : More improvements (continued 3).

DETAILS :

The revision 6642 appears incorrect.
We thought that the 'uninitialized' warning was issued
due to the compiler stupidity, however it appears useful.
Those variables could be uninitialized due to 
the operator 'continue' above their assignments.
Revisions before 6642 are indeterministic.

This patch provides a correct fix for that error.
The last patch fixed the indeterminizm,
but the computation was inaccurate.

EXPECTED DIFFERENCES :

normal 72 dpi :

"Bug687724.pdf" 
"chess.ps" 
"MagicEye.pdf" 

normal 300 dpi :

"86554321.pdf" 
"alphabet.ps" 
"t\Bug687724.pdf" 
"t\fonts.pdf" 
"t\MagicEye.pdf" 
"t\PixelisAd.pdf" 
"t\prob.pdf" 
"t\spec_gs.pdf" 
"t\spec_gv.pdf" 

pdfwrite 72 dpi :

"Bug687724.pdf" 
"chess.ps" 
"t\Bug687724.pdf" 
"t\chess.ps" 
"t\MagicEye.pdf" 

pdfwrite 300 dpi :

"86554321.pdf" 
"alphabet.ps" 
"Bug687603.ps" 
"Bug687724.pdf" 
"fonts.pdf" 
"MagicEye.pdf" 
"PixelisAd.pdf" 
"prob.pdf" 
"spec_gs.pdf" 
"spec_gv.pdf" 
</pre>
<p>[src/gxhintn.c]</p>
</blockquote>

<p><strong><a name="2006-03-16T195907.187142Z"></a>
2006-03-16T19:59:07.187142Z Ray Johnston</strong></p>
<blockquote>
<pre>
Remove individual credit from 'usage'.
</pre>
<p>[toolbin/search-svn-revs]</p>
</blockquote>

<p><strong><a name="2006-03-15T195658.028675Z"></a>
2006-03-15T19:56:58.028675Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove excessive debugging output.
</pre>
<p>[src/sjpx_luratech.c]</p>
</blockquote>

<p><strong><a name="2006-03-15T194500.902158Z"></a>
2006-03-15T19:45:00.902158Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix color procs to get gray scale instead of _b_w_.
</pre>
<p>[src/gdevjpx.c]</p>
</blockquote>

<p><strong><a name="2006-03-15T143527.348378Z"></a>
2006-03-15T14:35:27.348378Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use gput procedure to store data in the PDF graphic state instead of the plain
def because initial graphic state is a read-only dictionary.
Bug 688593 from customer 870.

DIFFERENCES:
None
</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2006-03-15T063342.151793Z"></a>
2006-03-15T06:33:42.151793Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add test frameworks for the JBIG2 and JPX encode filters. This code 
only depends on the encoder streams being available, but currently
that is only possible when building against the proprietary Luratech
implementation libraries.
</pre>
<p>[src/gdevjbig2.c src/gdevjpx.c src/devs.mak]</p>
</blockquote>

<p><strong><a name="2006-03-15T054607.272587Z"></a>
2006-03-15T05:46:07.272587Z Ralph Giles</strong></p>
<blockquote>
<pre>
Initial check in of JPX encode filter support based on the Luratech LWF 
JP2 library.
</pre>
<p>[src/sjpx_luratech.h src/sjpx_luratech.c]</p>
</blockquote>

<p><strong><a name="2006-03-15T054350.703217Z"></a>
2006-03-15T05:43:50.703217Z Ralph Giles</strong></p>
<blockquote>
<pre>
Commit header changes associated with the previous commit.
</pre>
<p>[src/sjpx_luratech.h]</p>
</blockquote>

<p><strong><a name="2006-03-15T054125.246375Z"></a>
2006-03-15T05:41:25.246375Z Ralph Giles</strong></p>
<blockquote>
<pre>
Instead of using the dimensions and depth of the first image component,
take the maximum of the values for each component, giving the highest 
resolution image. The library doesn't supply the information from 
the Image Header Box which should be the actual target resolution, 
so we still need to implement passing the target image dimensions 
from the image dictionary for complete robustness. 

Also, some code clean up and improvement of debugging messages.
</pre>
<p>[src/sjpx_luratech.c]</p>
</blockquote>

<p><strong><a name="2006-03-13T211143.073623Z"></a>
2006-03-13T21:11:43.073623Z stefan</strong></p>
<blockquote>
<pre>
Use vsprintf for currently unused gs_throw_imp for now.</pre>
<p>[src/gsmisc.c]</p>
</blockquote>

<p><strong><a name="2006-03-13T205343.657512Z"></a>
2006-03-13T20:53:43.657512Z stefan</strong></p>
<blockquote>
<pre>
remove abberant include of stdint.h</pre>
<p>[src/gdevpdfe.c]</p>
</blockquote>

<p><strong><a name="2006-03-13T203732.485353Z"></a>
2006-03-13T20:37:32.485353Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add warning about potential misleading results as pointed out by Igor.
Credit him with this observation in the 'usage' explanantion.

</pre>
<p>[toolbin/search-svn-revs]</p>
</blockquote>

<p><strong><a name="2006-03-13T195246.775800Z"></a>
2006-03-13T19:52:46.775800Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix a typo that was introduced in r6651.
</pre>
<p>[src/gserror.h]</p>
</blockquote>

<p><strong><a name="2006-03-13T194107.288420Z"></a>
2006-03-13T19:41:07.288420Z Ralph Giles</strong></p>
<blockquote>
<pre>
Use the Id keyword instead of the old RCSFile and Revision.
</pre>
<p>[src/gserror.h]</p>
</blockquote>

<p><strong><a name="2006-03-13T161819.024819Z"></a>
2006-03-13T16:18:19.024819Z stefan</strong></p>
<blockquote>
<pre>
changed copyright headers</pre>
<p>[src/iplugin.h src/gdevm48.c src/gsgdata.h src/configure.ac src/gsropt.h src/gdevmsxf.c src/gdevmem.c src/gdevmem.h src/zvmem.c src/write_t1.c src/gstrap.c src/icstate.h src/gxxfont.h src/write_t1.h src/gstrap.h src/gzacpath.h src/gdevcgmx.h src/gscssub.c src/gp_msdos.c src/gdevlbp8.c src/gdevdm24.c src/gdevpdfx.h src/zcsdevn.c src/dwsetup.rc src/zcontext.c src/gscssub.h src/icie.h src/gxdhtserial.c src/gdevpdts.c src/ccfont.h src/gxdither.h src/gxdhtserial.h src/gdevpdts.h src/macsystypes.h src/gxclutil.c src/gxcomp.h src/echogs.c src/oper.h doc/History7.htm src/zchar42.c src/gscscie.c src/gsfont0.c src/zchar42.h src/icfontab.c src/zht1.c src/zdevcal.c src/zpcolor.c src/gdevpdfi.c src/zcssepr.c src/ifont42.h src/sdcparam.c doc/Install.htm src/bcwin32.mak doc/Issues.htm src/sdcparam.h src/gdevpdtd.c src/gdevokii.c src/zcfont.c src/gdevpdtd.h src/gdevprna.c src/zcolor.c src/gxhtbit.c src/oparc.h src/sfxfd.c src/gdevprna.h src/gp_mspol.c src/dwuninst.h src/ttconfig.h src/gpmisc.c src/ireclaim.c src/gxstdio.h src/gsmemraw.h src/gpmisc.h doc/Lib.htm src/gxline.h doc/Ps-style.htm src/ijs.mak src/gserver.c src/gp_psync.c src/gp_os2pr.c src/gdevpsd.c src/gsiomacres.c src/gxclfile.c src/gxfilltr.h src/gdebug.h src/zfile.c src/gdev4693.c src/gxchar.c src/gxchar.h src/gsline.c src/gsfcid2.c src/gsalloc.c src/gsline.h src/gsiparm2.h src/gsalloc.h src/gxfont0.h src/gdevmeds.c src/gs16spl.c src/gdev4081.c src/gdevmeds.h src/srdline.h src/dpmain.c src/wctail.mak src/winlib.mak doc/History8.htm src/szlibx.h src/zmath.c src/gdevpdfk.c src/gxfont0c.h src/iimage.h src/gxpcolor.h src/gdevpdtf.c src/gp_unifn.c doc/Xfonts.htm src/gdevddrw.c src/gschar.c src/gdevpdtf.h src/gdevpsfm.c src/gdevddrw.h src/sarc4.c src/gschar.h src/gsptype2.c src/gdevpsu.c src/zfcid1.c src/sarc4.h src/gstrans.c src/gsptype2.h src/gdevpsu.h src/gstrans.h src/iestack.h src/gxbitfmt.h src/gxclio.h src/gstype2.c src/itoken.h src/inameidx.h src/gxhldevc.c src/gxhldevc.h src/sfxboth.c src/gp_macio.c src/wrfont.c src/sbhc.c src/gsdps.c src/zfont1.c doc/Maintain.htm src/wrfont.h src/sbhc.h src/gsdps.h src/spngp.c src/ghost.h src/gxalloc.h src/gsmatrix.c src/gxsamplp.h src/istruct.h src/gdevpsf.h src/gsmatrix.h src/zdouble.c src/dwreg.c src/spdiff.c src/gxfcmap1.h src/dwreg.h src/scommon.h src/gdevpdtw.c src/gdevpdtw.h src/unixhead.mak src/gsiparm4.h src/gxiscale.c src/gxbcache.c src/dwinst.cpp src/gxbcache.h src/ibnum.c src/gdevxcmp.c src/estack.h src/ibnum.h src/scfe.c src/gscompt.h src/gsdcolor.h src/gxdtfill.h src/gdevxcmp.h src/gdevlj56.c src/gdevhl7x.c src/gdevos2p.c src/gsparam.c src/gdevmr8n.c src/gsbitops.c src/gxftype.h src/gp_unix_cache.c src/gdevpdfm.c src/imain.c src/gsparam.h src/gsbitops.h src/zfilter2.c src/imain.h src/ifilter.h src/zfont42.c doc/Language.htm src/spdiffx.h src/smd5.c src/smd5.h src/gxhttype.h src/gs16spl.rc src/gspenum.h src/sjpx.c src/sjpx.h src/gxipixel.c src/sfilter2.c src/gdevsnfb.c src/gdevifno.c src/gscrd.c src/gxmclip.c src/gxcie.h src/gsio.h src/gscrd.h src/gxmclip.h src/unix-end.mak src/inobtokn.c src/gp_mslib.c src/gsiodev.c src/gdevescp.c src/igc.c src/msvc32.mak src/gdevmacxf.c src/gsfunc0.c src/igc.h src/jerror_.h src/zdosio.c src/gsfunc0.h src/gdevpsds.c src/gdevpsf1.c src/siscale.c src/gdevpsds.h src/ilevel.h src/gxfill.c src/gsdsrc.c src/siscale.h src/gxclread.c src/gxfill.h src/gsdsrc.h src/iostack.h src/gdevmr1.c src/gsdll.c src/gspath1.c src/gsdll.h src/sjpegc.c src/zfdcte.c src/zfcmap.c doc/Readme.htm src/gdevbit.c src/gdevfax.c src/gsequivc.c src/gsdevice.c src/gp_wsync.c src/gdevfax.h src/gsequivc.h src/gsdll32.rc src/gxclmem.c src/gshtx.c src/gscparam.c src/gdevpdfo.c src/gdevsj48.c src/gsdevice.h src/gsbittab.c src/sdctd.c src/macos_carbon_pre.h src/gxclmem.h src/gshtx.h src/gsmemory.c src/gdevpdfo.h src/gsbittab.h src/ifwpred.h src/gdevcdj.c doc/Devices.htm src/files.h src/gsmemory.h src/gxband.h src/scfdgen.c src/ttinterp.c src/ttcalc.c src/gsbitmap.h src/gdevtknk.c src/idsdata.h src/ttinterp.h src/ttcalc.h src/gxfont42.h src/scf.h src/inames.h src/gxidata.c src/gsroptab.c src/gdevm1.c src/gsistate.c src/os2.mak src/gscolor2.c src/gzline.h src/gscolor2.h src/gsmalloc.c src/ttfmain.c src/ivmem2.h src/gsmalloc.h src/gscindex.h src/gxiodev.h src/gp_macpoll.c src/dwmain.c src/gdevpcfb.c src/gdevvec.c src/dwmain.h src/gdevpcfb.h src/gdevvec.h src/ostack.h src/gsrect.h src/sdeparam.c src/idosave.h src/gsncdemo.c src/ifrpred.h src/gdevimgn.c src/gdevvglb.c src/gsmdebug.h src/gsovrc.c src/gxshade1.c src/gdevm32.c src/scfx.h src/gsovrc.h src/all-arch.mak src/bfont.h src/idparam.c src/gsparams.c src/gdevbjcl.c src/gdevpsdu.c src/dvx-gcc.mak src/idparam.h src/gsparams.h src/gxblend.c src/gdevdsp2.h src/gp_mswin.c src/gdevbjcl.h src/gxblend.h src/gp_mswin.h src/gp_os2.c src/zcolor1.c src/math_.h src/gp_os2.h src/gxfunc.h src/gdevstc.c src/macos-fw.mak src/ialloc.c src/gdevstc.h src/ialloc.h src/gserrors.h src/sjpege.c src/gxsample.c src/gxfarith.h src/dxmainc.c src/gdevbmp.c src/gxsample.h src/gserror.h src/gdevbmp.h src/gdevsppr.c src/igcstr.c src/gdevn533.c src/idebug.c src/igcstr.h src/iccinit1.c src/idebug.h src/gsht.c src/ifont2.h src/gdevpsdf.h src/gdevm16.c src/gsht.h src/scantab.c src/gxfapi.c src/zfilter.c src/gstype42.c src/gxfapi.h src/iutilasm.asm src/gsfunc.c src/sbcp.c src/iref.h src/gsfunc.h src/sbcp.h src/gdevtrac.c src/gp_ntfs.c src/libpng.mak src/gdevatx.c src/zfproc.c src/gs_dll_call.h src/dmmain.c src/istream.h src/gs.c doc/Ps2epsi.htm src/zdevice2.c src/iscannum.c src/sjbig2.c src/gdevpdfb.c src/gscrdp.c src/gspmdrv.c src/iscannum.h src/dmmain.r src/sjbig2.h src/gsfemu.c src/gdevpdfb.h src/gscrdp.h src/gspmdrv.h src/inamestr.h src/gxclrast.c src/gdevxres.c src/zfile1.c src/zimage3.c src/istkparm.h src/gdevo182.c src/zarith.c src/zcspixel.c src/gximage1.c src/msvctail.mak src/gsfunc4.c src/isdata.h src/gxclpath.c src/gsfunc4.h src/gxcmap.c src/gxclpath.h src/icsmap.h src/gxcmap.h src/gpgetenv.h src/zpath.c src/ttload.c src/gsnorop.c src/gdevmrop.h src/gxfillsl.h src/zcolor3.c src/ttload.h src/tttype.h src/gxcpath.c doc/Unix-lpr.htm src/gxcpath.h src/gdevlxm.c src/gxp1impl.h src/rinkj/rinkj-epson870.c src/rinkj/rinkj-epson870.h src/gxgetbit.h src/gdevabuf.c doc/Source.htm src/md5.c src/gp_mac.c src/gdevsgi.c src/zcie.c src/md5.h src/gdevsco.c src/gp_mac.h src/stream.c src/gdevsgi.h src/gdevdflt.c src/stream.h src/gsdpnext.h src/gdev8510.c src/gxstroke.c src/gdevpxut.c src/zmisc2.c src/ttmisc.h src/zfunc3.c src/iparam.c src/zrelbit.c src/gdevpxut.h src/gxclist.c src/gdevxini.c src/iparam.h src/gxclist.h src/jbig2.mak src/gdevpsfu.c src/gdevlp8k.c src/gdevpdt.c src/ttfmemd.c src/gdevpdt.h src/gp_dosfs.c src/ttfmemd.h src/gpcheck.h src/jasper.mak src/ztype.c src/dwuninst.cpp src/gdevxxf.c src/shc.c src/zshade.c doc/Use.htm src/opcheck.h src/shc.h src/gdevpdfd.c src/gdevcfax.c src/zicc.c src/vdtrace.c src/gxdda.h src/iscan.c src/vdtrace.h src/iscan.h src/gsnotify.c src/gximage3.c src/srle.c src/gsnotify.h src/zfilterx.c src/gsdll2.rc src/gximage3.h src/iparray.h src/memory_.h src/gsuid.h src/gdevstc2.c src/ziodev2.c src/gsiodevs.c src/zmisc.c src/gsargs.c src/devs.mak src/gp_win32.c src/gsargs.h src/gsinit.c src/gxttfb.c src/wmin.mak src/gxttfb.h src/dscparse.c src/winplat.mak src/gdev3852.c src/dscparse.h src/gp_getnv.c src/gp_wgetv.c src/gdevpxen.h src/gdevadmp.c src/gdevpxat.h src/zchar2.c src/errno_.h src/slzwc.c src/gdevpdfu.c src/ttcommon.h src/gdevp14.c src/dwinst.h doc/Ps2ps2.htm src/sfilter.h src/gdevp14.h src/ifcid.h src/sisparam.h src/ifont.h src/zfmd5.c src/unixlink.mak doc/Psfiles.htm src/zrop.c src/gdevegaa.asm src/zfjpx.c src/gspaint.c src/gspaint.h src/sa85x.h src/gsalpha.c src/int.mak src/gsalpha.h src/icremap.h src/imainarg.c src/gp_dvx.c src/imainarg.h src/spprint.c src/gxcldev.h src/zbfont.c src/unix-gcc.mak src/spprint.h src/igstate.h src/unistd_.h src/version.mak src/dwtext.c src/sbwbs.c src/gxdevmem.h src/icharout.h src/gdevstc4.c src/dwtext.h src/sbwbs.h src/szlibd.c src/gdevpccm.c src/gdevdfax.c src/gdevdbit.c src/gdevpccm.h src/strimpl.h src/gsutil.c src/opextern.h src/gsutil.h src/zimage.c src/gdevcgm.c src/gdevtsep.c src/gsfont0c.c doc/Deprecated.htm src/gsht1.c src/gspcolor.c src/gxi12bit.c src/gsht1.h src/iddstack.h src/rinkj/rinkj-config.c src/gspcolor.h src/zfjbig2.c src/std.h src/rinkj/rinkj-config.h src/gdevs3ga.c src/slzwe.c src/scfdtab.c src/gscolor.c src/stdint_.h src/ztoken.c src/gxpaint.c src/seexec.c src/zchar32.c src/gdevm56.c src/gscolor.h src/icid.h src/spsdf.c src/gxpaint.h src/gsfname.c src/spsdf.h src/gsfname.h src/gxalpha.h src/md5main.c src/srlx.h src/gxclipsr.h src/gdevmac.c src/idisp.c src/jpeg.mak src/gdevmac.h src/idisp.h src/idstack.c src/gdevrinkj.c src/idstack.h src/gdevwdib.c src/gxoprect.c doc/Copying.htm src/gdevsunr.c src/gdevpdtc.c src/gxoprect.h src/gsfcmap1.c src/gswts.c src/gsstate.c src/gswts.h src/ichar1.h src/gxiparam.h src/gsstate.h src/gdevcljc.c doc/Ps2pdf.htm src/iscanbin.c src/gdevmiff.c src/iscanbin.h src/gp_mshdl.c src/zfcid.c src/zfont.c src/unixinst.mak src/iminst.h src/zarray.c src/gxdevcli.h src/fcntl_.h src/gdevpe.c doc/Humor.htm src/zdfilter.c src/write_t2.c src/zdps1.c src/write_t2.h doc/Commprod.htm src/zhsb.c src/gxsync.c src/zupath.c src/dstack.h src/gsccolor.h src/gxsync.h src/gdevpdtt.c src/gdevpbm.c src/gdevpdtt.h src/gdevmrun.c src/gsdllwin.h src/gconf.c src/gdevmrun.h src/gconf.h src/sdct.h src/zfbcp.c src/gsipar3x.h src/gzcpath.h src/scfetab.c src/gxstate.h src/gdevpcl.c src/gdevcmap.c src/zht2.c src/gxfmap.h src/gdevpdfj.c src/zfarc4.c src/gdevpcl.h src/ichar.h src/gdevcmap.h src/zht2.h src/gdevwprn.c src/gxpdash.c src/ztrap.c src/gxlum.h doc/Drivers.htm src/gdevpdte.c src/gdevdevn.c src/gsgcache.c src/gdevdevn.h src/gsgcache.h src/gsptype1.c src/gxclbits.c src/zfcid0.c src/gsptype1.h src/macos_classic_d_pre.h src/zgstate.c src/zfontenum.c src/ctype_.h src/inouparm.c src/rinkj/rinkj-screen-eb.c src/slzwx.h src/gstype1.c src/gxdhtres.h src/gdevmpla.c src/rinkj/rinkj-screen-eb.h doc/Testing.htm src/gstype1.h src/dwmain.rc src/gxcspace.h src/gdevmpla.h src/rinkj/evenbetter-rll.c src/watclib.mak src/rinkj/evenbetter-rll.h src/gxfcache.h src/gxclzlib.c src/istack.c src/zfont0.c src/gstparam.h src/istack.h src/gdevevga.c src/gdevhit.c src/gxclimag.c src/gsdfilt.c src/gxfillts.h src/gsdfilt.h src/gxht.c src/gxdcconv.c src/gdevpsdp.c src/gxcht.c src/openvms.mak src/gdevxalt.c src/gdevclj.c src/gxht.h src/gxdcconv.h src/zvmem2.c src/gdevpdtv.c src/contrib.mak src/rinkj/rinkj-device.c src/gdevpdtv.h src/lwf_jp2.mak src/gxclpage.c src/gsiparm3.h src/gxfont1.h src/rinkj/rinkj-device.h src/icontext.c src/gsdllos2.h src/gxclpage.h src/zstring.c src/icontext.h src/unix-aux.mak src/gzspotan.c src/zfont32.c src/ttfoutl.h src/gxclip2.c src/szlibxx.h src/gdevdrop.c src/gzspotan.h src/gxclip2.h src/scfd.c src/cfonts.mak src/gxiclass.h src/gdevcgml.c src/gdevcgml.h src/gdevpx.c src/windows_.h src/gdevl256.c doc/DLL.htm src/igcref.c src/zcharx.c src/gxtype1.c src/gxtype1.h src/gdevcp50.c src/idictdef.h src/gsmemret.c src/gxclip.c src/gsmemret.h src/sfilter1.c src/iname.c src/sddparam.c src/gxclip.h src/zmedia2.c src/iname.h src/gs.mak src/gxpcmap.c doc/News.htm src/gp_msdll.c src/gxcid.h src/gdevnfwd.c src/macos-mcp.mak src/ttobjs.c doc/History1.htm src/zcontrol.c src/ttobjs.h src/icclib.mak src/gsfcmap.c src/zfont2.c src/iimage2.h src/gxrplane.h src/gsfcmap.h src/gxp1fill.c src/imemory.h src/gsciemap.c src/dos_.h src/zdscpars.c src/gscdef.c src/gdevwpr2.c src/gxtmap.h src/gsbitcom.c src/zchar.c src/gdevsun.c src/gscrypt1.c doc/Fonts.htm src/gscrypt1.h src/ztrans.c src/dwmainc.c src/gxdht.h src/dvx-head.mak src/zcsindex.c src/zcidtest.c src/gdevrops.c src/gdevpdtx.h src/gdevijs.c src/icolor.h src/stdpn.h src/store.h src/gxfixed.h src/gstypes.h src/gsserial.c src/string_.h src/gdevcslw.c src/gsjmorec.h src/gsserial.h src/zfdctd.c src/zdps.c src/gxpcache.h src/scanchar.h src/lib.mak src/gdevdsp.c src/zmatrix.c src/sdctc.c src/gdevdsp.h src/gdevpipe.c src/gspmdrv.rc src/gdevsvga.c src/gdevpdti.c src/gdevsvga.h src/gdevpdti.h src/gdevepsn.c src/gsparam2.c src/gp_mktmp.c src/stat_.h src/zfsample.c src/zfdecode.c src/gsstruct.h src/gximag3x.c src/gsgc.h src/gscolor1.c src/gsnamecl.c src/dwtrace.c src/gdevmswn.c src/ierrors.h src/gxfcmap.h src/gdevjpeg.c src/gximag3x.h src/siinterp.c src/gscolor1.h src/gsnamecl.h src/dwtrace.h src/gdevmswn.h src/gdevbbox.c src/siinterp.h src/opdef.h src/gdevbbox.h src/iddict.h doc/History2.htm src/gp_stdin.c src/gdevtfax.c src/gdevpjet.c src/gendev.c src/gsexit.h src/gdevphex.c src/gp.h src/gslparam.h src/ivmspace.h src/gdevtfax.h src/gshtscr.c src/bench.c src/gsnogc.c src/gdevbmpa.c src/gsnogc.h src/stdio_.h src/tttables.h src/gdevemap.c src/gp_sysv.c src/gsrefct.h src/iastruct.h src/gdevbjc.h src/gdevpsf2.c src/gzht.h doc/Develop.htm src/gxcvalue.h src/sstring.c src/gxpath.c src/scfparam.c src/iconf.c src/gdevupd.c src/sstring.h src/gxpath.h src/interp.c src/zcrd.c src/iconf.h src/dwnodll.c doc/C-style.htm src/dwdll.c src/interp.h src/gdevm40.c src/dwdll.h src/gsiodisk.c src/sjpegd.c src/gspath2.h src/gdevpsim.c src/dvx-tail.mak src/errors.h src/gp_msprn.c src/gxino12b.c src/gdevmgr.c src/gdevpdfp.c src/gxacpath.c src/gslib.c src/ziodev.c src/gdevmgr.h src/iccinit0.c src/sdcte.c doc/Release.htm src/gxccache.c src/gslib.h src/ifont1.h src/zfunc0.c src/gxmatrix.h src/ifunc.h src/gxfdrop.c src/gp_unifs.c src/gxobj.h src/gxfdrop.h src/gxhintn.c src/gsiorom.c src/isstate.h src/gdevm2.c src/gxhintn.h src/gsiorom.h src/ifilter2.h src/gdevwddb.c src/gspath.c src/gxpcopy.c src/gscolor3.c src/gspath.h src/gdevdjet.c src/gscolor3.h src/rinkj/rinkj-dither.c src/zpath1.c doc/History3.htm src/gdevm24.c src/gp_unix.c src/rinkj/rinkj-dither.h src/inamedef.h src/ilocate.c src/gxdcolor.c src/gdevpm.c src/gscdefs.h src/vmsmath.h src/gscencs.c src/gxdcolor.h src/gzstate.h src/gdevbmpc.c src/gdevpm.h src/gschar0.c src/iht.h src/zdevice.c src/gscie.c src/gscencs.h src/ifapi.h src/gxi16bit.c src/zimage2.c src/gscie.h src/iastate.h src/pipe_.h src/gxbitops.h src/ipacked.h src/gpsync.h src/gsfunc3.c src/gdevperm.c src/gswin.rc src/gsccode.h src/gxpath2.c src/gsfunc3.h src/gp_strdl.c src/gxdevbuf.h src/genconf.c src/sa85d.c src/gscsel.h src/sa85d.h src/openvms.mmk src/zcolor2.c src/gp_stdia.c src/gdev3b1.c src/gxttf.h src/ttconf.h src/genht.c src/zgeneric.c src/gxarith.h src/gxclrect.c src/gsshade.c src/gsshade.h src/msvclib.mak src/gsicc.c src/zcid.c src/dwsetup.cpp src/gdevp2up.c src/gsicc.h src/dwuninst.rc src/gdevpdfr.c src/gdevppla.c src/zmisc1.c src/gsdevmem.c src/gdevppla.h src/wccommon.mak src/gxfcopy.c src/gdevpsft.c src/gxfcopy.h src/gsmisc.c src/gdevtfnx.c src/gdevm4.c src/gxicolor.c src/ldf_jb2.mak src/gxpageq.c src/winint.mak src/gsdparam.c doc/Make.htm doc/Details8.htm src/gxpageq.h src/gxdevrop.h src/gsstype.h src/gdevprn.c src/gdevcif.c src/gxdevndi.c doc/History4.htm src/gdevprn.h src/gxdevndi.h src/iesdata.h src/dxmain.c src/gdevpdfc.c src/iapi.c src/spngpx.h src/btoken.h src/gdevherc.c src/gdevpdfc.h src/iapi.h src/zcharout.c src/gdevepsc.c src/gxdevice.h src/gximage2.c src/srld.c src/zht.c src/gxshade4.c src/sjpx_luratech.c src/gxshade4.h src/iinit.c src/watcw32.mak src/gdevstc1.c src/gxbitmap.h src/sjpx_luratech.h src/gxccman.c src/iinit.h src/gsalphac.c src/gxshade.c src/sbtx.h src/zfunc.c src/gsclipsr.c src/gsalphac.h src/gxshade.h src/gsrop.c src/gsclipsr.h src/idict.c src/gxistate.h src/gsrop.h src/gscoord.c src/idict.h src/macos_carbon_d_pre.h src/gxcolor2.h src/gscoord.h src/genarch.c src/gscedata.c doc/Projects.htm src/gxcindex.h src/gscpm.h src/gscedata.h src/gp_nsync.c src/gdevdgbr.c src/gdevmr2n.c src/gdevdsha.c src/zlib.mak src/gdevxcf.c src/gxtext.h src/zchar1.c src/gscdevn.c src/gscdevn.h src/gdevpdft.c src/gdevpsdi.c src/shcgen.c src/gsiparam.h src/zmisc3.c src/zfapi.c src/zfunc4.c src/malloc_.h src/shcgen.h src/gscpixel.c src/gscpixel.h src/gdevplnx.c src/dirent_.h src/gdevplnx.h src/zfzlib.c src/Makefile.in src/gscsepr.c src/iutil2.c doc/History5.htm src/gscsepr.h src/gxwts.c src/ipcolor.h src/gsimage.c src/sjpeg.h src/iutil2.h src/gstext.c src/gxwts.h src/gsimage.h src/msvccmd.mak src/gstext.h src/gdevpdfe.c src/rinkj/rinkj-byte-stream.c src/gsflip.c src/rinkj/rinkj-byte-stream.h src/gsflip.h src/gdevdljm.c src/zdpnext.c src/geninit.c src/gdevdljm.h src/zusparam.c src/gxchrout.c src/gximage4.c src/gxchrout.h src/gxshade6.c src/gxcoord.h src/gdevpdf.c src/macosx.mak src/tttypes.h src/zpacked.c src/gdevstc3.c src/gsparamx.c src/gp_dosfe.c src/iutil.c src/szlibc.c src/gsparamx.h src/gdevpng.c src/iutil.h src/gzpath.h src/sfxstdio.c src/gxcdevn.h src/sjbig2_luratech.c src/gxropc.h src/gxfcid.h src/gxfont.h src/sjbig2_luratech.h src/gdevccr.c src/mkromfs.c src/gslibctx.c src/gdevdcrd.c src/unix-dll.mak src/gslibctx.h src/zbseq.c src/ziodevsc.c src/gdevdcrd.h src/gdevl31s.c src/zfrsd.c src/iosdata.h src/gdevdjtc.c src/gdevmacpictop.h src/gxino16b.c src/gdevpcx.c src/gdevpxop.h src/zfileio.c src/slzwd.c src/gdevpdfv.c src/gxpflat.c src/gxifast.c src/dwimg.c src/fapi_ft.c src/zsysvm.c src/gsimpath.c src/dwimg.h src/gdevx.c src/gsmemlok.c src/gsos2.rc src/gximage.c src/gdevx.h src/gsmemlok.h src/ziodevs.c src/unixansi.mak src/gdevpsfx.c src/gximage.h src/gscspace.c src/gdevmacttf.h src/gdevm8.c src/gdevpnga.c src/gscspace.h src/gsropc.c src/gsxfont.h src/ttfsfnt.h src/gsjconf.h src/gsfcid.c src/zstack.c src/gsfont.c src/gsropc.h src/gsfont.h src/isave.c doc/History6.htm src/isave.h src/gdevm64.c src/zdict.c src/gxfrac.h src/gx.h src/iccfont.c src/gdevpdfg.c src/png_.h src/gdevps.c src/gxcllzw.c src/gdevpdfg.h src/gxhttile.h doc/API.htm src/gdevpdtb.c src/gsdps1.c src/time_.h src/gdevpdtb.h src/ttfinp.c src/gshsb.c src/pcwin.mak src/vms_x_fix.h src/ziodevst.c src/smtf.c src/ttfinp.h src/x_.h src/gdevtifs.c src/gshsb.h src/smtf.h src/gdevtifs.h src/gximono.c src/fapiufst.c src/szlibe.c src/gxctable.c src/main.h src/gp_vms.c src/gp_iwatc.c src/ugcclib.mak src/gxctable.h src/gdev8bcm.c src/dwsetup.h src/gp_os9.c src/gdevbj10.c src/gxclipm.c src/gdev8bcm.h src/zpaint.c src/stdpre.h src/iplugin.c src/gxclipm.h src/gsgdata.c]</p>
</blockquote>

<p><strong><a name="2006-03-12T202606.745233Z"></a>
2006-03-12T20:26:06.745233Z leonardo</strong></p>
<blockquote>
<pre>
Fix : gx_path_merge_contacting_contours incorrectly released path segments.
DETAILS :

Bug 688591 "Garbager problem with -r72 ppmraw S2_Digitalproof-Forum_x3k.pdf".
Path segments are always allocated in stable memory.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxpcopy.c]</p>
</blockquote>

<p><strong><a name="2006-03-12T062839.018444Z"></a>
2006-03-12T06:28:39.018444Z Ralph Giles</strong></p>
<blockquote>
<pre>
Set the executable property on the new search script.
</pre>
<p>[toolbin/search-svn-revs]</p>
</blockquote>

<p><strong><a name="2006-03-12T024735.883320Z"></a>
2006-03-12T02:47:35.883320Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add a bash script to search for the first svn rev. that succeeds. Binary search
is used to decide which rev to try next.

DETAILS:

There is a 'usage' if no parameters are given. If Ghostscript exits with a
non-zero exit code, then the 'test' operand is not needed. For example,
if rev. 6170 corresponds to 8.53, and the current HEAD is 6647, then the
following will find the first revision which succeeds (6579):

search-svn-revs 6170 6647 'bin/gs -dBATCH -dNODISPLAY -dNOPAUSE -q coloraerial.pdf'

The gs output is captured in 'test.log' so that output can be examined (for
instance using 'grep') for status conditions where the gs exit code is not
useful.

Note that if this is run on casper, where the svn repository is local, then
changing the "svn co ..." line to from "svn+ssh://svn.ghostscript.com/" to
"file:///" will perform the checkout more quickly.

There is a guess made for GS_LIB which is concatenated to the previous definition
(if any), to ./lib:/home/regression/fonts which also works on casper or peeves.

</pre>
<p>[toolbin/search-svn-revs]</p>
</blockquote>

<p><strong><a name="2006-03-10T162052.667102Z"></a>
2006-03-10T16:20:52.667102Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Shading fill applied a wrong path adjustment.
DETAILS :

Bug 688568 "Shading fill applies a wrong path adjustment".
See also the log message of the patch
http://ghostscript.com/pipermail/gs-cvs/2006-February/006379.html

1. Removes the OLD_CODE_COMPATIBILITY flag.
2. An indeterministic bug while computing fill adjustment
   when gx_cpath_intersect_with_params is called (indirectly) from gs_shfill.
3. gs_shfill didn't apply fill adjustment.

EXPECTED DIFFERENCES :

"464-01-fixed.ps" 
"gradmesh.ai" 
"S2_Digitalproof-Forum_x3k.pdf" 
"shading_prob_800.ps" 
"SmoothShading.pdf" 
"STEUER-RollingMesh 1(linear).ai" 
"STEUER-RollingMesh 2(radial).ai" 
"Testform.v1.0.2.pdf" 
</pre>
<p>[src/gxcpath.c src/gxfill.c src/gscolor3.c]</p>
</blockquote>

<p><strong><a name="2006-03-10T082748.551311Z"></a>
2006-03-10T08:27:48.551311Z leonardo</strong></p>
<blockquote>
<pre>
pdfwrite : A simplified implementation for ColorConversionStrategy, continued 4.

DETAILS :

Fixing a crash with imagemask.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfi.c]</p>
</blockquote>

<p><strong><a name="2006-03-09T231558.290889Z"></a>
2006-03-09T23:15:58.290889Z Dan Coby</strong></p>
<blockquote>
<pre>
Add a description of the files which were added for the 'named color' callback.</pre>
<p>[doc/Develop.htm]</p>
</blockquote>

<p><strong><a name="2006-03-09T225958.579801Z"></a>
2006-03-09T22:59:58.579801Z Dan Coby</strong></p>
<blockquote>
<pre>
Set the Id keyword for the 'named color' files.</pre>
<p>[src/gsnamecl.h src/gsncdemo.c src/gsnamecl.c]</p>
</blockquote>

<p><strong><a name="2006-03-09T222434.708728Z"></a>
2006-03-09T22:24:34.708728Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add missing initialization to the streams allocated on the stack or in raw
memory.
Bug 688572

DETAILS:
The following code doesn't initialize all the fields in the stream structure.
stream s; sread_string(&amp;s, ...); but it initializes enough fields to be mostly
working. The bug has been detected by Valgrind.


DIFFERENCES:
None
</pre>
<p>[src/gdevpdfo.c src/gxfcopy.c src/gdevpdfc.c src/gxshade.c src/gdevpdfu.c src/gdevps.c src/gxclpath.c]</p>
</blockquote>

<p><strong><a name="2006-03-09T110919.401813Z"></a>
2006-03-09T11:09:19.401813Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc warnings.

DETAILS :

1. Removed unuseful variable in gstype42.c .
2. The compiler claims an unititialized variable due to its stupidity.
   Forced an initialization to quiet the misleading warning.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxhintn.c src/gstype42.c]</p>
</blockquote>

<p><strong><a name="2006-03-09T110549.196378Z"></a>
2006-03-09T11:05:49.196378Z leonardo</strong></p>
<blockquote>
<pre>
pdfwrite : A simplified implementation for ColorConversionStrategy, continued 3.

DETAILS :

1. is_pattern2_allowed_in_stradegy was underimplemented.
2. Fixed the spelling in "stradegy".

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfg.c]</p>
</blockquote>

<p><strong><a name="2006-03-09T105446.558875Z"></a>
2006-03-09T10:54:46.558875Z leonardo</strong></p>
<blockquote>
<pre>
pdfwrite : A simplified implementation for ColorConversionStrategy, continued 2.

DETAILS :

This implements color conversion for images.

1. make_device_color_space is factored out from psdf_setup_image_colors_filter,
because the substituted color spase is needed for pdf_begin_write_image,
which works before installing the image colors filter.

2. In pdf_begin_typed_image the new variables pcs_device and pcs_orig
provide a right logics for the color space substitution.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[doc/Ps2pdf.htm src/gdevpsdi.c src/gdevpsdf.h src/gdevpdfi.c]</p>
</blockquote>

<p><strong><a name="2006-03-09T021837.723914Z"></a>
2006-03-09T02:18:37.723914Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Work around an internal compiler error C1001 in MSVC 7.1.3088. 
Split expressionss with multiple type conversions into 2 expressions.
Bug 688579

DIFFERENCES:
None
</pre>
<p>[src/gdevpdfe.c]</p>
</blockquote>

<p><strong><a name="2006-03-08T080600.462700Z"></a>
2006-03-08T08:06:00.462700Z leonardo</strong></p>
<blockquote>
<pre>
Fix : MSVC8 warnings.

DETAILS :

Type cast.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/imain.c src/zfile.c]</p>
</blockquote>

<p><strong><a name="2006-03-08T011550.548475Z"></a>
2006-03-08T01:15:50.548475Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix filename lookup in the %rom% device to match the lenth of the 
requested path, not just a common start.
</pre>
<p>[src/gsiorom.c]</p>
</blockquote>

<p><strong><a name="2006-03-08T002156.952083Z"></a>
2006-03-08T00:21:56.952083Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix the unix install to include Fontmap.GS. This was the cause of 
688567.

DETAILS:

The mkromfs utility uses the passed paths as templates for file 
enumeration, so EXTRA_INIT_FILES was added containing only
'Fontmap' and 'FAPI' as a shorthand for the collections "Fontmap*"
and "FAPI*". However, this variable is also used in unixinst.mak
as a literal list of files to install, and so only 'Fontmap' was
actually being installed.

This fix remains confusing, but in practice handles the install.
</pre>
<p>[src/int.mak src/unixinst.mak]</p>
</blockquote>

<p><strong><a name="2006-03-07T051923.913236Z"></a>
2006-03-07T05:19:23.913236Z Ray Johnston</strong></p>
<blockquote>
<pre>
Handle yet another PDF that Acrobat Reader accepts silently that does not
conform to the specification. In this case the /Subtype is /TrueType but
the font is in the /FontFile, not the FontFile2 or FontFile3 stream.
Bug #688585 for customer #780.

DETAILS:

As usual, we issue a descriptive pdfformaterror message complaining about
the non-conformance.

</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2006-03-06T215546.036109Z"></a>
2006-03-06T21:55:46.036109Z Ralph Giles</strong></p>
<blockquote>
<pre>
Calculate the input image stride in the jbig2encode stream init 
procedure so the caller doesn't have to.
</pre>
<p>[src/sjbig2_luratech.c]</p>
</blockquote>

<p><strong><a name="2006-03-06T195428.434131Z"></a>
2006-03-06T19:54:28.434131Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix a problem with CMYK JPXDecode filter image streams.

DETAILS:

The Luratech jp2 decoder does not return a general image size for CMYK 
images (this seems to be a bug) or for images with subsampled 
components. Therefore we use the dimensions of the zeroth component
rather than querying the overall image (component -1).

When the JPXDecode filter implementation is extended to pass the 
required Colorspace information from the image dictionary, it should
also pass the specified width and height of the image, since this
is the actual specification the filter must produce data for.
</pre>
<p>[src/sjpx_luratech.c]</p>
</blockquote>

<p><strong><a name="2006-03-05T212816.082867Z"></a>
2006-03-05T21:28:16.082867Z Ray Johnston</strong></p>
<blockquote>
<pre>
Move init files on %rom% device to lib directory prefix (%rom%lib/). This
prefix is used independent of the host OS. Requested by Ralph and Stefan.
The -d destination prefix might be useful for adding other directories
from other source directories to explicit locations in the %rom% device.
</pre>
<p>[src/imain.c src/mkromfs.c src/int.mak]</p>
</blockquote>

<p><strong><a name="2006-03-02T142022.695510Z"></a>
2006-03-02T14:20:22.695510Z Ray Johnston</strong></p>
<blockquote>
<pre>
Increase the MSVC compiler heap size to allow compilation of large initializers
for the %rom% device. The current setting worked with all Resource files, 35 PS
Type 1 fonts and 17 CJK fonts, the largest of which was the 12.2Mb MOEKai-Regular.
</pre>
<p>[src/msvccmd.mak]</p>
</blockquote>

<p><strong><a name="2006-03-01T205132.316771Z"></a>
2006-03-01T20:51:32.316771Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix opening of lib files so that %rom% files can be found. Previous code
only worked for default (os) device. Change iccinit1 so that gs_init.ps
is opened with .libfile allowing gs_init.ps to be changed even when
COMPILE_INITS=1. Remove another vestige of the old 'static resource'
approach that is no longer needed by COMPILE_INITS=1.

DETAILS:

This was a moderate amount of surgery, but was functionally extracted
from the old lib_fopen_with_libpaths and merged into lib_open_file
which now returns a PS file object. The lib_fopen now gets the FILE *
pointer from the stream structure for use in processing @ files.

Since the -I paths and the environment GS_LIB paths precede the
%rom% device (present when COMPILE_INITS=1) it is now eay to supersede
the init files, cidfmap, Fontmap, during development or debug, so 
there is little downside to running COMPILE_INITS=1 other than making
the executable bigger (6.6Mb vs 3.3Mb with the current CMaps). Defining
the GenericResourceDir string (using -s) on the command line also still
works since the PS code in iccinit1.c only sets this if it is not
predefined. The upside to having COMPILE_INITS=1 is that the gs
executable is fully self contained and does not need to be 'installed'.

If we built in the fonts (in the Resource/Fonts directory) then even
these aren't needed externally. It might reduce some of the common newbie
problems using Ghostscript. Then the executable grows to a healthy 9.9Mb
(fonts don't compress hardly at all currently).

EXPECTED DIFFERENCES.

None.

</pre>
<p>[src/imain.c lib/gs_res.ps src/iccinit1.c src/files.h src/zfile.c]</p>
</blockquote>

<p><strong><a name="2006-03-01T192316.175578Z"></a>
2006-03-01T19:23:16.175578Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add missing files that were part of %rom% implementation.
</pre>
<p>[doc/Develop.htm]</p>
</blockquote>

<p><strong><a name="2006-03-01T022308.031658Z"></a>
2006-03-01T02:23:08.031658Z Dan Coby</strong></p>
<blockquote>
<pre>
Clean up for the last commit for 688575.  The previous commit had problems with the gcc compiler.</pre>
<p>[src/gsnamecl.h]</p>
</blockquote>

<p><strong><a name="2006-03-01T015329.361859Z"></a>
2006-03-01T01:53:29.361859Z Dan Coby</strong></p>
<blockquote>
<pre>
Implement enhancement 688575 Add a cal back mechanism for support of PANTONE
or other special spot colors

DETAILS:

Ghostscript currently does not current have a mechanism for special handling 
of PANTONE or other special spot colors.

Currently all spot colors, in either a DeviceN or a Separation color space, 
are either processed via the alternate tint transform for the color space, or 
treated as a separation (as in the tiffsep device).

Obtaining the proper appearance of PANTONE or other special sets of spot 
colors, when custom inks are not available, usually depends upon values which 
are specific the devices inks, media, etc.  This is not usually handled 
properly by the tint transform function.

This enhancement adds a call back mechanism to allow custom processing of 
DeviceN and Separation color spaces by the calling application.

A description of the implementation is present in the comment block at
the start of src/gsnamecl.c.  An example implementation is provided in
src/gsncdemo.c.  The example implemenation shows how to interface with
the various Ghostscript structures and routines.  The example implementation
only contains a few demo colors.

The entire implemenation is conditionally compiled by a switch called
ENABLE_NAMED_COLOR_CALLBACK in src/gsnamecl.h.  Currently this switch
is set to disable the implementation.
</pre>
<p>[src/lib.mak src/gscspace.h src/gxistate.h src/gsnamecl.h src/gsdparam.c src/gsncdemo.c src/int.mak src/gxdevice.h src/gscsepr.c src/gsnamecl.c src/gscdevn.c src/gxdevcli.h]</p>
</blockquote>

<p><strong><a name="2006-02-28T215239.567783Z"></a>
2006-02-28T21:52:39.567783Z Ralph Giles</strong></p>
<blockquote>
<pre>
Project the WIN32 assembly from compilation on WIN64.
</pre>
<p>[jasper/src/libjasper/jpc/jpc_qmfb.c]</p>
</blockquote>

<p><strong><a name="2006-02-28T212130.311038Z"></a>
2006-02-28T21:21:30.311038Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix a problem with the jasper assembly code. Bug 688545.
</pre>
<p>[jasper/src/libjasper/jpc/jpc_qmfb.c]</p>
</blockquote>

<p><strong><a name="2006-02-28T205129.732995Z"></a>
2006-02-28T20:51:29.732995Z Ralph Giles</strong></p>
<blockquote>
<pre>
Rough support for a JBIG2 encoder stream using the Luratech 
implementation.
</pre>
<p>[src/sjbig2_luratech.h src/sjbig2_luratech.c]</p>
</blockquote>

<p><strong><a name="2006-02-28T054520.159028Z"></a>
2006-02-28T05:45:20.159028Z Ralph Giles</strong></p>
<blockquote>
<pre>
Report error codes returned by the lwf_jp2 library to allow better bug 
reports.
</pre>
<p>[src/sjpx_luratech.c]</p>
</blockquote>

<p><strong><a name="2006-02-28T011735.281917Z"></a>
2006-02-28T01:17:35.281917Z Ray Johnston</strong></p>
<blockquote>
<pre>
Remove deprecated module. No longer used for MS Windows.
</pre>
<p>[src/gp_msio.c]</p>
</blockquote>

<p><strong><a name="2006-02-27T211543.124755Z"></a>
2006-02-27T21:15:43.124755Z Ralph Giles</strong></p>
<blockquote>
<pre>
Output more debugging information with -Zw instead of switching on the 
special JBIG2_DEBUG preprocessor symbol.
</pre>
<p>[src/sjbig2.c src/sjbig2_luratech.c]</p>
</blockquote>

<p><strong><a name="2006-02-24T210718.367421Z"></a>
2006-02-24T21:07:18.367421Z leonardo</strong></p>
<blockquote>
<pre>
Fix : A slow rendering of a colored halftone (2nd attempt).

DETAILS :

Bug 688537 "A very slow rendering to spotcmyk".

The first attempt caused a regression with pkmraw and
has been undone. This patch accounts pkmraw effects,
which are explained below as "Auxiliary changes".

This patch creates a special branch in gx_default_fill_path 
for filling a path with a colored halftone. 
It installs a clipper device and then renders 
a rectangle through it, using the halftone color painting method immediately.

Auxiliary changes : 
The new branch in gx_default_fill_path calls gx_cpath_intersect
for intersecting the filling path with the clipping path.
The latter calls gx_default_fill_path again for 
converting a path into a rectangular clip list. 
Now we pass the fill adjastment parameters 
of the main gx_default_fill_path invocation
to the inner invocation.
Doing so because we need the intersection to be closer to
what the regular algorithm fills. The new function
gx_cpath_intersect_with_params works for that.
Particularly it causes dropout prevention to work 
for clipping, when a character is filled with a halftone.

The clip list accumulator device now sets
gx_device::memory to a real memory manager.
Before now it was NULL. The new code
uses it to allocate working data for the dropout prevention code.

Besides that, gx_cpath_intersect_with_params
now applies fill adjustment in the special 
branch for a rectangular path intersection.

The flag OLD_CODE_COMPATIBILITY minimizes raster differences 
for easier testing. It should be removed later,
because we believe that the old code is not perfect :
it doesn't pass fill adjustment through gx_cpath_intersect
while filling with a shading color. 

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/lib.mak src/gxcpath.c src/gxacpath.c src/gxpath.h src/gxfill.c src/gzacpath.h]</p>
</blockquote>

<p><strong><a name="2006-02-24T161412.132166Z"></a>
2006-02-24T16:14:12.132166Z leonardo</strong></p>
<blockquote>
<pre>
Type 1 hinter : More improvements (continued 2).

DETAILS :

An indeterministic bug in the last patch.

EXPECTED DIFFERENCES :

normal 72 dpi :
"Bug687845.ps" 
"japan.ps"

normal 300 dpi :
Bug687889.pdf 

pdfwrite 72 dpi :

"Bug687603.ps" 
"Bug687845.ps" 
"Bug687889.pdf" 
"japan.ps" 
"NECPNTD.pdf" 
 
pdfwrite 300 dpi :
"Bug687698.ps" 
"Bug687889.pdf" 
"japan.ps" 
</pre>
<p>[src/gxhintn.c]</p>
</blockquote>

<p><strong><a name="2006-02-23T172722.487919Z"></a>
2006-02-23T17:27:22.487919Z Ray Johnston</strong></p>
<blockquote>
<pre>
FIx output format handling for -sOutputFile string. Thanks to Gh Savulescu
for the detailed analysis and patch. Bug 687621 for customers 670 and 770.
--This line, and th se below, will be ignored--

M    src/gsdevice.c
M    src/gdevupd.c
M    doc/Use.htm
</pre>
<p>[src/gdevupd.c doc/Use.htm src/gsdevice.c]</p>
</blockquote>

<p><strong><a name="2006-02-23T071829.475220Z"></a>
2006-02-23T07:18:29.475220Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688551 Need to process transparency in annot appearance streams.

DETAILS:

The fix involves 2 pieces.

1.  Add logic to pageusestransparency to detect if transparency is used
inside of an annotation.  As part of this effort, the logic for detecting
the use of transparency inside of an ExtGState dict was separated into a
separate procedure.

2.  Move the drawing of annotations was moved into showpagecontents.  This
was done since there so that the draw annotation logic is inside of the
push/pop pdf 1.4 transparency device logic.</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2006-02-23T010215.987199Z"></a>
2006-02-23T01:02:15.987199Z Ray Johnston</strong></p>
<blockquote>
<pre>
Remove module that is no longer used by newer COMPILE_INITS method.
</pre>
<p>[lib/gs_stres.ps]</p>
</blockquote>

<p><strong><a name="2006-02-22T234717.158224Z"></a>
2006-02-22T23:47:17.158224Z leonardo</strong></p>
<blockquote>
<pre>
Fix (gxfill) : Unwinding the revision 5699 change due to regressions.

DETAILS :

The patch
http://ghostscript.com/pipermail/gs-cvs/2006-February/006361.html
caused regressions with pkmraw -r72 154-01.ps in
http://ghostscript.com/pipermail/gs-regression/2006-February/001856.html

This reopens the bug
Bug 688537 "A very slow rendering to spotcmyk".

Note that another change was applied to gxfill.c between 5699 and now.

EXPECTED DIFFERENCES :

Should fix 2006-02-22 regressions.

</pre>
<p>[src/gxfill.c]</p>
</blockquote>

<p><strong><a name="2006-02-22T212801.105887Z"></a>
2006-02-22T21:28:01.105887Z Ralph Giles</strong></p>
<blockquote>
<pre>
Document in the generated gsromfs.c which target endianness the file
was built from, to make it easier to track down the source of non-
portability.
</pre>
<p>[src/mkromfs.c src/int.mak]</p>
</blockquote>

<p><strong><a name="2006-02-22T192807.197474Z"></a>
2006-02-22T19:28:07.197474Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix mkromfs to generate 32-bit big_endian values in memory, not native
byte ordering. Corresponding change in gsiorom.c to always read big_endian
32-bit values.
</pre>
<p>[src/mkromfs.c src/gsiorom.c]</p>
</blockquote>

<p><strong><a name="2006-02-22T180107.387840Z"></a>
2006-02-22T18:01:07.387840Z leonardo</strong></p>
<blockquote>
<pre>
Fix (gxfill) : The scanline algorithm could miss a spot boundary.

DETAILS :

Bug 688558 "Incorrect filled path rendering with .2 setflat".

1. merge_ranges wrongly computed the curve end point
   when the curve is scanned in the backward direction
   in gxfill.c (the real bug).

2. Propagates error code from step_al in gxfillsl.h
   (a minor fix).

3. Fixes a typoe in a comment in gxpflat.c .


EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfill.c src/gxpflat.c src/gxfillsl.h]</p>
</blockquote>

<p><strong><a name="2006-02-22T125954.243717Z"></a>
2006-02-22T12:59:54.243717Z leonardo</strong></p>
<blockquote>
<pre>
Fix : An MSVC warning and C style in a recent patch.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/imain.c]</p>
</blockquote>

<p><strong><a name="2006-02-22T121010.472356Z"></a>
2006-02-22T12:10:10.472356Z leonardo</strong></p>
<blockquote>
<pre>
Type 1 hinter : More improvements (continued 2).

DETAILS :

Define PRESERVE_STEM_SLANT for easier experimenting with 
the "preserve stem slant" feature.
See comment in code.

This change is algorithmically equivalent.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxhintn.c]</p>
</blockquote>

<p><strong><a name="2006-02-22T072825.271395Z"></a>
2006-02-22T07:28:25.271395Z Ray Johnston</strong></p>
<blockquote>
<pre>
Remove CWD_PREFIX from makefiles -- mkromfs file list is reordered. Add
the %rom% device to the LIBPATH list in imain.c so that .libfile works.
Also export print_resource_usage for use in non-debug builds. Thanks to
Ralph Giles for the suggestions.
</pre>
<p>[src/openvms.mak src/macosx.mak src/int.mak src/watcw32.mak src/dvx-gcc.mak src/unixansi.mak src/msvclib.mak src/os2.mak src/bcwin32.mak src/imain.c src/ugcclib.mak src/Makefile.in src/unix-gcc.mak src/msvc32.mak src/iccinit1.c src/macos-mcp.mak src/watclib.mak]</p>
</blockquote>

<p><strong><a name="2006-02-22T045342.526904Z"></a>
2006-02-22T04:53:42.526904Z Ralph Giles</strong></p>
<blockquote>
<pre>
Document the pexit_code and user_errors arguments to gsapi_run_string*() 
and provide an example for how to parse a PDF file from inside the 
interpreter. Bug 688549.
</pre>
<p>[doc/API.htm]</p>
</blockquote>

<p><strong><a name="2006-02-22T014123.102136Z"></a>
2006-02-22T01:41:23.102136Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the redundant Fixed type from the internal freetype code and 
replace uses of it with the TT_Fixed type. The un-namespaced version
conflicts with system headers on MacOS.
</pre>
<p>[src/ttfsfnt.h src/tttypes.h src/ttfmain.c]</p>
</blockquote>

<p><strong><a name="2006-02-22T013835.156952Z"></a>
2006-02-22T01:38:35.156952Z Ralph Giles</strong></p>
<blockquote>
<pre>
Use the uint32_t stdint type for the compiled initialization data 
representation. The previous code used 'unsigned long' but assumed
this type was 32 bits, which isn't true on all platforms.
</pre>
<p>[src/mkromfs.c src/gsiorom.c src/gsiorom.h]</p>
</blockquote>

<p><strong><a name="2006-02-21T222425.799346Z"></a>
2006-02-21T22:24:25.799346Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix missing declaration on Windows platforms.
</pre>
<p>[src/mkromfs.c]</p>
</blockquote>

<p><strong><a name="2006-02-21T220115.379976Z"></a>
2006-02-21T22:01:15.379976Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add a missing file from the commits for rev 6600. This was a new file
that was not 'added' before that commit.
</pre>
<p>[src/gsiorom.h]</p>
</blockquote>

<p><strong><a name="2006-02-21T212907.026481Z"></a>
2006-02-21T21:29:07.026481Z Ray Johnston</strong></p>
<blockquote>
<pre>
Implement %rom% IODevice and use it for the COMPILE_INITS=1 builds. Data
is compressed and can include fonts as well as lib init files, Resource
directories and other. The (%rom%) path is inserted as the first path on
the LIBPATH list when COMPILE_INITS=1. The default GenricResourceDir is
set to %rom%Resource/ unless the command line sets -sGenericReourceDir.
Bug 687485.

DETAILS:

See gsiorom.* and mkromfs.c for details of the %rom% structure. The inital
implementation creates a string buffer for the entire file (block by block)
decompression is not yet implemented (a new stream type).

The %rom% IODevice is not PostScript specific so it could be used by non
PS interpreters (GhostPCL) but the creation of gsromfs.c by mkromfs needs
to be performed elsewhere (hint in src/lib.mak).

NOTES:
Tested on unix and Windows. Mac, OS/2 and VMS will need attention as will
non-MSVC tool chains. Since this replaces the old COMPILE_INIT method
don't use COMPILE_INTIS=1 on those platforms unless you are working on
fixing problems or just feel lucky.

The insertion of the %rom% device as the first path in the LIBPATH list
will make changing initfiles during debug more cumbersome, but using 
COMPILE_INITS=1 is really not intended for debugging or development anyway.

EXPECTED DIFFERENCES:

None. (we don't build with COMPILE_INITS).
</pre>
<p>[src/openvms.mak src/mkromfs.c src/gsiorom.c src/macosx.mak src/int.mak src/watcw32.mak src/dvx-gcc.mak src/unixansi.mak src/msvclib.mak src/os2.mak src/lib.mak src/bcwin32.mak lib/winmaps.ps src/ugcclib.mak src/gs.mak src/Makefile.in src/iccinit1.c src/msvc32.mak src/unix-gcc.mak src/unix-aux.mak src/macos-mcp.mak src/unixinst.mak src/msvctail.mak src/watclib.mak lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2006-02-21T134342.400991Z"></a>
2006-02-21T13:43:42.400991Z leonardo</strong></p>
<blockquote>
<pre>
Fix : A slow rendering of a colored halftone.

DETAILS :

Bug 688537 "A very slow rendering to spotcmyk".

This patch creates a special branch for filling a path with
a colored halftone. It installs a clipper device and then renders 
a rectangle through it, using the halftone color painting method immediately.

We're not sure, which color types should go through this branch.
Passing it to our color specialist for review.
Also we're not sure how to get test cases for this branch.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfill.c]</p>
</blockquote>

<p><strong><a name="2006-02-21T133127.980844Z"></a>
2006-02-21T13:31:27.980844Z leonardo</strong></p>
<blockquote>
<pre>
Fix (shadings) : Save C stack space with removing rudimentary data.

DETAILS :

As a rudiment of the old shading algorithm,
mesh_fill_state_common defined a big data field,
which was placed on C stack and vever accessed.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxshade4.h]</p>
</blockquote>

<p><strong><a name="2006-02-21T125434.181498Z"></a>
2006-02-21T12:54:34.181498Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Repair incorrect ToUnicode CMap streams that have no CMapName key.
Bug 688517

DETAILS:
Ghostscript has been writing incorrect ToUnicode CMap without CMapName into
the PDF since version 8.10 (rev. 3611) . This bug is fixed in version 8.54
(rev. 6201).

DIFFERENCES:
None
</pre>
<p>[lib/pdf_font.ps doc/Ps2pdf.htm]</p>
</blockquote>

<p><strong><a name="2006-02-21T124226.666806Z"></a>
2006-02-21T12:42:26.666806Z leonardo</strong></p>
<blockquote>
<pre>
Type 1 hinter : More improvements (continued).

DETAILS :

1. Adjusts t1_hint_range::end_pole if it refers an offcurve pole.
2. Regularizes the hint range adjustment logics (an algorithmically equivalent change).
3. The new function t1_hinter_fix_missed_flex works when a glyph doesn't define flex hints.
   Particularly it works for True Type fonts. 
   It recognizes low curvity boundaries of a flex-like shape and size, 
   and replaces them with a straight segment.
   See comments in code.
   Bug 688552 "A poor grid fitting when a flex hint is missing.".
4. When t1_hinter_fix_missed_flex works, we adjust those stem hint coordinates,
   which point to poles of a flex being unbended.
   For more information see comment in t1_hinter__adjust_stem_hints_by_missed_flex.
4. Improves the logic for obtaining a vdtrace device context in gzspotan.c .
5. t1_hinter__align_stem_poles summarizes alignment from all hint ranges.
   The old code does not do by a mistake.
6. t1_hinter__align_stem_poles now prefers hints, which have both sides applied.
7. The alignment at the stem middle is now applied only to stems,
   which are strongly vertical or horizontal in the design space.
   See comment in t1_hinter__find_stem_middle.

EXPECTED DIFFERENCES :

Massive : 97 of 484 comparefiles.
</pre>
<p>[src/gxhintn.c src/gxhintn.h src/gzspotan.c]</p>
</blockquote>

<p><strong><a name="2006-02-20T073032.227346Z"></a>
2006-02-20T07:30:32.227346Z Dan Coby</strong></p>
<blockquote>
<pre>
Addition to the fix for 688177 Eliminate the 64 bit pixel size limit.

DETAILS:

A one line change was missed in the previous commit for this fix.
Without this change, the maximum numbers of is 16.</pre>
<p>[src/gxcindex.h]</p>
</blockquote>

<p><strong><a name="2006-02-18T183724.764551Z"></a>
2006-02-18T18:37:24.764551Z Ray Johnston</strong></p>
<blockquote>
<pre>
Implement yet another hack for an invalid PDF file that Adobe handles. If
a parameter is missing from the Page tree, check the Root Catalog. This case
had MediaBox in the Root dict, but not anywhere in the Pages tree. Bug 688562
for customer 670.

DETAILS:

MicroPatent probably misinterprets the spec where it mentions "For example,
a document might specify the same media box for all of its pages by including
a MediaBox entry in the root node of the page tree." thinking that the Root
Catalog is the Root of the Page tree, rather than the /Pages object from the
Root.

As is usual, I issue a pdfformaterror Warning when this is detected.

EXPECTED DIFFERENCES:

None.

</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2006-02-17T202352.826051Z"></a>
2006-02-17T20:23:52.826051Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the eventone screening url. artofcode.com has been taking by 
spammners.
</pre>
<p>[src/rinkj/evenbetter-rll.c]</p>
</blockquote>

<p><strong><a name="2006-02-17T071246.743338Z"></a>
2006-02-17T07:12:46.743338Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688560 DeviceN with InDesign gradient causes segmentation fault.

DETAILS:

I am unable to reproduce the reported seg fault.  This patch fixes the
/rangecheck in --.sethalftone5--

The file was specifying a Gray halftone and also specifying the
SeparationORder parameter to select only a Cyan colorant.  This
was creating confusion in the halftone install logic.  The rangecheck
was being generated when the Gray halftone was being confused as a
second Default halftone.

The fix consists of adding a check for the situation in which the
device indicates that a color is supported by the device but not
being used because of the SeparationOrder parameter.  Note:  There
was already one check in the procedure for this situation but a
second check is needed to handle the 'treat gray like black' etc.
cases.
</pre>
<p>[src/gsht.c]</p>
</blockquote>

<p><strong><a name="2006-02-17T041007.505527Z"></a>
2006-02-17T04:10:07.505527Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix recognition of executable names "if" and "ifelse" as valid operations in
the calculator function. Bug 688547.

DIFFERENCED:
None
</pre>
<p>[src/zfunc4.c]</p>
</blockquote>

<p><strong><a name="2006-02-16T195328.400151Z"></a>
2006-02-16T19:53:28.400151Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Propagate error code from s_DCTE_put_params (continued).

DETAILS :

Remove an obsolete comment.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpsdu.c]</p>
</blockquote>

<p><strong><a name="2006-02-15T073341.943841Z"></a>
2006-02-15T07:33:41.943841Z Ralph Giles</strong></p>
<blockquote>
<pre>
Enable &#36;Id keyword substitution on the new luratech integration source 
files.
</pre>
<p>[src/sjbig2_luratech.h src/sjpx_luratech.h src/sjbig2_luratech.c src/ldf_jb2.mak src/lwf_jp2.mak src/sjpx_luratech.c]</p>
</blockquote>

<p><strong><a name="2006-02-15T073040.721233Z"></a>
2006-02-15T07:30:40.721233Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the "RCS" keyword check script to recognize SVN style as well as 
CVS style Id keyword lines. Bug 688554.
</pre>
<p>[toolbin/tests/check_source.py]</p>
</blockquote>

<p><strong><a name="2006-02-15T072626.954211Z"></a>
2006-02-15T07:26:26.954211Z Ralph Giles</strong></p>
<blockquote>
<pre>
Turn on keyword substitution. This is confusing, since the script also 
outputs a &#36;Id: &#36; line for the makefile it generates, but doesn't cause
problems in practice.
</pre>
<p>[toolbin/gen_ldf_jb2.py]</p>
</blockquote>

<p><strong><a name="2006-02-13T202855.328420Z"></a>
2006-02-13T20:28:55.328420Z leonardo</strong></p>
<blockquote>
<pre>
Type 1 hinter : Remove dead development branches.

DETAILS :

This change is syntactically equivalent.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxhintn.c src/gxhintn.h]</p>
</blockquote>

<p><strong><a name="2006-02-13T000528.577164Z"></a>
2006-02-13T00:05:28.577164Z leonardo</strong></p>
<blockquote>
<pre>
Type 1 hinter : More improvements.

DETAILS :

1. Account StemShapH, StemShapW according to Adobe Technical Note #5049.
   The new array stem_snap_vote works for that.
2. Pixel size was wrongly computed with anisitropic CTM.
3. pixel_ox, pixel_oy were mixed with a transposed glyph.
   Fully reconsider OPPOSITE_STEM_COORD_BUG_FIX and remove it.
4. t1_hinter__align_stem_commands sometimes started pole enumeration
   with an off-curve pole.
5. Hint range was wrongly computed for some glyphs.
6. Dotsection didn't work at all.
7. Implements an opposite stem boundary length calculation,
   and accounts it for resolving alignment conflicts.
   new fields boundary_length* work for that.
8. Removed t1_hint_range::contour_index because it worked wrongly.
   Use t1_pole::contour_index instead.
9. A bug in the initialization of max_stem_snap_count :
   the initial value was too small, causing an extra memory allocated.

Bug 687654 "t1_hinter__find_best_standard_width() always returns 0".
Bug 688553 "A poor grid fitting when stems conflict".

EXPECTED DIFFERENCES :

Massive : 343 of 484 comparefiles.
</pre>
<p>[src/gxhintn.c src/gxhintn.h]</p>
</blockquote>

<p><strong><a name="2006-02-12T170811.734787Z"></a>
2006-02-12T17:08:11.734787Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct the accidentally changed hardwired install prefix.
</pre>
<p>[toolbin/tests/run_nightly]</p>
</blockquote>

<p><strong><a name="2006-02-11T234518.286490Z"></a>
2006-02-11T23:45:18.286490Z Ralph Giles</strong></p>
<blockquote>
<pre>
Have the update_ghostscript function return the new SVN revision number 
and include it at the head of the report for clarity. Also, when the
complete report is trimmed from length, indicate so. Bug 688541.
</pre>
<p>[toolbin/tests/run_nightly]</p>
</blockquote>

<p><strong><a name="2006-02-11T234225.162459Z"></a>
2006-02-11T23:42:25.162459Z Ralph Giles</strong></p>
<blockquote>
<pre>
Also add the regression log file required by run_nightly to the example 
config file.
</pre>
<p>[toolbin/tests/testing.cfg.example]</p>
</blockquote>

<p><strong><a name="2006-02-11T231556.623144Z"></a>
2006-02-11T23:15:56.623144Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a cut-and-paste error. The get_baselines script was listed under 
the diff_script key in the example config file.
</pre>
<p>[toolbin/tests/testing.cfg.example]</p>
</blockquote>

<p><strong><a name="2006-02-10T144651.888781Z"></a>
2006-02-10T14:46:51.888781Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Updating the list of standard CMap names.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdtc.c]</p>
</blockquote>

<p><strong><a name="2006-02-09T230019.858380Z"></a>
2006-02-09T23:00:19.858380Z leonardo</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : When emulating the text rendering mode 3, don't render the text to the target device.

DETAILS :

Bug 688534 "Text doubled in produced PDF".

The old code executed 'charpath' with the target device just to move current point.
It caused too heavy effect to the target device.
Replacing with a lighter implementation.

Strongly speaking, this patch is not necessary for the bug 688534,
because the last patch fixed the undesirable effect for pdfwrite.
But we prefer to fix the PDF interpreter to exclude 
the unpleasant effect for other high level devices in general.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[lib/pdf_ops.ps]</p>
</blockquote>

<p><strong><a name="2006-02-09T230006.441182Z"></a>
2006-02-09T23:00:06.441182Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Handle charpath with default implementation.

DETAILS :

Bug 688534 "Text doubled in produced PDF".

The old code handled 'charpath' as a high level operation,
so that the effect to Postscript interpretation erroneusely appears empty,
and the text was erroneusely written to the PDF output.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2006-02-09T180338.118376Z"></a>
2006-02-09T18:03:38.118376Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Propagate error code from s_DCTE_put_params.

DETAILS :

Bug 688544 "Error: /ioerror in --image--".

The old code erroneusely applied DCT compression to DeviceN colors,
causing an ioerror when the number of colorants is greater than 4.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpsdu.c]</p>
</blockquote>

<p><strong><a name="2006-02-09T162853.914553Z"></a>
2006-02-09T16:28:53.914553Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Unwinding the change from rev 6573 to 6574 due to a pdfwrite problem.

DETAILS :

That change caused glyphs to dissapper when rendering a file conferted with pdfwrite.
The effect may be indeterministc.
As we could figure out, the change causes a wrong length of OS/2 table
to be written into embedded True Type fonts.
The problem happens when re-distilling 01_001.pdf, 159.pdf.
We didn't test all files.
Will reopen the bug 688536.

EXPECTED DIFFERENCE :

If a regression appeares with pdfwrite, it should recover.

</pre>
<p>[src/gxttf.h src/gdevpsft.c]</p>
</blockquote>

<p><strong><a name="2006-02-09T151852.242524Z"></a>
2006-02-09T15:18:52.242524Z leonardo</strong></p>
<blockquote>
<pre>
pdfwrite : A simplified implementation for ColorConversionStrategy, continued.

DETAILS :

Bug 687628 "ProcessColorModel /DeviceCMYK does not work".

This is a preliminary implementation of ColorConversionStrategy, 
the values UseDeviceIndependentColor and UseDeviceIndependentColorForImages. 
It also defines a new Ghostscript-specific value Gray.
We don't care about performance due to low demand to this feature.
Due to same reason a systematical testing was not done
except regression testing with the default value LeaveColorUnchanged.
We would appreciate users' help in testing new features.

The value UseDeviceIndependentColorForImages actually works as UseDeviceIndependentColor.

The old Ghostscript-specific value UseDeviceDependentColor
is now depricated. It causes a warning is printed to stderr,
and the valuse automaticly substitutes with sRGB, CMYK or Gray
depending on ProcessColorModel.

See also the documentation change included in the patch.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfp.c doc/Ps2pdf.htm src/gdevpdfc.c src/gdevpdfg.c src/gdevpsdf.h]</p>
</blockquote>

<p><strong><a name="2006-02-09T131628.615804Z"></a>
2006-02-09T13:16:28.615804Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Upgrade ttf_OS_2_t structure to support v.2 (96-byte) OS/2 table.
Bug 688536.

DETAILS:
We don't use new fields in the 96-byte structure and continue to
create 86-byte structures. The extra space is used as a buffer when
we copy the structure intact.

DIFFERENCES:
None
</pre>
<p>[src/gxttf.h src/gdevpsft.c]</p>
</blockquote>

<p><strong><a name="2006-02-09T060312.845053Z"></a>
2006-02-09T06:03:12.845053Z Ray Johnston</strong></p>
<blockquote>
<pre>
Clamp bbox rectangle to avoid q&lt;p case that the rect_intersect macro allows
to avoid allocating transparency buffer that has an incorrect (way too large)
size. Bug 688546.

DETAILS:

WHile it might be more elegant to skip a lot of the transparency logic, it
works to simply end up with a zero width or height of the rectangle. Since
this is an anomalous case, optimization is not that important.

EXPECTED DIFFERENCES:

None. This case did not exist previously in the regression suite.
</pre>
<p>[src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2006-02-08T224130.031403Z"></a>
2006-02-08T22:41:30.031403Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove two source files which in the normal build preprocess to nothing 
from our makefile. This means we can't buid with JB2_TEST, but the empty
modules cause an error on the MSVC build.
</pre>
<p>[src/ldf_jb2.mak]</p>
</blockquote>

<p><strong><a name="2006-02-08T222431.339253Z"></a>
2006-02-08T22:24:31.339253Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add conditionals to the MSVC makefile to simplify switching between the 
Luratech and normal builds. With this patch it is sufficient to specify 
JPX_LIB=luratech and JBIG2_LIB=luratech on the nmake command line.
</pre>
<p>[src/msvc32.mak]</p>
</blockquote>

<p><strong><a name="2006-02-08T203010.070290Z"></a>
2006-02-08T20:30:10.070290Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Calculate the last byte of the character code modulo 256 to prevent the final
value exceed 256 and cause an rangecheck error.
Bug 688535.

DETAILS:
The overflow and the proposed adjustment can happen only when the
last element is 0xFF. 

The last value of the string is not used but discarded at the end of the loop.
So the adjustment has no effect other than suppressing the error with
the minimal changes in the existing code.

EXPECTED DIFFERENCES:
None
</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2006-02-08T195710.364799Z"></a>
2006-02-08T19:57:10.364799Z leonardo</strong></p>
<blockquote>
<pre>
pdfwrite : A simplified implementation for ColorConversionStrategy values CMYK and sRGB .

DETAILS :

Bug 687628 "ProcessColorModel /DeviceCMYK does not work".


This is a preliminary implementation of ColorConversionStrategy, the values CMYK and sRGB . 
We don't care about performance due to low demand to this feature.
Therefore some objects, which use an incompatible color space, 
are converted to low level objects.

The new parameter values were not systematically tested due to low demand.
We would appreciate users' help in testing them.

For now the parameter values UseDeviceIndependentColor and UseDeviceIndependentColorForImages 
work as LeaveColorUnchanged, but the effect of UseDeviceIndependentColor
may be obtained with specifying -dUseCIEColor .

When specifying CMYK or sRGB, the value of ProcessColorModel must be 
DeviceCMYK or DeviceRGB cvorrespondingly.

The color conversion to sRGB is performed with the default color conversion,
which Ghostscript uses to convert to DeviceRGB color model.
Therefore color transfer may be imperfect.
Conversion to CMYK uses the default conversion also.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gsptype2.c src/gdevpdfp.c src/gdevpdfc.c src/gsptype2.h src/gdevpdfg.c src/gdevpsdf.h src/gdevpdfg.h]</p>
</blockquote>

<p><strong><a name="2006-02-08T161713.078988Z"></a>
2006-02-08T16:17:13.078988Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Removes hexadecimal conversion from the code and pass the encrypted
part of the type 1 font to eexec operator intact in all cases.
Bug 688385 from customer 1110.

DETAILS :
The PDF specification states that Type 1 fonts always use binary form of
the encrypted part, but some PDF producers embed fonts with hexadecimal
encoding unchanged. The standard eexec operator recognizes and decodes
them transparently.

The only case that is not handled is a binary-encoded file that looks like a
hexadecimal encoding to eexec. This case has not been observed in the wild. 

EXPECTED DIFFERENCES :
None
</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2006-02-08T135240.832268Z"></a>
2006-02-08T13:52:40.832268Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Consume EOD character in the Hex stream when the stream length is &gt; 0.
Bug 688512 from customer 232.

DETAILS :
This makes our StartData procedure to be compatible with Distiller and CPSI.
It is not clear from the TN #5014 whether an empty Hex stream should have an
EOD character but Adobe doesn't accept it. For non-empty streams they
appear to use an /ASCIIHexDecide filter. Our previous implementation used
readhexstring operator, which didn't consume the trailing EOD characters by
itself and required special code to move the current file past the EOD.

EXPECTED DIFFERENCES :
None
</pre>
<p>[lib/gs_cidfn.ps]</p>
</blockquote>

<p><strong><a name="2006-02-08T062606.073966Z"></a>
2006-02-08T06:26:06.073966Z Ralph Giles</strong></p>
<blockquote>
<pre>
Copy the jasper-1.701.0-gs5 release tag into the Ghostscript trunk.
</pre>
<p>[jasper]</p>
</blockquote>

<p><strong><a name="2006-02-08T062515.908588Z"></a>
2006-02-08T06:25:15.908588Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the current jasper code to make way for the 1.701.0-gs5 release.
</pre>
<p>[jasper]</p>
</blockquote>

<p><strong><a name="2006-02-07T121902.250776Z"></a>
2006-02-07T12:19:02.250776Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : 'shfill' doesn't write a shading's Background.

DETAILS :

Bug 687676 "pdfwrite : shading background can erroneusly appear".

1. pdf_put_shading_common now depends on gs_pattern2_instance_t::shfill.
2. gx_dc_pattern2_save_dc now stores gs_pattern2_instance_t::shfill
   to allow pdf_reset_color to account it with gx_hld_saved_color_equal.

EXPECTED DIFFERENCES :

A progression in pdfwrite with hsadings :

464-01-fixed.ps 
483-01.ps
483-05-fixed.ps
</pre>
<p>[src/gsptype2.c src/gsdcolor.h src/gdevpdfv.c]</p>
</blockquote>

<p><strong><a name="2006-02-06T110412.919537Z"></a>
2006-02-06T11:04:12.919537Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Allow instandard glyph names when synthesising an Encoding for 'glyphshow'.

DETAILS :

Bug 688017 "ps2pdf problem with CFF fontset resources".

The old code emited 'rangecheck' when glyphshow uses a glyph name,
which doesn't appear in Postscript font Encoding.
It hapens so due to the old code forces standard glyph names,
because other old procedures were restricted with them.
As result, such glyphs converted to rasters.

The modern code is not restricted with standard glyph names,
so we simply pass instandard ones when can't find a standard one.

EXPECTED DIFFERENCES :

Bug688154.ps
</pre>
<p>[src/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2006-02-05T142524.143977Z"></a>
2006-02-05T14:25:24.143977Z leonardo</strong></p>
<blockquote>
<pre>
Fix  : Removing 'assert' from gxccman.c (continued).

DETAILS :

Add missing braces in the error code propagation introduced in rev. 6555.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/zfont.c]</p>
</blockquote>

<p><strong><a name="2006-02-04T035637.709032Z"></a>
2006-02-04T03:56:37.709032Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Following FreeType 2 implementation, ignore incorrect SHC command.
Bug 688501

EXPECTED DIFFERENCES :
None
</pre>
<p>[src/ttinterp.c]</p>
</blockquote>

<p><strong><a name="2006-02-04T002359.520737Z"></a>
2006-02-04T00:23:59.520737Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688177 Eliminate the 64 bit pixel size limit.

DETAILS:

This change implements a scheme for compressing colorant values into
a gx_color_index.  For details of the compression scheme, see comments
before the devn_encode_compressed_color in src/gdevdevn.c.  With this
change, a maximum of 64 colorants are supported.</pre>
<p>[src/gdevpsd.c src/gdevdflt.c src/gsccolor.h src/gdevtsep.c src/gdevdevn.c src/gsovrc.c doc/Devices.htm src/devs.mak src/gdevdevn.h]</p>
</blockquote>

<p><strong><a name="2006-02-03T234257.853736Z"></a>
2006-02-03T23:42:57.853736Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a typo in the previous commit. jas_dump_image must be protected 
by #ifdef DEBUG to prevent unused variable warnings.
</pre>
<p>[src/sjpx.c]</p>
</blockquote>

<p><strong><a name="2006-02-03T233024.204851Z"></a>
2006-02-03T23:30:24.204851Z Ralph Giles</strong></p>
<blockquote>
<pre>
Code cleanup. Remove unused headers and report decoded image parameters 
through -Zw instead of with general or -Zs debug prints.
</pre>
<p>[src/sjpx.c src/sjbig2_luratech.c src/sjpx_luratech.c]</p>
</blockquote>

<p><strong><a name="2006-02-03T154513.779132Z"></a>
2006-02-03T15:45:13.779132Z leonardo</strong></p>
<blockquote>
<pre>
Fix  : Removing 'assert' from gxccman.c .

DETAILS :

Doing so by Stefan's and Raph's requests.
Changes to other modules propagate error codes.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/isave.h src/gxfcache.h src/imain.c src/zvmem.c src/gsfont.c src/gxccman.c src/zfont.c src/gsfont.h src/gxccache.c src/isave.c]</p>
</blockquote>

<p><strong><a name="2006-02-03T154042.652558Z"></a>
2006-02-03T15:40:42.652558Z leonardo</strong></p>
<blockquote>
<pre>
Fix  : Removing 'assert' from gzspotan.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gzspotan.c]</p>
</blockquote>

<p><strong><a name="2006-02-03T153914.475213Z"></a>
2006-02-03T15:39:14.475213Z leonardo</strong></p>
<blockquote>
<pre>
Fix  : Removing 'assert' from siscale.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/siscale.c]</p>
</blockquote>

<p><strong><a name="2006-02-03T153747.547536Z"></a>
2006-02-03T15:37:47.547536Z leonardo</strong></p>
<blockquote>
<pre>
Fix  : Removing 'assert' from gxcht.c, gxdhtserial.c

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxcht.c src/siinterp.c src/zcfont.c]</p>
</blockquote>

<p><strong><a name="2006-02-03T153525.138745Z"></a>
2006-02-03T15:35:25.138745Z leonardo</strong></p>
<blockquote>
<pre>
Fix  : Removing 'assert' from gxdhtserial.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxdhtserial.c]</p>
</blockquote>

<p><strong><a name="2006-02-03T153427.957959Z"></a>
2006-02-03T15:34:27.957959Z leonardo</strong></p>
<blockquote>
<pre>
Fix  : Removing 'assert' from gsfunc0.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gsfunc0.c]</p>
</blockquote>

<p><strong><a name="2006-02-03T153321.731016Z"></a>
2006-02-03T15:33:21.731016Z leonardo</strong></p>
<blockquote>
<pre>
Fix  : Removing 'assert' from gsfcmap.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gsfcmap.c]</p>
</blockquote>

<p><strong><a name="2006-02-03T153212.047666Z"></a>
2006-02-03T15:32:12.047666Z leonardo</strong></p>
<blockquote>
<pre>
Fix  : Removing 'assert' from gdevpsft.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpsft.c src/gdevpxut.c]</p>
</blockquote>

<p><strong><a name="2006-02-03T131355.222042Z"></a>
2006-02-03T13:13:55.222042Z leonardo</strong></p>
<blockquote>
<pre>
Fix  : Removing 'assert' from the FreeType FAPI bridge.

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/write_t1.c src/write_t2.c src/fapi_ft.c]</p>
</blockquote>

<p><strong><a name="2006-02-03T125224.873880Z"></a>
2006-02-03T12:52:24.873880Z leonardo</strong></p>
<blockquote>
<pre>
Fix  : Removing 'assert' from gdevpsf1.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpsf1.c src/gdevpdfc.c src/gdevddrw.c]</p>
</blockquote>

<p><strong><a name="2006-02-03T124042.456435Z"></a>
2006-02-03T12:40:42.456435Z leonardo</strong></p>
<blockquote>
<pre>
Fix  : Removing 'assert' from gxpflat.c .

DETAILS :

Doing so by Stefan's and Raph's requests.
Changes to other modules propagate errors form gxpflat.c .

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/lib.mak src/gxfilltr.h src/gzpath.h src/gxfill.c src/gxpflat.c src/gxfillsl.h]</p>
</blockquote>

<p><strong><a name="2006-02-03T123901.222510Z"></a>
2006-02-03T12:39:01.222510Z leonardo</strong></p>
<blockquote>
<pre>
Fix  : Removing 'assert' from gdewddrw.c, gxdtfill.h .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxdtfill.h src/gdevddrw.c]</p>
</blockquote>

<p><strong><a name="2006-02-03T123510.242248Z"></a>
2006-02-03T12:35:10.242248Z leonardo</strong></p>
<blockquote>
<pre>
Fix  : Removing 'assert' from gxshade1.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfdrop.c]</p>
</blockquote>

<p><strong><a name="2006-02-03T123409.374887Z"></a>
2006-02-03T12:34:09.374887Z leonardo</strong></p>
<blockquote>
<pre>
Fix  : Removing 'assert' from gxshade1.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxshade1.c]</p>
</blockquote>

<p><strong><a name="2006-02-03T095500.285432Z"></a>
2006-02-03T09:55:00.285432Z leonardo</strong></p>
<blockquote>
<pre>
Fix (font machinery) : Remove the dependency of the graphics library code on the PS interpreter code.

DETAILS :

This change is algorithmically equivalent.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfcopy.c src/gxfont42.h src/gstype42.c src/zfont42.c]</p>
</blockquote>

<p><strong><a name="2006-02-02T222238.927751Z"></a>
2006-02-02T22:22:38.927751Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Devcice parameters placed in a wrong memory space.

DETAILS :

Bug 688531 "Segmentation fault running pdfwrite from 219-01.ps".

1. See comment in code.
2. Inserted gs_device_pdf::pdf_memory initialization into gdev_pdf_put_params,
The old code initializad in pdf_open, which is called after gdev_pdf_put_params.
We keep the old initialization because the PCL intrepreter may use it.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfp.c]</p>
</blockquote>

<p><strong><a name="2006-02-02T222142.095676Z"></a>
2006-02-02T22:21:42.095676Z leonardo</strong></p>
<blockquote>
<pre>
Unwinding the last patch due to wrong log message.</pre>
<p>[src/gdevpdfp.c]</p>
</blockquote>

<p><strong><a name="2006-02-02T221218.484170Z"></a>
2006-02-02T22:12:18.484170Z leonardo</strong></p>
<blockquote>
<pre>
Fix  : Removing 'assert' from gxshade6.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfp.c]</p>
</blockquote>

<p><strong><a name="2006-02-02T200035.433481Z"></a>
2006-02-02T20:00:35.433481Z Ray Johnston</strong></p>
<blockquote>
<pre>
Use the TT font 'Full Name' (name id #4) if the PS name (id #6) is not present.
Related to Bug 688523 for customer 580.
</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2006-02-02T121433.590232Z"></a>
2006-02-02T12:14:33.590232Z leonardo</strong></p>
<blockquote>
<pre>
Fix : A wrong CTM in clist after a create compositor command.

DETAILS :

When a create compositor command is written to clist,
the imager state copy was not updated in the clist writer device,
causing a further CTM desyncronization.
It caused a wrong clist playback for the bands affected by the compositor.

Debugged with GS_Stroke_error.pdf, bugsample.pdf, Bug687724.pdf 
with the patch for 688518 applied.
Have no tests for observibg this bug without the patch for 688518.

EXPECTED DIFFERENCES :

None,
</pre>
<p>[src/gxclimag.c]</p>
</blockquote>

<p><strong><a name="2006-02-02T004628.135273Z"></a>
2006-02-02T00:46:28.135273Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the makefiles for the lwf_jp2 source v1.03 and ldf_jb2 source v2.04.
</pre>
<p>[src/ldf_jb2.mak src/lwf_jp2.mak]</p>
</blockquote>

<p><strong><a name="2006-02-01T222732.766702Z"></a>
2006-02-01T22:27:32.766702Z Ralph Giles</strong></p>
<blockquote>
<pre>
Include for reference a script to generate ldf_jb2.mak from the source 
directories, since the file list fluctuates somewhat from version to 
version.
</pre>
<p>[toolbin/gen_ldf_jb2.py]</p>
</blockquote>

<p><strong><a name="2006-02-01T211348.761011Z"></a>
2006-02-01T21:13:48.761011Z leonardo</strong></p>
<blockquote>
<pre>
Fix  : Removing 'assert' from gxshade6.c .

DETAILS :

Doing so by Stefan's and Raph's requests.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2006-02-01T205640.633246Z"></a>
2006-02-01T20:56:40.633246Z Ray Johnston</strong></p>
<blockquote>
<pre>
Make the initial summary line say "ERROR" instead of "DIFFER" if
we get a non-zero exit code during pdfwrite checking.

</pre>
<p>[toolbin/tests/gstestutils.py]</p>
</blockquote>

<p><strong><a name="2006-02-01T184736.861536Z"></a>
2006-02-01T18:47:36.861536Z Ralph Giles</strong></p>
<blockquote>
<pre>
Raise the limit of the size of the complete regression beyond which it is not included to 300 KB.
</pre>
<p>[toolbin/tests/run_nightly]</p>
</blockquote>

<p><strong><a name="2006-02-01T181921.935317Z"></a>
2006-02-01T18:19:21.935317Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove an unnecessary terminal '\' in the definition of JAS_EXCF_ which causes problems with make 
in SGI Irix. Closes bug 688529.
</pre>
<p>[src/jasper.mak]</p>
</blockquote>

<p><strong><a name="2006-02-01T100925.288062Z"></a>
2006-02-01T10:09:25.288062Z leonardo</strong></p>
<blockquote>
<pre>
Fix (font machinery) : Dereferenced NULL in gx_add_char_bits.

DETAILS :

Bug 688527 "A crash (a null pointer deref) in gx_add_char_bits".

Type 3 fonts are not included into the dir-&gt;orig_fonts list.
So the list may be empty.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxccman.c]</p>
</blockquote>

<p><strong><a name="2006-01-30T214102.804104Z"></a>
2006-01-30T21:41:02.804104Z Ralph Giles</strong></p>
<blockquote>
<pre>
Rename HAVE_LDF_JB2 and friend to USE_LDF_JB2 since this is a directive
more than just an availability test.
</pre>
<p>[src/zfjbig2.c src/zfjpx.c]</p>
</blockquote>

<p><strong><a name="2006-01-30T104952.354325Z"></a>
2006-01-30T10:49:52.354325Z Ralph Giles</strong></p>
<blockquote>
<pre>
Move the definition of the 3rd party library include paths for the jbig2 
and jpeg2k implementations back into gs.mak.

DETAILS:

Although it makes more sense to define these in the makefile for each 
library, they are also needed for building the calling code in the 
graphics library and interpreter. This causes a circular dependency
with tools such as nmake which perform variable resolution in a 
single-pass.
</pre>
<p>[src/gs.mak src/jbig2.mak src/ldf_jb2.mak src/lwf_jp2.mak src/jasper.mak]</p>
</blockquote>

<p><strong><a name="2006-01-30T103053.447513Z"></a>
2006-01-30T10:30:53.447513Z Ralph Giles</strong></p>
<blockquote>
<pre>
Split the JPXDecode filter build at the interpreter level so the correct 
include path is used.
</pre>
<p>[src/int.mak]</p>
</blockquote>

<p><strong><a name="2006-01-30T092034.569051Z"></a>
2006-01-30T09:20:34.569051Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct build path errors in the Luratech makefiles.
</pre>
<p>[src/ldf_jb2.mak src/lwf_jp2.mak]</p>
</blockquote>

<p><strong><a name="2006-01-30T085104.157759Z"></a>
2006-01-30T08:51:04.157759Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add the new Luratech makefiles to the MSVC and MacOS CodeWarrior builds.
</pre>
<p>[src/macos-mcp.mak src/winlib.mak]</p>
</blockquote>

<p><strong><a name="2006-01-30T084730.163980Z"></a>
2006-01-30T08:47:30.163980Z Ralph Giles</strong></p>
<blockquote>
<pre>
Rename jbig2_luratech.mak to ldf_jb2.mak to make upstream conventions.
</pre>
<p>[src/Makefile.in src/ldf_jb2.mak src/jbig2_luratech.mak]</p>
</blockquote>

<p><strong><a name="2006-01-30T075521.176824Z"></a>
2006-01-30T07:55:21.176824Z Ralph Giles</strong></p>
<blockquote>
<pre>
Initial check in of a makefile for building the Luratech LWF JPEG 2000 
CSDK source as part of Ghostscript, and add it to the autoconf build. 
Also associated cleanup.
</pre>
<p>[src/lib.mak src/Makefile.in src/lwf_jp2.mak src/jbig2_luratech.mak]</p>
</blockquote>

<p><strong><a name="2006-01-30T064114.593860Z"></a>
2006-01-30T06:41:14.593860Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add hooks for passing license keys to the Luratech jpeg2k and jbig2 
implementations, for those linking against CSDK builds that require
this.
</pre>
<p>[src/sjbig2_luratech.c src/sjpx_luratech.c]</p>
</blockquote>

<p><strong><a name="2006-01-30T063950.565912Z"></a>
2006-01-30T06:39:50.565912Z Ralph Giles</strong></p>
<blockquote>
<pre>
Include jbig2_luratech.mak in the autoconf build.
</pre>
<p>[src/Makefile.in]</p>
</blockquote>

<p><strong><a name="2006-01-30T063902.652740Z"></a>
2006-01-30T06:39:02.652740Z Ralph Giles</strong></p>
<blockquote>
<pre>
Switch the choice of JBIG2Decode and JPXDecode stream implementations
based on a preprocessor define.
</pre>
<p>[src/zfjbig2.c src/zfjpx.c]</p>
</blockquote>

<p><strong><a name="2006-01-30T063731.179455Z"></a>
2006-01-30T06:37:31.179455Z Ralph Giles</strong></p>
<blockquote>
<pre>
Minor build variable rearrangement and clean up related to the Luratech 
JBIG2 decoder integration.
</pre>
<p>[src/lib.mak src/gs.mak src/int.mak src/jbig2.mak src/jasper.mak]</p>
</blockquote>

<p><strong><a name="2006-01-30T053432.468930Z"></a>
2006-01-30T05:34:32.468930Z Ralph Giles</strong></p>
<blockquote>
<pre>
Initial check in of a makefile for building the Luratech LDF JBIG2 CSDK
source as part of Ghostscript.
</pre>
<p>[src/jbig2_luratech.mak]</p>
</blockquote>

<p><strong><a name="2006-01-29T235446.647329Z"></a>
2006-01-29T23:54:46.647329Z Ralph Giles</strong></p>
<blockquote>
<pre>
Fix a missing dependency in the new sjbig2 build rules.
</pre>
<p>[src/lib.mak]</p>
</blockquote>

<p><strong><a name="2006-01-29T233618.372226Z"></a>
2006-01-29T23:36:18.372226Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the autotools makefile for the jbig2/jpeg2k indirection changes.
</pre>
<p>[src/Makefile.in]</p>
</blockquote>

<p><strong><a name="2006-01-29T233107.833789Z"></a>
2006-01-29T23:31:07.833789Z Ralph Giles</strong></p>
<blockquote>
<pre>
Introduce a level of indirection so the builds for the two different 
jbig2 and jpeg2k implementations can coexist. Also, add jasper to the 
OS/2 and OpenVMS builds, and update the OpenVMS makefiles now that the 
third-party libraries are included with the source release.
</pre>
<p>[src/openvms.mak src/watcw32.mak src/macosx.mak src/dvx-gcc.mak src/jbig2.mak src/unixansi.mak src/msvclib.mak src/os2.mak src/openvms.mmk src/lib.mak src/ugcclib.mak src/gs.mak src/unix-gcc.mak src/msvc32.mak src/macos-mcp.mak src/wccommon.mak src/watclib.mak]</p>
</blockquote>

<p><strong><a name="2006-01-29T215857.475609Z"></a>
2006-01-29T21:58:57.475609Z Ralph Giles</strong></p>
<blockquote>
<pre>
Rename the jasper-oriented top-level makefile elements to the more
generic JPX.
</pre>
<p>[src/lib.mak src/gs.mak src/int.mak src/Makefile.in src/msvc32.mak src/macos-mcp.mak src/jasper.mak src/winlib.mak]</p>
</blockquote>

<p><strong><a name="2006-01-29T210426.485513Z"></a>
2006-01-29T21:04:26.485513Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Avoid the dependency of a charproc on char code, step 6.

DETAILS :

This finally completes the fix for the bug 688513 "pdfwrite: redundant CharProcs elements.".
It repairs minor defects of last patches.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdtt.c src/gdevpdtf.c src/gdevpdti.c src/devs.mak src/gdevpdti.h]</p>
</blockquote>

<p><strong><a name="2006-01-29T193526.757129Z"></a>
2006-01-29T19:35:26.757129Z Ralph Giles</strong></p>
<blockquote>
<pre>
Improve the documentation for the CAPOPT unix makefile variable.
</pre>
<p>[src/macosx.mak src/Makefile.in src/unix-gcc.mak]</p>
</blockquote>

<p><strong><a name="2006-01-29T180611.349450Z"></a>
2006-01-29T18:06:11.349450Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Avoid the dependency of a charproc on char code, step 5.

DETAILS :

This completes the fix for the bug 688513 "pdfwrite: redundant CharProcs elements.".

1. Moving char_name from the charproc structure to pdf_char_proc_ownership_t,
because charprocs with different glyph names may have same command stream.

2. pdf_is_charproc_compatible is changed to a weaker condition
to allow to merge char procs with different names.
However we prefer fonts with a compatible encoding, which are attached to same PS font, 
in order to prevent mixing glyphs from various fonts.

3. charproc_compatibility_data_t is defined to reduce the gx_device_pdf::find_resource_param bogus.

4. pdf_char_widths_from_charprocs is a new function for reconstructing
real_width when a PDF Type 3 font is attached to another PS font.
Due to historical reason, real_width is a property of the attachment,
rather in novadays it should be a property of PDF font.
It happens because a PDF font may migrate to another PS font due to charproc merging,
especially in case of glyph variations.

5. The condition for involving pdf_find_same_charproc has been changed 
in pdf_end_charproc_accum to a weaker one, to allow to merge with charprocs from other fonts.
With the old condition a charproc didn't merge when appears in a font at the first time,
so it never merged with ones from other fonts.

6. Added a marking of glyph names in pdf_char_proc_ownership_t for the garbager.

7. Now we mark glyph names for garbager for all simple fonts,
except synthesised bitmap fonts (which use char codes instead glyph names).
The old code did for non-bitmap Type 3 only, and theretore it can have an indeterminizm
with other simple font types.

8. Minor change to gsstruct.c :
Added gs_*_st_strings1_ptrs4 and moved gs_*_st_strings1_ptrs1 
for a better code grouping.

This change causes a minor dirrefernce in raster with Bug687660a.ps with pdfwrite at 72 dpi.
It happens because the space glyph appears same for two fonts, which form a single text,
so that the font change appears some earier. However it causes the representation
of a glyph position to change from an absolute coordinate (in user points) 
to the Tj offset operand (in the 1000-unit scale). 
It causes a 1 pixel noize (the glyph shift) due to a different rounding.

EXPECTED DIFFERENCES :

pdfwrite at 72 dpi :
Bug687660a.ps 
</pre>
<p>[src/gdevpdfx.h src/gdevpdtt.c src/gdevpdtf.c src/gsstruct.h src/gdevpdtw.c src/gdevpdti.c src/gdevpdtt.h src/devs.mak src/gdevpdti.h]</p>
</blockquote>

<p><strong><a name="2006-01-29T174858.910034Z"></a>
2006-01-29T17:48:58.910034Z leonardo</strong></p>
<blockquote>
<pre>
Fix (font machinery) : Inaccurate condition in zfont_mark_glyph_name.

DETAILS :

The old condition passes standard encoding indices as Postscript name indices.
It could cause a crash in the garbager.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/int.mak src/zfont.c]</p>
</blockquote>

<p><strong><a name="2006-01-29T080811.685892Z"></a>
2006-01-29T08:08:11.685892Z Ralph Giles</strong></p>
<blockquote>
<pre>
Initial checkin of /JBIG2Decode filter support based on the
proprietary Luratech implementation.
</pre>
<p>[src/sjbig2_luratech.h src/lib.mak src/sjbig2_luratech.c]</p>
</blockquote>

<p><strong><a name="2006-01-29T011220.057028Z"></a>
2006-01-29T01:12:20.057028Z Ralph Giles</strong></p>
<blockquote>
<pre>
Initial checkin of /JPXDecode filter support based on the 
proprietary Luratech implementation.

This version uses the system malloc and only handles 8-bit-
per-component images without channel subsampling.
</pre>
<p>[src/lib.mak src/sjpx_luratech.h src/sjpx_luratech.c]</p>
</blockquote>

<p><strong><a name="2006-01-29T010443.551064Z"></a>
2006-01-29T01:04:43.551064Z Ralph Giles</strong></p>
<blockquote>
<pre>
Rearrange code for clarity.
</pre>
<p>[src/sjbig2.h]</p>
</blockquote>

<p><strong><a name="2006-01-27T215827.997608Z"></a>
2006-01-27T21:58:27.997608Z Ralph Giles</strong></p>
<blockquote>
<pre>
Make ps2epsi create a temporary file more securely in an owner-locked 
directory. Closes bug #687243.
</pre>
<p>[lib/ps2epsi]</p>
</blockquote>

<p><strong><a name="2006-01-27T195213.853680Z"></a>
2006-01-27T19:52:13.853680Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Avoid the dependency of a charproc on char code, step 4.

DETAILS :

This is a preparation for the bug 688513 "pdfwrite: redundant CharProcs elements.".

This change moves char_code and the font reference from the charproc structure 
to pdf_char_proc_ownership_t.

The function pdf_is_same_charproc has been reorganized due to the data structure change,
and the condition become weaker - not accoutning character codes
and Postscript glyph id.

With this change pdf_end_charproc_accum performs an untrivial charproc substitution
with 238-01.ps due to a weaker condition for charproc equality
But we still have an example (t1.ps from the bug 238-01.ps),
which needs a further improvement.

Adding gx_dfevice_pdf::find_resource_param is bogus.
Would like to do without it, but don't want to enlarge the patch.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfx.h src/gdevpdtt.c src/gsstruct.h src/gdevpdfb.h src/gdevpdti.c]</p>
</blockquote>

<p><strong><a name="2006-01-27T175549.774445Z"></a>
2006-01-27T17:55:49.774445Z Ray Johnston</strong></p>
<blockquote>
<pre>
Handle indirect object reference for CIDSystemInfo element. Bug 688515
for customer 870.
</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2006-01-27T094538.491381Z"></a>
2006-01-27T09:45:38.491381Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Avoid the dependency of a charproc on char code, step 3.

DETAILS :

This is a preparation for the bug 688513 "pdfwrite: redundant CharProcs elements.".

This change is algorithmically equivalent.
It defines a new type pdf_char_proc_ownership_t for
representing a many-to-many correspondence
of charprocs to fonts. But this patch still keeps
the old many-to-one constraint to simplify the testing.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfx.h src/gdevpdti.c src/gdevpdtf.h]</p>
</blockquote>

<p><strong><a name="2006-01-27T081227.899649Z"></a>
2006-01-27T08:12:27.899649Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Remove pdf_begin_char_proc_generic.

DETAILS :

This is a preparation for the bug 688513 "pdfwrite: redundant CharProcs elements.".

This change is algorithmically equivalent.
It inlines pdf_begin_char_proc_generic.
pdf_begin_char_proc_generic is an old attempt to factor out
a common portion of code for bitmap (synthesised) and non-bitmap fonts,
but that attempt appeared unuseful.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdti.c]</p>
</blockquote>

<p><strong><a name="2006-01-26T131807.717021Z"></a>
2006-01-26T13:18:07.717021Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Avoid the dependency of a charproc on char code, step 2.

DETAILS :

This is a preparation for the bug 688513 "pdfwrite: redundant CharProcs elements.".

This change is algorithmically equivalent.
It drops last asserts and simplifies the code with them.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2006-01-26T130755.087988Z"></a>
2006-01-26T13:07:55.087988Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Avoid the dependency of a charproc on char code, step 1.

DETAILS :

This is a preparation for the bug 688513 "pdfwrite: redundant CharProcs elements.".

This change is algorithmically equivalent.
It moves the Type 3 character code computation from pdf_text_set_cache
to a portion, which works before performing the interpreter callout
for executing a Postscript charproc. Doing so to exclude the necessity 
of storing the character code in pdf_char_proc_t.

We inserted additional asserts to define invariants explicitely.
We'll remove them after regression testing.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdtt.c src/gdevpdtt.h]</p>
</blockquote>

<p><strong><a name="2006-01-26T102936.328224Z"></a>
2006-01-26T10:29:36.328224Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Prevent extra encoding elements (continued).

DETAILS :

Bug 687669 "pdfwrite : extra encoding elements with a Type 3 font".
Cleaning Cygwin/gcc warnings from the last patch.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdte.c]</p>
</blockquote>

<p><strong><a name="2006-01-26T102140.117753Z"></a>
2006-01-26T10:21:40.117753Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Prevent extra encoding elements.

DETAILS :

Bug 687669 "pdfwrite : extra encoding elements with a Type 3 font".

The old code created encoding elements for entire text
with no regard to font changes. Some fonts got extra encoding elements 
for glyphs, which were moved to another font.

1. Converting pdf_encode_string into pdf_encode_string_element
   with dropping the text characters cycle.

2. Call it in process_text_modify_width, process_text_return_width
   immediately before processing a character.

3. pdf_encode_process_string is renamed into pdf_process_string_aux
   (because now it is an auxiliary function for pdf_process_string).

4. Few function prototype changes done to pass necessary data
   to pdf_encode_string_element.

After this reorganization a part of scan_cmap_text
appars to duplicate a part of pdf_encode_string_element.
Delaying a further reorganization for better times. 

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdtc.c src/gdevpdte.c src/gdevpdtt.h]</p>
</blockquote>

<p><strong><a name="2006-01-26T082039.942266Z"></a>
2006-01-26T08:20:39.942266Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Optimize cos_dict_put_copy.

DETAILS :

The old implementation produced a lot of garbage due to redundant 
adding same key-value pair to a cos_dict_t instance.
It happens because cos_dict_put_copy first creates a copy of the value in the heap.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfo.c]</p>
</blockquote>

<p><strong><a name="2006-01-25T230608.925944Z"></a>
2006-01-25T23:06:08.925944Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a syntax error.
</pre>
<p>[toolbin/tests/run_nightly]</p>
</blockquote>

<p><strong><a name="2006-01-25T221419.978978Z"></a>
2006-01-25T22:14:19.978978Z leonardo</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing composite fonts with Type 3 descendents (continued).

DETAILS :

Fixing a heap damage bug in the last patch,
which appeared due to inaccurate commitment of a wrong file state.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2006-01-25T215122.137980Z"></a>
2006-01-25T21:51:22.137980Z leonardo</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing composite fonts with Type 3 descendents.

DETAILS :

Bug 687875 "pdfwrite : Type 0 FMapType 9 font with a Type 3 descendent converts to bitmaps".
Bug 687298  "(pdfwrite) composite font with Type 3 descendent".

The old code converted such fonts into bitmap fonst.
The new code converts them into multiple Type 3 fonts ;

A. If a composite font uses a CMap mapping,
the Type 3 font descendent may use any CID from the CMap.
Therefore such single Type 3 font is being converted into
multiple Type 3 fonts, each of which is restricted
with 256 characters by the PDF specification.

B. If a composite font has multiple Type 3 descendents,
each descendent form a separate Type 3 font in the PDF output
(or multiple fonts if it falls into both cases (A) and (B)).

This is a case-driven implementation, which is done with adding special branches into 
scan_cmap_text and process_text_modify_width for handling the failed cases.
Other new cases (which we have no samples for) may may need further improvements.

EXPECTED DIFFERENCES :

pdfwrite :
020-01.ps
Bug687845.ps
</pre>
<p>[src/gdevpdfx.h src/gdevpdtc.c src/gdevpdtt.c src/gdevpdte.c src/gdevpdti.c src/gdevpdtt.h]</p>
</blockquote>

<p><strong><a name="2006-01-25T212944.622210Z"></a>
2006-01-25T21:29:44.622210Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Incorrect computation of a FMapType 9 text size.

DETAILS :

The old code didn't update pte-&gt;current_font before calling pdf_update_text_state,
and the matrix computation in scan_cmap_text was bug-to-bug compatible.

This is a preparation for fixing the bug 687875 
"pdfwrite : Type 0 FMapType 9 font with a Type 3 descendent converts to bitmaps".

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdtc.c]</p>
</blockquote>

<p><strong><a name="2006-01-25T194255.998332Z"></a>
2006-01-25T19:42:55.998332Z leonardo</strong></p>
<blockquote>
<pre>
Fix : A minor modularity improvement.

DETAILS :

This change should be algorithmically equivalent.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/zchar.c]</p>
</blockquote>

<p><strong><a name="2006-01-25T192219.285423Z"></a>
2006-01-25T19:22:19.285423Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the errpage.ps utility. It is not being used by developers and is no longer functional. 
Bug #688511.
</pre>
<p>[lib/errpage.ps]</p>
</blockquote>

<p><strong><a name="2006-01-25T181831.504275Z"></a>
2006-01-25T18:18:31.504275Z Ralph Giles</strong></p>
<blockquote>
<pre>
Include the complete list of regressions in the report if it is less than 40 KB.
</pre>
<p>[toolbin/tests/run_nightly]</p>
</blockquote>

<p><strong><a name="2006-01-25T180436.499424Z"></a>
2006-01-25T18:04:36.499424Z Ralph Giles</strong></p>
<blockquote>
<pre>
Improve error reporting.
</pre>
<p>[toolbin/tests/run_nightly]</p>
</blockquote>

<p><strong><a name="2006-01-25T180109.701817Z"></a>
2006-01-25T18:01:09.701817Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add usage messages.
</pre>
<p>[toolbin/tests/make_two_versions toolbin/tests/make_two_pdfversions]</p>
</blockquote>

<p><strong><a name="2006-01-25T045025.532213Z"></a>
2006-01-25T04:50:25.532213Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add required 'quit' execution to avoid prompt thus requiring a double 'quit'.
Bug 688497.

DETAILS:

This was inadvertently removed when I thought it was not needed and was a
result of a cut-and-paste mistake. This commit will now serve to document
that the extra line _is_ needed.

EXPECTED DIFFERENCES:

None.
</pre>
<p>[src/imain.c]</p>
</blockquote>

<p><strong><a name="2006-01-23T202512.430841Z"></a>
2006-01-23T20:25:12.430841Z Ralph Giles</strong></p>
<blockquote>
<pre>
Repeat the reference to autogen.sh in the Unix-specific build 
instructions. Bug #688504.
</pre>
<p>[doc/Make.htm]</p>
</blockquote>

<p><strong><a name="2006-01-23T180818.107243Z"></a>
2006-01-23T18:08:18.107243Z Ralph Giles</strong></p>
<blockquote>
<pre>
Use the local MAX() macro instead of the MSVC implicit max() in fuzzy.c 
for portability. Also, add parentheses to silence a GCC warning.
</pre>
<p>[toolbin/tests/fuzzy.c]</p>
</blockquote>

<p><strong><a name="2006-01-23T173954.710146Z"></a>
2006-01-23T17:39:54.710146Z Ralph Giles</strong></p>
<blockquote>
<pre>
Infix .pdf. in the output of make_two_pdfversions.
</pre>
<p>[toolbin/tests/make_two_pdfversions]</p>
</blockquote>

<p><strong><a name="2006-01-23T132930.215782Z"></a>
2006-01-23T13:29:30.215782Z leonardo</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Incorrect xref offsets.

DETAILS :

Bug 688502 "Incorrect xref table in the PDF stream generated by ps2write".
The old code calculated offsets from the beginning of the PS file.
We generate xref to allow a verification with PDF viewers.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfx.h src/gdevpdf.c src/gdevpdfu.c src/gdevpdfb.h]</p>
</blockquote>

<p><strong><a name="2006-01-22T030240.596096Z"></a>
2006-01-22T03:02:40.596096Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add backward-compatible glyph names for new TTF glyphs. For instance,
/mu1 (micro symbol) is aliased to /mu (greek letter).
Bug 688265

EXPECTED DIFFERENCES :
None
</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2006-01-21T173217.337421Z"></a>
2006-01-21T17:32:17.337421Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Increase the halftone cache size to improve the performance of large
halftone cells.
Bug 687525

EXPECTED DIFFERENCES :
None


</pre>
<p>[src/gzht.h]</p>
</blockquote>

<p><strong><a name="2006-01-20T082017.716374Z"></a>
2006-01-20T08:20:17.716374Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Unwinding the 6449 change (Fix detection of hexadecimal encoding in eexec portion of Type 1 fonts).

DETAILS :

The fix for the Bug 688385 caused a regression with fonttest.pdf.
Unwinding it now.

EXPECTED DIFFERENCES :

fonttest.pdf should restore.
</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2006-01-20T075245.171824Z"></a>
2006-01-20T07:52:45.171824Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc warnings.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxi16bit.c src/gscdevn.h src/gxccman.c src/int.mak src/zfsample.c src/gxicolor.c src/gxclrast.c src/zcolor.c src/gxi12bit.c src/gdevp14.c]</p>
</blockquote>

<p><strong><a name="2006-01-20T064312.729752Z"></a>
2006-01-20T06:43:12.729752Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite, PDF/X) : Implement TrimBox, BleedBox and related Distiller parameters.

DETAILS :

Bug 688443 "TrimBox values should be customizable for PDF/X document".

Patch from Gunnar Ritter with minimal adoptation and a minimal testing.
We added sscanf to acquire TrimBox from Postscript.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[doc/Ps2pdf.htm lib/gs_pdfwr.ps]</p>
</blockquote>

<p><strong><a name="2006-01-20T063830.009975Z"></a>
2006-01-20T06:38:30.009975Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite, PDF/X) : Implement TrimBox, BleedBox and related Distiller parameters, continued.

DETAILS :

Bug 688443 "TrimBox values should be customizable for PDF/X document".
Patch from Gunnar Ritter.


Adobe PDF Creation Settings, 7/27/05, p. 111:

[beg quote]
PDFXTrimBoxtoMediaBoxOffset

	Supported by: Distiller

	Type: array

	UI name: Set TrimBox to MediaBox with offsets (units)

	Default value: [0.00000 0.00000 0.00000 0.00000]

	If both the TrimBox and ArtBox entries are not specified
	in the page object, TrimBox is set to MediaBox with
	offsets. Offsets are specified as [left right top bottom].
	All numbers must be greater than or equal to 0.0. TrimBox
	offsets place TrimBox entirely inside MediaBox.

	NOTE:This setting is ignored if PDFXNoTrimBoxError is true.
[end quote]

&lt;http://partners.adobe.com/public/developer/en/acrobat/sdk/pdf/pdf_creation_apis_and_specs/PDFCreationSettings.pdf&gt;

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdf.c]</p>
</blockquote>

<p><strong><a name="2006-01-19T185122.949228Z"></a>
2006-01-19T18:51:22.949228Z Ray Johnston</strong></p>
<blockquote>
<pre>
Previous patch had matrix1 matrix2 operands exchanged so scaling by cmmatrix was
wrong. This now works for resolutions other than 72. Bug 688485 for customer 850.

</pre>
<p>[lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2006-01-19T120823.013531Z"></a>
2006-01-19T12:08:23.013531Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Don't embed unused fonts.

DETAILS :

Bug 688106 "Unused fonts embedded in PDF".
Bug 688380 "pdfwrite: Type 3 fonts with empty CharStrings".


1. Delay font object id assignation until it is used with synch_text_state.
2. Same for font descriptors.
3. Writing a stream resource list, skip ones with no id.
4. Writing font descriptors, skip ones with no id.
5. Same for font objects.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfx.h src/gdevpdts.c src/gdevpdtd.c src/gdevpdte.c src/gdevpdtf.c src/gdevpdfu.c src/gdevpdtw.c src/gdevpdtd.h src/gdevpdtf.h]</p>
</blockquote>

<p><strong><a name="2006-01-19T002128.720381Z"></a>
2006-01-19T00:21:28.720381Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a typo in the usage.
</pre>
<p>[toolbin/tests/update_specific]</p>
</blockquote>

<p><strong><a name="2006-01-19T001805.626817Z"></a>
2006-01-19T00:18:05.626817Z Ralph Giles</strong></p>
<blockquote>
<pre>
Accept '-r &lt;revision number&gt;' as well as a date spec to the 
update_specific script. Bug 688498.
</pre>
<p>[toolbin/tests/update_specific]</p>
</blockquote>

<p><strong><a name="2006-01-18T210150.698782Z"></a>
2006-01-18T21:01:50.698782Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Print error messages, don't leave them on the stack.
Bug 688491
</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2006-01-18T130841.803688Z"></a>
2006-01-18T13:08:41.803688Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite, PDF/X) : Implement TrimBox, BleedBox and related Distiller parameters.

DETAILS :

Bug 688443 "TrimBox values should be customizable for PDF/X document".

Patch from Gunnar Ritter with minimal adoptation and a minimal testing.
We added sscanf to acquire TrimBox from Postscript.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfx.h src/gdevpdf.c src/gdevpdfp.c src/gdevpdfb.h]</p>
</blockquote>

<p><strong><a name="2006-01-18T051022.427953Z"></a>
2006-01-18T05:10:22.427953Z Ralph Giles</strong></p>
<blockquote>
<pre>
Apply assert patch for CMYK JPEG 2000 images from bug 688142.
</pre>
<p>[jasper/src/libjasper/jpc/jpc_dec.c]</p>
</blockquote>

<p><strong><a name="2006-01-17T175636.138363Z"></a>
2006-01-17T17:56:36.138363Z Ray Johnston</strong></p>
<blockquote>
<pre>
Apply a SubFileDecode filter to streams if the Length is valid. This prevents
reading past the end of data for filters that are not terminated, expecting
the PDF Length or 'endstream' to terminate the data. Bug 687435 for customers
780 and 870. Thanks to Alex Cherepanov for this patch.

DETAILS:
Since the Length on some broken PDF's is wrong (a warning will be issued),
this patch will not fix the case where the Length is wrong and the stream
is not terminated.

EXPECTED DIFFERENCES:

None. (according to Alex).


</pre>
<p>[lib/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2006-01-17T134324.915413Z"></a>
2006-01-17T13:43:24.915413Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Loss of graphics with GraphicsAlphaBits &gt; 1.

DETAILS :

Bug 688417 "Setting -dGraphicsAlphaBits when using -sDEVICE=pdfwrite causes loss of graphics".

1. Propagate error codes from psdf_get_bits through alpha buffer device methods.
2. Print error message in psdf_get_bits if GraphicsAlphaBits &gt; 1.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpsdu.c src/gdevabuf.c src/gspaint.c]</p>
</blockquote>

<p><strong><a name="2006-01-17T083748.515251Z"></a>
2006-01-17T08:37:48.515251Z leonardo</strong></p>
<blockquote>
<pre>
Fix (type 1 interpreter) : c1_hsbw of the main subglyph was replaced with one from the glyph.

DETAILS :

Bug 688453 "gs8.53 renders certain fonts incorrectly".

EXPECTED DIFFERENCES :

normal : Bug687489.ps
</pre>
<p>[src/gstype1.c src/gxtype1.h]</p>
</blockquote>

<p><strong><a name="2006-01-17T051350.629958Z"></a>
2006-01-17T05:13:50.629958Z leonardo</strong></p>
<blockquote>
<pre>
Fix (type 1 interpreter) : Improve the mlodularity about seac data.

DETAILS :

This change is algorithmically equivalent.
It is a praparation for bug 688453.

1. seac_flag is moved from Type 1 hinter (gxhintn.h) to Type 1 interpreter (gstype1.h). 
2. Type 2 interpreter (gstype2.c) appears not depending on seac_flag.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gstype1.c src/gstype2.c src/gxhintn.c src/gxtype1.c src/gxhintn.h src/gxtype1.h]</p>
</blockquote>

<p><strong><a name="2006-01-17T002620.734768Z"></a>
2006-01-17T00:26:20.734768Z Ralph Giles</strong></p>
<blockquote>
<pre>
Use an explicit target for ps2write.dev, depending on pdfwrite.dev.

DETAILS:
 
Previously, the pdfwrite.dev target just created a dummy ps2write.dev
file without all the dependencies, since ps2write is just an extension
of pdfwrite and depends on much of the same source.

However, this caused problems with parallel builds, and failed badly if 
a user requested ps2write without pdfwrite in the top-level makefile.
</pre>
<p>[src/devs.mak]</p>
</blockquote>

<p><strong><a name="2006-01-16T233044.016752Z"></a>
2006-01-16T23:30:44.016752Z Ray Johnston</strong></p>
<blockquote>
<pre>
A better approach to avoid having uninstallpagedevice free a device that needs
closing. Bug 688494. Thanks to leo for the suggestion.

DETAILS:

Increment the rc_assign prior to the .uninstallpagedevice to insure that the
device is still around afterwards so we can call gs_closedevice on it. Many
devices don't need the closedevice, but some might.
</pre>
<p>[src/imain.c]</p>
</blockquote>

<p><strong><a name="2006-01-16T190858.896938Z"></a>
2006-01-16T19:08:58.896938Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove gsmalloc.h from source files that no longer use gs_malloc() or 
gs_memory_default.
</pre>
<p>[src/lib.mak src/zfdctd.c src/zfdcte.c src/int.mak src/sdctc.c src/sdctd.c src/sdcte.c src/szlibc.c src/szlibd.c src/szlibe.c]</p>
</blockquote>

<p><strong><a name="2006-01-16T172529.114707Z"></a>
2006-01-16T17:25:29.114707Z Ray Johnston</strong></p>
<blockquote>
<pre>
Make sure that the final gs_closedevice isn't called on a device that has been
freed during the final .uninstallpagedevice. Bug 688494.

DETAILS:

The overprint device or other compositors can (under some circumstances) have
a reference count of 1 when the gs_lib_finit is called, which means that the
'nulldevice' operator executed by the .uninstallpagedevice will free the
compositor when the rc_assign to the graphics state is performed.

To avoid an operation on a pointer to freed memory, don't attempt to close
the device if the ref_count prior to the unistallpagedevice was 1.

EXPECTED DIFFERENCES:

None.
</pre>
<p>[src/imain.c]</p>
</blockquote>

<p><strong><a name="2006-01-16T140657.132584Z"></a>
2006-01-16T14:06:57.132584Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfx) : Registered printing conditions don't need an ICC profile.

DETAILS :

Bug 688476 "PDF/X-3 without ICC profile".

We could got more knowledge from http://www.color.org/IPA_2003-11_PDFX.pdf .
The main one is the RegistryName key, which we didn't see before. 

Rather PDFX_def.ps becomes complicated, currently we don't try to
simplify the user interface because we've got insufficient
information about user requirements to it.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[lib/PDFX_def.ps doc/Ps2pdf.htm]</p>
</blockquote>

<p><strong><a name="2006-01-16T114841.730324Z"></a>
2006-01-16T11:48:41.730324Z leonardo</strong></p>
<blockquote>
<pre>
Fix (type 1 interpreter) : ce1_setcurrentpoint was wrong in a subglyph.

DETAILS :

Bug 688481 "wrong rendering of Type 1 font".

1. ce1_setcurrentpoint didn't account the position of a subglyph in the glyph.
   The bug was contributed with attaching the new Type 1 hinter
   (gstype1.c rev. 1.23, 1.13).
2. (minor change) A wrong condition for opening a visual trace in gxhintn.c . 

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gstype1.c src/gxhintn.c]</p>
</blockquote>

<p><strong><a name="2006-01-16T054416.806614Z"></a>
2006-01-16T05:44:16.806614Z Ray Johnston</strong></p>
<blockquote>
<pre>
Update the PDF text matrix basis (TextSaveMatrix) when a 'cm' occurs within a
BT/ET section. Bug 688485 for customer #850.

DETAILS:

Apparently this is rare -- none of the previous regression tests had this case
(a 'cm' inside a BT/ET section). The 'missing' Arabic text was actually outside
the clipping path, so nothing was painted.

EXPECTED DIFFERENCES:

None. I ran the PDF subset of the regression suite and none of the files had
this.

</pre>
<p>[lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2006-01-16T052218.914647Z"></a>
2006-01-16T05:22:18.914647Z leonardo</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing DeviceN attributes, part 1.

DETAILS :

Bug 688406 "pdfwrite : wrong overprint color from Altona_Visual_1v2a_x3.pdf".

This is a partial implementation for DeviceN attributes in pdfwrite.
It is restricted with information, which the graphics library currently provides.
For a complete implementation need a complete fix for Bug 688413.

1. Added a writing of attributes Colorants in gdevpdfc.c .
2. Don't write a resource list for resourceOther, because they are not real PDF resources.

EXPECTED DIFFERENCES :

pdfwrite Bug687660a.ps 
</pre>
<p>[src/gdevpdfc.c src/gdevpdfu.c src/devs.mak]</p>
</blockquote>

<p><strong><a name="2006-01-15T134229.836501Z"></a>
2006-01-15T13:42:29.836501Z leonardo</strong></p>
<blockquote>
<pre>
Use a floating point representation for a huge Type 3 text width.

DETAILS :

Bug 687822 "/limitcheck in --setcharwidth--".

We guess the test document uses huge characters for metric computations
rather than for a real rendering.

When a text has a big width (and therefore it is not cached),
we use a new field gs_show_enum::wxy_float instead wxy,
because the latter overflows.
We implement it for Type 3 only due to no other test cases.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxchar.c src/gxchar.h]</p>
</blockquote>

<p><strong><a name="2006-01-13T220955.060982Z"></a>
2006-01-13T22:09:55.060982Z stefan</strong></p>
<blockquote>
<pre>
dprintf format string repair.
</pre>
<p>[src/zfcid0.c]</p>
</blockquote>

<p><strong><a name="2006-01-13T215913.702725Z"></a>
2006-01-13T21:59:13.702725Z stefan</strong></p>
<blockquote>
<pre>
Added printf format string argument checking under gcc to std.h

Corrected or commented existing errors.

NB: gx_color_index maybe 4 or 8 giving interesting results to printf
that choose to do:  "color is %lx", color  


</pre>
<p>[src/gdevxcmp.c src/gxi16bit.c src/std.h src/zfcid0.c src/gdevpsf2.c src/gsfcmap1.c src/gsmemory.c src/gxpflat.c src/gxicolor.c src/gxi12bit.c src/gdevp14.c src/stream.c]</p>
</blockquote>

<p><strong><a name="2006-01-13T205657.627440Z"></a>
2006-01-13T20:56:57.627440Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Type 3 font indeterminizm.

DETAILS :

Bug 688379 pdfwrite: "an indeterministic behavior with Bug687660a.ps" from Comment #21. 

During a garbage collection Type 3 font glyph names were not marked.
Therefore they could be collected and later get different name indices.
Several fonts could be gererated from a single Type 3 font.

EXPECTED DIFFERENCES :

pdfwrite Bug687660a.ps 
</pre>
<p>[src/gdevpdtt.c src/gdevpdtf.c src/gdevpdtf.h]</p>
</blockquote>

<p><strong><a name="2006-01-13T191926.202800Z"></a>
2006-01-13T19:19:26.202800Z Ray Johnston</strong></p>
<blockquote>
<pre>
Minor cleanup to remove a line that was left in from a cut-and-paste when this
call was added. Discovered during bug 688487.
</pre>
<p>[src/imain.c]</p>
</blockquote>

<p><strong><a name="2006-01-13T082947.649971Z"></a>
2006-01-13T08:29:47.649971Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688487 A crash from garbage collector pointer validation.
This is an addition to 688413 DeviceN under implements 'attributes'

DETAILS:

The GC validation problem was caused by the DeviceN attribute list elements
not being freed.  These list elements contained Separation color spaces.
The color spaces contained a 'map' element which was being freed.  The
GC validation logic was detecting the that the color spaces were pointing
to a freed item.

The fix consists of adding a reference count to the gs_device_n_attributes
structure plus the appropriate logic for incrementing/decrementing.

The name of the DeviceN attributes list was changed to colorants per
Igor's request.</pre>
<p>[src/gscspace.h src/gxcdevn.h src/gscdevn.c]</p>
</blockquote>

<p><strong><a name="2006-01-12T120256.192425Z"></a>
2006-01-12T12:02:56.192425Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix an out of range subscript in Gimp (XCF) export device and a few minor
issues identified by Intel C++ .
Bug 687292
</pre>
<p>[src/imain.c src/gxfcopy.c src/gdevxcf.c src/zcolor.c]</p>
</blockquote>

<p><strong><a name="2006-01-12T114304.185594Z"></a>
2006-01-12T11:43:04.185594Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix detection of hexadecimal encoding in eexec portion of Type 1 fonts.
Bug 688385

DETAILS:

The old code that detected hexadecimal encoding appeared to do the reverse.
It worked because PDF is defined to use binary encoding only in the eexec
portion of the font and conversion to hex won't spoil the binary stream.

However, conversion to hex breaks hexadecimal streams. The proposed patch
adds more precise checking for the hexadecimal encoding similar to
the checking algorithm in the eexec operator.
</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2006-01-12T071034.762843Z"></a>
2006-01-12T07:10:34.762843Z Ralph Giles</strong></p>
<blockquote>
<pre>
Virtualize the global ctx pointer so it can be replaced by different 
implementations at the stream level.
</pre>
<p>[src/zfjbig2.c src/sjbig2.c src/sjbig2.h]</p>
</blockquote>

<p><strong><a name="2006-01-12T070908.418655Z"></a>
2006-01-12T07:09:08.418655Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove an unused funtion. This was used but the now removed ARCH_CACHE_* 
logic.
</pre>
<p>[src/genarch.c]</p>
</blockquote>

<p><strong><a name="2006-01-12T004219.645669Z"></a>
2006-01-12T00:42:19.645669Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688488 Since Jan 7 2006, many regression files get 'typecheck in --execfunction--'

DETAILS:

The commit for 688413 introduced a new problem.  If the attributes dictionary contains a reference to a separation color space which had already been resolved, then a conflict occured with the processing of the alternate tint transform function.  This patch eliminates the conflict by creating a new copy of the DeviceN color space array and the attributes array when the color space is resolved.</pre>
<p>[lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2006-01-11T132001.631161Z"></a>
2006-01-11T13:20:01.631161Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Move back-up CharString construction procedures (RD, ND, ...) to a special
dictionary and put it below userdict to avoid warnings when the font
defines them in userdict.
Bug 688464


DETAILS:

Some broken fonts forget to define CharString construction procedures because
non-PostScript font rasterizers don't detect this error. Ghostscript has
a back-up definitions of the procedures that do their job and issue a warning.

Other correct but old-fashioned fonts define CharString construction procedures
in userdict. We had the back-up procedures defined above userdict, where they
preempted the userdict definitions and issued a bogus warning. This patch moves
the definitions below userdict.

</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2006-01-06T232745.066243Z"></a>
2006-01-06T23:27:45.066243Z Ralph Giles</strong></p>
<blockquote>
<pre>
Update the regression code to use the new SVN repository. This also includes some 
other minor fixes. The new version of update_specific hasn't been tested.
</pre>
<p>[toolbin/tests/run_nightly toolbin/tests/testing.cfg.example toolbin/tests/update_specific toolbin/tests/gstestgs.py]</p>
</blockquote>

<p><strong><a name="2006-01-06T191031.983184Z"></a>
2006-01-06T19:10:31.983184Z Dan Coby</strong></p>
<blockquote>
<pre>
Remove "#if 1" that crept into the last commit.</pre>
<p>[src/gscdevn.c]</p>
</blockquote>

<p><strong><a name="2006-01-06T190806.688571Z"></a>
2006-01-06T19:08:06.688571Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the lowercase versions of some of the less common arch.h #defines in favor 
of uppercase versions as per C-style.
</pre>
<p>[src/gxobj.h src/gxcmap.c src/gxbitmap.h src/gxfarith.h src/siscale.c src/imainarg.c src/gdevdbit.c src/iref.h src/gxclutil.c src/std.h src/gsmalloc.c src/zusparam.c src/gxfixed.h src/gxbitops.h src/ipacked.h src/gxbcache.h src/ibnum.c]</p>
</blockquote>

<p><strong><a name="2006-01-06T190115.497779Z"></a>
2006-01-06T19:01:15.497779Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the check for files not listed in CVS.

DETAILS:

This no longer works since we've switched to subversion for version control. The 
check could of course be ported, but the object was the detect files that had 
either accidentally been left out of a commit, or files that might slip into a
release unintentionally. The 'svn status' command is an effective and more 
commonly used check for the former, and our policy of building releases from
a clean export of the tag eliminates the other.
</pre>
<p>[toolbin/tests/check_dirs.py]</p>
</blockquote>

<p><strong><a name="2006-01-06T185633.954639Z"></a>
2006-01-06T18:56:33.954639Z Dan Coby</strong></p>
<blockquote>
<pre>
Partial fix for 688413 DeviceN under implements 'attributes'

DETAILS:

This patch implements the passing of DeviceN attribute color spaces into the graphics library.  The patch consists of the following pieces:

1. In lib/gs_devn.ps:  Attribute color spaces are processed like another color space and then .attachattributecolorspace is called to associate the attribute color space with a DeviceN color space.

2. In lib/pdf_draw.ps: Logic wa added to resolve references to attribute color spaces in PDF DeviceN color spaces.

3. In src/zcsdevn.c and src/gscdevn.c: The implementation of the .attachattributecolorspace is done.

4. Header files were modified to add the attribute color space structures and fields.

5. GC enumeration and relocation logic was added.</pre>
<p>[src/zcsdevn.c src/gscspace.h src/gxcdevn.h lib/gs_devn.ps lib/pdf_draw.ps src/gscdevn.c]</p>
</blockquote>

<p><strong><a name="2006-01-06T185432.653218Z"></a>
2006-01-06T18:54:32.653218Z Ralph Giles</strong></p>
<blockquote>
<pre>
Add the PDFA_def prefix file to the file documentation.
</pre>
<p>[doc/Psfiles.htm]</p>
</blockquote>

<p><strong><a name="2006-01-06T122700.677606Z"></a>
2006-01-06T12:27:00.677606Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Implementation of the remaining TN 5044 operators,
Bug 688268
</pre>
<p>[lib/gs_lev2.ps]</p>
</blockquote>

<p><strong><a name="2006-01-04T220124.416332Z"></a>
2006-01-04T22:01:24.416332Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the unused ARCH_CACHE defines and the code in genarch.c that 
creates them. Bug 688469.

DETAILS:

The cache detection was both slow and unreliable, especially given the 
spread of cpu and memory speeds now available. Furthermore, no use was
being made of these attempted cache size measurements. We have therefore
removed them as a simplification.

Choosing the blocksize of large inner loops can indeed be a good 
technique, but this is a case of premature optimization. Moreover,
it's usually better to test at run time with the actual algorithm
in question than try to work from a general number.
</pre>
<p>[src/std.h doc/Make.htm src/genarch.c]</p>
</blockquote>

<p><strong><a name="2005-12-30T203522.773764Z"></a>
2005-12-30T20:35:22.773764Z Ralph Giles</strong></p>
<blockquote>
<pre>
Ignore generated files in the jasper subtree.
</pre>
<p>[jasper jasper/src/libjasper/pgx jasper/src/libjasper jasper/src/libjasper/include/jasper /trunk/gs jasper/src/libjasper/base jasper/src/libjasper/mif jasper/src/libjasper/jpc jasper/src/libjasper/bmp jasper/src/libjasper/jpg jasper/src/appl jasper/src/libjasper/include jasper/src jasper/src/libjasper/ras jasper/src/libjasper/pnm jasper/src/libjasper/jp2 jasper/src/msvc]</p>
</blockquote>

<p><strong><a name="2005-12-29T011143.615008Z"></a>
2005-12-29T01:11:43.615008Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Clean-up temporary parameter files created by batch files.
Bug 688471
</pre>
<p>[lib/ps2ps2.bat lib/ps2ps.bat]</p>
</blockquote>

<p><strong><a name="2005-12-28T204832.669903Z"></a>
2005-12-28T20:48:32.669903Z Ralph Giles</strong></p>
<blockquote>
<pre>
Apply Raph's patch to handle broken channel specifications.
</pre>
<p>[jpeg/jdmarker.c]</p>
</blockquote>

<p><strong><a name="2005-12-28T204639.574800Z"></a>
2005-12-28T20:46:39.574800Z Ralph Giles</strong></p>
<blockquote>
<pre>
Copy the IJG jpeg-6b source from /tags/.
</pre>
<p>[jpeg]</p>
</blockquote>

<p><strong><a name="2005-12-28T204524.158383Z"></a>
2005-12-28T20:45:24.158383Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove our local jpeg in favor of one copied from tags.
</pre>
<p>[jpeg]</p>
</blockquote>

<p><strong><a name="2005-12-28T203905.309532Z"></a>
2005-12-28T20:39:05.309532Z Ralph Giles</strong></p>
<blockquote>
<pre>
Copy in tagged zlib and libpng source.
</pre>
<p>[libpng zlib]</p>
</blockquote>

<p><strong><a name="2005-12-28T203711.865745Z"></a>
2005-12-28T20:37:11.865745Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove local copies of zlib and libpng in favor of ones copied from /tags/
</pre>
<p>[libpng zlib]</p>
</blockquote>

<p><strong><a name="2005-12-28T201105.093674Z"></a>
2005-12-28T20:11:05.093674Z Ralph Giles</strong></p>
<blockquote>
<pre>
Convert .cvsignore settings.</pre>
<p>[src/.cvsignore ijs src .cvsignore contrib/pscolor/.cvsignore /trunk/gs contrib/pscolor ijs/.cvsignore]</p>
</blockquote>

<p><strong><a name="2005-12-28T195624.767413Z"></a>
2005-12-28T19:56:24.767413Z Ralph Giles</strong></p>
<blockquote>
<pre>
Enable Id keyword substitution on appropriate files.
</pre>
<p>[src/iplugin.h src/gdevm48.c src/gsgdata.h lib/pfbtopfa.ps src/configure.ac src/gdevmsxf.c src/gsropt.h src/gdevmem.c man/ps2epsi.1 src/gdevmem.h src/zvmem.c src/write_t1.c jasper/src/libjasper/base/jas_seq.c src/rm.cmd src/gstrap.c src/icstate.h src/gxxfont.h src/write_t1.h lib/gs_epsf.ps src/gstrap.h src/gzacpath.h src/gscssub.c src/gdevcgmx.h src/gp_msdos.c src/gdevlbp8.c src/gdevpdfx.h src/gdevdm24.c src/zcsdevn.c src/dwsetup.rc src/gxdhtserial.c src/icie.h src/zcontext.c src/gscssub.h zlib/contrib/ada/buffer_demo.adb jasper/src/libjasper/include/jasper/jas_malloc.h src/gdevpdts.c src/ccfont.h src/gxdither.h src/gxdhtserial.h src/cp.cmd lib/gslp.ps src/gdevpdts.h src/macsystypes.h src/gxclutil.c lib/font2c.cmd src/gxcomp.h lib/level1.ps src/echogs.c lib/lpgs.bat src/oper.h doc/History7.htm src/zchar42.c toolbin/tests/cmpi.py lib/gs_lev2.ps src/gscscie.c src/gsfont0.c src/zchar42.h src/icfontab.c src/zht1.c toolbin/gssubst src/zpcolor.c src/zdevcal.c src/gdevpdfi.c src/zcssepr.c doc/Install.htm src/ifont42.h src/sdcparam.c lib/markhint.ps zlib/uncompr.c src/bcwin32.mak doc/Issues.htm src/sdcparam.h jasper/src/libjasper/jpc/jpc_math.c src/gdevpdtd.c src/gdevokii.c src/zcfont.c src/gdevprna.c src/gdevpdtd.h toolbin/makefonts.tcl jasper/src/libjasper/include/jasper/jas_cm.h src/zcolor.c src/gxhtbit.c src/oparc.h jasper/src/libjasper/jp2/jp2_cod.c src/sfxfd.c src/gdevprna.h lib/caption.ps jasper/src/libjasper/jp2/jp2_cod.h src/gp_mspol.c src/dwuninst.h src/gpmisc.c src/ttconfig.h src/ireclaim.c toolbin/pdfinflt.ps src/gxstdio.h src/gsmemraw.h src/gpmisc.h lib/gs_cidcm.ps toolbin/split_changelog.py doc/Lib.htm src/gxline.h lib/bdftops.cmd lib/FAPIconfig doc/Ps-style.htm man/gslp.1 toolbin/tests/check_docrefs.py jbig2dec/Makefile.am lib/traceimg.ps src/ijs.mak src/gserver.c src/gp_psync.c toolbin/tests/update_baseline man/de/pdfopt.1 src/gp_os2pr.c src/gsiomacres.c src/gdevpsd.c src/gxclfile.c man/de/wftopfa.1 src/gxfilltr.h man/de/ps2ps.1 src/gdebug.h lib/viewpcx.ps toolbin/tests/gsconf.py src/zfile.c jasper/src/libjasper/jpc/jpc_bs.c src/gdev4693.c src/gxchar.c lib/gs_indxd.ps jasper/src/libjasper/jpc/jpc_bs.h src/gxchar.h src/gsfcid2.c src/gsline.c src/gsalloc.c doc/Helpers.htm lib/dumphint src/gsline.h src/gsalloc.h src/gsiparm2.h src/gxfont0.h lib/gs_ksb_e.ps lib/ps2pdf.cmd src/gdevmeds.c src/gs16spl.c src/gdev4081.c src/gdevmeds.h src/srdline.h src/dpmain.c src/wctail.mak src/winlib.mak jasper/src/libjasper/jp2/jp2_enc.c doc/History8.htm src/szlibx.h src/zmath.c jbig2dec/jbig2_image_png.c toolbin/tests/make_two_pdfversions src/gdevpdfk.c lib/jispaper.ps src/gxfont0c.h src/iimage.h jasper/src/libjasper/jp2/jp2_dec.c src/gxpcolor.h src/gdevpdtf.c doc/Xfonts.htm src/gp_unifn.c src/gdevddrw.c src/gschar.c src/gdevpdtf.h src/gdevddrw.h src/gdevpsfm.c src/sarc4.c lib/traceop.ps src/gschar.h src/gdevpsu.c src/gsptype2.c src/zfcid1.c src/sarc4.h src/gstrans.c src/gdevpsu.h src/gsptype2.h src/catmake zlib/crc32.c src/gstrans.h src/iestack.h src/gxbitfmt.h src/gxclio.h lib/pdf_rbld.ps src/gstype2.c src/itoken.h lib/pdf2ps.bat lib/gs_dscp.ps src/inameidx.h src/gxhldevc.c lib/gs_devn.ps zlib/contrib/iostream2/zstream.h src/gxhldevc.h lib/pdfopt.ps src/sfxboth.c src/gp_macio.c src/wrfont.c src/sbhc.c lib/viewps2a.ps src/gsdps.c src/zfont1.c src/wrfont.h src/sbhc.h doc/Maintain.htm jbig2dec/jbig2_priv.h man/de/gsnd.1 lib/gs_dbt_e.ps src/gsdps.h src/spngp.c src/ghost.h jbig2dec/jbig2dec.c toolbin/tests/check_all.py doc/gs.css toolbin/tests/gsutil.py src/gxalloc.h src/gsmatrix.c src/gxsamplp.h lib/cidfmap src/istruct.h src/gdevpsf.h src/gsmatrix.h src/zdouble.c src/dwreg.c jasper/src/libjasper/include/jasper/jas_getopt.h src/spdiff.c src/gxfcmap1.h lib/pf2afm.cmd jasper/src/libjasper/base/jas_string.c src/dwreg.h src/scommon.h src/gdevpdtw.c src/gdevpdtw.h src/unixhead.mak src/gsiparm4.h lib/ps2ascii.ps src/gxiscale.c lib/gs_ce_e.ps src/gxbcache.c src/dwinst.cpp src/gxbcache.h src/ibnum.c lib/gs_type1.ps lib/gsnup.ps src/gdevxcmp.c src/ibnum.h src/estack.h src/scfe.c ijs/configure.ac lib/eps2eps.cmd src/gscompt.h src/gsdcolor.h src/gxdtfill.h src/gdevxcmp.h lib/stocht.ps src/gdevlj56.c src/gdevhl7x.c src/gdevos2p.c src/gsparam.c src/gsbitops.c src/gdevmr8n.c lib/gs_pdfwr.ps src/gxftype.h src/gp_unix_cache.c src/gdevpdfm.c src/imain.c src/gsparam.h src/gsbitops.h src/zfilter2.c src/imain.h src/ifilter.h lib/gs_ccfnt.ps jasper/src/libjasper/base/jas_cm.c src/zfont42.c lib/Fontmap.ATB doc/Language.htm jasper/src/libjasper/pnm/pnm_cod.c src/smd5.c src/spdiffx.h jasper/src/libjasper/pnm/pnm_cod.h src/smd5.h src/gs16spl.rc src/gxhttype.h lib/Fontmap.ATM src/gspenum.h src/sjpx.c lib/unix-lpr.sh lib/ps2epsi.bat lib/decrypt.ps src/gxipixel.c src/sjpx.h src/sfilter2.c src/gdevsnfb.c src/gdevifno.c src/gscrd.c src/gxmclip.c src/mv.cmd src/gxcie.h src/gsio.h lib/gs_cspace.ps src/gscrd.h src/gxmclip.h toolbin/suite.tcl lib/pftogsf.bat lib/uninfo.ps src/unix-end.mak jbig2dec/Makefile.in src/inobtokn.c toolbin/afmutil.py src/gp_mslib.c lib/Fontmap.Sol zlib/minigzip.c src/gsiodev.c src/gdevescp.c src/igc.c src/msvc32.mak src/gdevmacxf.c src/gsfunc0.c jbig2dec/jbig2_arith.c src/igc.h src/jerror_.h src/zdosio.c toolbin/tests/testdiff src/gsfunc0.h jbig2dec/jbig2_arith.h toolbin/jpxtopdf.c src/gdevpsf1.c src/gdevpsds.c src/siscale.c src/gdevpsds.h lib/gs_img.ps src/gsdsrc.c src/gxfill.c src/ilevel.h src/siscale.h src/gxclread.c src/gsdsrc.h src/gxfill.h toolbin/tests/gstestgs.py lib/pdf2ps src/iostack.h lib/gs_kanji.ps lib/stcolor.ps src/gsdll.c src/gdevmr1.c lib/Fontmap.Ult src/gspath1.c jasper/src/libjasper/pnm/pnm_enc.c doc/Details.htm src/gsdll.h src/sjpegc.c src/zfdcte.c lib/ps2ascii.bat src/zfcmap.c doc/Readme.htm src/gdevfax.c src/gdevbit.c toolbin/tests/check_source.py src/gsequivc.c src/gsdevice.c src/gp_wsync.c src/gdevfax.h src/gsequivc.h src/gsdll32.rc src/gxclmem.c src/gshtx.c src/gscparam.c src/gsdevice.h src/gdevsj48.c src/gdevpdfo.c jasper/src/libjasper/pnm/pnm_dec.c src/gsbittab.c src/gxclmem.h src/macos_carbon_pre.h src/sdctd.c src/gsmemory.c src/gshtx.h src/gdevpdfo.h src/gsbittab.h src/ifwpred.h src/gdevcdj.c doc/Devices.htm src/gsmemory.h man/de/ps2ascii.1 src/files.h src/gxband.h src/scfdgen.c src/ttinterp.c src/ttcalc.c src/gsbitmap.h src/gdevtknk.c toolbin/genfontmap.ps src/idsdata.h src/ttinterp.h src/ttcalc.h src/gxfont42.h src/scf.h src/gsroptab.c lib/gs_fntem.ps src/gxidata.c src/inames.h src/gsistate.c src/gdevm1.c src/os2.mak src/gscolor2.c lib/gs_cidfm.ps src/gzline.h src/gscolor2.h lib/bdftops src/gsmalloc.c src/ttfmain.c lib/errpage.ps src/ivmem2.h src/gsmalloc.h src/gscindex.h src/gxiodev.h toolbin/makewin.tcl src/gp_macpoll.c src/dwmain.c src/gdevpcfb.c jasper/src/libjasper/bmp/bmp_cod.c src/gdevvec.c src/dwmain.h src/gdevpcfb.h jasper/src/libjasper/bmp/bmp_cod.h lib/gs_statd.ps src/gdevvec.h src/ostack.h src/gsrect.h jasper/src/libjasper/jpc/jpc_qmfb.c src/sdeparam.c src/idosave.h src/gdevvglb.c src/gdevimgn.c src/ifrpred.h jasper/src/libjasper/jpc/jpc_qmfb.h lib/impath.ps src/gsmdebug.h zlib/contrib/ada/zlib-thin.adb src/gsovrc.c src/gxshade1.c lib/ps2ps src/gdevm32.c jbig2dec/jbig2_symbol_dict.c src/gsovrc.h src/scfx.h src/all-arch.mak lib/gs_init.ps jbig2dec/jbig2_symbol_dict.h src/gsparams.c src/bfont.h src/idparam.c src/gdevbjcl.c src/gdevpsdu.c src/dvx-gcc.mak src/gsparams.h src/idparam.h src/gp_mswin.c src/gdevdsp2.h src/gxblend.c zlib/contrib/ada/zlib-thin.ads src/gdevbjcl.h src/gp_mswin.h src/gxblend.h src/gp_os2.c src/zcolor1.c zlib/trees.c lib/ps2ps2.bat src/math_.h src/gp_os2.h lib/gs_resmp.ps src/gdevstc.c lib/printafm.ps src/gxfunc.h jbig2dec/jbig2_segment.c src/macos-fw.mak src/ialloc.c src/gdevstc.h src/ialloc.h jasper/src/libjasper/jpc/jpc_mqcod.c src/gserrors.h src/sjpege.c jasper/src/libjasper/jpc/jpc_mqcod.h man/de/pdf2dsc.1 zlib/ChangeLog src/gxsample.c src/gxfarith.h src/dxmainc.c src/gdevbmp.c src/gxsample.h src/gserror.h src/gdevbmp.h src/gdevsppr.c src/igcstr.c src/gdevn533.c lib/pfbtopfa src/idebug.c src/igcstr.h src/rm.bat src/idebug.h toolbin/tests/run_regression src/gsht.c lib/gs_lgx_e.ps src/ifont2.h src/gdevpsdf.h src/gdevm16.c src/gsht.h src/scantab.c src/gxfapi.c src/zfilter.c jasper/src/libjasper/bmp/bmp_enc.c src/gstype42.c src/gxfapi.h src/iutilasm.asm src/gsfunc.c src/cp.bat src/sbcp.c jasper/src/libjasper/base/jas_image.c src/iref.h jbig2dec/jbig2_mmr.c src/gsfunc.h toolbin/encs2c.ps src/sbcp.h zlib/zconf.h lib/font2c.bat jbig2dec/jbig2_mmr.h src/gdevtrac.c src/gp_ntfs.c src/libpng.mak zlib/contrib/ada/zlib.adb src/gdevatx.c lib/docie.ps src/zfproc.c src/gs_dll_call.h src/dmmain.c lib/acctest.ps jasper/src/libjasper/bmp/bmp_dec.c src/istream.h doc/Ps2epsi.htm src/gs.c src/zdevice2.c jasper/src/libjasper/include/jasper/jas_types.h src/iscannum.c src/sjbig2.c src/gdevpdfb.c src/iscannum.h src/gscrdp.c src/gspmdrv.c zlib/contrib/ada/zlib.ads src/dmmain.r src/sjbig2.h toolbin/tests/gscheck_all.py src/gdevpdfb.h src/gsfemu.c src/inamestr.h src/gxclrast.c src/gdevxres.c src/gscrdp.h src/gspmdrv.h src/zfile1.c src/zimage3.c src/istkparm.h src/gdevo182.c src/zcspixel.c src/zarith.c src/gximage1.c lib/xlatmap src/msvctail.mak src/gsfunc4.c src/isdata.h src/gxclpath.c jasper/src/libjasper/jpc/jpc_mqenc.c jasper/src/libjasper/base/jas_malloc.c src/gsfunc4.h src/gxcmap.c src/gxclpath.h jasper/src/libjasper/jpc/jpc_mqenc.h src/icsmap.h src/gxcmap.h src/gpgetenv.h src/zpath.c src/ttload.c src/gsnorop.c src/gdevmrop.h src/gxfillsl.h src/zcolor3.c src/ttload.h zlib/contrib/ada/mtest.adb src/tttype.h src/gxcpath.c jasper/src/libjasper/jpc/jpc_mqdec.c doc/Unix-lpr.htm src/gxcpath.h lib/bdftops.bat jasper/src/libjasper/jpc/jpc_mqdec.h src/gxp1impl.h src/gdevlxm.c man/ps2ps.1 lib/Fontmap.GS src/rinkj/rinkj-epson870.c jbig2dec/jbig2_generic.c lib/eps2eps src/rinkj/rinkj-epson870.h jbig2dec/jbig2_generic.h jasper/src/libjasper/jpc/jpc_cod.h jbig2dec/jbig2_image.c lib/gs_ciecs3.ps src/gxgetbit.h src/gdevabuf.c doc/Source.htm src/md5.c jbig2dec/jbig2_image.h src/gp_mac.c src/gdevsgi.c jasper/src/libjasper/jpg/jpg_cod.h src/zcie.c src/md5.h src/gdevsco.c src/stream.c src/gp_mac.h lib/pdf_main.ps src/gdevsgi.h src/gdevdflt.c src/stream.h src/gsdpnext.h src/gdev8510.c lib/pdfwrite.ps src/gxstroke.c src/gdevpxut.c src/zmisc2.c src/zfunc3.c src/ttmisc.h src/iparam.c toolbin/tests/dump_testdb src/zrelbit.c src/gdevpxut.h src/gxclist.c src/gdevxini.c src/iparam.h lib/printafm Resource/ColorSpace/DefaultCMYK src/gxclist.h src/jbig2.mak src/gdevpsfu.c src/gdevlp8k.c jbig2dec/jbig2_arith_iaid.c man/font2c.1 doc/Htmstyle.htm src/gdevpdt.c lib/gsnd.bat src/ttfmemd.c lib/ps2pdf.bat jbig2dec/jbig2_arith_iaid.h src/gdevpdt.h src/gp_dosfs.c src/ttfmemd.h lib/dumphint.ps src/gpcheck.h src/jasper.mak src/ztype.c src/dwuninst.cpp lib/ps2ascii src/gdevxxf.c src/shc.c src/zshade.c man/ps2ascii.1 Resource/ColorSpace/DefaultGray doc/Use.htm src/opcheck.h src/shc.h lib/gsndt.bat src/gdevpdfd.c toolbin/tests/gssum.py src/gdevcfax.c src/zicc.c src/vdtrace.c src/gxdda.h src/vdtrace.h src/iscan.c src/iscan.h src/gsnotify.c toolbin/precheck.tcl toolbin/errlist.tcl src/gximage3.c lib/wftopfa lib/pfbtopfa.bat src/srle.c lib/gs_icc.ps src/zfilterx.c Resource/ColorSpace/TrivialCMYK src/gsnotify.h src/gximage3.h src/gsdll2.rc man/gs.1 src/memory_.h src/iparray.h jasper/src/libjasper/jpc/jpc_enc.c lib/gs_wl1_e.ps src/gsuid.h jasper/src/libjasper/jpc/jpc_enc.h Resource/Decoding/Unicode src/gdevstc2.c src/ziodev2.c man/eps2eps.1 src/gsiodevs.c lib/gs_sym_e.ps src/zmisc.c src/gsargs.c src/devs.mak src/gp_win32.c lib/ppath.ps doc/gsdoc.el src/gsargs.h src/gsinit.c src/gxttfb.c src/wmin.mak jasper/src/libjasper/jpc/jpc_flt.h jasper/src/libjasper/jpc/jpc_dec.c src/gxttfb.h src/winplat.mak src/dscparse.c src/gdev3852.c jasper/src/libjasper/jpc/jpc_dec.h src/dscparse.h src/gp_getnv.c lib/gs_dps1.ps zlib/contrib/ada/test.adb jasper/src/libjasper/jpc/jpc_t1cod.c src/gp_wgetv.c src/gdevpxen.h jasper/src/libjasper/jpc/jpc_t1cod.h src/gdevadmp.c src/gdevpxat.h src/zchar2.c src/errno_.h lib/wrfont.ps src/slzwc.c src/gdevpdfu.c src/ttcommon.h src/gdevp14.c src/sfilter.h src/dwinst.h doc/Ps2ps2.htm lib/pf2afm.bat lib/gs_trap.ps src/gdevp14.h src/ifcid.h src/sisparam.h src/ifont.h src/zfmd5.c src/unixlink.mak doc/Psfiles.htm src/zrop.c lib/pdfopt.bat src/zfjpx.c src/gdevegaa.asm toolbin/tests/gscheck_pdfwrite.py src/gspaint.c doc/index.html src/gspaint.h src/sa85x.h src/gsalpha.c src/int.mak lib/eps2eps.bat src/gsalpha.h src/icremap.h src/imainarg.c src/gp_dvx.c src/imainarg.h jbig2dec/os_types.h src/spprint.c src/gxcldev.h src/zbfont.c lib/FAPIfontmap src/unix-gcc.mak src/spprint.h src/igstate.h lib/ps2ps.cmd jasper/src/libjasper/base/jas_getopt.c src/unistd_.h src/version.mak src/dwtext.c src/sbwbs.c lib/bdftops.ps src/gxdevmem.h jasper/src/libjasper/jpc/jpc_t1enc.c src/icharout.h lib/gsbj src/gdevstc4.c src/dwtext.h src/sbwbs.h jasper/src/libjasper/jpc/jpc_t1enc.h src/szlibd.c src/gdevdbit.c src/gdevdfax.c src/gdevpccm.c lib/ps2pdf src/gdevpccm.h src/strimpl.h src/mv.bat src/gsutil.c jasper/src/libjasper/jpc/jpc_t1dec.c jasper/src/appl/imginfo.c src/opextern.h src/zimage.c src/gsutil.h jasper/src/libjasper/jpc/jpc_t1dec.h src/gdevcgm.c jbig2dec/jbig2_metadata.c lib/gs_wl2_e.ps src/gdevtsep.c src/gsfont0c.c doc/Deprecated.htm jbig2dec/jbig2_metadata.h man/de/font2c.1 src/gsht1.c src/gspcolor.c src/gxi12bit.c src/iddstack.h src/gsht1.h src/zfjbig2.c src/rinkj/rinkj-config.c src/gspcolor.h src/std.h src/rinkj/rinkj-config.h lib/type1ops.ps src/gdevs3ga.c src/slzwe.c lib/ps2epsi.ps src/scfdtab.c src/gscolor.c src/stdint_.h src/ztoken.c src/gxpaint.c src/zchar32.c src/seexec.c zlib/deflate.c src/icid.h src/gdevm56.c src/gscolor.h src/spsdf.c src/gxpaint.h zlib/zutil.c src/gsfname.c zlib/deflate.h toolbin/tests/make_testdb lib/gssetgs.bat jasper/src/libjasper/jpc/jpc_t2cod.c src/spsdf.h zlib/zutil.h lib/gsdj src/gsfname.h jasper/src/libjasper/jpc/jpc_t2cod.h src/gxalpha.h src/md5main.c jbig2dec/jbig2_refinement.c src/srlx.h src/gxclipsr.h src/gdevmac.c src/idisp.c src/jpeg.mak src/gdevmac.h src/idisp.h src/idstack.c src/gdevrinkj.c toolbin/makehist.tcl src/idstack.h src/gxoprect.c src/gdevwdib.c doc/Copying.htm src/gdevsunr.c src/gxoprect.h src/gdevpdtc.c src/gsfcmap1.c Resource/Decoding/StandardEncoding src/gswts.c lib/gs_diskf.ps lib/font2c.ps src/gsstate.c src/ichar1.h src/gswts.h src/gxiparam.h src/gsstate.h src/gdevcljc.c lib/pdf_base.ps doc/Ps2pdf.htm src/iscanbin.c src/gdevmiff.c lib/pphs.ps src/iscanbin.h src/gp_mshdl.c src/zfcid.c src/zfont.c jasper/src/libjasper/include/jasper/jas_math.h src/unixinst.mak src/zarray.c src/iminst.h src/gxdevcli.h src/fcntl_.h src/gdevpe.c doc/Humor.htm jasper/src/libjasper/jpc/jpc_t2enc.c src/zdfilter.c lib/Fontmap.SGI lib/gs_pdf_e.ps lib/prfont.ps jasper/src/libjasper/jpc/jpc_t2enc.h jasper/src/libjasper/include/jasper/jas_image.h src/write_t2.c src/zdps1.c src/write_t2.h doc/Commprod.htm lib/gs_css_e.ps src/zhsb.c toolbin/makemaster.tcl jasper/src/libjasper/jpc/jpc_t2dec.c toolbin/tests/revert_baseline src/zupath.c src/gxsync.c jasper/src/libjasper/jpc/jpc_t2dec.h src/dstack.h src/gxsync.h src/gsccolor.h src/gdevpdtt.c lib/ps2write.bat src/gdevpbm.c src/gdevpdtt.h src/gdevmrun.c src/gsdllwin.h lib/gs_typ32.ps src/gconf.c src/gdevmrun.h src/gconf.h src/sdct.h src/zfbcp.c src/gzcpath.h src/gsipar3x.h src/scfetab.c jbig2dec/jbig2.c src/gxstate.h jbig2dec/jbig2.h src/gdevpcl.c src/gdevcmap.c src/zht2.c src/gxfmap.h src/zfarc4.c src/gdevpcl.h src/gdevpdfj.c src/ichar.h lib/viewmiff.ps src/gdevcmap.h src/zht2.h src/gdevwprn.c src/gxpdash.c lib/gs_dps.ps src/ztrap.c src/gxlum.h toolbin/3way.tcl doc/Drivers.htm src/gdevdevn.c src/gdevpdte.c src/gsgcache.c src/gdevdevn.h src/gsgcache.h src/gsptype1.c src/zfcid0.c src/gxclbits.c src/zgstate.c src/macos_classic_d_pre.h src/gsptype1.h src/zfontenum.c lib/gs_setpd.ps src/ctype_.h lib/font2c src/inouparm.c src/rinkj/rinkj-screen-eb.c src/slzwx.h src/gstype1.c src/gxdhtres.h lib/gs_lgo_e.ps jasper/src/libjasper/include/jasper/jas_version.h src/gdevmpla.c src/rinkj/rinkj-screen-eb.h man/pdf2ps.1 src/gstype1.h src/dwmain.rc lib/ps2pdf12.cmd doc/Testing.htm lib/gs_fonts.ps src/gxcspace.h lib/gslj.bat lib/Fontmap.OS2 src/gdevmpla.h src/rinkj/evenbetter-rll.c man/wftopfa.1 src/watclib.mak src/rinkj/evenbetter-rll.h src/gxfcache.h src/istack.c src/gxclzlib.c src/zfont0.c lib/gs_l2img.ps src/istack.h src/gstparam.h lib/stcinfo.ps src/gdevevga.c src/gdevhit.c src/gxclimag.c src/gsdfilt.c lib/packfile.ps toolbin/many2pdf.tcl src/gxfillts.h src/gsdfilt.h toolbin/tests/run_nightly toolbin/tests/get_baselines toolbin/gsindent src/gxht.c src/gxdcconv.c src/gdevpsdp.c src/openvms.mak src/gxcht.c src/gdevclj.c src/gdevxalt.c src/gxht.h src/gxdcconv.h src/zvmem2.c src/gdevpdtv.c src/contrib.mak src/rinkj/rinkj-device.c src/gdevpdtv.h src/gsiparm3.h lib/gs_typ42.ps src/gxclpage.c lib/dumphint.bat src/gxfont1.h src/rinkj/rinkj-device.h lib/gslj src/icontext.c src/gsdllos2.h src/gxclpage.h src/zstring.c src/icontext.h lib/gslp src/unix-aux.mak src/gzspotan.c src/zfont32.c src/ttfoutl.h src/gxclip2.c src/szlibxx.h src/gdevdrop.c src/gzspotan.h jasper/src/libjasper/jpc/jpc_cs.c src/gxclip2.h man/dvipdf.1 src/scfd.c jasper/src/libjasper/jpc/jpc_cs.h src/cfonts.mak src/gxiclass.h lib/pdf2dsc lib/ht_ccsto.ps src/gdevcgml.c src/gdevpx.c src/gdevcgml.h src/gdevl256.c jasper/src/libjasper/ras/ras_cod.c src/windows_.h doc/DLL.htm src/igcref.c src/zcharx.c src/gxtype1.c jasper/src/libjasper/ras/ras_cod.h src/gxtype1.h src/gdevcp50.c lib/gs_ciddc.ps src/idictdef.h src/gsmemret.c toolbin/bughunt.sh src/gxclip.c src/gsmemret.h lib/gsnd src/iname.c src/sfilter1.c lib/pdfopt src/gxclip.h src/sddparam.c src/zmedia2.c src/iname.h src/gs.mak src/gxpcmap.c doc/News.htm src/gp_msdll.c lib/gs_wan_e.ps lib/ps2pdf13.cmd jasper/src/libjasper/include/jasper/jas_stream.h src/gxcid.h src/gdevnfwd.c src/macos-mcp.mak src/ttobjs.c doc/History1.htm src/ttobjs.h src/zcontrol.c src/icclib.mak src/gsfcmap.c src/iimage2.h src/zfont2.c src/gsfcmap.h src/gxrplane.h src/gxp1fill.c src/imemory.h src/gsciemap.c src/dos_.h src/zdscpars.c src/gscdef.c lib/winmaps.ps src/gdevwpr2.c lib/landscap.ps src/gxtmap.h lib/gs_frsd.ps src/gsbitcom.c src/zchar.c lib/gs_devpxl.ps src/gdevsun.c lib/fixmswrd.pl src/gscrypt1.c doc/Fonts.htm toolbin/tests/gscheck_raster.py lib/gsdj500.bat src/gscrypt1.h jasper/src/libjasper/include/jasper/jas_tvp.h src/ztrans.c src/dwmainc.c src/gxdht.h src/dvx-head.mak lib/ps2ps2 src/zcsindex.c src/gdevrops.c src/zcidtest.c src/gdevpdtx.h src/gdevijs.c doc/gs-vms.hlp src/icolor.h src/gp_msio.c src/stdpn.h jasper/src/libjasper/ras/ras_enc.c src/store.h src/gstypes.h src/gxfixed.h src/gsserial.c src/string_.h src/gsserial.h src/gsjmorec.h src/gdevcslw.c src/zfdctd.c src/zdps.c jasper/src/libjasper/ras/ras_dec.c src/gxpcache.h src/scanchar.h man/de/pdf2ps.1 src/gdevdsp.c src/lib.mak src/zmatrix.c src/sdctc.c src/gdevdsp.h src/gdevpipe.c src/gspmdrv.rc zlib/compress.c src/gdevsvga.c src/gdevpdti.c lib/pf2afm src/gdevsvga.h src/gdevpdti.h src/gdevepsn.c src/gsparam2.c src/gp_mktmp.c src/stat_.h src/zfsample.c src/gsstruct.h jbig2dec/jbig2_huffman.c lib/gs_wl5_e.ps src/zfdecode.c src/gximag3x.c src/gsgc.h jbig2dec/jbig2_huffman.h src/gscolor1.c src/dwtrace.c src/gdevmswn.c src/gxfcmap.h src/ierrors.h src/gdevjpeg.c src/gximag3x.h src/siinterp.c src/gscolor1.h src/dwtrace.h src/gdevmswn.h src/gdevbbox.c src/opdef.h src/siinterp.h lib/opdfread.ps lib/ps2pdf14.cmd src/gdevbbox.h lib/gs_mex_e.ps src/iddict.h lib/gs_std_e.ps src/gp_stdin.c doc/History2.htm src/gsexit.h src/gendev.c src/gdevtfax.c src/gdevpjet.c src/gdevphex.c src/gslparam.h src/gp.h src/ivmspace.h src/gshtscr.c src/gdevtfax.h jbig2dec/jbig2_image_pbm.c src/bench.c src/gsnogc.c src/gsnogc.h src/gdevbmpa.c src/stdio_.h src/tttables.h src/gdevemap.c src/gp_sysv.c jasper/src/libjasper/include/jasper/jas_debug.h src/gsrefct.h src/iastruct.h toolbin/tests/revert_pdfbaseline man/de/dvipdf.1 src/gdevbjc.h lib/gs_mro_e.ps lib/ps2ps.bat src/gdevpsf2.c jbig2dec/jbig2_arith_int.c src/gzht.h doc/Develop.htm src/gxcvalue.h jbig2dec/jbig2_arith_int.h lib/mkcidfm.ps src/sstring.c lib/cid2code.ps src/gxpath.c src/scfparam.c src/gdevupd.c src/iconf.c src/sstring.h src/gxpath.h src/interp.c src/zcrd.c src/dwnodll.c src/iconf.h doc/C-style.htm src/gdevm40.c lib/gs_cff.ps lib/zeroline.ps src/dwdll.c src/interp.h man/ps2pdfwr.1 src/dwdll.h src/gsiodisk.c src/sjpegd.c src/gspath2.h lib/rollconv.ps src/gdevpsim.c src/dvx-tail.mak lib/lp386.bat src/errors.h src/gp_msprn.c lib/lprsetup.sh src/gxino12b.c src/gdevmgr.c src/gdevpdfp.c src/gxacpath.c src/gslib.c src/gdevmgr.h src/ziodev.c src/iccinit0.c src/sdcte.c doc/Release.htm src/gslib.h lib/gs_dpnxt.ps lib/pdf_draw.ps src/gxccache.c src/ifont1.h src/zfunc0.c src/gxmatrix.h src/gxfdrop.c src/ifunc.h src/gp_unifs.c zlib/contrib/ada/read.adb src/gxfdrop.h src/gxobj.h toolbin/tests/update_pdfbaseline src/gsiorom.c src/gxhintn.c src/isstate.h jbig2dec/jbig2_text.c jbig2dec/jbig2_hufftab.h src/gdevm2.c src/gxhintn.h src/ifilter2.h src/gspath.c src/gdevwddb.c src/gxpcopy.c src/gspath.h src/gscolor3.c src/gdevdjet.c man/gsnd.1 lib/ps2pdf12 src/gscolor3.h lib/ps2pdf13 lib/ps2pdf14 lib/pdf2dsc.ps lib/gs_pfile.ps src/rinkj/rinkj-dither.c src/zpath1.c src/gdevm24.c doc/History3.htm src/gp_unix.c src/rinkj/rinkj-dither.h src/inamedef.h jbig2dec/config_win32.h lib/gs_rdlin.ps src/ilocate.c src/gxdcolor.c src/gdevpm.c src/gscdefs.h src/vmsmath.h src/gscencs.c src/gxdcolor.h src/gzstate.h src/gschar0.c src/gdevpm.h src/gdevbmpc.c Resource/ColorSpace/DefaultRGB src/iht.h src/zdevice.c src/gscie.c src/gscencs.h lib/gs_cidfn.ps doc/Changes.htm lib/addxchar.ps src/gxi16bit.c src/ifapi.h src/zimage2.c src/gscie.h src/iastate.h src/pipe_.h src/gxbitops.h src/ipacked.h lib/font2pcl.ps lib/PDFA_def.ps src/gsfunc3.c src/gpsync.h src/gdevperm.c src/gswin.rc src/gsccode.h src/gsfunc3.h src/gxpath2.c src/gp_strdl.c src/genconf.c src/gxdevbuf.h lib/gs_ciecs2.ps toolbin/tests/gsparamsets.py lib/lpr2.bat lib/lp386r2.bat src/sa85d.c src/gscsel.h man/pdf2dsc.1 toolbin/tests/update_specific lib/gsbj.bat src/openvms.mmk src/sa85d.h src/gp_stdia.c src/zcolor2.c doc/Hershey.htm src/gdev3b1.c lib/wmakebat.bat lib/gst.bat src/gxttf.h src/ttconf.h src/genht.c src/zgeneric.c lib/type1enc.ps lib/dvipdf man/de/printafm.1 src/gxarith.h src/gxclrect.c src/gsshade.c lib/pdf_sec.ps src/gsshade.h src/msvclib.mak src/gsicc.c src/zcid.c src/dwsetup.cpp src/gdevp2up.c lib/pv.sh src/gsicc.h src/dwuninst.rc lib/PDFX_def.ps lib/viewjpeg.ps lib/image-qa.ps src/gdevpdfr.c src/gdevppla.c autogen.sh jasper/src/appl/jasper.c toolbin/gsmake src/zmisc1.c src/gsdevmem.c src/gdevppla.h src/wccommon.mak jasper/src/libjasper/include/jasper/jas_string.h src/gxfcopy.c src/gdevpsft.c lib/ps2epsi src/gxfcopy.h src/gsmisc.c src/gdevtfnx.c lib/wftopfa.ps src/gdevm4.c src/gxicolor.c src/gxpageq.c lib/ps2ai.ps src/gsdparam.c lib/pdf2ps.cmd src/winint.mak jasper/src/libjasper/include/jasper/jas_seq.h man/ps2pdf.1 doc/Make.htm doc/Details8.htm src/gxpageq.h src/gsstype.h src/gxdevrop.h src/gdevprn.c src/gdevcif.c lib/gs_resst.ps src/gxdevndi.c doc/History4.htm toolbin/tests/check_comments.py src/gdevprn.h src/gxdevndi.h jasper/src/libjasper/base/jas_tvp.c src/iesdata.h src/dxmain.c lib/gs_sepr.ps src/gdevpdfc.c src/iapi.c lib/gstt.bat src/spngpx.h src/gdevpdfc.h src/gdevherc.c src/btoken.h src/iapi.h src/zcharout.c toolbin/tests/gscheck_fuzzypdf.py src/gdevepsc.c toolbin/drawafm.ps lib/gs_il1_e.ps src/gxdevice.h src/gximage2.c src/srld.c src/zht.c src/gxshade4.c lib/gs_stres.ps src/gxshade4.h src/iinit.c src/gdevstc1.c src/gxbitmap.h src/gxccman.c src/watcw32.mak lib/ps2pdfxx.bat src/iinit.h src/gsalphac.c src/gxshade.c toolbin/pre src/sbtx.h src/zfunc.c src/gsclipsr.c src/gsalphac.h src/gxshade.h src/gsrop.c src/gsclipsr.h src/idict.c src/gxistate.h src/gsrop.h src/gscoord.c jbig2dec/memcmp.c src/idict.h doc/Public.htm lib/ps2pdf12.bat src/gxcolor2.h src/macos_carbon_d_pre.h zlib/example.c src/gscoord.h jasper/src/libjasper/jpc/jpc_tsfb.c toolbin/pre.tcl src/genarch.c jasper/src/libjasper/jpc/jpc_tsfb.h src/gscedata.c doc/Projects.htm lib/viewcmyk.ps src/gscpm.h src/gxcindex.h src/gscedata.h src/gp_nsync.c src/gdevmr2n.c src/gdevdgbr.c src/gdevdsha.c src/gdevxcf.c src/zlib.mak lib/gs_fapi.ps src/gxtext.h src/zchar1.c src/gscdevn.c lib/pf2afm.ps src/gscdevn.h jasper/src/libjasper/jpc/jpc_fix.h src/gdevpdft.c src/gdevpsdi.c zlib/adler32.c src/shcgen.c src/gsiparam.h lib/pphs src/zmisc3.c src/zfapi.c src/zfunc4.c lib/gsdj500 src/malloc_.h src/shcgen.h src/gscpixel.c lib/pdf_font.ps lib/viewgif.ps lib/gs_diskn.ps src/gscpixel.h lib/gs_btokn.ps lib/ps2epsi.cmd toolbin/tests/check_dirs.py toolbin/gsmake.tcl src/gdevplnx.c lib/lines.ps src/dirent_.h src/gdevplnx.h jasper/src/appl/imgcmp.c src/zfzlib.c lib/FAPIcidfmap src/Makefile.in src/gscsepr.c src/iutil2.c doc/History5.htm src/gscsepr.h src/gsimage.c src/gxwts.c src/ipcolor.h src/iutil2.h src/sjpeg.h src/gstext.c src/gsimage.h lib/gs_fform.ps src/gxwts.h src/msvccmd.mak src/gstext.h src/gsflip.c src/gdevpdfe.c src/rinkj/rinkj-byte-stream.c src/gsflip.h src/rinkj/rinkj-byte-stream.h jasper/src/libjasper/jpc/jpc_mct.c src/gdevdljm.c src/zdpnext.c src/geninit.c jasper/src/libjasper/jpc/jpc_mct.h src/gdevdljm.h lib/gs_ll3.ps src/zusparam.c man/pfbtopfa.1 src/gxchrout.c src/gximage4.c src/gxchrout.h src/gxshade6.c src/gxcoord.h jbig2dec/jbig2_page.c src/gdevpdf.c src/macosx.mak src/tttypes.h src/zpacked.c toolbin/tests/gstestutils.py src/gsparamx.c src/gdevstc3.c src/gp_dosfe.c src/iutil.c src/szlibc.c toolbin/maketars.tcl src/gsparamx.h lib/gs_cmdl.ps lib/gs_cmap.ps src/gdevpng.c src/iutil.h jasper/src/libjasper/include/jasper/jas_fix.h jbig2dec/test_jbig2dec.py lib/gs_il2_e.ps src/gzpath.h zlib/zconf.in.h src/gxcdevn.h src/sfxstdio.c lib/ps2pdf13.bat lib/ps2pdfwr src/gxropc.h toolbin/makeset.tcl src/gxfcid.h src/gxfont.h lib/gs_agl.ps src/gdevccr.c lib/ps2ascii.cmd src/mkromfs.c zlib/contrib/ada/zlib-streams.adb src/gslibctx.c zlib/gzio.c src/gdevdcrd.c src/unix-dll.mak src/gslibctx.h src/zbseq.c src/ziodevsc.c src/gdevdcrd.h src/instcopy src/gdevl31s.c man/de/ps2pdf.1 src/zfrsd.c src/iosdata.h src/gdevmacpictop.h src/gdevdjtc.c lib/showchar.ps src/gxino16b.c toolbin/tests/rasterdb.py zlib/contrib/ada/zlib-streams.ads src/gdevpcx.c src/gdevpxop.h src/zfileio.c jasper/src/libjasper/jpc/jpc_tagtree.c src/slzwd.c src/gdevpdfv.c lib/pcharstr.ps src/gxifast.c src/gxpflat.c jasper/src/libjasper/jpc/jpc_tagtree.h src/dwimg.c src/fapi_ft.c lib/pdf_ops.ps src/zsysvm.c src/gsimpath.c src/dwimg.h src/gdevx.c src/gsmemlok.c src/gsos2.rc lib/gs_cidtt.ps lib/gs_dps2.ps src/gximage.c src/gdevx.h man/printafm.1 src/gsmemlok.h src/ziodevs.c src/unixansi.mak jasper/src/libjasper/pgx/pgx_cod.h src/gdevpsfx.c ijs/Makefile.am src/gximage.h src/gscspace.c src/gdevmacttf.h src/gdevm8.c lib/gsdj.bat src/gdevpnga.c lib/gs_mgl_e.ps examples/waterfal.ps src/gsropc.c src/gscspace.h src/gsxfont.h src/ttfsfnt.h src/gsjconf.h man/pdfopt.1 toolbin/tests/make_two_versions src/gsfcid.c src/zstack.c src/gsfont.c jasper/src/libjasper/base/jas_stream.c src/gsropc.h src/gsfont.h lib/gs_ttf.ps lib/unprot.ps src/isave.c lib/gslp.bat lib/align.ps doc/History6.htm src/gdevm64.c src/isave.h src/zdict.c toolbin/leaks.tcl src/gxfrac.h toolbin/tmake.tcl src/gx.h jasper/src/libjasper/jpc/jpc_util.c src/iccfont.c src/gdevpdfg.c lib/markpath.ps src/gdevps.c lib/pdf2dsc.bat src/png_.h src/gxcllzw.c src/gdevpdfg.h lib/gs_patrn.ps doc/API.htm src/gxhttile.h toolbin/smoke.ps src/gdevpdtb.c src/gsdps1.c lib/gs_res.ps src/time_.h src/gdevpdtb.h src/ttfinp.c src/gshsb.c src/pcwin.mak src/vms_x_fix.h src/ziodevst.c src/smtf.c src/ttfinp.h src/gshsb.h src/gdevtifs.c src/x_.h lib/gs_devcs.ps man/pf2afm.1 src/smtf.h src/gdevtifs.h src/gximono.c src/fapiufst.c Resource/Decoding/Latin1 lib/viewpbm.ps src/szlibe.c lib/ps2ps2.cmd src/gxctable.c src/main.h toolbin/headers.tcl src/gp_vms.c src/gp_iwatc.c src/gxctable.h src/ugcclib.mak src/gdev8bcm.c src/gp_os9.c src/dwsetup.h src/gdevbj10.c src/gxclipm.c src/gdev8bcm.h src/zpaint.c lib/ps2pdf14.bat src/stdpre.h src/iplugin.c src/gxclipm.h src/gsgdata.c]</p>
</blockquote>

<p><strong><a name="2005-12-26T223616.000000Z"></a>
2005-12-26T22:36:16.000000Z Ray Johnston</strong></p>
<blockquote>
<pre>
Enable use of "Bold" in BaseFont name when doing font substitution from PDF
files that don't embed all fonts. Bug 688432 for customer 670.

DETAILS:

There is not really a 'Bold' flag in the FontDescriptor Flags (the ForceBold
infers a Bold font, but is not present for all Bold fonts since it has a
different meaning).

The pdf_font.ps logic had logic for "Narrow" in the font name, but not "Bold".
Enabling recognition of "Bold" works for this file and probably most others.

EXPECTED DIFFERENCES.

unknown, but if so progressions will be updated.
</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2005-12-26T143815.000000Z"></a>
2005-12-26T14:38:15.000000Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Latest CMap files from ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe
Bug 688412
</pre>
<p>[Resource/CMap/78-H Resource/CMap/Hojo-H Resource/CMap/GB-RKSJ-H Resource/CMap/CNS06-RKSJ-H Resource/CMap/UniHojo-UCS2-V Resource/CMap/CNS2-H Resource/CMap/RKSJ-H Resource/CMap/78-V Resource/CMap/Hojo-V Resource/CMap/TCVN-RKSJ-H Resource/CMap/CNS2-V Resource/CMap/Hiragana Resource/CMap/RKSJ-V Resource/CMap/Roman Resource/CMap/UniKS-UTF32-H Resource/CMap/KSCpc-EUC-V Resource/CMap/CNS05-RKSJ-H Resource/CMap/UniHojo-UTF8-H Resource/CMap/CNS15-RKSJ-H Resource/CMap/Adobe-Korea1-0 Resource/CMap/Adobe-Korea1-1 Resource/CMap/Adobe-Korea1-2 Resource/CMap/78-RKSJ-H Resource/CMap/HKdlb-B5-V Resource/CMap/UniKS-UTF32-V Resource/CMap/KSC2-RKSJ-H Resource/CMap/UniHojo-UTF32-H Resource/CMap/UniHojo-UTF8-V Resource/CMap/HKscs-B5-H Resource/CMap/78-RKSJ-V Resource/CMap/GBT-RKSJ-H Resource/CMap/HKgccs-B5-V Resource/CMap/Add-H Resource/CMap/Adobe-GB1-0 Resource/CMap/UniHojo-UTF32-V Resource/CMap/EUC-V Resource/CMap/Adobe-GB1-1 Resource/CMap/Adobe-GB1-2 Resource/CMap/UniGB-UCS2-V Resource/CMap/Adobe-GB1-3 Resource/CMap/HKm471-B5-V Resource/CMap/Adobe-GB1-4 Resource/CMap/HKscs-B5-V Resource/CMap/CNS04-RKSJ-H Resource/CMap/Adobe-GB1-5 Resource/CMap/UniCNS-UTF32-H Resource/CMap/Add-V Resource/CMap/Hojo-EUC-H Resource/CMap/UniJISPro-UCS2-V Resource/CMap/GBT-H Resource/CMap/UniKS-UTF8-H Resource/CMap/UniCNS-UTF32-V Resource/CMap/Ext-RKSJ-V Resource/CMap/Hojo-EUC-V Resource/CMap/UniGB-UTF8-H Resource/CMap/GBT-V Resource/CMap/Adobe-Japan1-0 Resource/CMap/GBK-EUC-V Resource/CMap/Adobe-Japan1-1 Resource/CMap/UniKS-UTF8-V Resource/CMap/Adobe-Japan1-2 Resource/CMap/UniKS-UTF16-H Resource/CMap/CNS03-RKSJ-H Resource/CMap/Adobe-Japan1-3 Resource/CMap/Adobe-Japan1-4 Resource/CMap/Adobe-Japan1-5 Resource/CMap/Adobe-Japan1-6 Resource/CMap/UniJIS-UTF32-H Resource/CMap/B5-H Resource/CMap/UniGB-UTF8-V Resource/CMap/UniKS-UTF16-V Resource/CMap/UniJIS-UCS2-H Resource/CMap/UniHojo-UTF16-H Resource/CMap/V Resource/CMap/KSC-H Resource/CMap/UniJIS-UTF32-V Resource/CMap/B5-V Resource/CMap/UniJISPro-UTF8-V Resource/CMap/Katakana Resource/CMap/CNS02-RKSJ-H Resource/CMap/UniHojo-UTF16-V Resource/CMap/KSC-V Resource/CMap/GBK2K-H Resource/CMap/UniCNS-UTF16-H Resource/CMap/HKdla-B5-V Resource/CMap/UniGB-UTF32-H Resource/CMap/GBKp-EUC-V Resource/CMap/GBK2K-V Resource/CMap/UniCNS-UTF16-V Resource/CMap/UniGB-UTF32-V Resource/CMap/Adobe-CNS1-0 Resource/CMap/Adobe-CNS1-1 Resource/CMap/UniJIS-UTF8-H Resource/CMap/Adobe-CNS1-2 Resource/CMap/UniCNS-UCS2-V Resource/CMap/Adobe-CNS1-3 Resource/CMap/Adobe-CNS1-4 Resource/CMap/GB-H Resource/CMap/Adobe-CNS1-5 Resource/CMap/Adobe-Japan2-0 Resource/CMap/CNS01-RKSJ-H Resource/CMap/UniJISX0213-UTF32-H Resource/CMap/UniJIS-UTF8-V Resource/CMap/UniJIS-UTF16-H Resource/CMap/GB-V Resource/CMap/UniJISX0213-UTF32-V Resource/CMap/UniJIS-UTF16-V Resource/CMap/UniCNS-UTF8-H Resource/CMap/UniJIS-UCS2-HW-H Resource/CMap/HKm314-B5-V Resource/CMap/Hankaku Resource/CMap/UniCNS-UTF8-V Resource/CMap/WP-Symbol Resource/CMap/NWP-H Resource/CMap/CNS1-H Resource/CMap/Hojo-RKSJ-H Resource/CMap/UniGB-UTF16-H Resource/CMap/78-EUC-H Resource/CMap/NWP-V Resource/CMap/CNS1-V Resource/CMap/UniGB-UTF16-V Resource/CMap/78-EUC-V Resource/CMap/KSC-RKSJ-H Resource/CMap/ETHK-B5-H Resource/CMap/Ext-H Resource/CMap/KSC-Johab-H Resource/CMap/CNS07-RKSJ-H Resource/CMap/78ms-RKSJ-H Resource/CMap/HK-RKSJ-H Resource/CMap/GBTpc-EUC-H Resource/CMap/ETHK-B5-V Resource/CMap/Ext-V Resource/CMap/KSC-Johab-V Resource/CMap/78ms-RKSJ-V Resource/CMap/UniJISPro-UCS2-HW-V Resource/CMap/GBTpc-EUC-V]</p>
</blockquote>

<p><strong><a name="2005-12-23T202600.000000Z"></a>
2005-12-23T20:26:00.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix handling of broken TrueType fonts that have a loca table that is not in order (continued 2).

DETAILS :

Bug 688461 "TrueType-Problem with Core-Dump (Solaris)".

This is a further improvement of the patch for
Bug 687889  "/rangecheck in --string--".

The last patch erroneusely computed loca_size,
causing a string length problem when running pdfwrite with
the test file of the bug 688461.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gstype42.c]</p>
</blockquote>

<p><strong><a name="2005-12-23T153907.000000Z"></a>
2005-12-23T15:39:07.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix handling of broken TrueType fonts that have a loca table that is not in order (continued).

DETAILS :

Bug 688461 "TrueType-Problem with Core-Dump (Solaris)".

This is a further improvement of the patch for
Bug 687889  "/rangecheck in --string--".

1. Inserted a code for ignoring excessive data at end of 'loca' - see comment in code.
2. When (1) works, a warning is printed to stderr (in debug build only).
3. Fixed C coding style in gstype42.c revision 1.49.

We're not sure that this patch is good for any incorrect TrueType font,
because the old code keeps some artifacts without enough explanation.
We inserted a debug printing to study related cases better.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gstype42.c]</p>
</blockquote>

<p><strong><a name="2005-12-22T184645.000000Z"></a>
2005-12-22T18:46:45.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : CID fonts got incorrect FontBBox.

DETAILS :

Bug 688467 "pdfwrite device creates incorrect PDF from EPS with CIDFont".
This fixes the 1st part of the bug 688467.
See the bug about the 2nd part.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdtd.c]</p>
</blockquote>

<p><strong><a name="2005-12-22T064717.000000Z"></a>
2005-12-22T06:47:17.000000Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Recursively enumerate filter parameters and resolve indirect objects.
Bug 688415 from customer 670.
</pre>
<p>[lib/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2005-12-22T064013.000000Z"></a>
2005-12-22T06:40:13.000000Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Correct a few typos in 16-bit pixel differencing filter.
Bug 687986

DETAILS :
This is a partial fix for a dead code. The patch fixes simple typos in 16-bit
code, which are difficult to spot because of the nested macroses.  Assignment
ss-&gt;prev[0] = s0 is needed because the code for handling leftover bytes uses
ss-&gt;prev[0]. The filter still falls into an infinite loop sometimes, but this
fix doesn't address this problem.
</pre>
<p>[src/spdiff.c]</p>
</blockquote>

<p><strong><a name="2005-12-22T061031.000000Z"></a>
2005-12-22T06:10:31.000000Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Move ReadString and related procedures from systemdict to local environment
to avoid a name conflict in a file that defines ReadString in userdict.
Bug 687848 from customer 1120
</pre>
<p>[lib/gs_cidfn.ps]</p>
</blockquote>

<p><strong><a name="2005-12-21T035716.000000Z"></a>
2005-12-21T03:57:16.000000Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add missing ps2write device to Makefile.in
Bug 688420
</pre>
<p>[src/Makefile.in]</p>
</blockquote>

<p><strong><a name="2005-12-21T033612.000000Z"></a>
2005-12-21T03:36:12.000000Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix serious warnings generated by GCC 3.2 on Cygwin.
Bug 687622
</pre>
<p>[src/gdevxini.c src/gdevpdtb.c src/gdevpdfe.c]</p>
</blockquote>

<p><strong><a name="2005-12-20T225752.000000Z"></a>
2005-12-20T22:57:52.000000Z Ralph Giles</strong></p>
<blockquote>
<pre>
Commit Raph's patch to ignore invalid channel mappings. This gives
better behaviour on a common file breakage with CMYK jpeg images in PDF.
</pre>
<p>[jpeg/jdmarker.c]</p>
</blockquote>

<p><strong><a name="2005-12-20T143630.000000Z"></a>
2005-12-20T14:36:30.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A tolerance to a long 'head' table of a TrueType font.

DETAILS :

Bug 688409 "regression cvs 11/14/2005 ps2pdf fails with "Error: /invalidfont in --xshow--"".

Ignore and skip data beond the end of 'head' table.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpsft.c]</p>
</blockquote>

<p><strong><a name="2005-12-19T152247.000000Z"></a>
2005-12-19T15:22:47.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Can't skip identity ToUnicode CMap for a composite font.

DETAILS :

Bug 688447 "ps-&gt;pdf korean english mixed text fails to text extract english correctly.".

Not sure why old code skips identity ToUnicode CMap -
likely it was taken from scratch and now appears incorrect.

With Type 0 fonts the PDF specification allows to skip ToUnicode only
when a font has a predefined CMap name as a value Encoding entry.
However we don't recognize standard CMap because our PS interpreter
doesn't provide a neccessary data - see bug 688459.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdtw.c]</p>
</blockquote>

<p><strong><a name="2005-12-18T181125.000000Z"></a>
2005-12-18T18:11:25.000000Z Ralph Giles</strong></p>
<blockquote>
<pre>
Correct an incorrect return value. Thanks to Leonardo for pointing this
out.
</pre>
<p>[jbig2dec/jbig2_text.c]</p>
</blockquote>

<p><strong><a name="2005-12-17T091110.000000Z"></a>
2005-12-17T09:11:10.000000Z Ralph Giles</strong></p>
<blockquote>
<pre>
Pass the CFLAGS makefile variable when building auxiliary programs on
MSVC. This is necessary to that genarch sees the GX_COLOR_INDEX_TYPE
define to calculate the corresponding sizeof define. This is already
the case in the autoconf/unix build. Bug 687523.
</pre>
<p>[src/msvccmd.mak]</p>
</blockquote>

<p><strong><a name="2005-12-17T020858.000000Z"></a>
2005-12-17T02:08:58.000000Z Ralph Giles</strong></p>
<blockquote>
<pre>
Document the change synchronization issue with the two
GX_COLOR_INDEX_TYPE fallbacks. Bug 687523.
</pre>
<p>[src/gxcindex.h src/genarch.c]</p>
</blockquote>

<p><strong><a name="2005-12-17T020433.000000Z"></a>
2005-12-17T02:04:33.000000Z Ralph Giles</strong></p>
<blockquote>
<pre>
Have genarch define ARCH_SIZEOF_GX_COLOR_INDEX in arch.h. Bug 687523.

DETAILS:

One can't use the sizeof operator in preprocessor directives, so there's
been no way to do compile-time codepath choice based on the chosen size
of the color index type, which is quite important for performance.
Therefore we add a test to genarch.h to make this runtime test available
throughout the code when Ghostscript is built.

Note that this is a little fragile since the GX_COLOR_INDEX_TYPE define
is set by the toplevel makefiles. If nothing is set, the code in
gxcindex.h falls back to 'unsigned long int'. genarch.c now has the same
fallback, but obviously those should be kept in sync.
</pre>
<p>[src/genarch.c]</p>
</blockquote>

<p><strong><a name="2005-12-17T015604.000000Z"></a>
2005-12-17T01:56:04.000000Z Ralph Giles</strong></p>
<blockquote>
<pre>
Merge latest jbig2dec trunk into cvs. This is not released code.
</pre>
<p>[jbig2dec/config_win32.h jbig2dec/jbig2_metadata.c jbig2dec/jbig2_image_pbm.c jbig2dec/jbig2.c jbig2dec/jbig2_generic.h jbig2dec/jbig2_image.c jbig2dec/jbig2.h jbig2dec/jbig2_metadata.h jbig2dec/jbig2_priv.h jbig2dec/jbig2_image_png.c jbig2dec/jbig2_image.h jbig2dec/jbig2dec.c jbig2dec/os_types.h jbig2dec/configure.ac jbig2dec/jbig2_arith.c jbig2dec/jbig2_symbol_dict.c jbig2dec/jbig2_arith.h jbig2dec/jbig2_page.c jbig2dec/jbig2_symbol_dict.h jbig2dec/jbig2_arith_int.c jbig2dec/jbig2_text.c jbig2dec/jbig2_hufftab.h jbig2dec/jbig2_huffman.c jbig2dec/jbig2_arith_int.h jbig2dec/jbig2_huffman.h jbig2dec/jbig2_mmr.c jbig2dec/jbig2_refinement.c jbig2dec/jbig2_arith_iaid.c jbig2dec/jbig2_mmr.h jbig2dec/test_jbig2dec.py jbig2dec/memcmp.c jbig2dec/jbig2_segment.c jbig2dec/jbig2_arith_iaid.h jbig2dec/Makefile.am jbig2dec/jbig2_generic.c]</p>
</blockquote>

<p><strong><a name="2005-12-16T221602.000000Z"></a>
2005-12-16T22:16:02.000000Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove references to little-used mailing lists.
</pre>
<p>[doc/Release.htm]</p>
</blockquote>

<p><strong><a name="2005-12-16T221259.000000Z"></a>
2005-12-16T22:12:59.000000Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove references to the bug-gs mailing list in the manpages, and add
references to bugs.ghostscript.com to gs and ps2pdf. Also list Artifex
as an author before artofcode.
</pre>
<p>[man/pf2afm.1 man/dvipdf.1 man/ps2ascii.1 man/printafm.1 man/eps2eps.1 man/de/font2c.1 man/de/gsnd.1 man/de/pdfopt.1 man/de/pdf2ps.1 man/de/ps2pdf.1 man/gsnd.1 man/font2c.1 man/pdfopt.1 man/ps2pdf.1 man/pdf2ps.1 man/de/wftopfa.1 man/de/ps2ps.1 man/pfbtopfa.1 man/de/dvipdf.1 man/de/ps2ascii.1 man/gslp.1 man/wftopfa.1 man/ps2pdfwr.1 man/ps2ps.1 man/de/printafm.1 man/gs.1]</p>
</blockquote>

<p><strong><a name="2005-12-16T215251.000000Z"></a>
2005-12-16T21:52:51.000000Z Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the bug report instructions from the documentation. Clearly no
one is using this, and just pointing people at the tracker is simplest.
</pre>
<p>[doc/Readme.htm doc/Bug-form.htm doc/Bug-info.htm]</p>
</blockquote>

<p><strong><a name="2005-12-15T212150.000000Z"></a>
2005-12-15T21:21:50.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix (TT interpreter) : Uninitialized data access while interpreting a high subglyph tree (continued).

DETAILS :

Bug 688421 "Ghostscript deadloop when processing PDF".
The last latch missed a return code in one branch.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfill.c]</p>
</blockquote>

<p><strong><a name="2005-12-15T195541.000000Z"></a>
2005-12-15T19:55:41.000000Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Skip '+' character in real numbers during CFF font generation.
Ignore the reserved nibble 0xd in encoded real numbers in CFF fonts.
Bug 688449
</pre>
<p>[src/gdevpsf2.c lib/gs_cff.ps]</p>
</blockquote>

<p><strong><a name="2005-12-15T122117.000000Z"></a>
2005-12-15T12:21:17.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Iproving the coding style.

DETAILS :

An indentation was confusing in gs_pdfwr.ps .

EXPECTED DIFFERENCES :

None.
</pre>
<p>[lib/gs_pdfwr.ps]</p>
</blockquote>

<p><strong><a name="2005-12-15T075430.000000Z"></a>
2005-12-15T07:54:30.000000Z Ray Johnston</strong></p>
<blockquote>
<pre>
Continuation of previous patch for another branch to handle the /URI key
in a pdfmark, moving it into the /A (Action) dict with /S key value /URI.
Bug 688414 for customer 515.
</pre>
<p>[src/gdevpdfm.c]</p>
</blockquote>

<p><strong><a name="2005-12-14T213339.000000Z"></a>
2005-12-14T21:33:39.000000Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Normalize the BBox value in the shading dictionary.
Bug 688433
</pre>
<p>[lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2005-12-14T184445.000000Z"></a>
2005-12-14T18:44:45.000000Z Ralph Giles</strong></p>
<blockquote>
<pre>
Provide more specific fonts for the headers since CJK Windows, uses a
bitmap font for just 'sans-serif'. Closes bug 688442.
</pre>
<p>[doc/gs.css]</p>
</blockquote>

<p><strong><a name="2005-12-14T181259.000000Z"></a>
2005-12-14T18:12:59.000000Z Ralph Giles</strong></p>
<blockquote>
<pre>
Improve the wording of two error messages. Related to bug 688451.
</pre>
<p>[src/gxttfb.c]</p>
</blockquote>

<p><strong><a name="2005-12-14T154451.000000Z"></a>
2005-12-14T15:44:51.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix (TT interpreter) : Uninitialized data access while interpreting a high subglyph tree.

DETAILS :

Bug 688421 "Ghostscript deadloop when processing PDF".

Actually the behavior was indeterministic due to
BuildGlyphOutlineAux wrongly computed a points array offset
while concatinating point lists of subglyphs.
The error happened only with subglyphs, which
include subglyphs (i.e. when a subglyph tree height
is greater than 2). The test document embeds a font
with such glyph.

1. The core of the change is in ttfmain.c :
   it fixes the incorrect offset computation.

2. An assertion added into gxpflat.c for an earlier
   detection of an incorrect behavior.
   Without this assertion another assertion
   fails in same module few moments later,
   and the analyzis appears some complicated.

3. Check and propagate a return code from
   gx_flattened_iterator__init in gxfill.c .


EXPECTED DIFFERENCES :

None, because our test base doesn't contain such cases.
Will add one after this fix is committed.
</pre>
<p>[src/ttfmain.c src/gxpflat.c src/gxfill.c]</p>
</blockquote>

<p><strong><a name="2005-12-14T150749.000000Z"></a>
2005-12-14T15:07:49.000000Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a spelling error in an error message, s/fhe/the/ .
Bug 688451
</pre>
<p>[src/gxttfb.c]</p>
</blockquote>

<p><strong><a name="2005-12-13T133812.000000Z"></a>
2005-12-13T13:38:12.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Upgrade the PDF/X version identifier.

DETAILS :

Adobe Acrobat 7 Preflight Tool doesn't accept PDF/X-3:2001.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[lib/PDFX_def.ps]</p>
</blockquote>

<p><strong><a name="2005-12-12T144029.000000Z"></a>
2005-12-12T14:40:29.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix (font machinery) : Improve the font-matrix cache management.

DETAILS :

Bug 688422 "Assertion failed! in gxccman.c".

This patch restricts the probability of failure
with a reasonable limit - 200 faces per BuildChar.
Ratrher it doesn't fix the bug completely,
the failure won't happen in practical cases.

This patch maintains a list of font-matrix pairs in the order
of accessing them. When cache overflows, it drops
the pair, which was not accessed a long time ago.
See comments in code for more details.

If one needs to drop the constraint for the number of
font-matrix pairs per charproc, entire cache algorithm to be
revised. First, it needs to lock font-matrix pairs
while they are referred by a text enumerator,
which executes a charproc. Second, need a workaround
for the case of 200 "nested" charprocs,
which exceed entire cache with locked pairs.

This patch adds new 'assert' statements into code.
We cannot replace them with return codes,
because a container function is being called
by the garbager as a part of a finalization routine
of font objects, with no way to propagate an error code.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfcache.h src/gxccman.c src/gxccache.c]</p>
</blockquote>

<p><strong><a name="2005-12-12T094809.000000Z"></a>
2005-12-12T09:48:09.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix (font machinery) : Provide an additional debug data about text enumeration.

DETAILS :

This relates to Bug 688422 "Assertion failed! in gxccman.c".
It doesn't fix the bug, simplifies its analyzis.
We decided to make this change permanent because
in the past we spent many efforts for anayzis of such kind.

Rather text_enum_id is not used with release build,
it is still defined to keep same structure size.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfcache.h src/gstext.c src/gsfont.c src/gxtext.h src/gxfont.h]</p>
</blockquote>

<p><strong><a name="2005-12-10T110805.000000Z"></a>
2005-12-10T11:08:05.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Remove 'assert' from gxccman.c .

DETAILS :

Bug 688422 "Assertion failed! in gxccman.c".

It doesn't fix the bug, but avoids harmful effects,
which 'assert' implementation causes on some embedded systems.
The assertion in gsccman.c failed too frequently during last 2 years.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxchar.c src/gxccman.c src/gxchar.h src/gxccache.c]</p>
</blockquote>

<p><strong><a name="2005-12-09T183909.000000Z"></a>
2005-12-09T18:39:09.000000Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Work around a compile error on Solaris 9 (Sun C 5.5).
Bug 688411

DETAILS :
Solaris 9 (Sun C 5.5) compiler cannot initialize a 'const' array unless it is
'static const'.
</pre>
<p>[src/gxshade6.c]</p>
</blockquote>

<p><strong><a name="2005-12-08T211322.000000Z"></a>
2005-12-08T21:13:22.000000Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Work around a bug in PDF files produced by SPIRIT 12.30.
Create the missing root of the page tree when /Pages entry in the
document root points directly to the 1st page instead of the /Pages node.
Fix bug 688419 from customer 850.
</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2005-12-07T195535.000000Z"></a>
2005-12-07T19:55:35.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Imprecise clipping.

DETAILS :

Bug 688407 "pdfrwrite : A shading displaced converting Altona_Visual_1v2a_x3.pdf".

When a clipping path is a single rectangle,
rounded coordinates were written into PDF,
because the internal representation rounds them to device pixels.
This doesn't comply with complex cases, in which clipping path
is written as a high level object with unrounded coordinates.
After scaling the generated PDF visual defects appeared.

EXPECTED DIFFERENCES :

pdfwrite 300dpi :

"Altona-Testsuite_p2_S_x3.pdf"
"Altona_Visual_bb_1v1_x3.pdf"
"Altona_Visual_sb_1v1_x3.pdf"
"Bug688308.ps"
"test.pdf"
</pre>
<p>[src/gdevpdfd.c]</p>
</blockquote>

<p><strong><a name="2005-12-07T125330.000000Z"></a>
2005-12-07T12:53:30.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A coding style improvement.

DETAILS :

This change is syntacticly equivalent.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfd.c]</p>
</blockquote>

<p><strong><a name="2005-12-05T191422.000000Z"></a>
2005-12-05T19:14:22.000000Z Ray Johnston</strong></p>
<blockquote>
<pre>
Change handling of /URI key/value pair in pdfmark parameters to move it
from the upper level Annot dict down into the /A (Action) dict with a
/A (Subtype)i value of /URI so that Adobe Reader will recognize it as a
hyperlink to a web site. Bug 688414 for customer 515.

DETAILS:

The URI key/value pair from the pdfmark list would ordinarily go into
the upper level Annot dict. Instead this is deferred and processed with
the /Action (/A) into the /A dict. A /S key with value /URI is also added
into the /A dict. This is done prior to processing keys that may have
been present in the /Action key, so that any /S (or /Subtype) and any
/URI from the pdfmark /A list will replace the one we move from the
Annot dict. This may not be exactly what Distiller does in the event
of such a conflict.

EXPECTED DIFFERENCES:

None. (doesn't change the appearance, just the action when viewed with
Adobe Reader).
</pre>
<p>[src/gdevpdfm.c]</p>
</blockquote>

<p><strong><a name="2005-11-30T165601.000000Z"></a>
2005-11-30T16:56:01.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : ToUnicode CMap was written with incorrect Postscript.

DETAILS :

CMapName was undefined in the ToUnicode CMap stream.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdtw.c src/gdevpsfm.c]</p>
</blockquote>

<p><strong><a name="2005-11-29T123257.000000Z"></a>
2005-11-29T12:32:57.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Dangling pointers after a font cache overlow.

DETAILS :

Bug 688392 "Crash after font enumeration."

When a scaled font is being removed from the font cache,
the old code released its UID. However other fm pairs
in the cache could store copies of same UID.
Those copies got dangling pointers to UID data.

We're not sure why the old copy resets UID of a font
when a font is being excluded from cache.
Likely it is an incorrect hack.

This patch disables the hack and documents our
understanding of the old code. See comments in code.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gsfont.c]</p>
</blockquote>

<p><strong><a name="2005-11-26T042631.000000Z"></a>
2005-11-26T04:26:31.000000Z Ray Johnston</strong></p>
<blockquote>
<pre>
Handle yet enother possibly invalid PDF where the /Subtype of a FOnt is
/ (and empty name). BUg 688398 for customer 850.

DETAILS:

This was checked for in one path, but not both.
</pre>
<p>[lib/pdf_font.ps]</p>
</blockquote>

<p><strong><a name="2005-11-25T202219.000000Z"></a>
2005-11-25T20:22:19.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix : Prevent a crash with an invalid FontInfo.

DETAILS :

Bug 688355 "Segmentation fault occurs in rendering Japanese text".

The test document defines a Type 3 font, in which FontInfo has a string value.
That isn't a correct Postscript, but we prefer to make it not crashing.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/zbfont.c]</p>
</blockquote>

<p><strong><a name="2005-11-25T150152.000000Z"></a>
2005-11-25T15:01:52.000000Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a SEGV in ps2pdf conversion of imagemask when -dConvertCMYKImagesToRGB=true
Fix bug 688390
</pre>
<p>[src/gdevpdfi.c]</p>
</blockquote>

<p><strong><a name="2005-11-23T180940.000000Z"></a>
2005-11-23T18:09:40.000000Z Raph Levien</strong></p>
<blockquote>
<pre>
Fix: Remove attempt to cleanup GS state at gs_abort(), because the
attempt to cleanup often triggers a recursive abort. Fixes bug #603934.
</pre>
<p>[src/imain.c]</p>
</blockquote>

<p><strong><a name="2005-11-23T174437.000000Z"></a>
2005-11-23T17:44:37.000000Z Ray Johnston</strong></p>
<blockquote>
<pre>
Regularize the use of signalerror (a private Ghostscript operator used to
report errors from within PS procedures) so that standard PS operators
use the systemdict version (which is usually defined with 'odef') so that
the error message is not misleading. Fix one instance of a missing operator
name below the error name on the stack. Bug 687806.

DETAILS:

There is still some possibly confusing usage of signalerror where the
operator operand is of the form /pseudo_operator cvx /errorname signalerror.
I did not change these.
</pre>
<p>[lib/gs_devcs.ps lib/gs_dps.ps lib/gs_diskn.ps lib/gs_res.ps lib/gs_l2img.ps lib/gs_ll3.ps lib/gs_btokn.ps lib/gs_fapi.ps lib/gs_pfile.ps lib/gs_setpd.ps lib/gs_cmap.ps lib/gs_devpxl.ps lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2005-11-23T140922.000000Z"></a>
2005-11-23T14:09:22.000000Z leonardo</strong></p>
<blockquote>
<pre>
pdfwrite : Provide a PDF/A document conformity.

DETAILS :

This patch is a part of the PDF/A project.
Provide object conversion when PDF/A doean't allow
a specific object type :

- Check device parameters compatibility (gdevpdfp.c).
- Skip transfer functions (gdevpdfg.c).
- Skip image interpolation (gdevpdfj.c).
- Convert transparency into bitmaps (gdevpdft.c).
- Execute /PS pdfmark streams (gs_pdfwr.ps), and fix a bug (stack balance) in there.
- Add a sample PDF/A definition file.
- Update the user manual with PDF/A generation.

Minor change :
- Fix a comment in PDFX_def.ps .

EXPECTED DIFFERENCES :

None.
</pre>
<p>[lib/PDFX_def.ps src/gdevpdfp.c doc/Ps2pdf.htm src/gdevpdft.c src/gdevpdfg.c lib/PDFA_def.ps src/gdevpdfj.c lib/gs_pdfwr.ps]</p>
</blockquote>

<p><strong><a name="2005-11-23T065122.000000Z"></a>
2005-11-23T06:51:22.000000Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688348 transparency image smask bug.  The test file used PDF 1.4
transparency and had an SMask which was a type 1 image with 16 bits per
component.  The SMask logic assumed a maximum of 8 bits.  There was a
second problem with the image enumerator structure not being initialized
with the imager state.
</pre>
<p>[src/ztrans.c src/gximag3x.c]</p>
</blockquote>

<p><strong><a name="2005-11-21T195007.000000Z"></a>
2005-11-21T19:50:07.000000Z leonardo</strong></p>
<blockquote>
<pre>
pdfwrite : Extract FontInfo information from TrueType font data.

DETAILS :

This patch provides font metadata for the PDF/A project for
True Type fonts, which have insufficient FontInfo data.

The new function gs_type42_font_info is a special method
for True Type font subclasses. It extracts data from the 'name' table
of a True Type font data. pdfwrite calls it when creating a stable copy
of a Type 11 or a Type 42 font. Later the data
is being accounted by pdf_write_font_metadata.

Note that PDF True Type fonts are not necessarily include a 'name' table.
Therefore re-distilling a PDF may give insufficient Metadata
for the PDF/A format.

Minor change : fix Cygwin/gcc warnings in gdevpdfe, gdevpdtb;
some dependencies were missed in devs.mak .

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdtb.c src/gxfont42.h src/gstype42.c src/gdevpdfe.c src/zfont42.c src/devs.mak]</p>
</blockquote>

<p><strong><a name="2005-11-21T194611.000000Z"></a>
2005-11-21T19:46:11.000000Z Raph Levien</strong></p>
<blockquote>
<pre>
Fix: Disable run-length grouping of identical pixels when image is rotated
or skewed, as numerical problems at T-joins of rectangles can cause
dropouts. Fixes bug #688362 and #688179.
</pre>
<p>[src/gxicolor.c]</p>
</blockquote>

<p><strong><a name="2005-11-21T190045.000000Z"></a>
2005-11-21T19:00:45.000000Z Ray Johnston</strong></p>
<blockquote>
<pre>
Clarify the Ps2pdf usage, particularly the use of array and dictionary
distiller options when using the script/batch 'helper' files and the
limitations imposed by the simple script. Bug 687373. Thanks to Richard
Yeh, Alex Cherepanov and Ralph Giles for suggestions.
</pre>
<p>[doc/Ps2pdf.htm]</p>
</blockquote>

<p><strong><a name="2005-11-20T202118.000000Z"></a>
2005-11-20T20:21:18.000000Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix an error in Unicode to ASCII conversion when the font name is empty string.
Fix bug 687938

DETAILS :
This problem is caused by a TrueType font that has no PostScript font name,
for instance urdunast.ttf. GS 8.10 added Unicode to ASCII conversion for the
font name but the code assumed that the name length &gt; 0 . This patch skips
Unicode to ASCII conversion for empty names.
</pre>
<p>[lib/gs_fonts.ps]</p>
</blockquote>

<p><strong><a name="2005-11-18T021600.000000Z"></a>
2005-11-18T02:16:00.000000Z Ray Johnston</strong></p>
<blockquote>
<pre>
Add capability to display text Value strings in Widget Annotations. Multi
line support is not yet implemented, but basic Tx types are supported with
/DA appearance string (used to select font and color, etc.) as well as /Q
(quadding == justinfication) properly supported. Bug 688368 for customer
#670.

DETAILS:

This is an initial implementation sufficient for the customer's immediate
requirement. NYI includes handling Flag (/F and /Ff) bits, one of which
is supposed to make the rendering "invisible".

Note that if the /AP keyword is present, that appearance will be used to
render the Annotation rather than the /V value based rendering. This was
needed to properly render the 01_001.pdf where both keys are present.
Presumably, the /AP appearance was 'baked in' by the form filling application.

Also note that the /DA string in the sample file used "/FontName scale Tf"
which required making the /Tf implementation handle both a font dictionary
(usual case) as well as a font name (pdf_ops.ps change).
</pre>
<p>[lib/pdf_draw.ps lib/pdf_ops.ps]</p>
</blockquote>

<p><strong><a name="2005-11-17T020909.000000Z"></a>
2005-11-17T02:09:09.000000Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use .bind operator (instead of bind) in the image interpolation logic because
it is nor affected by -dDELAYBIND or -dNOBIND flags. The redefinition logic
assumes that all operators, including .interpolate are bound, i.e. requires
a working bind operator.
Fix bug 688231
</pre>
<p>[lib/gs_init.ps]</p>
</blockquote>

<p><strong><a name="2005-11-16T221729.000000Z"></a>
2005-11-16T22:17:29.000000Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Pacify Valgrind warnings, initialize the image buffer overshot area.
Partial fix for bug 688379
</pre>
<p>[src/scfe.c]</p>
</blockquote>

<p><strong><a name="2005-11-16T211837.000000Z"></a>
2005-11-16T21:18:37.000000Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Insert a space character before "%%" or "%!" in ASCII85Encode filter
to avoid confusion with DSC comments.
Fix bug 688079

DETAILS :
ASCII85Encode filter has a special treatment of some output lines that looks
like DSC line, (ie. lines that begins with %% or %! are broken after first
percent). This didn't work when the last line of encoded stream begins with %%
and input stream was ended not on full 4-tuple.

EXPECTED DIFFERENCES :
None
</pre>
<p>[src/sfilter2.c]</p>
</blockquote>

<p><strong><a name="2005-11-16T203357.000000Z"></a>
2005-11-16T20:33:57.000000Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Work around a bug in PDF files produced by Enfocus PitStop 3.1. Handle
annotation border object depending on the actual type of the object, not the
key name.
Fix bug 688013

DETAILS :
Enfocus PitStop 3.1 generates bad PDF files, which have annotation border
dictionary on /Border key (instead of /BS). PitStop is a well-known application
and GS can easily work around this bug.

EXPECTED DIFFERENCES :
None
</pre>
<p>[lib/pdf_draw.ps]</p>
</blockquote>

<p><strong><a name="2005-11-16T200006.000000Z"></a>
2005-11-16T20:00:06.000000Z Alex Cherepanov</strong></p>
<blockquote>
<pre>
Improve error reporting in the jpeg driver. Initialize report_error member of
jpeg encoding stream and propagate stream exceptions to the interpreter level.
Fix bug 688005
</pre>
<p>[src/gdevjpeg.c]</p>
</blockquote>

<p><strong><a name="2005-11-16T163451.000000Z"></a>
2005-11-16T16:34:51.000000Z leonardo</strong></p>
<blockquote>
<pre>
pdfwrite : Generate a font Metadata.

DETAILS :

This patch provides font metadata for the PDF/A project.
True Type fonts need a further improvement -
need to get Coipyright, Owner from the TT data.

1. Define a new device parameter PDFA. It is not yet documented
because PDF/A project isn't complete.
2. gx_device_pdf::uuid_time keeps an unique time for all UUIDs
to minimize an indeterminizm.
3. Made pdf_base_font_s be public : moved to gdevpdtf.h .
4. pdf_write_embedded_font computes an MD5 sum of the font
for generating an instance id for the font.
5. The new function pdf_font_metadata perform the main work.

Foe now pdf_write_font_metadata uses some inaccurate coding with
copy&amp;replace. Doing so because we don't know the final structure yet.
Will factor out common subfunctions later.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfx.h src/gdevpdf.c src/gdevpdfp.c src/gdevpdtb.c src/gdevpdfe.c src/gdevpdfb.h src/devs.mak src/gdevpdtf.h src/gdevpdfg.h]</p>
</blockquote>

<p><strong><a name="2005-11-15T224846.000000Z"></a>
2005-11-15T22:48:46.000000Z leonardo</strong></p>
<blockquote>
<pre>
pdfwrite : Generate document Metadata (continued 1).

DETAILS :

It fixes an indeterminizm in the recent code.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfe.c]</p>
</blockquote>

<p><strong><a name="2005-11-15T132717.000000Z"></a>
2005-11-15T13:27:17.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix : An unitialized data access.

DETAILS :

We detected sevral problems with running comparefiles with pdfwrite with
enabling floating point interrupts (patch IM866).
This patch fixes an unitialized data access, or inaccurate type casts.
These problems may relate to Bug 688379
"pdfwrite: an indeterministic behavior with Bug687660a.ps",
rather we could not get a proof for that
due to instability of the effect in the old code.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfcopy.c src/ztrans.c src/gdevpsft.c src/gxhldevc.c src/gdevpdfg.c src/gdevpdti.c src/zchar1.c]</p>
</blockquote>

<p><strong><a name="2005-11-14T202247.000000Z"></a>
2005-11-14T20:22:47.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : /BP pdfmark could create dead PDF objects (continiued).

DETAILS :

Bug 687560 "Invalid PDF if /BP pdfmarks with non-unique /_objdef".

Changes to gdevpdfm.c :
1. The new function pdfmark_bind_named_object provides a correct association
   of an object with an object name, accounting forward references
   and duplicate objects. Now it is used in pdfmark_SP and pdfmark_EP.
   as an uniforem method for such association.
2. pdfmark_PS objects are now written when created. The old code missed them.
3. Add a comment about an important constraint in pdfmark_BP,
   which is a consequence of basic assumptions.
4. Issue rangecheck if an object is attempted to modify after it is written.

Chanes to gdevpdfu.c :

pdf_find_same_resource now works for named resources.

Changes to gdevpdfo.c :

Since pdf_substitute_resource in pdfmark_EP can associate one object
with multiple names, the freeing logic is improved
to avoid crashes due to dual freeing of objects.

General consequences :

1. The new code writes an object whenever it is defined,
with no regard whether it is referred or not.
If one needs an optimization with skipping
unreferenced objects, the named object handling logics
to be changed dramaticly with distinguishing a storage for
all objects and a storage for currently named objects.
An object must get special mark whenever it is referred
(it would be a big distrubuted change through the code).
Writing all objects to be delayed until the document end,
and a garbage collection to be implemented for that storage.

2. We do not reproduce a part of Adobe Distiller behavior,
which allows to modify objects when they are being created between
pdfmark_BP and pdfmark_EP. Particularly this prohibits self-referenced objects.
This is a strong consequence of (1).
(Note that the bug 687560 examples miss a big class of cases when
the creating object is referenced with /PUT pdfmark during its creation.
Those examples show only cases when it is being modified.).

3. Users should not define "pdfmark libraries" with multiple object definitions,
which are not really used. We realize that such libraries may be useful
for a better modularity of document creation algorithms.
However we do not have enough engineering resources to
develop this area, and we have no real customer demand on it.
Instead that object definitions to be included into source PS code
only if they are really used in the document.

Thanks to SaGS for supplied test cases.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfm.c src/gdevpdfo.c src/gdevpdfu.c]</p>
</blockquote>

<p><strong><a name="2005-11-14T114053.000000Z"></a>
2005-11-14T11:40:53.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Generate ToUnicode CMap data from 'uniXXXX' character names.

DETAILS :

Bug 688373 "Text does not extract with correct codes".

We guess it's another undocumented feature of Adobe Distiller.
Some Type 1 fonts appear to contain Korean glyphs with
glyph names in the format uniXXXX, where X is a hexadecimal character.
Adobe Distiller 6 looks to recognize them when generating ToUnicode.
Now we do same.

We're not sure on what condition the recognition may happen.
For now we do whenever a simple font (Type 1,2,42) has no GlyphNames2Unicode entry
for the given glyph.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdtc.c src/gdevpdte.c src/gdevpdtt.h src/gdevpdti.c]</p>
</blockquote>

<p><strong><a name="2005-11-13T174421.000000Z"></a>
2005-11-13T17:44:21.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix (TT font parser) : An incorrect Encoding entry type appeared.

DETAILS :

When a glyph index past end of 'post' table,
the old code produced Encoding entries of integer type.

Bug 688370 "pdfwrite segfault with TT font cmap warnings post is incomplete".

EXPECTED DIFFERENCES :

None.
</pre>
<p>[lib/gs_ttf.ps]</p>
</blockquote>

<p><strong><a name="2005-11-13T174207.000000Z"></a>
2005-11-13T17:42:07.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Prevent a crash due to an incorrect Encoding of a Type 42 font.

DETAILS :

When a Typoe 42 font has Encoding entries of the integer type,
the old code crashed with GPF.

1. Check Encoding entry type and return invalidfont on error (gxfcopy.c, hunk 1).
2. Propagate return codes (gdevpdtb.c, gdevpdtt.c).
3. When creating a complete copy of a Type 42 font, ignore pending Encoding entries
   since 033-52-5873.pdf and 159.pdf include some (gxfcopy.c).
   (This supposes that the document doesn't refer them. If it does,
   another error will happen when creating the font subset.)

This is a partial fix for the bug 688370
"pdfwrite segfault with TT font cmap warnings post is incomplete".

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfcopy.c src/gdevpdtb.c src/gdevpdtt.c]</p>
</blockquote>

<p><strong><a name="2005-11-13T145901.000000Z"></a>
2005-11-13T14:59:01.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : The DestOutputProfile stream dictionary requires the N entry (improved).

DETAILS :

This improves the last patch : a lesser input data required,
because N computes from ProcessColorModel.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[lib/PDFX_def.ps]</p>
</blockquote>

<p><strong><a name="2005-11-13T091837.000000Z"></a>
2005-11-13T09:18:37.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : The DestOutputProfile stream dictionary requires the N entry.

DETAILS :

Adobe Reader 7 could not open files generated with PDFX option.
The PDF specification defines the N entry as a required one.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[lib/PDFX_def.ps]</p>
</blockquote>

<p><strong><a name="2005-11-11T163247.000000Z"></a>
2005-11-11T16:32:47.000000Z Ray Johnston</strong></p>
<blockquote>
<pre>
Nightly regression cannot tolerate '_' instead of '-' in GS_PRODUCT string.
Revert to '-' so that change_gsproduct works.
</pre>
<p>[src/gscdef.c]</p>
</blockquote>

<p><strong><a name="2005-11-11T123537.000000Z"></a>
2005-11-11T12:35:37.000000Z leonardo</strong></p>
<blockquote>
<pre>
pdfwrite : Generate document Metadata.

THIS IS INCOMPATIBLE CHANGE.

Adobe Distiller 5 generates metadata according to Adobe XMP speification
iff the distiller parameter ParseDSCCommentsForDocInfo or PreserveEPSInfo is true.
Old versions of Ghostscript does not do that.
New versions of Ghostscript do when CompatibilityLevel &gt;= 1.4 (default).
Generated PDF documents become longer in about 1.5 kilobytes.

See the documentation change about new command line options and distiller parameters.

DETAILS :

It's a part of the PDF/A project.

This is an initial commit for the subject.
It generates Document metadata as Adobe Distiller 6 does
for a simple file (Genoa test 001-01.ps).

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfx.h src/smd5.h src/gdevpdfp.c src/gdevpdf.c doc/Ps2pdf.htm src/gdevpdfe.c src/gdevpdfb.h src/devs.mak src/smd5.c src/gdevpdfg.h]</p>
</blockquote>

<p><strong><a name="2005-11-09T183729.000000Z"></a>
2005-11-09T18:37:29.000000Z Ray Johnston</strong></p>
<blockquote>
<pre>
Bump version to 8.54 CVS PRE-RELEASE after the 8.53 release.
</pre>
<p>[doc/News.htm lib/gs_init.ps src/gscdef.c src/version.mak]</p>
</blockquote>

<p><strong><a name="2005-11-09T172724.000000Z"></a>
2005-11-09T17:27:24.000000Z Ray Johnston</strong></p>
<blockquote>
<pre>
Improve documentation of -d and -c switches (slightly). Thanks to Chapman
Flack for his suggestions. Bug 688321.
</pre>
<p>[doc/Use.htm]</p>
</blockquote>

<p><strong><a name="2005-11-09T125545.000000Z"></a>
2005-11-09T12:55:45.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Provide Resources dictionary for Type 3 fonts.

DETAILS :

Bug 688357 - epstopdf does not include /Resources in Type3 fonts

The PDF specification defines Resources dictionary of a Type 3 font
to be  "optional but strongly recommended".
Linux Acrobat Reader Version 7.0.1 07/27/2005 appears not handling the "optional" case.
Now we provide explicit Resources sinse that reader version is widely distributed.

The Resources dictionary of a Type 3 font is a PDF 1.2 feature.
To provide a compatibility to PDF 1.1,
the old code implemented a special mechanizm for transmitting resources of
a Type 3 font to pages, which use the font.

This patch disables that mechanizm when CompatibilityLevel &gt;= 1.2 in gdevpdte.c .
Instead that it creates Resources of a Type 3 font as a cos_dict_t instance
in gdevpdtf.h, gdevpdtt.c, and writes it out when the font is being written
in gdevpdtw.c .

gdevpdti.c now installs Resources dictionary of a Type 3 font
to accumulate resources of its charproc streams.
Note that the name substream_Resources does not longer reflects
its semantics perfectly : for a charproc stream it is Resources of
the font, rather than Resources of the charproc stream
(the pdf spec doesn't define the latter).
Keeping the old name to simplify the patch.

In the old mechanizm we replace used_resources and relatives with Resources,
because those two things are similar. The goal is to simplify data structures and logics.
For doing so we implement new functions cos_dict_forall, process_resources1, process_resources2.
This appears some less effective due to searches in process_resources1, process_resources2,
but we consider the performance low important because PDF 1.1 isn't highly useful in the modern world.
Also removed the related accessor pdf_register_charproc_resource.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfo.c src/gdevpdtt.c src/gdevpdte.c src/gdevpdfo.h src/gdevpdtf.c src/gdevpdtw.c src/gdevpdti.c src/devs.mak src/gdevpdtf.h src/gdevpdfj.c]</p>
</blockquote>

<p><strong><a name="2005-11-06T192107.000000Z"></a>
2005-11-06T19:21:07.000000Z Ray Johnston</strong></p>
<blockquote>
<pre>
Make sure procedure target of an Encode filter gets called with the end
of data condition, i.e., 'false' condition. Bug 688326.

DETAILS:

When a procedure is a data target, it is signalled that it has been closed by
one final callback with a possibly empty string containing any final buffered
data, and the boolean false.

When 'last' was true if the count was 0, the previous code would not return
CALLC status which is needed to call the procedure with the 'false' status.
If ss-&gt;eof is already true, then the call has already been done.

This condition is not checked in any of the Genoa test suites.

EXPECTED DIFFERENCES:

none.
</pre>
<p>[src/zfproc.c]</p>
</blockquote>

<p><strong><a name="2005-11-02T131758.000000Z"></a>
2005-11-02T13:17:58.000000Z leonardo</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Safely close the output file when the device initialization fails.

DETAILS :

Bug 688345 "Keeping output PDF file open when quitting".


EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdf.c src/gdevvec.c]</p>
</blockquote>

<p><strong><a name="2005-10-25T091745.000000Z"></a>
2005-10-25T09:17:45.000000Z Russell Lang</strong></p>
<blockquote>
<pre>
Add the jpeg, libpng and zlib libraries to the list of files
needed for building a Windows release.
</pre>
<p>[doc/Release.htm]</p>
</blockquote>

<p><strong><a name="2005-10-24T175221.000000Z"></a>
2005-10-24T17:52:21.000000Z Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for regression introduced with patch for 688182 (rev 1.46). The /Length
entry is required in stream dicts to prevent undefined in --get-- errors.
If the Length is invalid, set it to 0 to prevent using the incorrect value.
Fixes bug 688347 for customer 770.

EXPECTED DIFFERENCES:

None.
</pre>
<p>[lib/pdf_base.ps]</p>
</blockquote>

<p><strong><a name="2005-10-20T234148.000000Z"></a>
2005-10-20T23:41:48.000000Z Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688344 Error: /invalidaccess in --setfileposition-- after finding
bad XREF.

DETAILS:

The test file contains xref table entries that have locations beyond the
end of the file.  When the xref table entries were being verified, this
would cause an attempt to seek beyond the end of the file.  This closed
the file.  The attempt to rebuild the xref table then crashed.

The fix consists of adding a check for xref entry locations being within
the file.
</pre>
<p>[lib/pdf_main.ps]</p>
</blockquote>

<p><strong><a name="2005-10-20T201437.000000Z"></a>
2005-10-20T20:14:37.000000Z Ray Johnston</strong></p>
<blockquote>
<pre>
Final updates to Change logs and History prior to 8.53 release.
</pre>
<p>[doc/Changes.htm doc/History8.htm doc/Details8.htm doc/Details.htm]</p>
</blockquote>

<h2><a name="Version8.53"></a>Version 8.53 (2005-10-20)</h2>

<p>This is the fourth stable release in the 8.5x series of Ghostscript.
It contains a few bug fixes and improvements since 8.52, particularly in
the fix for a build problem on AMD64/Windows64 and vastly improved
transparency rendering speed for some PDF's.

<p> The following <a href="http://bugs.ghostscript.com/">bugs</a> were
open at the time of this release: <blockquote>
465936, 578865, 592160, 610478, 626295, 686747, 686842, 686853, 
687011, 687039, 687063, 687108, 687125, 687146, 687196, 687219, 
687231, 687243, 687257, 687271, 687280, 687292, 687295, 687298, 
687314, 687316, 687327, 687342, 687345, 687346, 687373, 687397, 
687399, 687435, 687480, 687484, 687514, 687520, 687525, 687529, 
687531, 687545, 687559, 687560, 687583, 687608, 687621, 687622, 
687628, 687633, 687642, 687643, 687644, 687650, 687654, 687657, 
687663, 687669, 687674, 687676, 687677, 687679, 687682, 687694, 
687695, 687697, 687702, 687721, 687728, 687729, 687796, 687805, 
687806, 687808, 687814, 687822, 687825, 687844, 687848, 687850, 
687863, 687866, 687868, 687870, 687875, 687895, 687903, 687904, 
687907, 687914, 687919, 687931, 687938, 687957, 687960, 687970, 
687974, 687975, 687986, 687988, 687992, 687994, 687996, 688005, 
688006, 688007, 688009, 688013, 688017, 688020, 688022, 688026, 
688032, 688035, 688036, 688039, 688042, 688047, 688054, 688058, 
688060, 688061, 688064, 688066, 688068, 688075, 688079, 688081, 
688091, 688095, 688101, 688106, 688108, 688124, 688129, 688130, 
688132, 688134, 688149, 688151, 688152, 688159, 688166, 688176, 
688179, 688181, 688184, 688187, 688200, 688203, 688207, 688215, 
688225, 688227, 688231, 688239, 688243, 688249, 688260, 688265, 
688269, 688274, 688278, 688280, 688282, 688285, 688288, 688290, 
688291, 688295, 688300, 688302, 688309, 688311, 688317, 688318, 
688319, 688320, 688321, 688323, 688326, 688329, 688332, 688333, 
688334, 688335, 688336, 688337, 688338, 688339, 688342, 688344
</blockquote>

<h3><a name="8.53_Incompatible_changes"></a>Incompatible changes</h3>

<p>
There are no known incompatible changes at this point.

<h3><a name="8.53_changelog"></a>Changelog</h3>

<p><strong><a name="2005-10-20_1946"></a>
2005-10-20 19:46 Ray Johnston</strong></p>
<blockquote>
<pre>
Update doc files and version files for 8.53 release.</pre>
<p>[doc/API.htm 1.53, doc/Bug-form.htm 1.49, doc/Bug-info.htm 1.49, doc/C-style.htm 1.55, doc/Commprod.htm 1.41, doc/Copying.htm 1.39, doc/DLL.htm 1.43, doc/Deprecated.htm 1.20, doc/Details8.htm 1.24, doc/Develop.htm 1.159, doc/Devices.htm 1.90, doc/Drivers.htm 1.58, doc/Fonts.htm 1.51, doc/Helpers.htm 1.44, doc/History1.htm 1.39, doc/History2.htm 1.39, doc/History3.htm 1.39, doc/History4.htm 1.39, doc/History5.htm 1.41, doc/History6.htm 1.56, doc/History7.htm 1.44, doc/History8.htm 1.29, doc/Htmstyle.htm 1.44, doc/Install.htm 1.56, doc/Issues.htm 1.52, doc/Language.htm 1.98, doc/Lib.htm 1.43, doc/Maintain.htm 1.50, doc/Make.htm 1.90, doc/News.htm 1.168, doc/Projects.htm 1.67, doc/Ps-style.htm 1.37, doc/Ps2epsi.htm 1.42, doc/Ps2pdf.htm 1.88, doc/Ps2ps2.htm 1.7, doc/Psfiles.htm 1.68, doc/Readme.htm 1.71, doc/Release.htm 1.95, doc/Source.htm 1.39, doc/Testing.htm 1.37, doc/Unix-lpr.htm 1.39, doc/Use.htm 1.136, doc/Xfonts.htm 1.39, doc/gs-vms.hlp 1.37, man/dvipdf.1 1.37, man/font2c.1 1.37, man/gs.1 1.38, man/gslp.1 1.37, man/gsnd.1 1.37, man/pdf2dsc.1 1.36, man/pdf2ps.1 1.38, man/pdfopt.1 1.36, man/pf2afm.1 1.37, man/pfbtopfa.1 1.38, man/printafm.1 1.37, man/ps2ascii.1 1.37, man/ps2epsi.1 1.35, man/ps2pdf.1 1.42, man/ps2pdfwr.1 1.41, man/ps2ps.1 1.44, man/wftopfa.1 1.37, src/gscdef.c 1.58, src/version.mak 1.87]</p>
</blockquote>

<p><strong><a name="2005-10-20_1942"></a>
2005-10-20 19:42 Ray Johnston</strong></p>
<blockquote>
<pre>
Remove trailing ^M (&lt;cr&gt;) characters.</pre>
<p>[src/gdevbmp.c 1.12, src/slzwd.c 1.7]</p>
</blockquote>

<p><strong><a name="2005-10-20_1851"></a>
2005-10-20 18:51 Raph Levien</strong></p>
<blockquote>
<pre>
Fixes broken compile on amd64 platforms (see bug #688047 for details).
This patch should be safe on all platforms with 32-bit longs, and is
my best guess as to the right thing to do on Tru64 (where long is 64
bits).</pre>
<p>[src/tttypes.h 1.3]</p>
</blockquote>

<p><strong><a name="2005-10-20_1304"></a>
2005-10-20 13:04 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Suppress floating point number format in pdfmark operands (continued 2).

DETAILS :

Bug 688167 "change of real number fomat from fixed to exponential format".

The last patch doesn't correctly handle numbers between 1e-7 and 1e-2.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/gs_pdfwr.ps 1.52]</p>
</blockquote>

<p><strong><a name="2005-10-18_2031"></a>
2005-10-18 20:31 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Suppress floating point number format in pdfmark operands (continued).

DETAILS :

Bug 688167 "change of real number fomat from fixed to exponential format".

This improves the patch
http://ghostscript.com/pipermail/gs-cvs/2005-September/005717.html
with writing small reals in a fixed point number format.

We did it after Raph's request in Comment #5 of the bug 688167.
But we don't see a visible difference against the old implementation with any viewer.
Therefore we believe that we shouldn't have done it (as we did before the implementation).
Storing it now mainly for archiving purpose.

If this change causes a problem, the author has no objection for unwinding it.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/gs_pdfwr.ps 1.51]</p>
</blockquote>

<p><strong><a name="2005-10-18_0905"></a>
2005-10-18 09:05 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Indexed colors were distorsed with encryption.

DETAILS :

Bug 688313 "pdfwrite : image colors depend on encryption".

The old code applied encryption with a wrong (zero) object id to
the palette of the indexed color space. After a viewer decrypts
the palette with a right object id, colors appear wrong.

1. Use the PS string encoding instead the hexadecimal string encoding
while converting the palette to PDF format (gdevpdfc.c).
It provides a correct work of the part 3 below.
See also part 4 below.

2. Don't apply encryption when adding the palette
to cos object (gdevpdfc.c, devs.mak).
The old code was hacky, and new one is based on a general convention.

3. Apply encryption with a right object id
to the string which represents the palette
when writing the cos object to the output PDF file.
This is an implicit consequence of
using the PS string encoding in the part 1
due to a general convention about
applying encryption when writing cos objects to the output file.

4. Disable writing hexadecimal strings because their
encryption is not yet implemented (gdevpdfu.c).

The generated PDF may become longer in 1-2 kilobytes per palette
due to PS encoding is less effective for palettes.
This could be optimized with implelenting an encryption method
for hexadecimal encoded strings in pdf_put_encoded_hex_string,
and undo the part 1. The method should apply 3 filters :
hexadecimal string decode, arc4 encode, hexadecimal string encode,
because cos object stores strings in the outer format.
Delaying this optimization for better times.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/devs.mak 1.140, src/gdevpdfc.c 1.54, src/gdevpdfo.c 1.35, src/gdevpdfu.c 1.89]</p>
</blockquote>

<p><strong><a name="2005-10-18_0758"></a>
2005-10-18 07:58 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Propagate error codes from pdf_write_value.

DETAILS :

This is a preparation for fixing the bug
688313 "pdfwrite : image colors depend on encryption".

In cases when no error happens, this code is algorithmocally equivalent.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfo.c 1.34, src/gdevpdfu.c 1.88, src/gdevpdfx.h 1.138]</p>
</blockquote>

<p><strong><a name="2005-10-17_1923"></a>
2005-10-17 19:23 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : /BP pdfmark could create dead PDF objects (continiued).

DETAILS :

Bug 687560 "Invalid PDF if /BP pdfmarks with non-unique /_objdef".

1. Prevent a potential crash while dereferencing NULL.
2. Don't put unnamed objects into local_named_objects.

Thanks to SaGS for pointing these problems out.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfm.c 1.50]</p>
</blockquote>

<p><strong><a name="2005-10-12_1759"></a>
2005-10-12 17:59 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Don't instantiate pattern when rendering to null device.

DETAILS :

Bug 688308 "Error: undefined; OffendingCommand: .type1execchar".

The test case executes cshow or kshow with intrevene changing
the current color space, causing a color load callout from fill_with_rule
_after_ the callout completes. After that the check
ctile-&gt;depth == dev-&gt;color_info.depth in gx_pattern_cache_lookup fails
(not sure why - probably due to gsave-grestore in the pattern procedure).
This patch skips entire character drawing when the device is null,
so that those cumbersome stuff isn't envolved.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gsdevice.c 1.25, src/gspaint.c 1.10, src/gxdevcli.h 1.41]</p>
</blockquote>

<p><strong><a name="2005-10-12_1105"></a>
2005-10-12 11:05 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a pointer stability validation in the garbager, continued.

DETAILS :

This patch is currently disabled, so the change is syntactically equivalent.

Bug 688226 "The garbager must check a pointer stability.".

This fixes a minor bug in the last patch.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/ilocate.c 1.14]</p>
</blockquote>

<p><strong><a name="2005-10-12_1045"></a>
2005-10-12 10:45 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a pointer stability validation in the garbager.

DETAILS :

This patch is currently disabled, so the change is syntacticly equivalent.

Bug 688226 "The garbager must check a pointer stability.".

This patch extends the object header with a space order number field,
and compares the origin and the destination order numbers for each pointer
while validating the heap. The enhanced object header is still
within 16 bytes with the 32-bits architecture. See ialloc_validate_pointer_stability
about the order number definition.

This patch detected so many problems while running any document,
as we can't enable it now. It is disabled with IGC_PTR_STABILITY_CHECK
macro defined in gxobj.h .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gsalloc.c 1.24, src/gxalloc.h 1.12, src/gxobj.h 1.7, src/ialloc.c 1.8, src/ilocate.c 1.13]</p>
</blockquote>

<p><strong><a name="2005-10-12_0816"></a>
2005-10-12 08:16 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Skip a clip path, which is set by setcachedevice (continued after July 28 205).

DETAILS :

Bug 687678 "pdfwrite : A Type 3 character cut-off".
Bug 688327 "incorrect masking fill in pdfwrite".

The old patch for this problem appears to define a too weak
condition for recognizing a clipping set by setcachedevice, sectachedevice2.

Now we think that a special stuff for this condition isn't needed because
the condition may be united with the contition for "setcharwidth" :
both things need to skip the clipping path, which was set exactly by
setcachedevice, sectachedevice2 or setcharwidth.
Checking the rectangle coordinates is not relevant.

Therefore the change consists of 2 parts :
1. Unwinding the patch http://ghostscript.com/pipermail/gs-cvs/2005-July/005625.html (IM1358)
   (see also http://ghostscript.com/pipermail/gs-cvs/2005-July/005626.html).
2. Remowing the (control == TEXT_SET_CHAR_WIDTH) check from pdf_text_set_cache,
   so that the "caching" clipping path will be skipped in any case.

Will add Bug688327.ps to comparefiles.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfb.h 1.14, src/gdevpdfd.c 1.71, src/gdevpdfx.h 1.137, src/gdevpdti.c 1.53, src/gdevpdtt.c 1.104]</p>
</blockquote>

<p><strong><a name="2005-10-11_1004"></a>
2005-10-11 10:04 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PS interpreter) : Allocate gs_screen_enum in same space as its components.

DETAILS :

Bug 688330 "A dangling pointer in gx_screen_enum.".

The old code allocates gs_screen_enum in current memory space and frees to
the memory space of its components, which is obtained from
the 'setscreen' operand (the spot function).
In the test case the first memory space is local, and the second one is global.
We guess the last statement became true after a recent change to the PDF interpreter.

This patch allocates gs_screen_enum in same space as its components.
The pritotype of zscreen_enum_init has been changed due to no method for
obtaining a space attribute value for iref from a gs_memory_t instance
(well, generally it is impossible, but one could solve if the memory
allocator is a PS interpreter's allocator except stable ones).

We noticed that components of gs_screen_enum have pointers to memory
allocator structures, but don't list them in the related memory descriptors.
We're not sure whether a memory allocator structure may relocate or not -
our investigation through code didn't give an unique answer.
For now we leave component descriptors as they were before the patch.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/iht.h 1.6, src/zht.c 1.8, src/zht1.c 1.7, src/zht2.c 1.14]</p>
</blockquote>

<p><strong><a name="2005-10-10_1909"></a>
2005-10-10 19:09 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix: Cygwin/gcc warninhs.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/devs.mak 1.139, src/gdevpdfb.c 1.34]</p>
</blockquote>

<p><strong><a name="2005-10-10_1858"></a>
2005-10-10 18:58 Igor Melichev</strong></p>
<blockquote>
<pre>
Optimizing the transparency compositor.

DETAILS :

Bug 688255 "ai7 pdf fails on 7.03, runs for ten + minutes on 8.51".

The old code always allocates a transparency buffers for entire band.
The new code accounts group bbox to minimize buffers.
Due to that buffers appear empty for many of bands.
The time consumption for the test case of the bug 688255 is dropped in about 100 times
(from 8000 seconds to 71 seconds on a 3.07GHz machine, measured with debug build).

1. The transparency bbox computes in pdf14_begin_transparency_group from
   the group bbox and the CTM (gdevp14.c).
2. Handle an empty buffer pdf14_buf_new, pdf14_pop_transparency_group (gdevp14.c).
3. Fixed a bug in the rectangle clipping in
   pdf14_mark_fill_rectangle, pdf14_mark_fill_rectangle_ko_simple.
   The old code didn't sense it because bbox always covered entire band (gdevp14.c).
4. Write the bbox to clist in c_pdf14trans_write and read it in c_pdf14trans_read.
5. The pdf14 compositor needs CTM to transform the group bbox to the device space.
   Forced the writing of CTM to clist before writing the compositor in clist_create_compositor.
   (Sorry, it appears some ugly due to pcte-&gt;type-&gt;procs.write creates a body
   of a command, but we need to create a set of two commands;
   Another minor optimization - a narrowing the set of bands - is delayed,
   see comments in code in clist_create_compositor) (gxclimag.c).
6. New functions cmd_write_ctm_return_length, cmd_write_ctm are factored out for (5)
   (gxclpath.c, gxclpath.h). This part of the change is algorithmically eqiuivalent.
7. Minor change : fixed coding style of "} else {" in gdevp14.c .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevp14.c 1.35, src/gxclimag.c 1.13, src/gxclpath.c 1.21, src/gxclpath.h 1.13]</p>
</blockquote>

<p><strong><a name="2005-10-07_1949"></a>
2005-10-07 19:49 Ray Johnston</strong></p>
<blockquote>
<pre>
Add missing space in CVS PRE-RELEASE string.</pre>
<p>[src/gscdef.c 1.57]</p>
</blockquote>

<p><strong><a name="2005-10-07_1946"></a>
2005-10-07 19:46 Ray Johnston</strong></p>
<blockquote>
<pre>
Bump version after the 8.52 release (to 8.53 CVS PRE-RELEASE).</pre>
<p>[doc/News.htm 1.167, lib/gs_init.ps 1.120, src/gscdef.c 1.56, src/version.mak 1.86]</p>
</blockquote>
<hr>

<h2><a name="Version8.52"></a>Version 8.52 (2005-10-07)</h2>

<p>This is the third stable release in the 8.5x series of Ghostscript.
It contains numerous bug fixes and improvements, particularly in the 
area DeviceN (spot color) handling and the PDF interpreter.

<p>The pdfwrite device can now create PDF/X-3 compliant documents
using the lib/PDFX_def.ps prefix approach. See <a href="Ps2pdf.htm#PDFX">
Ps2pdf documentation.</a>

<p>Also new is a Beta version level 2 Postscript output device, ps2write,
which generates high-level PostScript including text and images and
graphics. We encourage its use instead of the older pswrite when Level 2
PostScript is desired. Please send any comments or problem reports to
<a href="mailto://bug-gs@ghostscript.com">bug-gs@ghostscript.com</a>
or submit it to <a href="http://bugs.ghostscript.com">http://bugs.ghostscript.com.</a>


<p> The following <a href="http://bugs.ghostscript.com/">bugs</a> were
open at the time of this release: <blockquote>
465936, 578865, 592160, 610478, 626295, 686747, 686842, 686853, 687011, 
687039, 687063, 687108, 687125, 687146, 687196, 687219, 687231, 687243, 
687257, 687271, 687280, 687292, 687295, 687298, 687314, 687316, 687327, 
687342, 687345, 687346, 687373, 687397, 687399, 687435, 687480, 687484, 
687514, 687520, 687525, 687529, 687531, 687545, 687559, 687583, 687608, 
687621, 687622, 687628, 687633, 687642, 687643, 687644, 687650, 687654, 
687657, 687663, 687669, 687674, 687676, 687677, 687679, 687682, 687694, 
687695, 687697, 687702, 687721, 687728, 687729, 687796, 687805, 687806, 
687808, 687814, 687822, 687825, 687844, 687848, 687850, 687863, 687866, 
687868, 687870, 687875, 687895, 687903, 687904, 687907, 687914, 687919, 
687931, 687938, 687957, 687960, 687970, 687974, 687975, 687986, 687988, 
687992, 687994, 687996, 688005, 688006, 688007, 688009, 688013, 688017, 
688020, 688022, 688026, 688032, 688035, 688036, 688039, 688042, 688054, 
688058, 688060, 688061, 688064, 688066, 688068, 688075, 688079, 688081, 
688091, 688095, 688101, 688106, 688108, 688117, 688124, 688129, 688130, 
688132, 688134, 688149, 688151, 688152, 688159, 688166, 688176, 688179, 
688181, 688184, 688187, 688200, 688203, 688207, 688213, 688215, 688225, 
688226, 688227, 688231, 688239, 688243, 688249, 688255, 688260, 688265, 
688269, 688274, 688278, 688280, 688282, 688285, 688288, 688290, 688291, 
688295, 688300, 688302, 688308, 688309, 688311, 688313, 688315, 688317, 
688318, 688319, 688320, 688321. 
</blockquote>

<h3><a name="8.52_Incompatible_changes"></a>Incompatible changes</h3>

<p>
There are no known incompatible changes at this point.

<h3><a name="8.52_changelog"></a>Changelog</h3>

<p><strong><a name="2005-10-07_1835"></a>
2005-10-07 18:35 Ray Johnston</strong></p>
<blockquote>
<pre>
Update to final release date for 8.52</pre>
<p>[doc/API.htm 1.52, doc/Bug-form.htm 1.48, doc/Bug-info.htm 1.48, doc/C-style.htm 1.54, doc/Commprod.htm 1.40, doc/Copying.htm 1.38, doc/DLL.htm 1.42, doc/Deprecated.htm 1.19, doc/Details8.htm 1.22, doc/Develop.htm 1.158, doc/Devices.htm 1.89, doc/Drivers.htm 1.57, doc/Fonts.htm 1.50, doc/Helpers.htm 1.43, doc/History1.htm 1.38, doc/History2.htm 1.38, doc/History3.htm 1.38, doc/History4.htm 1.38, doc/History5.htm 1.40, doc/History6.htm 1.55, doc/History7.htm 1.43, doc/History8.htm 1.27, doc/Htmstyle.htm 1.43, doc/Install.htm 1.55, doc/Issues.htm 1.51, doc/Language.htm 1.97, doc/Lib.htm 1.42, doc/Maintain.htm 1.49, doc/Make.htm 1.89, doc/News.htm 1.166, doc/Projects.htm 1.66, doc/Ps-style.htm 1.36, doc/Ps2epsi.htm 1.41, doc/Ps2pdf.htm 1.87, doc/Ps2ps2.htm 1.6, doc/Psfiles.htm 1.67, doc/Readme.htm 1.70, doc/Release.htm 1.94, doc/Source.htm 1.38, doc/Testing.htm 1.36, doc/Unix-lpr.htm 1.38, doc/Use.htm 1.135, doc/Xfonts.htm 1.38, doc/gs-vms.hlp 1.36, man/dvipdf.1 1.36, man/font2c.1 1.36, man/gs.1 1.37, man/gslp.1 1.36, man/gsnd.1 1.36, man/pdf2dsc.1 1.35, man/pdf2ps.1 1.37, man/pdfopt.1 1.35, man/pf2afm.1 1.36, man/pfbtopfa.1 1.37, man/printafm.1 1.36, man/ps2ascii.1 1.36, man/ps2epsi.1 1.34, man/ps2pdf.1 1.41, man/ps2pdfwr.1 1.40, man/ps2ps.1 1.43, man/wftopfa.1 1.36, src/version.mak 1.85]</p>
</blockquote>

<p><strong><a name="2005-10-07_1809"></a>
2005-10-07 18:09 Ray Johnston</strong></p>
<blockquote>
<pre>
Remove this script that is no longer used in the release process. We now
use cvs2cl.pl third party script.</pre>
<p>[toolbin/cvs2hist.py 1.13]</p>
</blockquote>

<p><strong><a name="2005-10-07_1802"></a>
2005-10-07 18:02 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix serious bit rot for building History# and Details# from Changes and
Details created by split_changelog.py. Allows the instructions in Release.htm
to actually work. This file invoked by toolbin/makehist.tcl.

DETAILS:

This script really hasn't worked since we changed to the new format Changes
that is created by cvs2cl.pl (instead of the now deprecated cvs2hist.py)

For all releases after the aforementioned change, the History#.htm and
Details#.htm were being hand edited. Hopefully the format created by
this script will appear consistent with that created manually.</pre>
<p>[toolbin/makeset.tcl 1.15]</p>
</blockquote>

<p><strong><a name="2005-10-05_1437"></a>
2005-10-05 14:37 Ray Johnston</strong></p>
<blockquote>
<pre>
Two changes needed to fix a single bug. First, the GC 'limit' logic was
collecting too frequently. Second, the PDF ICCBased colorspace logic was
repeatedly creating a ReusableStreamDecode filter for the DataSource
element. Fixes bug #687117 for customer #850.`

DETAILS:

The 'limit' value used to trigger a GC process was sometimes set to a
number smaller than the 'inheritied' value. This resulted in a GC scan
on every interpreter loop past the gc_signal check.

Even with this fixed, the file ran slower than the -dNOGC case because
the PDF interpreter 'csset' logic would set the ICCBased colorspace that
would create a new ReusableStreamDecode filter from the DataSource on
every 'Do' of the many images used to paint the logo (line by line).
The reusablestreamdecode logic would allocate a 64000 byte string (only
3144 bytes of which were actually retained) so after about 8 images the
allocations would exceed the limit and another GC would run (freeing up
the space used by those 8 large strings and 7 of the small ones along
with miscellaneous stuff).

The fix for the second issue was to check if the ICCBased colorspace
had already been 'resolved' (was a dicttype instead of a procedure that
was an indirect reference). Since the initial processing of the ICCBased
colorspace created a ReusableStreamDecode filter for the DataSource we
are able to skip all of this preparation logic.

EXPECTED DIFFERENCES.

None (except a speed increase). The regression I ran reduced from 9000 sec
to 8700 sec.</pre>
<p>[lib/pdf_draw.ps 1.98, src/gsalloc.c 1.23]</p>
</blockquote>

<p><strong><a name="2005-10-04_1924"></a>
2005-10-04 19:24 Ray Johnston</strong></p>
<blockquote>
<pre>
Update change logs for 8.52 release.</pre>
<p>[doc/Changes.htm 1.59, doc/Details.htm 1.18]</p>
</blockquote>

<p><strong><a name="2005-10-04_1751"></a>
2005-10-04 17:51 Ray Johnston</strong></p>
<blockquote>
<pre>
Tolerate 'null' as a single argument form of setcustomcolor. This is not
documented in TN5044, but older Adobe ProcSets apparently use this mode.
Fixes 'misc/cnurse.ps' of the smoke test used prior to release.</pre>
<p>[lib/gs_lev2.ps 1.38]</p>
</blockquote>

<p><strong><a name="2005-10-04_0630"></a>
2005-10-04 06:30 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix (some of) the gcc compiler warnings (at least the really easy ones).</pre>
<p>[src/genht.c 1.5, src/gsiorom.c 1.2, src/zdevice2.c 1.10, src/zdps1.c 1.8, src/zfcmap.c 1.17, src/ztrans.c 1.28]</p>
</blockquote>

<p><strong><a name="2005-10-04_0106"></a>
2005-10-04 01:06 Ray Johnston</strong></p>
<blockquote>
<pre>
Commit updates for 8.52 release -- documentation dates and GS_PRODUCT</pre>
<p>[doc/API.htm 1.51, doc/Bug-form.htm 1.47, doc/Bug-info.htm 1.47, doc/C-style.htm 1.53, doc/Commprod.htm 1.39, doc/Copying.htm 1.37, doc/DLL.htm 1.41, doc/Deprecated.htm 1.18, doc/Details8.htm 1.21, doc/Develop.htm 1.157, doc/Devices.htm 1.88, doc/Drivers.htm 1.56, doc/Fonts.htm 1.49, doc/Helpers.htm 1.42, doc/History1.htm 1.37, doc/History2.htm 1.37, doc/History3.htm 1.37, doc/History4.htm 1.37, doc/History5.htm 1.39, doc/History6.htm 1.54, doc/History7.htm 1.42, doc/History8.htm 1.26, doc/Htmstyle.htm 1.42, doc/Install.htm 1.54, doc/Issues.htm 1.50, doc/Language.htm 1.96, doc/Lib.htm 1.41, doc/Maintain.htm 1.48, doc/Make.htm 1.88, doc/News.htm 1.165, doc/Projects.htm 1.65, doc/Ps-style.htm 1.35, doc/Ps2epsi.htm 1.40, doc/Ps2pdf.htm 1.86, doc/Ps2ps2.htm 1.5, doc/Psfiles.htm 1.66, doc/Readme.htm 1.69, doc/Release.htm 1.93, doc/Source.htm 1.37, doc/Testing.htm 1.35, doc/Unix-lpr.htm 1.37, doc/Use.htm 1.134, doc/Xfonts.htm 1.37, doc/gs-vms.hlp 1.35, man/dvipdf.1 1.35, man/font2c.1 1.35, man/gs.1 1.36, man/gslp.1 1.35, man/gsnd.1 1.35, man/pdf2dsc.1 1.34, man/pdf2ps.1 1.36, man/pdfopt.1 1.34, man/pf2afm.1 1.35, man/pfbtopfa.1 1.36, man/printafm.1 1.35, man/ps2ascii.1 1.35, man/ps2epsi.1 1.33, man/ps2pdf.1 1.40, man/ps2pdfwr.1 1.39, man/ps2ps.1 1.42, man/wftopfa.1 1.35, src/gscdef.c 1.55, src/version.mak 1.84]</p>
</blockquote>

<p><strong><a name="2005-10-01_0440"></a>
2005-10-01 04:40 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688316 SeparationOrder device parameter causes "/undefined in
--get--".

DETAILS:

The fix for 688192 created a problem with the handling of the
SeparationOrder device parameter.  That fix changed when device parameter
values were updated into the device structure.  This caused a problem
when checking the colorant names for the SeparationOrder parameter.</pre>
<p>[src/gdevdevn.c 1.28, src/gdevdevn.h 1.12]</p>
</blockquote>

<p><strong><a name="2005-09-30_1911"></a>
2005-09-30 19:11 Ray Johnston</strong></p>
<blockquote>
<pre>
Add missing documentation for lib/PDFX_def.ps.</pre>
<p>[doc/Psfiles.htm 1.65]</p>
</blockquote>

<p><strong><a name="2005-09-29_1835"></a>
2005-09-29 18:35 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Improve DCT compression quality with a hewristic choice of DCT encoding parameters (continued 3).

DETAILS :

The first patch for the subject used an incompatible type for
representation of HSamples, VSamples in the intermediate parameter list.
It caused another compiler dependent effect when choosing DCT parameters.

Also changed the dominatrion factor to pass color spaces of Altona-Testsuite_p2_S_x3.pdf
as RGB-like ones.

EXPECTED DIFFERENCES :

None with Windows/MSVC2005.
On Linux may fix more 2005-09-23 regressions, which left on 2005-09-29.</pre>
<p>[src/gdevpsdi.c 1.45]</p>
</blockquote>

<p><strong><a name="2005-09-29_1524"></a>
2005-09-29 15:24 Igor Melichev</strong></p>
<blockquote>
<pre>
PDF interpreter now processes ToUnicode CMaps when the target device is pdfwrite (continued).

DETAILS :

This minor fix removes an unintended debug printing.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/pdf_font.ps 1.80]</p>
</blockquote>

<p><strong><a name="2005-09-29_0836"></a>
2005-09-29 08:36 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Improve DCT compression quality with a hewristic choice of DCT encoding parameters (continued 2).

DETAILS :

The first patch for the subject defined an incorrect condition for matrix diagonal domination.

In same time, the regression test tool detected differences on Linux, which are not appeared
while testing on Windows. We found out that Windows and Linux builds apply
different DCT encode parameters.

We guess that the reason is that the patched code accesses
the [2][3]th element of a [4][3] array. Such element doesn't exist theoretically,
so the effect may be compiler dependent (rather we're wonder what exactly does it access on Linux,
because [2][3] is still inside the array memory area).

So now we fix the incorrect condition and then will check regressions again.

EXPECTED DIFFERENCES :

None with Windows/MSVC2005.
May fix the 2005-09-23 regressions on Linux.</pre>
<p>[src/gdevpsdi.c 1.44]</p>
</blockquote>

<p><strong><a name="2005-09-28_0433"></a>
2005-09-28 04:33 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688310 pdf open error in op_show_continue.

DETAILS:

This is another example of a file with a singular CTM while processing
text.  There already was some logic in pdf_ops.ps for handling this
sort of situation.  However it did not properly handle this case.  The
fix consists of extending the logic for handling singular CTMs.</pre>
<p>[lib/pdf_ops.ps 1.41]</p>
</blockquote>

<p><strong><a name="2005-09-26_0820"></a>
2005-09-26 08:20 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : High level pattern handling was incomplete.

DETAILS :

Bug 688307 (the bug title is misleading).

gdev_pdf_fill_mas must not call gx_default_fill_mask with a pattern color,
which is dummy due to high level pattern handling.
Actually it's a missed code branch since high level pattern were implemented.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/devs.mak 1.138, src/gdevpdfb.c 1.33]</p>
</blockquote>

<p><strong><a name="2005-09-23_1821"></a>
2005-09-23 18:21 Ray Johnston</strong></p>
<blockquote>
<pre>
Change reporting of some noisy (irritating) Warnings generated from many
PDF files that don't strictly follow the spec. Bug 688229.

DETAILS:

The "fonts with Subtype = /TrueType" and "Embedded font uses undefined proc"
messages could occur MANY times in PDF files. I'm sure users will get the
point as well with this approach that only gives the warnings once at the
end of processing, with the list of offensive printed once. Particularly
for the TrueType font issue it might make it easier to figure out which
fonts are missing (and thus substituted) since each font is only listed
once and the list is sorted (which will collect font families together).

EXPTECTED DIFFERENCES.

None (execpt the gs-stderr log will now be shorter).</pre>
<p>[lib/pdf_font.ps 1.79, lib/pdf_main.ps 1.100]</p>
</blockquote>

<p><strong><a name="2005-09-22_1611"></a>
2005-09-22 16:11 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix handling of TrueType fonts with zero length name tables. Bug 688305
for customer 870.

DETAILS:

This worked with a very old gs_ttf.ps, but since we didn't have any such
files in our regression suite, whatever caused the regression is unknown.
Detecting zero length name tables and returning false is straightforward.

EXPECTED DIFFERENCES.

None (ran existing regression suite).</pre>
<p>[lib/gs_ttf.ps 1.48]</p>
</blockquote>

<p><strong><a name="2005-09-21_1703"></a>
2005-09-21 17:03 Ray Johnston</strong></p>
<blockquote>
<pre>
MSVC 6 cannot convert from int64 to double (not yet implemented error).
Truncate to int prior to conversion to float.</pre>
<p>[src/gdevpsdi.c 1.43]</p>
</blockquote>

<p><strong><a name="2005-09-21_0324"></a>
2005-09-21 03:24 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix handling of EOD sequences when decoding CCITT data with EndOfBlock
false. Bug 688306 for customer 780.

DETAILS:

Although the PLRM implies that the CCITT EOD sequence(s) will not be present
when EndOfBlock is false (the default is 'true'), Adobe Acrobat will create
PostScript with EOD sequences after the CCITT even when EndOfBlock is false.

There was a comment in the CCITT decoder about this, but once 'rows_left'
went to zero, any EOD sequence was not consumed by the CCITTFaxDecode filter.

The fix checks for and consumes any trailing EOD sequence even when the
EndOfBlock parameter is false. IMHO, this is a really sloppy behaviour
by Adobe Acrobat since they seem to just copy the CCITT data from the input
PDF, but explicitly put EndOfBlock false even though the PDF did not have
the parameter to the filter (defaulting to EndOfBlock true).

EXPECTED DIFFERENCES:

None. Regression test OK.</pre>
<p>[src/scfd.c 1.9]</p>
</blockquote>

<p><strong><a name="2005-09-20_1135"></a>
2005-09-20 11:35 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Improve DCT compression quality with a hewristic choice of DCT encoding parameters.

DETAILS :

Bug 687174 "(pdfwrite) DCT compression quality problem".

It implements Raph's suggestion about choosing DCT parameters for 3-component images
depending on the image color space.
If color space looks like RGB, set ColorTransform to 1.
If color space looks like Lab, set ColorTransform to 0.
Otherwise set /HSamples [1 1 1 1] /VSamples [1 1 1 1].
See a motivation in the bug 687174.
See comments in code about details of the hewristic.

Minor change : pdf_setup_masked_image_converter called a memory allocator with
a wrong client name.

EXPECTED DIFFERENCES :

test.pdf</pre>
<p>[src/devs.mak 1.137, src/gdevpdfd.c 1.70, src/gdevpsdi.c 1.42]</p>
</blockquote>

<p><strong><a name="2005-09-19_1412"></a>
2005-09-19 14:12 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix: /SP pdfmark must synchronize the clipping path (continued).

DETAILS :

Bug 688167 "change of real number fomat from fixed to exponential format".

This improves the clipping path synchronization as SaGS suggested
(see the bug 688167 Comment #4).

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/gs_pdfwr.ps 1.50]</p>
</blockquote>

<p><strong><a name="2005-09-16_1901"></a>
2005-09-16 19:01 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for double 'endstream' in a Content stream. Now endstream terminates
the object the same way 'endobj' would. Bug 688303 for customer 670.

EXPECTED DIFFERENCES:

None (case did not exist in regression suite).</pre>
<p>[lib/pdf_base.ps 1.48]</p>
</blockquote>

<p><strong><a name="2005-09-16_0617"></a>
2005-09-16 06:17 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix handling of paths so that 'cm' will affect pending path operations (fill
stroke or clip). Verified that with this patch we do as Acrobat Reader from
4 through 7 does. Bug 688299 for customer 870.

DETAILS:

The basics of using 'upath', then 'uappend' to capture, then replay the
path after the 'concat' done by 'cm' is straightforward, but since the path
may not be used, there may be coordinates that are WAY out-of-range after
an arbitrary 'cm' so we execute the 'uappend' inside a 'stopped' context.

EXPECTED DIFFERENCES:

None. I did a check of all PDF's in the regression suite -- none had
any differences.</pre>
<p>[lib/pdf_draw.ps 1.97]</p>
</blockquote>

<p><strong><a name="2005-09-16_0403"></a>
2005-09-16 04:03 Ray Johnston</strong></p>
<blockquote>
<pre>
Correct edit problem with previous commit (copy/paste didn't get totally
changed for src/gsiorom.c).</pre>
<p>[doc/Develop.htm 1.156]</p>
</blockquote>

<p><strong><a name="2005-09-16_0359"></a>
2005-09-16 03:59 Ray Johnston</strong></p>
<blockquote>
<pre>
Add missing documentation in Develop.htm and remove dead code commented out
with C++ style comments to eliminate regression test squawks.</pre>
<p>[doc/Develop.htm 1.155, src/mkromfs.c 1.2]</p>
</blockquote>

<p><strong><a name="2005-09-14_0713"></a>
2005-09-14 07:13 Ray Johnston</strong></p>
<blockquote>
<pre>
Add a common case to an optimization check in the memflip function.</pre>
<p>[src/gsutil.c 1.11]</p>
</blockquote>

<p><strong><a name="2005-09-14_0709"></a>
2005-09-14 07:09 Ray Johnston</strong></p>
<blockquote>
<pre>
Prevent accessing past end of estack block which could occur if screen
enum was not in the current estack block.

EXPECTED DIFFERENCES.

None. (this was only encountered in rare circumstances).</pre>
<p>[src/zht.c 1.7]</p>
</blockquote>

<p><strong><a name="2005-09-12_1152"></a>
2005-09-12 11:52 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Implementing a generation of PDF/X-3 (continued).

DETAILS :

This change improves the documentation.

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Ps2pdf.htm 1.85]</p>
</blockquote>

<p><strong><a name="2005-09-12_1134"></a>
2005-09-12 11:34 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Implementing a generation of PDF/X-3.

DETAILS :

This implements the new feature, which is being coontrolled
with a new command line option PDFX, and a new pdfwrite device paramewter with same name.

1. A documentation change, which explains the new feature.
2. A Postscript code change : the DeviceRGB color space substitution, a special handling of /PS pdfmark.
3. A new sample file gs/lib/PDFX_def.ps with default PDF/X-3 definitions.
4. A C code change : force CompatibilityLevel 1.3, force embedding all fonts,
   skip halftone phases and transfer functions, write TrimBox.

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Develop.htm 1.154, doc/Ps2pdf.htm 1.84, lib/PDFX_def.ps 1.1, lib/gs_devcs.ps 1.7, lib/gs_pdfwr.ps 1.49, src/gdevpdf.c 1.124, src/gdevpdfb.h 1.13, src/gdevpdfg.c 1.68, src/gdevpdfp.c 1.53, src/gdevpdfx.h 1.136, src/gdevpdtf.c 1.46]</p>
</blockquote>

<p><strong><a name="2005-09-08_1732"></a>
2005-09-08 17:32 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Suppress floating point number format in pdfmark operands.

DETAILS :

Bug 688167 "change of real number fomat from fixed to exponential format".

An unobvious point in this bug was to find that the coversion happens in
Postscript code of the pdfmark handler rather than in C code of the PDF writer.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/gs_pdfwr.ps 1.48]</p>
</blockquote>

<p><strong><a name="2005-09-07_2043"></a>
2005-09-07 20:43 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Adjust the graphic state before executing a Form XObject.

DETAILS :

Bug 688293 "opdfread: Wrong graphics state when painting a Form XObject".
Patch from SaGS (see Bug 688293).

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.84]</p>
</blockquote>

<p><strong><a name="2005-09-07_1808"></a>
2005-09-07 18:08 Ray Johnston</strong></p>
<blockquote>
<pre>
Change to accept PDF with names that mis-use the '#" escape character when
characters following the # are not hex (AR 7 does this). Bug 688297.

EXPECTED DIFFERENCES:

none.</pre>
<p>[lib/pdf_base.ps 1.47]</p>
</blockquote>

<p><strong><a name="2005-09-06_2221"></a>
2005-09-06 22:21 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Handling transparency as a high level objects, part 12 (fix 2).

DETAILS :

The old code wrote a scratch data for the key /G of a soft mask dictionary,
because the referent was freed earlier. Debugged with -Z?&#36;@ SoftMaskDict.pdf .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdft.c 1.52]</p>
</blockquote>

<p><strong><a name="2005-09-06_2004"></a>
2005-09-06 20:04 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : The vector device virtual function dorect was not clipped by page.

DETAILS :

Bug 688279 "ps2write : maybe an incorrect sbstack bottom condition.".

This change fixes a minor problem, which appears in ps2write only.
Doing it almost for a clarity of the code.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfd.c 1.69]</p>
</blockquote>

<p><strong><a name="2005-09-06_1718"></a>
2005-09-06 17:18 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : /BP pdfmark could create dead PDF objects.

DETAILS :

Bug 687560 "Invalid PDF if /BP pdfmarks with non-unique /_objdef".

This change relates to pdfmark BP, EP, SP and PS.

1. Delay the object ID assignation untill the stream accumulation is completed.
2. Drop redundant equal objects, substituting references to an old one
   (Equal BP...EP objects appear when BP...EP portion is executed with _same_ graphic state).
3. Delay the storing in the named resource dictionary untill the stream accumulation is completed
   and redundant object is substituted.
4. gx_device_pdf::objname stores the last name for (3).
   It is being saved and restored in the substream stack.
5. The memory descriptor of gx_devoce_pdf is enhanced with objname,
   which is a pointer to string.
6. gsstruct.h adds another memory descriptor macro for (4).
7. Forward references mentioned in the bug 687560 are not supported and cause "undefined".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.123, src/gdevpdfb.h 1.12, src/gdevpdfm.c 1.49, src/gdevpdfx.h 1.135, src/gdevpdti.c 1.52, src/gsstruct.h 1.22]</p>
</blockquote>

<p><strong><a name="2005-09-06_1622"></a>
2005-09-06 16:22 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (garbager) : Provide a method for relocating a parameter string and use it in the pdfwrite device (continued).

DETAILS :

The last patch for the subject appears incomplete.
This one adds macros for parameter strings for pointer enumeration.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.122, src/gdevpdfx.h 1.134, src/gsstruct.h 1.21]</p>
</blockquote>

<p><strong><a name="2005-09-06_1347"></a>
2005-09-06 13:47 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : pdf_substitute_resource was misspelled.

DETAILS :

This a cosmetic syntaxical change.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfg.c 1.67, src/gdevpdfj.c 1.49, src/gdevpdft.c 1.51, src/gdevpdfu.c 1.87, src/gdevpdfx.h 1.133]</p>
</blockquote>

<p><strong><a name="2005-09-05_1418"></a>
2005-09-05 14:18 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (garbager) : Provide a method for relocating a parameter string and use it in the pdfwrite device.

DETAILS :

We occasionally detected that gdev_pdf_put_params wrongly handled the OPDFReadProcsetPath parameter :
the old code modifies the next field after gx_device_pdf::OPDFReadProcsetPath.
It happens because c_param_write assumes the parameter type is gs_param_string
(and doesn't check it neither at the compile time, nor at runtime),
but the actual field type is gs_string, which is smaller in 4 bytes.

When we fix the type of gx_device_pdf::OPDFReadProcsetPath,
a problem appears in the garbager descriptor : a warning about a type cast appears.
Analyzing it so far we found that in this case the garbager may relocate "persistent" parameter string,
which is not allocated in the heap.

For fixing the latter we define a new garbager method igc_reloc_param_string
and few accessors to it, and use them in the gx_device_pdf memory descriptor.
We choose this way because we know that other devices need same method for separation names.

This patch consists of 2 parts :

1. The enhancement for the garbager, which also moves the definition of gs_param_string
   to the scope visible the garbager. This part modifies the files igc.c, igcstr.c, gsparam.h,
   gsstruct.h, gstypes.h, igcstr.h

2. The improvement for the pdfwrite device, which modifies other files :
   gdevpdfb.h, gdevpdfx.h, gdevpdf.c, gdevpdfu.c .

Other devices may need a revision.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.83]</p>
</blockquote>

<p><strong><a name="2005-09-05_1418"></a>
2005-09-05 14:18 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Compact the output file.

DETAILS :

1. Strip whitespaces and comments when writing procsets to the output file.
2. A new device parameter CompressEntireFile allows to apply LZWEncode
   either to the procset or to entire file.
3. When HaveTrueTypes is false, the related part of the procset is being skipped

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Ps2ps2.htm 1.4, src/gdevpdf.c 1.121, src/gdevpdfb.h 1.11, src/gdevpdfp.c 1.52, src/gdevpdfu.c 1.86, src/gdevpdfx.h 1.132]</p>
</blockquote>

<p><strong><a name="2005-09-05_1358"></a>
2005-09-05 13:58 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (garbager) : Provide a method for relocating a parameter string and use it in the pdfwrite device.

DETAILS :

We occasionally detected that gdev_pdf_put_params wrongly handled the OPDFReadProcsetPath parameter :
the old code modifies the next field after gx_device_pdf::OPDFReadProcsetPath.
It happens because c_param_write assumes the parameter type is gs_param_string
(and doesn't check it neither at the compile time, nor at runtime),
but the actual field type is gs_string, which is smaller in 4 bytes.

When we fix the type of gx_device_pdf::OPDFReadProcsetPath,
a problem appears in the garbager descriptor : a warning about a type cast appears.
Analyzing it so far we found that in this case the garbager may relocate "persistent" parameter string,
which is not allocated in the heap.

For fixing the latter we define a new garbager method igc_reloc_param_string
and few accessors to it, and use them in the gx_device_pdf memory descriptor.
We choose this way because we know that other devices need same method for separation names.

This patch consists of 2 parts :

1. The enhancement for the garbager, which also moves the definition of gs_param_string
   to the scope visible the garbager. This part modifies the files igc.c, igcstr.c, gsparam.h,
   gsstruct.h, gstypes.h, igcstr.h

2. The improvement for the pdfwrite device, which modifies other files :
   gdevpdfb.h, gdevpdfx.h, gdevpdf.c, gdevpdfu.c .

Other devices may need a revision.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.120, src/gdevpdfb.h 1.10, src/gdevpdfu.c 1.85, src/gdevpdfx.h 1.131, src/gsparam.h 1.13, src/gsstruct.h 1.20, src/gstypes.h 1.7, src/igc.c 1.15, src/igcstr.c 1.7, src/igcstr.h 1.6]</p>
</blockquote>

<p><strong><a name="2005-09-04_2042"></a>
2005-09-04 20:42 Igor Melichev</strong></p>
<blockquote>
<pre>
Type 1 hinter : Improve the criterion for stem recognition.

DETAILS :

Bug 687727 "Type 1 hinter : A horizontal line condition maybe too strong".

Patch from Igor Melichev.

1. Many fonts, including URW TimesRoman, needs to apply alignemnt zones
to upper or lower corners of a glyph. An example is '1' in TimesRoman.
This patch detect upper and lower corners as local extremes by Y,
and pass them to t1_hinter__find_zone.

2. After the change (1) we detected, that the document comparefiles/LD.pdf
renders much worse. Analyzing it so far, we detected that the top of the left vertical arm
of 'm' applies same hint as horizontal arc stems. To avoid this,
this patch computes a "stem boundary quality", which is the tangent of the stem boundary,
and use it as a priority for choosing a pole for stem alignment
(the lower tangent, the higher priority).

After the change (2) we detected that most Genoa test render differently.
The reason appears that the old code erroneusely aligned a diagonal pole
of the character 'm', which is placed between the right vertical arm and
the nearest upper arc stem. This patch fixes that due to other (right) poles
get a better priority, but to our apologies this progression causes
numerous differences in rasters.

EXPECTED DIFFERENCES :

Almost ALL FILES with a text RENDER DIFFERENTLY.

"normal" :

N "000040cf.000_60.pdf"
N "001-01.ps"
N "001-13.ps"
N "001-25.ps"
N "002-09.ps"
N "002-21.ps"
N "002-33.ps"
N "012-01.ps"
N "012-05.ps"
N "012-09.ps"
N "012-13.ps"
N "013-01.ps"
N "013-05.ps"
N "013-09.ps"
N "013-13.ps"
N "014-01.ps"
N "014-05.ps"
N "014-09.ps"
N "014-13.ps"
N "015-01.ps"
N "015-05.ps"
N "015-09.ps"
N "016-01.ps"
N "017-01.ps"
N "018-01.ps"
N "01_001.pdf"
N "020-01.ps"
N "023-01.ps"
N "027-01.ps"
N "027-05.ps"
N "027-09.ps"
N "028-01.ps"
N "031-01.ps"
N "031-05.ps"
N "032-01.ps"
N "032-07.ps"
N "033-01.ps"
N "033-52-5873.pdf"
N "034-01.ps"
N "034-10.ps"
N "035-01.ps"
N "035-07.ps"
N "036-01.ps"
N "038-01.ps"
N "039-01.ps"
N "040-01.ps"
N "045-01.ps"
N "055-01.ps"
N "083-01.ps"
N "083-05.ps"
N "083-09.ps"
N "083-13.ps"
N "084-01.ps"
N "091-01.ps"
N "093-01.ps"
N "094-01.ps"
N "096-01.ps"
N "102-01.ps"
N "103-01.ps"
N "104-01.ps"
N "109-01.ps"
N "110-01.ps"
N "113-01.ps"
N "118-01.ps"
N "119-01.ps"
N "119-10.ps"
N "119-16.ps"
N "119-23.ps"
N "119-35.ps"
N "119-41.ps"
N "119-47.ps"
N "120-01.ps"
N "123-01.ps"
N "123-05.ps"
N "123-09.ps"
N "124-01.ps"
N "129-01.ps"
N "136-01.ps"
N "141-01.ps"
N "148-01.ps"
N "148-05.ps"
N "148-11.ps"
N "148-16.ps"
N "149-01.ps"
N "149-05.ps"
N "150-01.ps"
N "154-01.ps"
N "158-01.ps"
N "159.pdf"
N "162-01.ps"
N "165-01.ps"
N "166-01.ps"
N "169-01.ps"
N "169-05.ps"
N "169-09.ps"
N "169-13.ps"
N "170-01.ps"
N "175-01.ps"
N "176-01.ps"
N "181-01.ps"
N "184-01.ps"
N "192-01.ps"
N "194-01.ps"
N "200-01.ps"
N "205-01.ps"
N "205-05.ps"
N "205-09.ps"
N "205-13.ps"
N "206-01.ps"
N "212-01.ps"
N "213-01.ps"
N "214-01.ps"
N "215-01.ps"
N "219-01.ps"
N "220-01.ps"
N "220-07.ps"
N "222-01.ps"
N "222-05.ps"
N "222-09.ps"
N "222-13.ps"
N "223-01.ps"
N "226-01.ps"
N "227-01.ps"
N "231-01.ps"
N "233-01.ps"
N "237-01.ps"
N "238-01.ps"
N "244-01.ps"
N "245-01.ps"
N "245-07.ps"
N "245-13.ps"
N "245-17.ps"
N "246-01.ps"
N "250-01.ps"
N "251-01.ps"
N "255-01.ps"
N "257-01.ps"
N "258-01.ps"
N "260-01.ps"
N "263-01.ps"
N "264-01.ps"
N "268-03.ps"
N "268-04.ps"
N "268-05.ps"
N "268-06.ps"
N "269-01.ps"
N "270-01.ps"
N "272-01.ps"
N "276-01.ps"
N "281-01.ps"
N "282-01.ps"
N "289-01.ps"
N "296-01.ps"
N "297-01.ps"
N "298-01.ps"
N "298-05.ps"
N "298-09.ps"
N "299-01.ps"
N "303-01.ps"
N "304-01.ps"
N "307-01.ps"
N "307-07.ps"
N "307-13.ps"
N "308-04.ps"
N "310-04.ps"
N "311-03.ps"
N "313-01.ps"
N "316-07.ps"
N "320-01.ps"
N "321-01.ps"
N "321-05.ps"
N "321-09.ps"
N "325-01.ps"
N "327-01.ps"
N "330-01.ps"
N "334-01.ps"
N "335-01.ps"
N "336-01.ps"
N "401-01.ps"
N "405-01.ps"
N "409-01.ps"
N "415-01.ps"
N "421-01.ps"
N "430-01.ps"
N "442-01.ps"
N "450-01.ps"
N "455690.pdf"
N "460-01.ps"
N "463-01.ps"
N "464-01-fixed.ps"
N "468-01-fixed.ps"
N "476-01-fixed.ps"
N "476-01.ps"
N "478-01.ps"
N "483-05-fixed.ps"
N "541.pdf"
N "541_623.pdf"
N "687572.pdf"
N "86554321.pdf"
N "acrobat.pdf"
N "adesso1.pdf"
N "adesso3.pdf"
N "adesso7.pdf"
N "ADOBE1-4.pdf"
N "AdobeLic.pdf"
N "alphabet.ps"
N "Altona-Testsuite_p2_S_x3.pdf"
N "Altona.Page_3.2002-09-27.pdf"
N "Altona_Measure_1v1.pdf"
N "Altona_Technical_1v1_x3.pdf"
N "Altona_Visual_bb_1v1_x3.pdf"
N "Altona_Visual_sb_1v1_x3.pdf"
N "besttest.pdf"
N "bla.ps"
N "brochurep1.pdf"
N "bug-gstest.pdf"
N "Bug687044.ps"
N "Bug687111.ps"
N "Bug687311.pdf"
N "Bug687546.ps"
N "Bug687603.ps"
N "Bug687672.pdf"
N "Bug687698.ps"
N "Bug687724.pdf"
N "Bug687828.pdf"
N "Bug687840.pdf"
N "Bug687845.ps"
N "bulletin.pdf"
N "chartab.pdf"
N "chess.ps"
N "Dave_Barry.pdf"
N "Fixed_Original.pdf"
N "fonts.pdf"
N "fonttest.pdf"
N "H00216q.pdf"
N "HeiseiMinStd.pdf"
N "japan.ps"
N "js.pdf"
N "kazmir.pdf"
N "keyboard.pdf"
N "KozukaB-ILEmbed.pdf"
N "laballade.pdf"
N "LD.pdf"
N "MagicEye.pdf"
N "ngnews.pdf"
N "ngnews1.pdf"
N "NIL_0003.pdf"
N "Openhuis_pdf_zw.pdf"
N "Original.pdf"
N "pdfopt_bug.pdf"
N "pdftops.pdf"
N "PixelisAd.pdf"
N "prfmm.pdf"
N "prob.pdf"
N "pstopdf.pdf"
N "pstopdfO3.pdf"
N "PT.ps"
N "QA_Inv.pdf"
N "RealCities.pdf"
N "RodinCIDEmbed.pdf"
N "S2_Digitalproof-Forum_x3k.pdf"
N "smdf.90441.102.pdf"
N "Svd.pdf"
N "test-hyperref.pdf"
N "test.pdf"
N "TextRize.pdf"
N "time1.pdf"
N "tpc2.ps"
N "Type3stringwidth.ps"
N "type42_glyph_index.ps"
N "waterfal.ps"
N "womanface.pdf"
N "xgfddg.pdf"

pdfwrite :

P "0.pdf"
P "000040cf.000_60.pdf"
P "01_001.pdf"
P "001-01.ps"
P "001-13.ps"
P "001-25.ps"
P "002-09.ps"
P "002-21.ps"
P "002-33.ps"
P "012-01.ps"
P "012-05.ps"
P "012-09.ps"
P "012-13.ps"
P "013-01.ps"
P "013-05.ps"
P "013-09.ps"
P "013-13.ps"
P "014-01.ps"
P "014-05.ps"
P "014-09.ps"
P "014-13.ps"
P "015-01.ps"
P "015-05.ps"
P "015-09.ps"
P "016-01.ps"
P "017-01.ps"
P "018-01.ps"
P "01_001.pdf"
P "020-01.ps"
P "023-01.ps"
P "027-01.ps"
P "027-05.ps"
P "027-09.ps"
P "028-01.ps"
P "031-01.ps"
P "031-05.ps"
P "032-01.ps"
P "032-07.ps"
P "033-01.ps"
P "033-52-5873.pdf"
P "034-01.ps"
P "034-10.ps"
P "035-01.ps"
P "035-07.ps"
P "036-01.ps"
P "038-01.ps"
P "039-01.ps"
P "040-01.ps"
P "045-01.ps"
P "055-01.ps"
P "083-01.ps"
P "083-05.ps"
P "083-09.ps"
P "083-13.ps"
P "084-01.ps"
P "091-01.ps"
P "093-01.ps"
P "094-01.ps"
P "096-01.ps"
P "102-01.ps"
P "103-01.ps"
P "104-01.ps"
P "109-01.ps"
P "110-01.ps"
P "113-01.ps"
P "118-01.ps"
P "119-01.ps"
P "119-10.ps"
P "119-16.ps"
P "119-23.ps"
P "119-35.ps"
P "119-41.ps"
P "119-47.ps"
P "120-01.ps"
P "123-01.ps"
P "123-05.ps"
P "123-09.ps"
P "124-01.ps"
P "129-01.ps"
P "136-01.ps"
P "141-01.ps"
P "148-01.ps"
P "148-05.ps"
P "148-11.ps"
P "148-16.ps"
P "149-01.ps"
P "149-05.ps"
P "150-01.ps"
P "154-01.ps"
P "158-01.ps"
P "159.pdf"
P "162-01.ps"
P "165-01.ps"
P "166-01.ps"
P "169-01.ps"
P "169-05.ps"
P "169-09.ps"
P "169-13.ps"
P "170-01.ps"
P "175-01.ps"
P "176-01.ps"
P "181-01.ps"
P "184-01.ps"
P "192-01.ps"
P "194-01.ps"
P "200-01.ps"
P "205-01.ps"
P "205-05.ps"
P "205-09.ps"
P "205-13.ps"
P "206-01.ps"
P "212-01.ps"
P "213-01.ps"
P "214-01.ps"
P "215-01.ps"
P "219-01.ps"
P "220-01.ps"
P "220-07.ps"
P "222-01.ps"
P "222-05.ps"
P "222-09.ps"
P "222-13.ps"
P "223-01.ps"
P "226-01.ps"
P "227-01.ps"
P "231-01.ps"
P "233-01.ps"
P "237-01.ps"
P "238-01.ps"
P "244-01.ps"
P "245-01.ps"
P "245-07.ps"
P "245-13.ps"
P "245-17.ps"
P "246-01.ps"
P "250-01.ps"
P "251-01.ps"
P "255-01.ps"
P "257-01.ps"
P "258-01.ps"
P "260-01.ps"
P "263-01.ps"
P "264-01.ps"
P "268-03.ps"
P "268-04.ps"
P "268-05.ps"
P "268-06.ps"
P "269-01.ps"
P "270-01.ps"
P "272-01.ps"
P "276-01.ps"
P "281-01.ps"
P "282-01.ps"
P "289-01.ps"
P "296-01.ps"
P "297-01.ps"
P "298-01.ps"
P "298-05.ps"
P "298-09.ps"
P "299-01.ps"
P "303-01.ps"
P "304-01.ps"
P "307-01.ps"
P "307-07.ps"
P "307-13.ps"
P "308-04.ps"
P "310-04.ps"
P "311-03.ps"
P "313-01.ps"
P "316-07.ps"
P "320-01.ps"
P "321-01.ps"
P "321-05.ps"
P "321-09.ps"
P "325-01.ps"
P "327-01.ps"
P "330-01.ps"
P "334-01.ps"
P "335-01.ps"
P "336-01.ps"
P "401-01.ps"
P "405-01.ps"
P "409-01.ps"
P "415-01.ps"
P "421-01.ps"
P "430-01.ps"
P "442-01.ps"
P "450-01.ps"
P "455690.pdf"
P "460-01.ps"
P "463-01.ps"
P "464-01-fixed.ps"
P "468-01-fixed.ps"
P "476-01-fixed.ps"
P "476-01.ps"
P "478-01.ps"
P "483-05-fixed.ps"
P "541.pdf"
P "541_623.pdf"
P "687572.pdf"
P "86554321.pdf"
P "acrobat.pdf"
P "adesso1.pdf"
P "adesso3.pdf"
P "adesso7.pdf"
P "adesso8.pdf"
P "ADOBE1-4.pdf"
P "alphabet.ps"
P "Altona-Testsuite_p2_S_x3.pdf"
P "Altona.Page_3.2002-09-27.pdf"
P "Altona_Measure_1v1.pdf"
P "Altona_Technical_1v1_x3.pdf"
P "Altona_Visual_bb_1v1_x3.pdf"
P "Altona_Visual_sb_1v1_x3.pdf"
P "annots.pdf"
P "besttest.pdf"
P "bla.ps"
P "brochurep1.pdf"
P "bug-gstest.pdf"
P "Bug687044.ps"
P "Bug687111.ps"
P "Bug687311.pdf"
P "Bug687546.ps"
P "Bug687603.ps"
P "Bug687672.pdf"
P "Bug687698.ps"
P "Bug687724.pdf"
P "Bug687828.pdf"
P "Bug687840.pdf"
P "Bug687845.ps"
P "bulletin.pdf"
P "chartab.pdf"
P "chess.ps"
P "Dave_Barry.pdf"
P "Fixed_Original.pdf"
P "fonts.pdf"
P "fonttest.pdf"
P "H00216q.pdf"
P "HeiseiMinStd.pdf"
P "japan.ps"
P "js.pdf"
P "kazmir.pdf"
P "keyboard.pdf"
P "KozukaB-ILEmbed.pdf"
P "LD.pdf"
P "MagicEye.pdf"
P "ngnews.pdf"
P "ngnews1.pdf"
P "NIL_0003.pdf"
P "Openhuis_pdf_zw.pdf"
P "Original.pdf"
P "p2b-100.pdf"
P "pdfopt_bug.pdf"
P "pdftops.pdf"
P "PixelisAd.pdf"
P "prfmm.pdf"
P "prob.pdf"
P "pstopdf.pdf"
P "pstopdfO3.pdf"
P "QA_Inv.pdf"
P "RealCities.pdf"
P "RodinCIDEmbed.pdf"
P "S2_Digitalproof-Forum_x3k.pdf"
P "smdf.90441.102.pdf"
P "Svd.pdf"
P "t.pdf"
P "test-hyperref.pdf"
P "test.pdf"
P "test_multipage_prob.pdf"
P "TextRize.pdf"
P "time1.pdf"
P "tpc2.ps"
P "type42_glyph_index.ps"
P "waterfal.ps"
P "womanface.pdf"
P "xgfddg.pdf"</pre>
<p>[src/gxhintn.c 1.61, src/gxhintn.h 1.24]</p>
</blockquote>

<p><strong><a name="2005-09-04_0544"></a>
2005-09-04 05:44 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688275 Overprint problems in Display driver - Gs 8.50 and Gs 8.51.

DETAILS:

The cause of the problem was that gx_default_get_bits_rectangle did not
properly handle a situation in which GX_RETURN_POINTER was not specified
for a get_bits operation.  The overprint logic is one of the few situations
in which this option is not specified.  The display device is one of the
few situations that uses the default get_bits logic. This is the second
problem that has been found in this combination.</pre>
<p>[src/gdevdgbr.c 1.14, src/gdevdsp.c 1.35]</p>
</blockquote>

<p><strong><a name="2005-09-02_0554"></a>
2005-09-02 05:54 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Handling transparency as a high level objects, part 11 (fix 1).

DETAILS :

The ps2write device was broken with recent patches. Fixing it now.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfx.h 1.130]</p>
</blockquote>

<p><strong><a name="2005-09-01_2204"></a>
2005-09-01 22:04 Stefan Kemper</strong></p>
<blockquote>
<pre>
Formatting cleanup for the printing of the Font samples.

Fixes bug 688281
Thanks to: SaGS5495@hotmail.com</pre>
<p>[lib/prfont.ps 1.7]</p>
</blockquote>

<p><strong><a name="2005-09-01_0005"></a>
2005-09-01 00:05 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix incorrect detection of the end of input data during processing of
(next_code == lzw_decode_max) branch in s_LZWD_process(). Return the error
status only when there's not enough data in the buffer and the buffer
cannot be refilled.
Fix bug 688287</pre>
<p>[src/slzwd.c 1.6]</p>
</blockquote>

<p><strong><a name="2005-08-31_1834"></a>
2005-08-31 18:34 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Handling transparency as a high level objects, part 10, final.

DETAILS :

This completes the fix for the bug 687168
"(pdfwrite) Transparency as a high level object"

It switches on the new code by changing the default value for the HaveTransparency option.

EXPECTED DIFFERENCES :

pdfwrite :

ai2.pdf
dina3_watermark.pdf
SoftMaskGroup.pdf</pre>
<p>[src/gdevpdfb.h 1.9]</p>
</blockquote>

<p><strong><a name="2005-08-31_1831"></a>
2005-08-31 18:31 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Upgrading the default CompatibilityLevel to 1.4 .
THIS IS INCOMPATIBLE CHANGE.

We believe that CompatibilityLevel=1.3 is now obsolete,
because most viewers can handle PDF 1.4 .
If an user needs to create a document for older viewers,
he should specify CompatibilityLevel explicitly.
Note that PDFSETTINGS parameter lists have been upgraded also.

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Ps2pdf.htm 1.83, lib/gs_pdfwr.ps 1.47, lib/ps2pdf 1.4, lib/ps2pdf.bat 1.9, lib/ps2pdf.cmd 1.4, src/gdevpdf.c 1.119]</p>
</blockquote>

<p><strong><a name="2005-08-31_1529"></a>
2005-08-31 15:29 Ray Johnston</strong></p>
<blockquote>
<pre>
Update map_cmyk_color function to modern version (was old style). This
should complete jpegcmyk for correct behaviour.</pre>
<p>[src/gdevjpeg.c 1.10]</p>
</blockquote>

<p><strong><a name="2005-08-31_1431"></a>
2005-08-31 14:31 Ray Johnston</strong></p>
<blockquote>
<pre>
Add jpegcmyk device (module missed in previous commit).</pre>
<p>[src/gdevjpeg.c 1.9]</p>
</blockquote>

<p><strong><a name="2005-08-31_1235"></a>
2005-08-31 12:35 Igor Melichev</strong></p>
<blockquote>
<pre>
Documenting the new pdfwrite device paramentr HaveTransparency.

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Ps2pdf.htm 1.82]</p>
</blockquote>

<p><strong><a name="2005-08-31_1118"></a>
2005-08-31 11:18 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Handling transparency as a high level objects, part 9.

DETAILS :

This is a continuation of the fix the bug 687168
"(pdfwrite) Transparency as a high level object"

It simplifies the logic of the HaveTransparency flag.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfp.c 1.51, src/gdevpdft.c 1.50]</p>
</blockquote>

<p><strong><a name="2005-08-31_1107"></a>
2005-08-31 11:07 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Handling transparency as a high level objects, part 8.

DETAILS :

This is a continuation of the fix the bug 687168
"(pdfwrite) Transparency as a high level object"

It applies pdf_substitue_resource to transparency-related objects.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdft.c 1.49]</p>
</blockquote>

<p><strong><a name="2005-08-31_1102"></a>
2005-08-31 11:02 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A code restructurisation : factor out pdf_substitue_resource.

DETAILS :

This change is algorithmicly equivalent.
pdf_substitue_resource is a new function, which replaces redundant code fragments.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfg.c 1.66, src/gdevpdfj.c 1.48, src/gdevpdfu.c 1.84, src/gdevpdfx.h 1.129]</p>
</blockquote>

<p><strong><a name="2005-08-31_0740"></a>
2005-08-31 07:40 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Handling transparency as a high level objects, part 7.

DETAILS :

This is a continuation of the fix the bug 687168
"(pdfwrite) Transparency as a high level object"

1. Restructurize the code in gdevpdft.c .
2. Provide a delayed obgect ID assignation in gdevpdft.c .
3. gdevpdfb.h, gdevpdfx.h slightly changed for (2).

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfb.h 1.8, src/gdevpdft.c 1.48, src/gdevpdfx.h 1.128, src/gdevpdti.c 1.51]</p>
</blockquote>

<p><strong><a name="2005-08-31_0559"></a>
2005-08-31 05:59 Ray Johnston</strong></p>
<blockquote>
<pre>
Remove inadvertent commit that included png48 device.</pre>
<p>[src/msvc32.mak 1.75]</p>
</blockquote>

<p><strong><a name="2005-08-31_0552"></a>
2005-08-31 05:52 Ray Johnston</strong></p>
<blockquote>
<pre>
Add jpegcmyk device.</pre>
<p>[src/bcwin32.mak 1.38, src/devs.mak 1.136, src/macos-mcp.mak 1.35, src/macosx.mak 1.28, src/msvc32.mak 1.74, src/openvms.mak 1.41, src/os2.mak 1.47, src/unix-gcc.mak 1.50, src/unixansi.mak 1.41, src/watcw32.mak 1.35]</p>
</blockquote>

<p><strong><a name="2005-08-31_0341"></a>
2005-08-31 03:41 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688252 Signal 11 in set_color_ht_le_4 on AMD64.  The fix comes
from Alex Cherepanov.  Add a cast for force signed math when working
with a signed and unsigned value.</pre>
<p>[src/gxcht.c 1.17]</p>
</blockquote>

<p><strong><a name="2005-08-30_2326"></a>
2005-08-30 23:26 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Encode the indication that the EPS file has been cropped into
EPSBoundingBoxState and suppres subsequent messages about cropping the file.
The warning is false when BoundingBox preceeds HiResBoundingBox and BoundingBox
causes cropping but HiResBoundingBox doesn't.
Fix bug 688062</pre>
<p>[lib/gs_epsf.ps 1.15]</p>
</blockquote>

<p><strong><a name="2005-08-30_2319"></a>
2005-08-30 23:19 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix handling of zero length input files so that .peekstring does not give
a rangecheck error. Bug 688199.

DETAILS:

Following Russell Lang's suggestion, the zpeekstring function appeared to
have been (at one time) designed so that EOFC returned an empty string, but
the check for requested len &gt; bsize had priority, and when the file was
closed, the 'bsize' was reset to 0. I removed the "HACK" check to after the
check for status == EOFC.</pre>
<p>[src/zfileio.c 1.18]</p>
</blockquote>

<p><strong><a name="2005-08-30_1912"></a>
2005-08-30 19:12 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for large 'loca' table counts in TrueType fonts causing stackoverflow.
Bug 688277 for customer 870.

DETAILS:

While the MaxOpStack userparam (default value 50000 in gs_init.ps) could
work around this problem, a cleaner and more efficient solution is to
create the array for the 'loca' values, then fill it.</pre>
<p>[lib/gs_ttf.ps 1.47]</p>
</blockquote>

<p><strong><a name="2005-08-30_1732"></a>
2005-08-30 17:32 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Handling transparency as a high level objects, part 6.

DETAILS :

This is a continuation of the fix the bug 687168
"(pdfwrite) Transparency as a high level object"

The last patch was commited with errors.
This patch fixes that.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/ztrans.c 1.27]</p>
</blockquote>

<p><strong><a name="2005-08-30_1708"></a>
2005-08-30 17:08 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Handling transparency as a high level objects, part 5.

DETAILS :

This is a continuation of the fix the bug 687168
"(pdfwrite) Transparency as a high level object"

The last patch was commited with errors.
This patch fixes that.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevp14.c 1.34, src/gstrans.h 1.15]</p>
</blockquote>

<p><strong><a name="2005-08-30_1649"></a>
2005-08-30 16:49 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Handling transparency as a high level objects, part 4.

DETAILS :

This is a continuation of the fix the bug 687168
"(pdfwrite) Transparency as a high level object"

This patch debugs soft mask groups.

1. The pdf14 device appears to use soft mask Background converted into DeviceGray.
We believe it is incorrect, but we don't want to fix it now.
To provide the correct data for high level devices we added a new field
GrayBackground, which keeps the Background color converted into DeviceGray.
Background now keeps the original Background, specified in the blend color space.

2. Do not use gsave-grestore when creating a soft mask with .begintransparencygroup,
because high level devices need to modify the graphic state with storing the sift mask ID.
The new code uses currentcolorspace-setcolorspace instead gsave-grestore.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/pdf_draw.ps 1.96, src/gdevp14.c 1.33, src/gdevpdft.c 1.47, src/gstparam.h 1.15, src/gstrans.c 1.25, src/int.mak 1.136, src/ztrans.c 1.26]</p>
</blockquote>

<p><strong><a name="2005-08-30_1301"></a>
2005-08-30 13:01 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Handling transparency as a high level objects, part 3.

DETAILS :

This is a continuation of the fix the bug 687168
"(pdfwrite) Transparency as a high level object"

This patch completes the graphic state synchronization.
A new field soft_mask_id is added to gs_imager_state.
High level devices use it for storing an ID of the current soft mask.
Currently it doesn't affect low level devices.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfg.c 1.65, src/gdevpdft.c 1.46, src/gdevpdfx.h 1.127, src/gstrans.c 1.24, src/gxistate.h 1.23]</p>
</blockquote>

<p><strong><a name="2005-08-30_1049"></a>
2005-08-30 10:49 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Handling transparency as a high level objects, part 2.

DETAILS :

This is a continuation of the fix the bug 687168
"(pdfwrite) Transparency as a high level object"

This patch provides an accumulation of a transparency mask group as a PDF command stream,
a creation of SMask dictionaries and a synchronization of the graphic state with them.

The graphic state synchronization is incomplete due to
insufficient data supplied by the graphics library
when executong a grestore. It will be fixed later.

pdf_substream_save_s::soft_mask_dict is added to handle nested mask groups.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfb.h 1.7, src/gdevpdft.c 1.45, src/gdevpdfx.h 1.126, src/gdevpdti.c 1.50, src/gsstruct.h 1.19]</p>
</blockquote>

<p><strong><a name="2005-08-30_0906"></a>
2005-08-30 09:06 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (device intervace, PDF interpreter) : High level devices need to know whether the mask is an image or a group.

DETAILS :

This is the fourth preparation for fixing the bug 687168
"(pdfwrite) Transparency as a high level object"

A high level device needs to know whether a transparency mask is
a group or an image. To provide this data we split the operator
.begintransparencymask into .begintransparencymaskgroup and
.begintransparencymaskimage, which should be invoked in appropriate cases.
The structure gs_pdf14trans_params_s passes a new flag mask_is_image.

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Language.htm 1.95, lib/pdf_draw.ps 1.95, lib/pdf_ops.ps 1.40, src/gstrans.c 1.23, src/gstrans.h 1.14, src/ztrans.c 1.25]</p>
</blockquote>

<p><strong><a name="2005-08-30_0638"></a>
2005-08-30 06:38 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc warnings.

DETAILS :

This fixes some Cygwin/gcc warnings and improves few comments.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevdevn.c 1.27, src/gdevpdf.c 1.118, src/gdevpsd.c 1.23, src/gdevtsep.c 1.9, src/gsistate.c 1.12, src/gxpcopy.c 1.26, src/zmedia2.c 1.19]</p>
</blockquote>

<p><strong><a name="2005-08-29_1959"></a>
2005-08-29 19:59 Ray Johnston</strong></p>
<blockquote>
<pre>
Invalid xref was not detected causing some objects to be defined as 'null'
which could cause 'typecheck' or other errors. Bug 688285 for customer #870.

DETAILS:

The xref subsection count was one too small, so there was one xref entry
that was being interpreted as a new subsection. Detect the trailing 'n'
garbage (any non-whitespace) and signal an error so that the 'rebuild'
logic can recover the correct xref.

EXPECTED DIFFERENCES.

none (tested all pdf files in comparefiles).</pre>
<p>[lib/pdf_main.ps 1.99]</p>
</blockquote>

<p><strong><a name="2005-08-29_1821"></a>
2005-08-29 18:21 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Handling transparency as a high level objects.

DETAILS :

This is an initial commit for the high level handler to pdfwrite.
It fixes the bug 687168
"(pdfwrite) Transparency as a high level object"

It defines a new distiller parameter HaveTransparency.
When it is false (default), the behavior is equivalent to the old one -
the transparency is being converted into a plane image.

The value true only works with CompatibilityLevel&gt;=1.4 .
In this case transparency is being written to output as high level objects.
The writtemn objects are not necesserily repear the structure of the
input document, because the PDF interpreter performs some simplifications,
which can't be recovered by the pdfwrite device.

The main conversion happens in gdevpdft.c . See comments in there.
Two new resource types are being added - resourceSoftMaskDict,
resourceGroup. Doing so to allow a further optimization
with merging duplicated objects of such types.

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Develop.htm 1.153, src/devs.mak 1.135, src/gdevpdf.c 1.117, src/gdevpdfb.h 1.6, src/gdevpdfg.c 1.64, src/gdevpdfg.h 1.42, src/gdevpdfi.c 1.73, src/gdevpdfj.c 1.47, src/gdevpdfp.c 1.50, src/gdevpdft.c 1.44, src/gdevpdfu.c 1.83, src/gdevpdfx.h 1.125]</p>
</blockquote>

<p><strong><a name="2005-08-29_1812"></a>
2005-08-29 18:12 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : Provide a bbox for .begintransparencygroup (issue 2).

DETAILS :

This is the second attempt of the second preparation for fixing the bug 687168
"(pdfwrite) Transparency as a high level object"
The last patch about the bbox appear incorrect due to
the device transparency handler receives the image bbox data
when CTM is concatenated with the image matrix.

This patch almost restores the old code except
image bbox is changed from 0 0 0 0 to 0 0 1 1,
which is the right rectangle in the image coordinates.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/pdf_draw.ps 1.94]</p>
</blockquote>

<p><strong><a name="2005-08-29_1558"></a>
2005-08-29 15:58 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix: Validate the number of transparency Background components.

DETAILS :

The old code never checked whether a transparency Background has a proper number of components.
It could cause an indeterministic behavior with incorrect documents.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevp14.c 1.32, src/gstrans.c 1.22]</p>
</blockquote>

<p><strong><a name="2005-08-29_1525"></a>
2005-08-29 15:25 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (device interface): Provide an access for the number of transparency Background components for high level devices, part 2.

DETAILS :

This continues the third preparation for fixing the bug 687168
"(pdfwrite) Transparency as a high level object"

The last patch has a minor inaccuracy :
the field Background_components defined as bool.
It must be int.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gstparam.h 1.14, src/gstrans.h 1.13]</p>
</blockquote>

<p><strong><a name="2005-08-29_1518"></a>
2005-08-29 15:18 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (device interface): Provide an access for the number of transparency Background components for high level devices.

DETAILS :

This is a third preparation for fixing the bug 687168
"(pdfwrite) Transparency as a high level object"

This change is algorithmically equivalent.

The member has_Background is now replaced with Background_components,
which stores the number of Background components.
It is visible for devices when the create_compositor method
is called with PDF14_BEGIN_TRANS_GROUP.

The clist file format has been slightly changed :
the field Background_components is now written into a
separate byte, and unused Background components are being skipped.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevp14.c 1.31, src/gstparam.h 1.13, src/gstrans.c 1.21, src/gstrans.h 1.12, src/ztrans.c 1.24]</p>
</blockquote>

<p><strong><a name="2005-08-29_1405"></a>
2005-08-29 14:05 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : provide a bbox for .begintransparencygroup .

DETAILS :

This is a second preparation for fixing the bug 687168
"(pdfwrite) Transparency as a high level object"

The old code calls .begintransparencygroup with zero bbox
when processing a Type 3 image with SMask.
This patch computes the bbox from the image coordinates
in order to provide data for the high level transparency handler.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/pdf_draw.ps 1.93]</p>
</blockquote>

<p><strong><a name="2005-08-29_1251"></a>
2005-08-29 12:51 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Use DeviceGray when writing SMask image.

DETAILS :

This is a preparation for fixing the bug 687168
"(pdfwrite) Transparency as a high level object"

The old code tried to use DevicePixel while writing a SMask image.
Currently this branch never executes because the current code always converts
transparency to a plain image.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfb.h 1.5, src/gdevpdfi.c 1.72, src/gdevpdfx.h 1.124]</p>
</blockquote>

<p><strong><a name="2005-08-25_1534"></a>
2005-08-25 15:34 Ray Johnston</strong></p>
<blockquote>
<pre>
Change ResusableStreamDecode filter implementation to avoid using .bigstring
so that languagelevel 3 is not required for this filter. Patch thanks to
mat. Gheorghe Savulescu. Bug 688150.

DETAILS:

In general, running at Language Level 2 by using .setlanguagelevel is not
supported when using features that are part of LanguageLevel 3, such as
filters that are part of LL3, but this patch is simple and low risk so
I am adding it and closing the bug.</pre>
<p>[lib/gs_frsd.ps 1.9]</p>
</blockquote>

<p><strong><a name="2005-08-24_1902"></a>
2005-08-24 19:02 Ralph Giles</strong></p>
<blockquote>
<pre>
Partial support for a compressed %rom% iodevice. It is enabled by
adding romfs.dev to FEATURE_DEVS in the top-level Makefile.

This also includes a C commandline-utility 'mkromfs' that takes
a directory and creates a compressed image of it as a file. Currently
the %rom% iodevice in gsiorom.c reads this directly.

The compressed image is a list of paths with offset pointers,
each offset pointing to the beginning of a series of zlib-
compressed blocks comprising the file. This gets us pretty
good (typically 50% or better) compression of the support
files while still allowing relatively fast seek and random
access.

TODO:

1. Have mkromfs trace through the include directives in lib/
so that only those postscript files required by Ghostscript are
included, the same as geninit does now. Resources/ and fonts/
can still be included as-is.

2. Have mkromfs (or a separate tool) general a C file (or sequence
of them, so the data can be compiled directly into the Ghostscript
executable. And of course modify gsiorom.c to pull its data from
there instead of a literal file.

3. Integrate mkromfs into the build system and replace the existing
geninit code. Setting COMPILE_INITS=1 in the top-level Makefile
should automatically construct and compile in the compressed image
and enable the romfs FEATURE_DEV

4. Switch to a b-tree for the block pointer index, so that file
access remains fast if someone dumps in a huge number of Resources
or fonts. Right now it does a linear search, which is fast enough
for the current complement but will cause a problem as some point.</pre>
<p>[src/Makefile.in 1.41, src/gsiorom.c 1.1, src/lib.mak 1.211, src/mkromfs.c 1.1]</p>
</blockquote>

<p><strong><a name="2005-08-24_1704"></a>
2005-08-24 17:04 Raph Levien</strong></p>
<blockquote>
<pre>
Cleanup of error message "printquit" calls in pf2afm, mostly to add
missing newlines. Thanks to Paul Vojta for the patch.</pre>
<p>[lib/pf2afm.ps 1.8]</p>
</blockquote>

<p><strong><a name="2005-08-24_1703"></a>
2005-08-24 17:03 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (the device interface) : High level devices need an access to a transparency transfer function object.

DETAILS :

It adds  "gs_function_t *transfer_function" to gs_pdf14trans_params_s and
enhances a garbager descriptor st_pdf14trans.

We think that such pointer is alvays have a correct stability,
because the transparency only comes from the PDF interpreter,
which doesn't create graphic states in the global memory.
Otherwise the function object must be global as well.
Unfortunately we don't have a validation mechanizm right now,
but likely it will appear with fixing the bug 688226.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevp14.c 1.30, src/gstparam.h 1.12, src/gstrans.c 1.20, src/gstrans.h 1.11]</p>
</blockquote>

<p><strong><a name="2005-08-23_1926"></a>
2005-08-23 19:26 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Improve the logic of combining a text rotation with ViewingOrientation.

DETAILS :

Bug 687800 "%%ViewingOrientation not processed by pdfwrite".

We can't say that we perfectly understand what rules Adobe uses to combine them,
becaue the explanation in "Technical Note #5151
Version :Acrobat 6.0 Acrobat Distiller Parameters" page 50 is incomplete.
But with this change the result looks more compatible to Adobe.

EXPECTED DIFFERENCES :

"Bug687044.ps"
"Bug687603.ps"</pre>
<p>[src/gdevpdf.c 1.116]</p>
</blockquote>

<p><strong><a name="2005-08-23_1734"></a>
2005-08-23 17:34 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (Type 1 hinter) : Allow degenerate CTM by a rendering with no hinting.

DETAILS :

This is a fix for a part of the bug 688065
"incorrect handling of type 1 fonts at 0 0 scale",
which relates to "1 0 scale".
The case "0 0 scale" was fixed earlier.

With degenerate CTM the old code fails with 'rangecheck'
due to the hinter logics needs an inverse CTM.
However some documents set "1 0 scale" to compute text width.
The new code does render a text with degenerate CTM with no hinting.
We could implement an optimized algorithm for this with
a simple rendering of a line which is a projection of the glyph,
but we have no engineering resources for this optimization.
We believe that such optimisation isn't much useful.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxhintn.c 1.60]</p>
</blockquote>

<p><strong><a name="2005-08-23_1258"></a>
2005-08-23 12:58 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite and other vector devices) : A compatibility to Adobe when stroking with a degenerate CTM.

DETAILS :

Bug 687901 '"wrong operand type" error'.
See comment in code.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfd.c 1.68]</p>
</blockquote>

<p><strong><a name="2005-08-23_1126"></a>
2005-08-23 11:26 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite and other vector devices) : Indeterministic result when stroking a path with a degenerate CTM.

DETAILS :

It fixes the indeterministic habavior with the test document of the
Bug 687901 '"wrong operand type" error',
but doesn't fix the bug.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevvec.c 1.27]</p>
</blockquote>

<p><strong><a name="2005-08-22_2130"></a>
2005-08-22 21:30 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix: /SP pdfmark must synchronize the clipping path.

DETAILS :

Bug 687558 "Wrong clipping path with /SP pdfmark".

This patch consists of 2 parts :

1. A hack for synchronizing the clipping path in 'pdfmark'.
We need to use a hack, because the implementation of 'pdfmark'
is based on the device method put_params, and
there is no regular way to pass the imager state or the clipping path through it.
The hack paints something outside the device bbox,
so that the painting doesn't appear in the output.

2. An improvement to the pdfwrite device,
which skips a stroking, if it appears entirely outside the clipping box.
That improvement appears some imperfect due to a compatibility
to the hack (1) - see comment in code. The imperfection is
the synchronization of a clipping path when a document strokes outside
the clipping box. We believe that such cases are rare,
so the imperfection isn't important.

A progression appears while a charproc accumulation :
the old code accumulated strokes outside the bounding box
set by 'setcachedevice', but the new one does not.
The new one appears compatible to Adobe Distiller 5.

EXPECTED DIFFERENCES :

pdfwrite 72 dpi :
015-09.ps</pre>
<p>[lib/gs_pdfwr.ps 1.46, src/gdevpdfd.c 1.67]</p>
</blockquote>

<p><strong><a name="2005-08-22_2129"></a>
2005-08-22 21:29 Igor Melichev</strong></p>
<blockquote>
<pre>
The filling algorithm : optimize paths with many subpaths (continued).

DETAILS :

The last patch can cause a dangling pointer subpath_current.
Rather we don't use it, it may be harmful for the garbager.
This patch fixes that.

Minor change : removed an unuseful type case and empty line.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxpcopy.c 1.25]</p>
</blockquote>

<p><strong><a name="2005-08-22_1429"></a>
2005-08-22 14:29 Igor Melichev</strong></p>
<blockquote>
<pre>
The filling algorithm : optimize paths with many subpaths.

DETAILS :

Bug 686996 "Orientation has massive effect on render time".
It fills a path consisting of 4440 subpaths,
each of which is a quasi-rectangle
(or a rectangle with a fixed_fraction noise).

If a path has over 50 subpaths,
we try to merge subpaths by common vertical lines.
This works around a poor 3d party software,
which generates a path as a huge number of contacting rectangles.

An additional complexity happens due to the sample document defines multiple
quasi-colinear lines instead colinear ones. An example : {{362254, 42905},
{362253, 204152}} and {{362253, 42881},{362253, 204152}}.
We believe that with a huge number of contours the precision of the rendering
doesn't need to be so strong as with a small number.
Therefore we replace quasi-colinear lines with colinear ones.

Another smart point is which pairs of lines to be checked for colinearity.
Obviousely checking all pairs would be too slow. Probably we can assume that the
Postscript writer orders rectangles by the trasversal direction, so
colinear pairs appear in the path within a small window, which roughly is the
number of spot holes multiplied by 4. (Well, one can construct a worse path,
but unlikely it is practical). This patch hardcodes few arbitrary
constants, which may need further improvements.

See commnmets in code for more details.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.122, src/gxpath.h 1.16, src/gxpcopy.c 1.24]</p>
</blockquote>

<p><strong><a name="2005-08-18_0807"></a>
2005-08-18 08:07 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Improve the documentation about Policies.PageSize .

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Ps2ps2.htm 1.3]</p>
</blockquote>

<p><strong><a name="2005-08-17_2154"></a>
2005-08-17 21:54 Igor Melichev</strong></p>
<blockquote>
<pre>
PDF interpreter now processes ToUnicode CMaps when the target device is pdfwrite.

DETAILS :

Bug 685335 "PDF interpreter doesn't process ToUnicode".

The PDF interpreter now converts ToUnicode CMaps into FontInfo.GlyphNames2Unicode,
which PS interpreter passes to high level devices,
and the pdfwrite device converts it again into ToUnicode.
Therefore re-distilling a PDF file with GS|pdfwrite
preserves the searchability. Before now it was lost.

Currently this stuff works only when the output device is pdfwrite.
Doing so to save the processor time with raster devices.
In future the condition in .processToUnicode may need an enhancement.

We found that some documents define ToUnicode incorrectly.
For now we skip cases, in which ToUnicode is defined to a name,
because the PDF specification requires it to be a stream.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/gs_cmap.ps 1.19, lib/pdf_font.ps 1.78]</p>
</blockquote>

<p><strong><a name="2005-08-17_1830"></a>
2005-08-17 18:30 Ray Johnston</strong></p>
<blockquote>
<pre>
Previous change for ignoring 0 area clip path was not sufficient and made
other files misbehave. Fixes bugs 688121 and 688259, reopen 687136.

DETAILS:

Thanks to Dan for identifying the change that caused 688259 to fail. I had
coincidentally been looking in the same area for 688121.

687136 will require more analysis and a different patch, and the patch will
need to be tested against the files for 688121 and 688259 along with the
full regression suite.
`</pre>
<p>[lib/pdf_ops.ps 1.39]</p>
</blockquote>

<p><strong><a name="2005-08-17_1440"></a>
2005-08-17 14:40 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Unconforming line join.

DETAILS :

Ghostscript Bug 688126 "Wrong line join".

1. The old code applied a bewel join while flattening a curve.
   Such behavior appears incompatible to Adobe CPSI 3010.105.
   Language.htm said that it was done with .setcurvejoin
   for a compatibility to Adobe implementations.
   We believe that modern Adobe implementations are not such,
   and therefore we change the default value of .setcurvejoin to -1,
   which actually disables a curve join by default.
   The documentation is being updated accordingly.

2. Since round join always paints a full circle (see comment in add_round_cap),
   and since such circle doesn't appear when CPSI paints a flattened curve,
   we conclude that round join isn't applied to flattened curves.
   Therefore we change the condition in gxstroke.c
   to replace round join with bevel join for flattened curves.

   Note that PDF 1.5 requires to paint a "pieslice-shaped figure",
   rather than PDF 1.4 and PLRM3 does a round.
   Thus, GS code appears some obsolete, and we'll open a
   separate bug 688269 about that.

EXPECTED DIFFERENCES :

Visible differences at 300dpi with  034-01.ps, 123-05.ps.

Numerous single pixel differences stroking curves.

normal, 72 dpi :

"012-05.ps"
"012-13.ps"
"013-05.ps"
"013-13.ps"
"014-05.ps"
"014-09.ps"
"014-13.ps"
"015-05.ps"
"015-09.ps"
"027-09.ps"
"034-01.ps"
"034-10.ps"
"083-05.ps"
"083-13.ps"
"123-05.ps"
"176-01.ps"
"205-01.ps"
"205-05.ps"
"205-09.ps"
"205-13.ps"
"289-01.ps"
"298-09.ps"
"308-04.ps"
"316-07.ps"
"321-09.ps"
"ai2.pdf"
"Bug687812.ps"
"bugsample.pdf"
"messenger16.pdf"
"Openhuis_pdf_zw.pdf"
"tiger.eps"

normal,300dpi :

"012-01.ps"
"012-05.ps"
"012-09.ps"
"012-13.ps"
"013-01.ps"
"013-05.ps"
"013-09.ps"
"013-13.ps"
"014-05.ps"
"014-09.ps"
"014-13.ps"
"015-05.ps"
"015-09.ps"
"027-01.ps"
"027-05.ps"
"027-09.ps"
"032-01.ps"
"032-07.ps"
"034-01.ps"
"034-10.ps"
"045-01.ps"
"083-05.ps"
"083-09.ps"
"083-13.ps"
"123-01.ps"
"123-05.ps"
"123-09.ps"
"136-01.ps"
"148-16.ps"
"149-05.ps"
"150-01.ps"
"154-01.ps"
"158-01.ps"
"176-01.ps"
"192-01.ps"
"205-01.ps"
"205-05.ps"
"205-09.ps"
"205-13.ps"
"220-01.ps"
"220-07.ps"
"237-01.ps"
"245-13.ps"
"251-01.ps"
"255-01.ps"
"258-01.ps"
"269-01.ps"
"281-01.ps"
"289-01.ps"
"297-01.ps"
"298-09.ps"
"308-04.ps"
"316-07.ps"
"321-09.ps"
"86554321.pdf"
"adesso8.pdf"
"ai2.pdf"
"besttest.pdf"
"Bug687044.ps"
"Bug687489.ps"
"Bug687724.pdf"
"Bug687812.ps"
"Bug687840.pdf"
"bugsample.pdf"
"ca.pdf"
"chartab.pdf"
"Clarke Tate Manns Chinese.ai"
"escher.ps"
"golfer.eps"
"messenger.pdf"
"messenger16.pdf"
"Openhuis_pdf_zw.pdf"
"p2b-100.pdf"
"si_tg_brochure.pdf"
"Svd.pdf"
"t.pdf"
"tiger.eps"

pdfwrite, 72dpi :

"012-05.ps"
"012-13.ps"
"013-05.ps"
"013-13.ps"
"014-05.ps"
"014-09.ps"
"014-13.ps"
"015-05.ps"
"015-09.ps"
"027-01.ps"
"027-09.ps"
"034-01.ps"
"034-10.ps"
"083-05.ps"
"083-13.ps"
"176-01.ps"
"205-01.ps"
"205-05.ps"
"205-09.ps"
"205-13.ps"
"220-07.ps"
"237-01.ps"
"298-09.ps"
"308-04.ps"
"316-07.ps"
"321-09.ps"
"adesso8.pdf"
"ai2.pdf"
"annots.pdf"
"Bug687812.ps"
"chartab.pdf"
"messenger.pdf"
"messenger16.pdf"
"Openhuis_pdf_zw.pdf"
"tiger.eps"

pdfwrite, 300dpi :

"012-01.ps"
"012-05.ps"
"012-09.ps"
"012-13.ps"
"013-01.ps"
"013-05.ps"
"013-09.ps"
"013-13.ps"
"014-05.ps"
"014-09.ps"
"014-13.ps"
"015-05.ps"
"015-09.ps"
"017-01.ps"
"020-01.ps"
"027-01.ps"
"027-05.ps"
"027-09.ps"
"032-01.ps"
"032-07.ps"
"034-01.ps"
"034-10.ps"
"039-01.ps"
"045-01.ps"
"083-05.ps"
"083-09.ps"
"083-13.ps"
"104-01.ps"
"123-09.ps"
"136-01.ps"
"148-16.ps"
"154-01.ps"
"158-01.ps"
"165-01.ps"
"176-01.ps"
"205-01.ps"
"205-05.ps"
"205-09.ps"
"205-13.ps"
"212-01.ps"
"213-01.ps"
"214-01.ps"
"220-01.ps"
"237-01.ps"
"244-01.ps"
"245-07.ps"
"255-01.ps"
"269-01.ps"
"281-01.ps"
"298-09.ps"
"308-04.ps"
"316-07.ps"
"321-09.ps"
"86554321.pdf"
"ai2.pdf"
"besttest.pdf"
"Bug687044.ps"
"Bug687489.ps"
"Bug687724.pdf"
"Bug687812.ps"
"Bug687840.pdf"
"bugsample.pdf"
"ca.pdf"
"chartab.pdf"
"escher.ps"
"golfer.eps"
"messenger.pdf"
"messenger16.pdf"
"Openhuis_pdf_zw.pdf"
"p2b-100.pdf"
"si_tg_brochure.pdf"
"t.pdf"
"tiger.eps"</pre>
<p>[src/gxline.h 1.7, src/gxstroke.c 1.18, doc/Language.htm 1.94]</p>
</blockquote>

<p><strong><a name="2005-08-11_1710"></a>
2005-08-11 17:10 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Exit a text context before resetting a clip.

DETAILS :

Bug 688094 "error converting PostScript document".

The test document caused a wrong balance of
pdf_save_viewer_state / pdf_restore_viewer_state due to a clipping
was reset in a text context of a form XObject created with /BP pdfmark.

The patch changes pdf_unclip so that it exits a text context
when a clipping needs to reset with 'Q'.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfu.c 1.82]</p>
</blockquote>

<p><strong><a name="2005-08-11_1538"></a>
2005-08-11 15:38 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Clipping was missed while stroking a path with a pattern color.

DETAILS :

Bug 688211 "Gradient not rendered".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxstroke.c 1.17]</p>
</blockquote>

<p><strong><a name="2005-08-10_1936"></a>
2005-08-10 19:36 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Divide long lines while flattening a path.

DETAILS :

Bug 688228 "ps2pdf appears to infinite loop processing a document".

The old code didn't check for fixed overflow while computing a segment span
while flattening a path for the filling algorithm. Due to that
it got a wrong coordinate of a line intersection point, and fallen into an infinite cycle.

The new code subdivides a line segment if the segment span is greater than max_fixed.
See comment in code.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxpflat.c 1.45]</p>
</blockquote>

<p><strong><a name="2005-08-10_1931"></a>
2005-08-10 19:31 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Develop.htm must reference all relevant files (continued).</pre>
<p>[doc/Develop.htm 1.151, doc/Develop.htm 1.152]</p>
</blockquote>

<p><strong><a name="2005-08-09_2238"></a>
2005-08-09 22:38 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688250 Another overprint problem with the tiffsep and psdcmyk
devices.  The fix ensures that the various bit mask and shift fields in
the device's color_info structure is set for the tiffsep, psdcmyk, and
spotcmyk devices.</pre>
<p>[src/gdevdevn.c 1.26, src/gdevpsd.c 1.22, src/gdevtsep.c 1.8]</p>
</blockquote>

<p><strong><a name="2005-08-09_2023"></a>
2005-08-09 20:23 Ralph Giles</strong></p>
<blockquote>
<pre>
Port the 4-bit EGA device to the new DeviceN color mapping. After
a patch from William Bader. Fixes bug #687795.</pre>
<p>[src/gdevpcfb.c 1.7]</p>
</blockquote>

<p><strong><a name="2005-08-08_2324"></a>
2005-08-08 23:24 Ralph Giles</strong></p>
<blockquote>
<pre>
Remove a generated file that was causing build portability problems.</pre>
<p>[jasper/src/libjasper/include/jasper/jas_config_ac.h 1.2]</p>
</blockquote>

<p><strong><a name="2005-08-04_1738"></a>
2005-08-04 17:38 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix calculation of the row width on 64-bit platforms. Remove bitmap_raster()
macro because Windows bitmap is not affected by the source platform alignment
constrains. Initialize padding bytes to 0.
Fix bug 688247</pre>
<p>[src/gdevbmp.c 1.11, src/gdevbmpc.c 1.8]</p>
</blockquote>

<p><strong><a name="2005-08-04_0932"></a>
2005-08-04 09:32 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT font reader) : Allow 'post' over 65536 bytes.

DETAILS :

Bug 688154 "TTF file fails to load".

It applies .readbigtable to 'post' and then use new accessors
get_from_stringarray, getinterval_from_stringarray, string_array_size
to decode it.

The change should be algorithmically eqiovalent except for the 'post' size limitation.
A further optimizatrion of calls to first_post_string may be useful.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/gs_ttf.ps 1.46]</p>
</blockquote>

<p><strong><a name="2005-08-03_1636"></a>
2005-08-03 16:36 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : A workaround for an HP LaserJet 1320 bug in 'resourcestatus'.

DETAILS :

See comments in code.
The problem happened with the following files :

017-01.ps
020-01.ps
045-01.ps
327-01.ps
336-01.ps
Bug687603.ps

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.82]</p>
</blockquote>

<p><strong><a name="2005-08-02_1112"></a>
2005-08-02 11:12 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT interpreter) : Optimize the debug support.

DETAILS :

Bug 688253 "TT interpreter : too heavy debug support".

In the debug build the old code of TT interpreter allocates a copy of points arrays and
checks for any point change after TT instruction.

The new code checks whether the DebugPrint method is available,
and skips all the debug support otherwise. The method is set only if
-ZY option is specified. In the release build the debug support
compiles to empty.

We do not bring if_debug macros to the TT interpreter
because we want to keep it close to the original FreeType code.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxttfb.c 1.37, src/ttfmain.c 1.34, src/ttfoutl.h 1.16, src/ttinterp.c 1.18, src/ttload.c 1.7]</p>
</blockquote>

<p><strong><a name="2005-08-01_2058"></a>
2005-08-01 20:58 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT interpreter) : Skip TT instructions if the font program or the cvt program fails.

DETAILS :

Bug 688236 "/invalidfont in -show-".
This patch maps any TT bytecode interpreter error to "fBadInstruction",
if the error happens during the font instantiation or during the face instantiation.
As usual, fBadInstruction disables TT instructions for the font and prints a warning to stderr.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/ttfmain.c 1.33]</p>
</blockquote>

<p><strong><a name="2005-08-01_1940"></a>
2005-08-01 19:40 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Develop.htm must reference all relevant files.</pre>
<p>[doc/Develop.htm 1.150]</p>
</blockquote>

<p><strong><a name="2005-07-30_0239"></a>
2005-07-30 02:39 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Replace memcpy() with overlapping intervals to memmove() in Type 2 font
generator. The old code violated the C spec and failed on HP aC++ compiler
with +Olibcalls option. Thanks to Hin-Tak Leung for the patch.
Fix bug 687360</pre>
<p>[src/gdevpsfx.c 1.25]</p>
</blockquote>

<p><strong><a name="2005-07-29_0249"></a>
2005-07-29 02:49 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Remove the check for 0 CTM in the type 1 font hinter to support PDF files
with 0-size fonts or 0 CTM.
Fix bug 688237</pre>
<p>[src/gxhintn.c 1.59]</p>
</blockquote>

<p><strong><a name="2005-07-28_1524"></a>
2005-07-28 15:24 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Pacify Valgrind: don't copy memory on itself.
Partial fix for bug 688225.</pre>
<p>[src/gsiodev.c 1.8, src/zcie.c 1.13]</p>
</blockquote>

<p><strong><a name="2005-07-27_2234"></a>
2005-07-27 22:34 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Maybe line breaks are broken by the last patch. Commit it again with right line breaks for sure.</pre>
<p>[src/gdevpdfb.h 1.4, src/gdevpdfd.c 1.66, src/gdevpdfx.h 1.123, src/gdevpdti.c 1.49, src/gxcpath.c 1.16, src/gxpath.h 1.15]</p>
</blockquote>

<p><strong><a name="2005-07-27_2209"></a>
2005-07-27 22:09 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Skip a clip path, which is set by setcachedevice.

DETAILS :

Bug 687678 "pdfwrite : A Type 3 character cut-off".

The setcachedevice clipping must not be written to a charproc.
The old code wrote it, causing a character cut-off with several viewers,
including Adobe Reader 6.

The patch saves a 'setcachedevice' bbox in the pdfwrite device structure
and checks it whenever a clip path needs to be written out.
See gdevpdfx.h about the new data definition.
The box is being saved and restored while entering and exiting a substream.

EXPECTED DIFFERENCES :

pdfwrite :

"012-09.ps"
"013-09.ps"
"014-09.ps"
"015-09.ps"
"017-01.ps"
"020-01.ps"
"045-01.ps"
"083-09.ps"
"093-01.ps"
"123-09.ps"
"136-01.ps"
"165-01.ps"
"205-09.ps"
"212-01.ps"
"213-01.ps"
"214-01.ps"
"226-01.ps"
"238-01.ps"
"260-01.ps"
"264-01.ps"
"281-01.ps"
"298-09.ps"
"321-09.ps"</pre>
<p>[src/gdevpdfb.h 1.3, src/gdevpdfd.c 1.65, src/gdevpdfx.h 1.122, src/gdevpdti.c 1.48, src/gxcpath.c 1.15, src/gxpath.h 1.14]</p>
</blockquote>

<p><strong><a name="2005-07-27_1124"></a>
2005-07-27 11:24 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Ignore XUID if Metrics[2] has been changed.

DETAILS :

Bug 674418 "093-01.ps : Wrong text".

When a fong is being cached, the metric data for a glyph is being taken from the cache.
If a font have a valid XUID, the XUID is used as the cache key.
Consequently, if Metrics[2] has been changed after a font is cached,
the font renders with the wrong (unchanged) metric.

This patch checks whether another registered font has same XUID
and another Metrics[2] dictionary. If so, the XUID is dropped,
and it not used as a cache key.

EXPECTED DIFFERENCES :

Normal :

093-01.ps.</pre>
<p>[src/gsfont.c 1.37, src/gsfont.h 1.12, src/zbfont.c 1.30]</p>
</blockquote>

<p><strong><a name="2005-07-26_2349"></a>
2005-07-26 23:49 Ralph Giles</strong></p>
<blockquote>
<pre>
Improve wording of the new p2ps2 script documentation.</pre>
<p>[doc/Ps2ps2.htm 1.2]</p>
</blockquote>

<p><strong><a name="2005-07-26_2050"></a>
2005-07-26 20:50 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Delay the assignation of object id to a color space until its creation is completed.

DETAILS :

Bug 687712 "ps2pdf silently generates bad PDF in 1.2 mode".

The old code reserved an objewct id for a color space when starting its creation.
If the creation fails (for example, with CompatibilityLevel &lt;= 1.2),
the related graphics is being converted into low level objects.
In that case the reserved object id doesn't appear in the output PDF,
causing an incorrect xerf.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfc.c 1.53]</p>
</blockquote>

<p><strong><a name="2005-07-26_0059"></a>
2005-07-26 00:59 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688052 Segv with test file for 687980 and the psdcmyk device.

DETAILS:

The 'put_param' routines for the routines which implement the handling of
the SeparationOrder, SeparationColorNames, and the MaxSeparation device
parameterswere always resetting the number of device components
(num_components in the color_info structure) when they were called.  This
can cause problems with the PDF 1.4 transparency since the transparency
processing can have its own process color model.  The fix involves only
changing the number of device components when one of the three device
parameters changes value.  This should only occur at the start of a page.
The PDF 1.4 process color model is only active during the processing of
a page.</pre>
<p>[src/gdevdevn.c 1.25, src/gdevpsd.c 1.21]</p>
</blockquote>

<p><strong><a name="2005-07-21_1950"></a>
2005-07-21 19:50 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use memmove() instead of memcpy() in Ins_MINDEX() because of the overlapping
memory blocks.
Fix bug 688224.</pre>
<p>[src/ttinterp.c 1.17]</p>
</blockquote>

<p><strong><a name="2005-07-21_1932"></a>
2005-07-21 19:32 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix off-by-one error in Decode array testing.
Fix bug 688223.</pre>
<p>[src/gxipixel.c 1.12]</p>
</blockquote>

<p><strong><a name="2005-07-21_1819"></a>
2005-07-21 18:19 Dan Coby</strong></p>
<blockquote>
<pre>

Fix for 688218 gdevpng.c(148) : A harmful warning from MSVC8.  The warning
message was due to a math overflow for the dither_grays and dither_colors
fields in the device color_info structure.  This occured due to the
addition of the png48 device which has 16 bit components.  The fix is to
increase the field size to a uint (typically 32 bits).</pre>
<p>[src/gxdevcli.h 1.40]</p>
</blockquote>

<p><strong><a name="2005-07-21_1813"></a>
2005-07-21 18:13 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite, ps2write) : Merge equal function resources.

DETAILS :

Bug 688195  "pdfwrite,ps2write : Redundant function objects".

This patch applies the usual merging method for function objects :
a delayed assignation of object id, search for equal object,
replace redundant one with an old equal one.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfu.c 1.81]</p>
</blockquote>

<p><strong><a name="2005-07-21_1604"></a>
2005-07-21 16:04 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Some of Widths elements could be missed.

DETAILS :

This is the fourth partial fix for the bug 688169 "ps2write : text dissappears".
It relates to Comment #6 of the bug 688169.

Some elements of Widths array could be missing if the encoding defines
several codes for samne character, and only the first code is used.
The old code scanned Encoding and put a Metrics dictionary element
for each element of Encoding. However Encoding could contain dummy
elements witrh the value 0, and the value 0 replaced an useful value defined earlier.

This fix assumes that ps2write renames glyphs if they have several occurances in Encoding,
and more than one occurance is used. Under this assumption,
if only one occurance is used, other accurances will get the value 0
(using exactly 0 in this case is another ps2write feature being assumed here).
So is Metrics already has a non-zero value, it shouldn't be replaced with zero,
and the logic is pretty simple : don't replace non-zero values.

This patch causes ps2write progressions :

687572.pdf
86554321.pdf
Jahr2000.pdf
rf1025.pdf

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.81]</p>
</blockquote>

<p><strong><a name="2005-07-21_0953"></a>
2005-07-21 09:53 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Move character raster buffers into the memory space of gx_show_enum.

DETAILS :

Bug 688222 "Another crash in igc_reloc_struct_ptr".

This is a partial change for the problem.
It fixes exactly the case that happened in the bug report.

However there is another harmful case, which we want to fix separately
due to it requires a big change. The case is
running 'show' in the global allocation mode while
the current font is local. We open a separate bug 688227 for it.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxchar.c 1.47]</p>
</blockquote>

<p><strong><a name="2005-07-20_1814"></a>
2005-07-20 18:14 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite, ps2write) : Synthesized bitmap fonts had zero character width in charprocs.

DETAILS :

1. The Wx operand of d1 always got the zero value
when a font is being converted into a bitmap font.

2. The Width array was wrongly computed
when a font is being converted into a bitmap font.

3. Computing Metrics, Widths values to be scaled with the FontMatrix,
to account an unusuial FontMatrix of Type 1 fonts,
which were created by 3d parties from TrueTypes.

4. Metrics was not set to a font due to a bad stack balance.

Bug 688172 "ps2write : CID text displacement".

This patch gives a numerous progressions when ps2write runs with a small resolution -r72.
In same time with this patch few files regress when ps2write runs with a small resolution -r72 :

687572.pdf
86554321.pdf
Jahr2000.pdf

EXPECTED DIFFERENCES :

pdfwrite 72dpi :

"020-01.ps"
"093-01.ps"
"Bug687845.ps"

pdfwrite 300dpi :

"020-01.ps"
"093-01.ps"
"405-01.ps"
"450-01.ps"
"Bug687845.ps"</pre>
<p>[lib/opdfread.ps 1.80, src/gdevpdfb.c 1.32, src/gdevpdtt.c 1.103]</p>
</blockquote>

<p><strong><a name="2005-07-20_1446"></a>
2005-07-20 14:46 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix undefined in -get- caused by previous (1.38) patch that ignored zero
length tables in TT font. Previous fix for 687457. Bug 688220 for customer
580.

DETAILS:

Some tables, such as 'glyf' are required by the ttf code even if they are
zero length. The 687457 bug omitted these tables since their position is
arbitrary, but they could cause false 'overlap' conditions, potentially
truncating a non-zero length table to zero length. The simplest solution
is to place all zero length tables at offset 0 (the offset is arbitrary
for zero length tables).

EXPECTED DIFFERENCES:

Regression testing showed no problems. The file for 687457 is now added
to the regression suite as will a test file with a zero length 'glyf'.</pre>
<p>[lib/gs_ttf.ps 1.45]</p>
</blockquote>

<p><strong><a name="2005-07-20_0820"></a>
2005-07-20 08:20 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Initial commit of the ps2ps2 documentation.

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Ps2ps2.htm 1.1, doc/Readme.htm 1.68]</p>
</blockquote>

<p><strong><a name="2005-07-20_0722"></a>
2005-07-20 07:22 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : The default value for MaxInlineImageSize was incorrect.

DETAILS :

It was too small for real images.
May improve the printer prerformance.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.115, src/gdevpdfb.h 1.2]</p>
</blockquote>

<p><strong><a name="2005-07-20_0617"></a>
2005-07-20 06:17 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Bring the script to the traditional form (continued).

DETAILS :

Rename the distiller settings PSPrinter with a more meanful name PSL2Printer.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/gs_pdfwr.ps 1.45]</p>
</blockquote>

<p><strong><a name="2005-07-20_0610"></a>
2005-07-20 06:10 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Bring the script to the traditional form.

DETAILS :

Bug 688190 "ps2write : improve the ps2ps2 script".

Since ps2write actually is a clone of pdfwrite,
we define special distiller settings named PSPrinter.
After this device parameters are gone from the script,
and the ps2ps2 script looks similarly to ps2ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Develop.htm 1.149, doc/Psfiles.htm 1.64, doc/Use.htm 1.133]</p>
</blockquote>

<p><strong><a name="2005-07-20_0600"></a>
2005-07-20 06:00 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Bring the script to the traditional form.

DETAILS :

Bug 688190 "ps2write : improve the ps2ps2 script".

Since ps2write actually is a clone of pdfwrite,
we define special distiller settings named PSPrinter.
After this device parameters are gone from the script,
and the ps2ps2 script looks similarly to ps2ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/gs_pdfwr.ps 1.44, lib/ps2ps2 1.1, lib/ps2ps2.bat 1.2, lib/ps2ps2.cmd 1.1]</p>
</blockquote>

<p><strong><a name="2005-07-19_1931"></a>
2005-07-19 19:31 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite, ps2write) : Tj must account the Widths rounding when converting to a bitmap font.

DETAILS :

Bug 688170 "ps2write : text displacement".
An imprecise text width happened when distillation uses a low resolution
to convert a font into a bitmap font. Important for CompatibilityLevel &lt;= 1.2 .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdti.c 1.47]</p>
</blockquote>

<p><strong><a name="2005-07-18_0551"></a>
2005-07-18 05:51 Ray Johnston</strong></p>
<blockquote>
<pre>
Skip CFF tables at 0 or negative offset because some CFF fonts put empty tables
at offset 0. Bug 688160. Thanks to Alex Cherepanov for this patch.</pre>
<p>[lib/gs_cff.ps 1.19]</p>
</blockquote>

<p><strong><a name="2005-07-18_0533"></a>
2005-07-18 05:33 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix handling of Some Type1C (CFF) font subsets where the tables may not
be completely contiguous. Seen with PDFs created by pdflib. Bug 688216
and 688040 for customer 562.

DETAILS:

The example subset CFF had the "Private" data about 30,000 bytes after
the end of the previous (CharStrings) data. While we try to process the
CFF file sequentially, there is no reason we cannot skip bytes. If we
encounter a CFF where positioning (backwards) is required, we will have
to further change the code to set us a "ResuableStreamDecode" file so
we can replace the "pos sub nextstring pop" with "f fileposition" which
will work forwards or backwards.

A CFF that requires this will get an error when loading the font from the
-string- operator (rangecheck). Since we have not seen one yet, we will
wait until this surfaces.</pre>
<p>[lib/gs_cff.ps 1.18]</p>
</blockquote>

<p><strong><a name="2005-07-15_0559"></a>
2005-07-15 05:59 Ray Johnston</strong></p>
<blockquote>
<pre>
Remove the arbitrary limit of 256 max_colors from the dci_ macros. This is
related to bug 688204 and allows shadings (gradients) to have more than
256 steps for high precision color devices.

DETAILS:

Note that the default smoothness is set to 0.02 in lib/gs_ll3.ps and unless
this is set smaller with the setsmoothness operator (or the PDF 'SM' op),
the max_error used in src/gxshade.c may still be too large to see REALLY
smooth gradients. The next part of the changes is to modify the setting
of max_error when the device has &gt; 256 levels.</pre>
<p>[src/gxdevcli.h 1.39]</p>
</blockquote>

<p><strong><a name="2005-07-15_0523"></a>
2005-07-15 05:23 Ralph Giles</strong></p>
<blockquote>
<pre>
Add a 48 bit RGB PNG raster device for testing deep color output code
paths. The new device is called 'png48'. Note that this is a different
naming scheme from the the other PNG devices, which use number of colors
instead of the log of the number of colors to distinguish between the
different output formats. Related to bug 688204.</pre>
<p>[src/configure.ac 1.51, src/devs.mak 1.134, src/gdevpng.c 1.12]</p>
</blockquote>

<p><strong><a name="2005-07-15_0336"></a>
2005-07-15 03:36 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688209 Incorrect equiv color for 'Dark Blue' in test file.

DETAILS:

The problem was caused by an error in evaluting a sampled function with
32 bits per component.  The maximum value for a sample was calculated
as being (1 &lt;&lt; bps) - 1.  This calculation has a problem on x86 CPUs
when bps is 32.  No shifting is done and the result ends up being 0
instead of 0xffffffff.

The fix involves checking for bps being equal to (or greater than)
the size of an uint.  If so then the max_uint value is used instead.</pre>
<p>[src/gsfunc0.c 1.27]</p>
</blockquote>

<p><strong><a name="2005-07-14_1956"></a>
2005-07-14 19:56 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Don't use Length value in the stream dictionary when it's incorrect. All
filtered streams are self-terminated. Unfiltered streams are most often occur
as contents streams. Their processing is terminated by execution of endstream
operator. Unfiltered image streams will only read the data required by
the image.
Fix bug 688182.</pre>
<p>[lib/pdf_base.ps 1.46]</p>
</blockquote>

<p><strong><a name="2005-07-14_1610"></a>
2005-07-14 16:10 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Don't replace Encoding for standard fonts.

DETAILS :

This is the third partial fix for the bug 688169 "ps2write : text dissappears".

1. Regarding 093-01.ps :

Before a font is loaded from a font file object,
need to check whether there exists a standard font with same name and
save it for possible use in future from other font resource objects.

2. Regarding 336-01.ps :

The implementation of the operator ' was incomplete.

This patch causes ps2write progressions:

"093-01.ps"
"336-01.ps"
"adesso7.pdf"
"ADOBE1-4.pdf"
"brochurep1.pdf"
"ca.pdf"
"ccc.pdf"
"Jahr2000.pdf"
"js.pdf"
"prfmm.pdf"
"rf1025.pdf"

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.79]</p>
</blockquote>

<p><strong><a name="2005-07-14_1514"></a>
2005-07-14 15:14 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Increade the limit on the .libfile operand length from 200 to the full
gp_file_name_sizeof . The OS also limits the length of the file name,
for instance, on WinNT, NTFS to 252 characters.
Fix bug 688198.</pre>
<p>[src/zfile.c 1.42]</p>
</blockquote>

<p><strong><a name="2005-07-14_1320"></a>
2005-07-14 13:20 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Don't replace Encoding for standard fonts.

DETAILS :

This is the second partial fix for the bug 688169 "ps2write : text dissappears",
related to the file aaon97_p7.pdf .

When a standard font is being loaded, the old code replaced Encoding with StandardEncoding.
However the Dingbats font has a different Encoding.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.78]</p>
</blockquote>

<p><strong><a name="2005-07-14_1027"></a>
2005-07-14 10:27 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Embed standard fonts, which use extention glyphs due to encoding conflicts.

DETAILS :

This is a partial fix for the bug 688169 "ps2write : text dissappears",
which is related to the problem with ADOBE1-4.pdf .

When Widths array defines several widths for same glyph,
the PDF interpreter duplicates glyphs inserting extended glyph names.
However if the font name is standard, the font was not embedded and the
extended glyph names were missed. This patch forces embedding
the fonts what have extended glyph names.

This problem doesn't happen with pdfwrite, because it collapses
extended glyph names back to original ones.

Note that there exists a case, in which a font has extended glyphs but
they are not used in the document. In this case the font embedding is not necesary,
but ps2write does embed it. This happens because the current architecture
does not allow to detect such case, because the decision about a font embedding
is being made before a text is processed. Dalaying it until the end of the text would
need to delay object ID assignation for the font descriptor and for the font file.
This change would be too deep, so we don't do it now.

If an user strongly needs to minimise the output when
a standard font uses extended glyph name,
we recommend to perform a 2-pass distillation :
the first pass computes exact font subsets,
and the second pass won't receive unused glyphs.
We believe that such need is pretty rare.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/devs.mak 1.133, src/gdevpdtf.c 1.45]</p>
</blockquote>

<p><strong><a name="2005-07-13_2121"></a>
2005-07-13 21:21 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688206 rangecheck in --setcolorspace--.  Actually there is a
problem with the PDF test files.  The 'fix' is to make Ghostscript more
tolerant of errors.

DETAILS:

The problem is an error in the file.  The file contains an Indexed color space:
 [ /Indexed /DeviceGray 255 (\000%Mr\r2[\300\320\303\000\b\f\021\026\034"\)UMB9
\201%Ns\r2[\016\035,:\036-&lt;KYh=L[ix\207\\kz\210\227\246{\212\231\247\266\305
\267\306\325\005\024"1@O&#36;3AP_mCQ`o~\214bp\177\216\234\253\200\217\236\255\273
\312\256\275\314\332\351\n\031\(6ET\)8GUdsHWft\203gv\204\223\242\261\206\225
\262\301\317\245\263\321\340_Ul[&lt;K\020=-iYM\\Lz\210x{\212\231\247\266\213\232
\243\267\306\325\252\271\251\326\345\364\025\0363AP/CQ`o~Sbk\177\216\227r\200
\217\236\255\273\221\237\256\275\314\332\257\276\310\334\352\371&#36;8G4...) ]

The lookup table for this color space should contain 256 bytes.  Instead it
contains 768 bytes (3 times the needed number of bytes).

The PDF 1.6 specification on page 233 (section 4.55) says:

  The color table data must be m x (hival + 1) bytes long, where m is the
  number of color components in the base color space.

Thus having 768 bytes is an actual error for this case.

Apparently Acrobat 6.0 ignores this error since it does not complain about the
file.

Since Acrobat accepts these files, I have modified the length test to
accept any look up table which has the needed number of data bytes.

The files were produced by Amyuni PDF Converter (Version 2.08b Pro).</pre>
<p>[src/zcsindex.c 1.8]</p>
</blockquote>

<p><strong><a name="2005-07-13_1818"></a>
2005-07-13 18:18 Ray Johnston</strong></p>
<blockquote>
<pre>
Font scanning would miss OpenType fonts (OTTO header).</pre>
<p>[lib/gs_ttf.ps 1.44]</p>
</blockquote>

<p><strong><a name="2005-07-13_1721"></a>
2005-07-13 17:21 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT grid fitting) : A missed glyph needs cached_fm_pair_s.

DETAILS :

Bug 688164 "segfault after warning for missing required cmap in embedded TT font; pdf".

The embedded TT font missed a glyph, so that a "notdef" (glyph_index = 0)
to be used instead. However when performing a grid fitting,
an cached_fm_pair_s is used to pass an access to the font.
The problem happens due to "notdef" forced no glyph caching
and therefore cached_fm_pair_s was not created.

The fix moves the check for "notdef" for the point after creating an cached_fm_pair_s.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxchar.c 1.46]</p>
</blockquote>

<p><strong><a name="2005-07-13_1037"></a>
2005-07-13 10:37 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : EOT marker was missed.

DETAILS :

Bug 688186 "ps2write: EOT is missing".
The old code writes it after the file is closed.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.114]</p>
</blockquote>

<p><strong><a name="2005-07-13_0039"></a>
2005-07-13 00:39 Ralph Giles</strong></p>
<blockquote>
<pre>
Cast color components to type gx_color_index before shifting when
composing a chunked index color in gx_default_rgb_map_rgb_color().
Partial fix for bug 688204.

DETAILS:

Without the explicit casts, color components were only promoted to
the default int type before the shifts were applied. On 32 bit machines
this means that 16 bpc output generated nonsense, shifting the high
channel entirely out of the word, and only promoting to a 64 bit type
on assignment. With the explicit casts, the promotion to a 64 bit type
(assuming a 64 bit gx_color_index) happens first so that the shift logic
is correct for deep devices.

With this change the "24 bit RGB" default mapping works for 48 bit
color as well as for other spaces in-between. 24 bits remains special
cased; rough benchmarking showed no significant advantage to special
casing 48 bits as well.</pre>
<p>[src/gxcmap.c 1.26]</p>
</blockquote>

<p><strong><a name="2005-07-12_1754"></a>
2005-07-12 17:54 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : MSVC8 Beta 2 doesn't handle the compiler option Gi.

DETAILS :

The new distribution of the MSVC compiler claims the option Gi is depricated.
Since the nmake file uses a single value 8 of the variable MSVC_VERSION
for both Beta 1 and Beta 2, we cannot distinguish these releases,
so now we drip the option Gi fore both releases.
Beta 1 is now obsolete, so users must either upgrade for Beta 2
or live with no incremental compilation. The latter only increases the build time.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/msvccmd.mak 1.27]</p>
</blockquote>

<p><strong><a name="2005-07-11_2208"></a>
2005-07-11 22:08 Stefan Kemper</strong></p>
<blockquote>
<pre>
Fix MSVC compile error

DETAILS:

MSVC prevents dynamic structure initialization
gcc is more liberal.

Final code is simpler using a function call.</pre>
<p>[src/gdevpxut.c 1.8]</p>
</blockquote>

<p><strong><a name="2005-07-08_2206"></a>
2005-07-08 22:06 Dan Coby</strong></p>
<blockquote>
<pre>
The gdevdsp.c file was missed in the previous commit for the fix for 688192.</pre>
<p>[src/gdevdsp.c 1.34]</p>
</blockquote>

<p><strong><a name="2005-07-08_2204"></a>
2005-07-08 22:04 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688192 Resolution dependant problems with tiffsep.  Note:  The
actual problem is related to garbage collection.

DETAILS:

The names of the separations are being lost when the garbage collection
logic is attempting to relocate the names.

The fix consists of storing the names in a byte array instead of using a
gs_param_string.</pre>
<p>[src/devs.mak 1.132, src/gdevdevn.c 1.24, src/gdevdevn.h 1.11, src/gdevpsd.c 1.20, src/gdevtsep.c 1.7, src/gsequivc.c 1.6]</p>
</blockquote>

<p><strong><a name="2005-07-07_1644"></a>
2005-07-07 16:44 Stefan Kemper</strong></p>
<blockquote>
<pre>
Add support for manual feed and media source or tray selection
to pxl output devices.  This allows postscript input to use
InputAttributes dictionary selection mechanisms to choose a tray.

The pxl tray numbers in the PXL file are the PS MediaSource numbers
to "map" correctly an input attributes dictionary needs to be present
and needs to match the tray contents/numbering of the pxl printer.

postscript manual feed /ManualFeed is directly mapped to PXL this
will override any tray selection.</pre>
<p>[src/gdevlj56.c 1.7, src/gdevpx.c 1.16, src/gdevpxut.c 1.7, src/gdevpxut.h 1.6]</p>
</blockquote>

<p><strong><a name="2005-07-06_2054"></a>
2005-07-06 20:54 Stefan Kemper</strong></p>
<blockquote>
<pre>
Bug fix for 688196.

CCITTFAX decode filter had number of rows limited to 32000.
Test file with 40000 found, limit is now 1,000,000</pre>
<p>[src/scfparam.c 1.5]</p>
</blockquote>

<p><strong><a name="2005-07-05_1756"></a>
2005-07-05 17:56 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Allow .HWMargins in the printer's userdict.

DETAILS :

Testing with HP LazerJet 1320 we found that it defines a PageSize bigger than
the real page. Allowing a method for an user to compensate that.
The method is to define .HWMargins to the printer's userdict.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.77]</p>
</blockquote>

<p><strong><a name="2005-07-04_0903"></a>
2005-07-04 09:03 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : CIEBased* images must use DecodeABC as Decode (continued).

DETAILS :

The last patch appears incomplete.
Bug 688174 ps2write: black page
CompleteImage was underimplemented.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.76]</p>
</blockquote>

<p><strong><a name="2005-06-29_2346"></a>
2005-06-29 23:46 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688144 Overprint problem wtih emitting a single separation from
tiffsep.  The overprint logic assumed that overprinting was never applied
if there is only one component in the output device.  This is true for a
DeviceGray process color model.  However it is possible for there to only
be a single output component in other process color models (like CMYK) if
the SeparationOrder device parameter is used to select a subset of the
device's colorants.  This fix removes the undesired optimization.</pre>
<p>[src/gsovrc.c 1.10]</p>
</blockquote>

<p><strong><a name="2005-06-29_2046"></a>
2005-06-29 20:46 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : CIEBased* images must use DecodeABC as Decode.

DETAILS :

Bug 688174 ps2write: black page
CompleteImage was underimplemented.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.75]</p>
</blockquote>

<p><strong><a name="2005-06-29_1821"></a>
2005-06-29 18:21 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Imagemask incorrectly synchronized color in the !HaveStrokeColor mode.

DETAILS :

Bug 688171 "ps2write : wrong frame color".
The !HaveStrokeColor mode was underimplemented.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfb.c 1.31]</p>
</blockquote>

<p><strong><a name="2005-06-29_1421"></a>
2005-06-29 14:21 Ralph Giles</strong></p>
<blockquote>
<pre>
Remove a duplicate file in the installation target list.</pre>
<p>[src/unixinst.mak 1.41]</p>
</blockquote>

<p><strong><a name="2005-06-29_1412"></a>
2005-06-29 14:12 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : A dangling pointer from pdf_image_enum.

DETAILS :

Bug 688156 "Reference to free object : pdfwrite -r72 -Z?&#36;@ 035-07.ps".

After pdf_make_alt_stream pdf_image_enum::writer.binary[1].target left a pointer to
a cos_object_t instance, which is later freed by pdf_choose_comprtession.
Thus it caused a dangling pointer. It was not harmful unless running with -Z? .

EXPECTED DIFFERENCES :

pdfwrite crashed with -Z?&#36;@ :
035-07.ps.
FIG3.eps</pre>
<p>[src/gdevpdfj.c 1.46]</p>
</blockquote>

<p><strong><a name="2005-06-29_1054"></a>
2005-06-29 10:54 Ralph Giles</strong></p>
<blockquote>
<pre>
Fix some additional typos in the documentation install rules. Closes bug
688158.</pre>
<p>[src/unixinst.mak 1.40]</p>
</blockquote>

<p><strong><a name="2005-06-28_2300"></a>
2005-06-28 23:00 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite, ps2write) : A recognition of Type 3 glyph variations was inaccurate.

DETAILS :

Bug 688168 pdfwrite, ps2write : incorrect barcode Bug687472.ps
Bug 687472 barcode wrongly converted to type3 font

1. The condition in pdf_find_same_charproc was not a strong equality.
   When searching in same font, the comparizon of object streams was missed
   (debugged with Bug687472.ps).

2. When creating an alternative font due to glyph wariations,
   the fonmt matrix was equal to one from the scaled font
   instead the original font, causing an imprecise coordinates.
   Replaced with the original font matrix.
   (debugged with Bug687472.ps).

3. pcp-&gt;font was not adjusted when desided to start a new font due to
   a new glyph variation obtained. Due to that some glyphs
   were replaced with wrong glyph variations
   (debugged with Bug687660a.ps, page 4, the text
   "et al. [11] Y. Nakamura et al.", the 3d occurance of 'a' was wrong
   (search for "( al)" in the old generated PDF file)).

4. Exiting from a substream, flattness was not restored
   (debugged with muur.eps).

EXPECTED DIFFERENCES :

pdfwrite :

"Bug687472.ps"
"Bug687660a.ps"
"Bug687832.pdf"
"STEUER-RollingMesh 3(Final).ai"</pre>
<p>[src/gdevpdfg.c 1.63, src/gdevpdfx.h 1.121, src/gdevpdti.c 1.46]</p>
</blockquote>

<p><strong><a name="2005-06-28_1144"></a>
2005-06-28 11:44 Ralph Giles</strong></p>
<blockquote>
<pre>
Add two new multiply-included templating files to the exclusion list for
the multiple-inclusion regression check.</pre>
<p>[toolbin/tests/check_source.py 1.12]</p>
</blockquote>

<p><strong><a name="2005-06-28_0619"></a>
2005-06-28 06:19 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687989 PDF to any format raises /invalidfont in /R21.  The test
file was created by an imposition program.

DETAILS:

The given file (the one with the four pages imposed together) has:

1.  A Page dict with form Xobjects and the /R21 font is not in the
    Resources/Font dict.
2.  The Pg3 form XObject has the /R21 font in the Resources/Font dict.
3.  /R19 is a Type3 font.  There is not a Resources entry in the dict.  This
    font uses both the /R13 ExtGState and the /R21 font.

To find the /R13 and the /R21 resources, Ghostscript is first looking in
the /R19 font.  Since it is not present (no Resources in /R19), Ghostscript
then searches the Page dict.  Once again the resources are not found and then
the InvalidFont error is generated.  (Ghostcript is silent about the missing
ExtGState /R13.)

From page 391 of the PDF REference, version 1.6 on the entries in the dict for
a Type3 font:

"Resources  dictionary (Optional but strongly recommended; PDF 1.2) A list of
the named resources, such as fonts and images, required by the glyph
descriptions in this font (see Section 3.7.2, "Resource Dictionaries"). If any
glyph descriptions refer to named resources but this dictionary is absent, the
names are looked up in the resource dictionary of the page on which the font
is used. (See implementation note 64 in Appendix H.)"

This implies that Ghostscript is following the correct path for finding the
resources /R13 and /R21.  (However one can make a case for a 'liberal'
interpretation of the spec. that implies that the form XObject resources
should also be checked.)

This fix checks the current resources when the Resources dictionary is not
present in a type 3 font.

I do not know why Acrobat 6.0 Pro does not find /R13 but does find /R21.  If
Acrobat is not checking the Resources for the Pg3 form XObject then it should
find neither.  If it is checking Pg3 Resources then both should be found.</pre>
<p>[lib/pdf_font.ps 1.77]</p>
</blockquote>

<p><strong><a name="2005-06-23_0735"></a>
2005-06-23 07:35 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : A global restore was applied at save level 1.

DETAILS :

Bug 688157 "'invalidrestore' in pkmraw -r72 -Z?&#36;@ tpc2.ps".
Bug 688161 "A dangling pointer with pkmraw -r72 -Z?&#36;@ -c false 0 startjob pop -f - &lt;113-01.ps".

The last patch appears incorrect. This one fixes that.

Bug 688157 happened because
tpc2.ps failed with 'invalidrestore' because
the global restore was applied at the level 1.
This happened because the last but one patch
appears incomplete - after that change the check for 'global'
in alloc_is_since_save become incorrect.
It assumed that mem-&gt;saved == save &amp;&amp; mem-&gt;saved-&gt;save_level == 1 implies
save-&gt;state.save_level == 0. But with the last but one patch not it doesn't.

Bug 688161 happened due to same check, because alloc_is_since_save
is also used in restore_fix_stack to fix string and file objects,
which exist on stack and which would become invalidated due
to the restore. 'zrestore' do not check such objects on estack
(restore_check_stack is called with 'false'). Such objects appear when
'startjob' is called from a command argument (and establishes
a save level 0), and later another command line argument
is executed with '.runstdin', which executes .subfiledecode
at save level 1 and keeps the filter object on estack while
.runexec works (keeping the file for .runexec2).
So running the file 113-01.ps invoked 'exitserver', which executes a 'restore',
which unwinded the file object, and caused a heap inconsistency
(because restore_check_stack is called with 'false')
due to estack keeps the unwinded file object.

This change replaces it with (as we believe) the correct and simple check :
  save-&gt;state.save_level == 0 /* Restoring to save level 0 */
which restores the consistency of restore_fix_stack to restore_check_stack.

EXPECTED DIFFERENCES :

Fixes a crash with 113-01.ps .</pre>
<p>[src/isave.c 1.14]</p>
</blockquote>

<p><strong><a name="2005-06-22_2015"></a>
2005-06-22 20:15 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : A global restore was applied at save level 1.

DETAILS :

Bug 688157 "'invalidrestore' in pkmraw -r72 -Z?&#36;@ tpc2.ps".

With the last patch memory problems gone avay,
but tpc2.ps failed with 'invalidrestore'.
We found that the global restore was applied at the level 1 -
a guess as a rudiment of code before NOOUTERSAVE is code.

When tpc2.ps issued a restore, with neither startjob nor NOOUTERSAVE
it appears at level 1 (due to gs_init.ps executes 'save')
but at that moment dstack contains some dictionaries,
created by the document. Those dictionaries cause 'invalidrestore',
because they are created after the 'save' issued by gs_init.ps .

At first time we wonderewd why this problem doesn't happen with
other documents. The answer is : they don't keep dicts
on dstack when execute the outermost 'restore'.

EXPECTED DIFFERENCES :

Fixes 'invalidrestore' in tpc2.ps .
113-01.ps crashes due to another problem, which we'll open another bug for.</pre>
<p>[src/isave.c 1.13]</p>
</blockquote>

<p><strong><a name="2005-06-22_1536"></a>
2005-06-22 15:36 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Dangling pointers due to 'restore' left an internal save level.

DETAILS :

Bug 688153  "Reference to free object : ppmraw -r72 -Z?&#36;@ Bug687489.ps"

Running :
    gs sOutputFile=t.ppm sDEVICE=ppmraw -r72 -Z?&#36;@ Bug687489.ps"
got :
    Reference to free object 0xaf9e40(100), in chunk 0x3eca48!

The reason is that a gs_show_enum instance was created in some 'save' level,
and when it is released the 'save' level appears a higher one and the
memory manager left it unreleased until a further 'restore' does that.
However that instance pointed to a gx_path instance with a bigger 'save' level.
So when the garbager was invoked, the gs_show_enum instance had a 'path' field
pointed to a structure, which was already released by a 'restore'.

Analyzing it so far, we found that 'save' and 'restore' may
leave an extra level on the 'save' stack. More precisely,
alloc_save_state sometimes creates an "invisible" 'save' level,
which appears on the 'save' stack, but it has no save id and
it doesn't add to the 'save' level counter. The problem happened
when 'restore' finds its 'save' stack element. In that case
alloc_find_save returns the second additional 'save' stack element,
rather than the first one created by 'save'. Therefore
a consecutive execution of 'save restore' could add
one element on the 'save' stack (without increasing the save_level counter)
and cause dangling pointers as explained above.

We believe that the bug lived in alloc_save_state.
Really, a comment in alloc_save_state reads :
   /* Do a second, invisible save. */
and in same time the code makes the first 'save' to be invisible,
and moves the id from the first 'save'. Thus the code does not
comply to the comment. We believe that the comment is correct,
and the code is buggy. Therefore we change the code so
that the second (internal) 'save' to be really invisible.

EXPECTED DIFFERENCES :

Fixes memory problems (June 16 regressions) with the following files :

"257-01.ps"
"Bug687396.ps"
"Bug687489.ps"
"Bug687603.ps"
"Bug687698.ps"</pre>
<p>[src/isave.c 1.12]</p>
</blockquote>

<p><strong><a name="2005-06-22_1524"></a>
2005-06-22 15:24 Ralph Giles</strong></p>
<blockquote>
<pre>
Fix typos in the the jasper makefile. Closes bug 688148.</pre>
<p>[src/jasper.mak 1.2]</p>
</blockquote>

<p><strong><a name="2005-06-22_1411"></a>
2005-06-22 14:11 Stefan Kemper</strong></p>
<blockquote>
<pre>
Added documentation note that gc doesn't collect
around a reference to a sub interval in an array.
Rather it gc's arrays as objects.</pre>
<p>[doc/Language.htm 1.93]</p>
</blockquote>

<p><strong><a name="2005-06-21_1958"></a>
2005-06-21 19:58 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Reference count for gx_clip_path::path_list was incorrect.

DETAILS :

Bug 688147 "Wrong reference count with ppmraw -Z?&#36;@ -r72 257-01.ps".

gx_cpath_assign_preserve didn't adjust the reference count.

EXPECTED DIFFERENCES :

May fix some of pkmraw, pgmraw regressions appeared on June 16.</pre>
<p>[src/gxcpath.c 1.14]</p>
</blockquote>

<p><strong><a name="2005-06-21_1650"></a>
2005-06-21 16:50 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Always place the image enumerator into local memory (continued 2).

DETAILS :

The previous patch inserted a 'const' by a mistake.
Removing it.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gsimage.c 1.15, src/gsimage.h 1.9]</p>
</blockquote>

<p><strong><a name="2005-06-21_1625"></a>
2005-06-21 16:25 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : A wrong allocator was used to release the glyph cache.

DETAILS :

Bug 688146 "heap corruption with ppmraw -r72 -Z?&#36;@ 055-01.ps".

A structure was allocated in a non-stable memory and
released to a stable memory.

EXPECTED DIFFERENCES :

May fix some of pkmraw, pgmraw regressions appeared on June 16.</pre>
<p>[src/gsgcache.c 1.4]</p>
</blockquote>

<p><strong><a name="2005-06-21_1312"></a>
2005-06-21 13:12 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Always place the image enumerator into local memory (continued).

DETAILS :

Bug 688140 "A heap corruption in imagemask".
Bug 688145 "Segmentation fault : normal 244-01.ps (pkmraw/300/noband)"

The patch
http://ghostscript.com/pipermail/gs-cvs/2005-June/005567.html
appears incomplete.
This ine fixes that.

1. gs_image_common_init must not change penum-&gt;memory since it is set by
   gs_image_enum_alloc for a compatibility with gs_image_cleanup_and_free_enum.

2. gs_image_enum_init is removed from the graphics library interface
   because after the change (1) it becomes potentially harmful.
   We noticed that the PCL interpreter never calls it directly,
   so making it be local against a potantial harm.

3. The memory argument of gs_image_common_init has been removed
   because it became unuseful.

4. We notice that gs_image_common_init initializes an instance of gs_image_enum,
   and gs_image_begin_typed initializes gx_image_enum_common_t.
   We wonder with the assymmetry of using the word "common"
   in these identifiers. It appears much confusible.
   For now leave them as they are, rather we'd like to clean them up.

EXPECTED DIFFERENCES :

Should fix pkmraw, pgmraw regressions appeared on June 16.</pre>
<p>[src/gsimage.c 1.14, src/gsimage.h 1.8]</p>
</blockquote>

<p><strong><a name="2005-06-21_0058"></a>
2005-06-21 00:58 Dan Coby</strong></p>
<blockquote>
<pre>
Partial fix for 688132 WTS crash with pdf input.  Ghostscript does not
serialize a WTS halftone.  (This is required for clist processing.)  As a
result, an error code is being returned.  The error code was not being
properly returned.  We then seg faulted due to a pointer not being set in
the error case.  This fix corrects the problem with returning the error
code.  The problem with WTS serializaton remains.</pre>
<p>[src/gdevp14.c 1.29]</p>
</blockquote>

<p><strong><a name="2005-06-20_0859"></a>
2005-06-20 08:59 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Factor out any dependence on sizeof(gx_color_index) .

DETAILS :

This change is algorithmically equivalent.
We factor out this dependence because we intend to change the
gx_color_index definition to an array of components.
In that case sizeof(gx_color_index) would give the size of a pointer
rather we need the size of the array.

Minor change : Fixed an unitialized debug-purpose variable prev_count
in 3 device drivers gdevm40.c, gdevm48.c, gdevm64.c .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevdsp.c 1.33, src/gdevm40.c 1.3, src/gdevm48.c 1.3, src/gdevm64.c 1.4, src/gdevpdfb.c 1.30, src/gdevpdfv.c 1.39, src/gdevpsd.c 1.19, src/gdevtsep.c 1.6, src/gdevxcf.c 1.10, src/gsdparam.c 1.18, src/gxcindex.h 1.7, src/gxdcolor.c 1.13, src/gxdevcli.h 1.38, src/gxiscale.c 1.9, src/gxoprect.c 1.6]</p>
</blockquote>

<p><strong><a name="2005-06-19_2110"></a>
2005-06-19 21:10 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : zchar.c needs a prototype of z1_set_cache.

DETAILS :

It fixes a cygwin/gcc warning.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/int.mak 1.135, src/zchar.c 1.17]</p>
</blockquote>

<p><strong><a name="2005-06-19_2103"></a>
2005-06-19 21:03 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite, ps2write) : Type 42 fonts got wrong Width (continued).

DETAILS :

Need a prototype for z1_glyph_info_generic since we call it in zfont42.c .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/ichar1.h 1.13, src/int.mak 1.134, src/zfont42.c 1.23]</p>
</blockquote>

<p><strong><a name="2005-06-19_2045"></a>
2005-06-19 20:45 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Remove an unreasonably big array type definition related to color index.

DETAILS :

This change is algorithmically equivalent.
An array type in gxcht.c was defined with 65536 elements
but actually used the first 32 elements only.
We believe it was an inaccurate coding.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxcht.c 1.16]</p>
</blockquote>

<p><strong><a name="2005-06-16_0653"></a>
2005-06-16 06:53 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (Ps2pdf.htm) : ConvertCMYKImagesToRGB was wrongly documented.

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Ps2pdf.htm 1.81]</p>
</blockquote>

<p><strong><a name="2005-06-15_1840"></a>
2005-06-15 18:40 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Always place the image enumerator into local memory.

DETAILS :

Bug 688140 "A heap corruption in imagemask".

The core of the change is in zimage.c :
!     /* Always place the image enumerator into local memory,
!        because pie may have local objects inherited from igs,
!        which may be local when the current allocation mode is global. */

Other changes provide a correct allocator while freing the enumerator.

Note : In gxccache.c the old code did not apply gx_image_cleanup
when exiting on error. The new code does. The new code is more smooth,
but we don't expect a significant difference in behavior.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gsimage.c 1.13, src/gsptype1.c 1.23, src/gxccache.c 1.34, src/gsimage.h 1.7, src/zimage.c 1.15]</p>
</blockquote>

<p><strong><a name="2005-06-15_0031"></a>
2005-06-15 00:31 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : A bug while computing an n-argument m-result function type 0.

DETAILS :

FunctionToProc_x0n synthesized a function which applies an extra 'roll' at the end of computation.

Minor change : Improved a debug printing.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.74]</p>
</blockquote>

<p><strong><a name="2005-06-14_1713"></a>
2005-06-14 17:13 Ralph Giles</strong></p>
<blockquote>
<pre>
Link to the relevent section of Use.htm for details about the GS_LIB env
variable. Fixes bug 688051.</pre>
<p>[doc/Install.htm 1.53]</p>
</blockquote>

<p><strong><a name="2005-06-14_1707"></a>
2005-06-14 17:07 Ralph Giles</strong></p>
<blockquote>
<pre>
Add some newer documentation files to the unix install target.
Fixes bug 688049.</pre>
<p>[src/unixinst.mak 1.39]</p>
</blockquote>

<p><strong><a name="2005-06-14_1653"></a>
2005-06-14 16:53 Ralph Giles</strong></p>
<blockquote>
<pre>
Fix a documentation typo: NeverEnbed vs NeverEmbed.</pre>
<p>[doc/Ps2pdf.htm 1.80]</p>
</blockquote>

<p><strong><a name="2005-06-14_1119"></a>
2005-06-14 11:19 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite, ps2write) : Type 42 fonts got wrong Width.

DETAILS :

Bug 688128 "pdfwrite: imprecise Width".

pdfwrite did not account Metrics, Metrics2 of Type 42 fonts.

EXPECTED DIFFERENCES :

pdfwrite 72dpi :

"01_001.pdf"
"adesso2.pdf"
"adesso7.pdf"
"adesso8.pdf"
"Altona.Page_3.2002-09-27.pdf"
"Altona_Technical_1v1_x3.pdf"
"annots.pdf"
"budget2_ai87.pdf"
"Bug687660a.ps"
"Bug687724.pdf"
"bugsample.pdf"
"Faktura.pdf"
"fonts.pdf"
"MagicEye.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 2(radial).ai"
"STEUER-RollingMesh 3(Final).ai"
"Testform.v1.0.2.pdf"

pdfwrite 300 dpi :

"01_001.pdf"
"159.pdf"
"adesso2.pdf"
"adesso7.pdf"
"adesso8.pdf"
"Altona.Page_3.2002-09-27.pdf"
"Altona_Technical_1v1_x3.pdf"
"budget2.pdf"
"budget2_ai87.pdf"
"Bug687724.pdf"
"bugsample.pdf"
"Faktura.pdf"
"fonts.pdf"
"MagicEye.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 2(radial).ai"
"STEUER-RollingMesh 3(Final).ai"
"Testform.v1.0.2.pdf"</pre>
<p>[src/zfont42.c 1.22]</p>
</blockquote>

<p><strong><a name="2005-06-13_1843"></a>
2005-06-13 18:43 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Interleaved images could miss Decode, step 4.

DETAILS :

Adding the new file gxsamplp.h to Develop.htm .

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Develop.htm 1.148]</p>
</blockquote>

<p><strong><a name="2005-06-09_1947"></a>
2005-06-09 19:47 Ray Johnston</strong></p>
<blockquote>
<pre>
Add ManualFeed to the set of keys evaluated for media source matching.
Needed to allow forcing a ManualFeed tray selection even when another
media of the right type exists in another tray.</pre>
<p>[lib/gs_setpd.ps 1.27]</p>
</blockquote>

<p><strong><a name="2005-06-09_0729"></a>
2005-06-09 07:29 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Implementinmg the ps2write device (continued 3).

DETAILS :

Removed a rudimentary code from gs_pdfwr.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/gs_pdfwr.ps 1.43]</p>
</blockquote>

<p><strong><a name="2005-06-09_0715"></a>
2005-06-09 07:15 Ralph Giles</strong></p>
<blockquote>
<pre>
Throw an error when JBIG2 decoding fails in the library
instead of segfaulting. Bug 688053.</pre>
<p>[src/sjbig2.h 1.6]</p>
</blockquote>

<p><strong><a name="2005-06-09_0715"></a>
2005-06-09 07:15 Ralph Giles</strong></p>
<blockquote>
<pre>
Throw an error when JBIG2 decoding fails in the library instead of segfaulting. Bug 688053.</pre>
<p>[src/sjbig2.c 1.7]</p>
</blockquote>

<p><strong><a name="2005-06-09_0526"></a>
2005-06-09 05:26 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Implementinmg the ps2write device (continued 2).

DETAILS :

Fixing a name in gs_pdfwr.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/gs_pdfwr.ps 1.42]</p>
</blockquote>

<p><strong><a name="2005-06-08_1438"></a>
2005-06-08 14:38 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Interleaved images could miss Decode, step 3.

DETAILS :

Fixes the bug 688127 "CMYK image ignores Decode".

1. The sample unpacking function templates are generalized
   for a case of interleaved samples with different decode maps (gxsamplp.h).

2. Generated functions for the interleaved samples
   using the templates (gxsample.c).

3. Used those function in appropriate cases (gxipixel.c).

4. repack_bit_planes was called with a wrong map
   (0-th instead i-th) (gxidata.c).

EXPECTED DIFFERENCES :

Some images are rendered with a different (correct) color.

The change appears to have no effect to the 'normal' rendering,
because our testbase doesn't include images with "/MultipleDataSources false"
and a non-trivial Decode. But such ones do appear after converting
few files with pdfwrite.

pdfwrite :

"148-01.ps"
"148-05.ps"</pre>
<p>[src/gxidata.c 1.9, src/gxipixel.c 1.11, src/gxsample.c 1.7, src/gxsample.h 1.7, src/gxsamplp.h 1.2, src/lib.mak 1.210]</p>
</blockquote>

<p><strong><a name="2005-06-08_1416"></a>
2005-06-08 14:16 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Interleaved images could miss Decode, step 2.

DETAILS :

This change is algorithmically equivalent.

This is a second preparation for fixing the bug 688127 "CMYK image ignores Decode".
It moves bodies of sample unpacking functions to a new file
gxsamplp.h and converts them into templates.
It is just a code restructurization.
We apply it separately in order to simplify the next step.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxsample.c 1.6, src/gxsamplp.h 1.1, src/lib.mak 1.209]</p>
</blockquote>

<p><strong><a name="2005-06-08_1400"></a>
2005-06-08 14:00 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Interleaved images could miss Decode, step 1.

DETAILS :

This change is algorithmically equivalent.

This is a preparation for fixing the bug 688127 "CMYK image ignores Decode".
It changes the SAMPLE_UNPACK_PROC function prototype to provide
an access to a vector of maps in sample decoding functions.
The new argument num_components_per_plane passes the length of the vector.
The argument "const sample_lookup_t * ptab" is replaced with
"const sample_map *smap" to pass the vector.

With this patch only the 0th component of the passed vector is being used
in order to provide the equivalense to the old code.
Dropping this feature will be a next step.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxi12bit.c 1.7, src/gxi16bit.c 1.2, src/gxidata.c 1.8, src/gximage.h 1.8, src/gxsample.c 1.5, src/gxsample.h 1.6, src/lib.mak 1.208]</p>
</blockquote>

<p><strong><a name="2005-06-08_0656"></a>
2005-06-08 06:56 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Implementinmg the ps2write device (continued).

DETAILS :

1. Do not copy procsets when pdfwrite is invoked in the ForOPDFRead mode
   with no OPDFReadProcsetPath specified (gdevpdfu.c).
   This is done to simplify debugging with checking the PDF
   generated in the ForOPDFRead mode with a reference PDF viewer.

2. Fixed a Cygwin/gcc warning in gdevpdfu.c .

3. Provided a customization of the procset to be written with ps2write
   using -sOPDFReadProcsetPath=string .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/gs_pdfwr.ps 1.41, src/gdevpdfu.c 1.80]</p>
</blockquote>

<p><strong><a name="2005-06-08_0642"></a>
2005-06-08 06:42 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688116 DeviceN spot colours are corrupt in display device.

DETAILS:

The overprint device is one of the few devices that uses the GB_RETURN_COPY
option to the get_bits procedures without also using the GB_RETURN_POINTER
option.  Thus the overprint device is bringing up problems in this option
combination.  The fix for 687935 "rangecheck in stroke while overprinting
on the display device" brought this problem to the surface.

The problem was that an incorrect buffer pointer was being used for the
source for the data to be copied.</pre>
<p>[src/gdevdgbr.c 1.13]</p>
</blockquote>

<p><strong><a name="2005-06-07_1924"></a>
2005-06-07 19:24 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for the BeginPage and EndPage procedures used for N-up processing.

DETAILS:

The BeginPage called the previous BeginPage (stored in .BP) at the wrong
time, so that rotation/translation of individual pages would not work
correctly.

The EndPage incremented the .Pn value even on 'device deactivation' calls
(mode == 2) so the page count was off if the input PS did 'setpagedevice'.

This probably is not widely used since it was broken. It's a little better
now, but still needs improvement (IMHO) such as setting a 'clip' before
the indivual pages. Try running two examples/tiger.eps to see why.</pre>
<p>[lib/gsnup.ps 1.5]</p>
</blockquote>

<p><strong><a name="2005-06-07_1833"></a>
2005-06-07 18:33 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Implementinmg the ps2write device.

DETAILS :

1. The ps2write device is a clone of the pdfwrite device.
   We define a new file gdevpdfb.h and move the device static data to there
   as a device template (gdevpdf.c, gdevpdfb.h).

2. pdf_open_document now writes out the copy opdfread.ps and few encodings
   (gdevpdfu.c).

3. Propagated a return code from pdf_open_document.

4. A new device parameter OPDFReadProcsetPath handles a list of
   files to be copied in the step (2) (gdevpdfx.h, gdevpdf.c, gdevpdfu.c, gdevpdfp.c).

5. pdf_close writes out the 0x04 character when working in the ForOPDFRead mode
   and OPDFReadProcsetPath is set.

6. A number of makefiles are changed to include the ps2write device.

7. In lib\gs_pdfwr.ps added the handling of distiller parameters with ps2write device.

8. In lib\gs_pdfwr.ps added an automatic setting of the OPDFReadProcsetPath
   device parameter for ps2write.

9. Added a new script ps2ps2.bat, which invokes Ghostscript with the ps2write devices.
   The old script ps2write.bat still invokes the Ghostscript with the pdfwrite device
   in the ForOPDFREad mode. It helps to debug ps2write with generating a PDF file
   in the ForOPDFRead mode.

10. In the documentation added references to the new files lib/ps2ps2.bat, src/gdevpdfb.h .
    (Develop.htm, Psfiles.htm).

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/gs_pdfwr.ps 1.40, lib/ps2ps2.bat 1.1, src/bcwin32.mak 1.37, src/devs.mak 1.131, src/gdevpdf.c 1.113, src/gdevpdfb.h 1.1, src/gdevpdfp.c 1.49, src/gdevpdfu.c 1.79, src/gdevpdfx.h 1.120, doc/Develop.htm 1.147, doc/Psfiles.htm 1.63, src/macos-mcp.mak 1.34, src/macosx.mak 1.27, src/msvc32.mak 1.73, src/openvms.mak 1.40, src/os2.mak 1.46, src/unix-gcc.mak 1.49, src/unixansi.mak 1.40, src/watcw32.mak 1.34]</p>
</blockquote>

<p><strong><a name="2005-06-07_1641"></a>
2005-06-07 16:41 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : The memory descriptor of gx_device_pdf missed some strings.

DETAILS :

The bug was introduced when implementing the PDF encryption.

Minor change : the string data change the type from gs_const_string to gs_string
to comply with memory management macros.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.112, src/gdevpdfx.h 1.119]</p>
</blockquote>

<p><strong><a name="2005-06-06_1906"></a>
2005-06-06 19:06 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Handle TT cmap 00030000.

DETAILS :

Not sure why Ghostscript writes it since old wersions.
A comment in lib/ttf_cmap reads :

	% Try another cmap format 3,0 -- Adobe doesn't mention it, but does
	% use it apparently (empirically determined).

For now we do same in opdfread.
Debugged with comparefiles\type42_glyph_index.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.73]</p>
</blockquote>

<p><strong><a name="2005-06-06_1532"></a>
2005-06-06 15:32 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : A named resource maintenance.

DETAILS :

Since named resources (such as psdfmarkBP) may be used on any page,
they conflich with the viewer resource management discipline,
which drops resources per page. This patch implements an exception
for that discipline.

1. (opdfread.ps) At page end don't drop resources marked with /.Global .

2. (opdfread.ps) Handlinging Form XObject.

3. Provide the /.Global mark for those resources,
   which are used in a named resource. (dgevpdfj.c, gdevpdfm.c, gdevpdtw.c).

4. The flag pdf_resource_t::global marks resources,
   which are used while accumulating a named resource object stream,
   to provide (3) (gdevpdti.c, gdevpdfx.h).

5. gx_device_pdf::accumulating_a_global_object is added to designate the
   state for (4). It is saved and restored while enterin or exiting a substream
   (gdevpdfx.h, gdevpdfm.c, gdevpdti.c).

6. Removed 'const' from some function pritotypes to allow
   pdf_add_resource to set pdf_resource_t::global (gdevpdfi.c, gdevpdfo.c, gdevpdfx.h).

7. Minor change : improved a condition for writing the /.CleanResources flag (gdevpdf.c).

8. Removed a confusing comment in pdfmark_PS (gdevpdfm.c).

Debugged with pdfmarkPS.ps, Bug687350.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.72, src/gdevpdf.c 1.111, src/gdevpdfi.c 1.71, src/gdevpdfj.c 1.45, src/gdevpdfm.c 1.48, src/gdevpdfo.c 1.33, src/gdevpdfu.c 1.78, src/gdevpdfx.h 1.118, src/gdevpdti.c 1.45, src/gdevpdtw.c 1.44]</p>
</blockquote>

<p><strong><a name="2005-06-04_1521"></a>
2005-06-04 15:21 Dan Coby</strong></p>
<blockquote>
<pre>
Removed extra &amp;&amp; and space from last commit (fix for 687973).</pre>
<p>[src/scfd.c 1.8]</p>
</blockquote>

<p><strong><a name="2005-06-03_2003"></a>
2005-06-03 20:03 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix to allow CCITT data without EOFB when EndOfBlock is true (the default)
to return normal end-of-file (EOFC) status instead of ioerror (ERRC) as
long as the row count given by Rows is satisfied. Bug 687973.

DETAILS:

This bug was reported by a potential customer. The fix is minimal and
returns EOFC instead of ERRC if the count given by Rows has been read.
This seems to be the closest to what is implied by the Adobe description
about EndOfBlock in that the filter WILL continue to process data past
the Rows value if EndOfBlock is true (the default) as long as no error
is seen. This means that PostScript programs that depend on this action to
consume extra data will still operate correctly.

Expected Differences:

None (I ran all of the comparefiles).</pre>
<p>[src/scfd.c 1.7, src/scfx.h 1.6]</p>
</blockquote>

<p><strong><a name="2005-05-31_2042"></a>
2005-05-31 20:42 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Fixed problems with Separation color spaces.

DETAILS :

Allocation mode was incorrect at several points.

Debugged with comparefiles\Altona_Technical_1v1_x3.pdf .

Minor change : Improved a bebug printing.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.71]</p>
</blockquote>

<p><strong><a name="2005-05-31_1925"></a>
2005-05-31 19:25 Stefan Kemper</strong></p>
<blockquote>
<pre>
Update a few of the paper sizes used in reading/writing PXL.
Fixes bug 688118.</pre>
<p>[src/gdevpxen.h 1.7]</p>
</blockquote>

<p><strong><a name="2005-05-31_1305"></a>
2005-05-31 13:05 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : TT interpreter had problems on 64 bit platforms.

DETAILS :

It compiled with wrong integer data sizes.
Patch from Hin-Tak Leung .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/ttfoutl.h 1.15, src/tttype.h 1.3, src/tttypes.h 1.2]</p>
</blockquote>

<p><strong><a name="2005-05-31_1104"></a>
2005-05-31 11:04 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Implementing the SetPageSize mode (continued).

DETAILS :

With the recent patch opdfread sets a graphic state,
which was saved before setting a page size.
As a consequence the page was erased
when the initial graphic state is set.
This patch recreates PDFR_InitialGS when setpagedevice is invoked to change a page size.

Debugged with comparefiles\012-09.ps .

Minor change : Improved a bebug printing.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.70]</p>
</blockquote>

<p><strong><a name="2005-05-31_1056"></a>
2005-05-31 10:56 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : A failed pattern color could cause a crash in vector devices.

DETAILS :

When a pattern color was set and was not used,
it was not remapped and causaed a crash in gx_dc_pattern_save_dc.
Detected occasionally when running an incorrect PS file.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gsptype1.c 1.22, src/gxhldevc.c 1.4]</p>
</blockquote>

<p><strong><a name="2005-05-30_2100"></a>
2005-05-30 21:00 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Implementing the SetPageSize mode.

DETAILS :

1. SetPageSize mode enables changing a page size in the
   target printer. This mode is implemented mainly to simplify testing
   with Ghostscript|ppmraw. We need same page size of 'normal' and
   'ps2write' rasters to simplify the automated comparizon.

2. (A minor change) Apply immediate binding to FitPages, RotatePages.

3. Allow more parameterization in ps2write.bat .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.69, lib/ps2write.bat 1.16]</p>
</blockquote>

<p><strong><a name="2005-05-30_1641"></a>
2005-05-30 16:41 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Implementing the font type MMType1.

DETAILS :

1. MMType1 to be handled as Type 1 due to the PDF format specifics.
2. Minor change : A comment for 'TrueType' was not good.
3. An implementation for 'sh' is saved for future use,
   rather it was coded in ps2write by an error
   (never usewd with ps2write, will be with ps3write).

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.68]</p>
</blockquote>

<p><strong><a name="2005-05-29_1929"></a>
2005-05-29 19:29 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite, ps2write) : Skip empty images when converting a shading into a bitmap.

DETAILS :

When converting a shading to a bitmap, a zero size image
could be written due to a typoe in gdev_pdf_fill_path.

Debugged with -r720 "Clarke Tate Manns Chinese-.ai" .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfd.c 1.64]</p>
</blockquote>

<p><strong><a name="2005-05-27_0543"></a>
2005-05-27 05:43 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688113 null ptr crash in gdevp14.c.  With the -rXXXxYYY switch
specified and high resolution PDF 1.4 transparency files, GS would crash.

DETAILS:

The logic for deteriming band sizes was being bypassed if the -rXXXxYYY
switch was specified on the command line.

Specifying resolution on the command line was forcing the calculation of
band size.  This occured before the determination that PDF 1.4 transparency
was being made.  The band size was not being recalculated when the
determination was being done.  The fix consists of including the
'page_uses_transparency' as part of the logic for determining when the
band size is recalculated.</pre>
<p>[src/gdevijs.c 1.12, src/gdevprn.c 1.20, src/gdevprn.h 1.15]</p>
</blockquote>

<p><strong><a name="2005-05-26_1722"></a>
2005-05-26 17:22 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : 'strokepath' could generate wrongly oriented contours (continued 2)

DETAILS :

Bug 688114 "Worse frame rasterizing a distilled Bug687546.ps".

The main change is gxstroke.c ln 853 : the line width rounding
depended on the line direction. Rather the problem is old,
before the patch http://ghostscript.com/pipermail/gs-cvs/2005-May/005519.html
it was not so important because vertical and horizontal lines always had
a positive direction. After the mentioned patch, that it not so.
Thus this patch completes the mentioned patch.

Other (minor) changes inprove visual trace instructions for round caps.

EXPECTED DIFFERENCES :

Normal 72 dpi :

"110-01.ps"
"169-05.ps"
"169-09.ps"
"222-05.ps"
"260-01.ps"
"289-01.ps"
"297-01.ps"
"298-01.ps"
"298-05.ps"
"298-09.ps"
"321-01.ps"
"321-05.ps"
"adesso8.pdf"

normal 300dpi :

pdfwrite 72dpi :

"012-13.ps"
"013-13.ps"
"014-05.ps"
"014-13.ps"
"015-05.ps"
"169-05.ps"
"169-09.ps"
"222-05.ps"
"260-01.ps"
"297-01.ps"
"316-07.ps"
"adesso8.pdf"
fail ppmraw/hdr "Bug687846.ps"
"Bug687846.ps"
fail ppmraw/cur "Bug687894.ps"
fail pdfwrite/hdr "Bug687894.ps"
fail ppmraw/hdr "Bug687894.ps"
"Bug687894.ps"
"file.pdf"

pdfwrite 300dpi :
"012-13.ps"
"013-13.ps"
"015-05.ps"
"027-09.ps"
"169-05.ps"
"222-05.ps"
"298-05.ps"
"307-01.ps"
"320-01.ps"
"ai2.pdf"</pre>
<p>[src/gxpath.c 1.11, src/gxstroke.c 1.16, src/lib.mak 1.207]</p>
</blockquote>

<p><strong><a name="2005-05-26_0735"></a>
2005-05-26 07:35 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : 'strokepath' could generate wrongly oriented contours (continued)

DETAILS :

The patch
http://ghostscript.com/pipermail/gs-cvs/2005-May/005519.html
brake a debug check.
Bug 688115 "Many new error/warning messages from gxstroke.c".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxstroke.c 1.15]</p>
</blockquote>

<p><strong><a name="2005-05-25_2158"></a>
2005-05-25 21:58 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix VM space for userparams. Problem and patch courtesy of Paul Vojta.
Bug 688107.

DETAILS:

Also thanks to Alex Cherepanov for a reporducible test case. The original
problem file 'epstest.eps' did not actually show a problem. I tested this
against the comparefiles to validate that there were no unexpected changes,
but generally it was an obvious problem that an array might be created
in a VM space that was not the same local/gloabl as the strings it contained.</pre>
<p>[lib/gs_lev2.ps 1.37]</p>
</blockquote>

<p><strong><a name="2005-05-25_1557"></a>
2005-05-25 15:57 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite, ps2write) : Wrong shading coordinates when converting to PDF 1.2 .

DETAILS :

1. Do not write "W n" when cvd-&gt;has_background == true,
  because we do not write a clipping path in this case.

2. When a shading is being converted into a bitmap with a downsampling,
   coordinate formulas in gdev_pdf_fill_path were wrong.
   The new logic is :

   sx,sy := the bitmap offset;
   Scale down the color and the CTM;
   Scale down the path to be filled;
   The pdf_lcvd_t instance performs a shift of the shading coverage path with
        path_offset := {sx,sy};
   A sacale up and shift back matrix is written into PDF as a 'cm' argument.
   {m.tx,m.ty} is same as the bitmap offset {sx, sy};

3. gx_dc_pattern2_has_background must account whether the shading
   is instantiated with a shfill. In this case Background is being ignored.

4. In R_tensor_annulus, the assignation of curve[i].straight
   was wrong when the patch boundasries applied a cyclic shift
   with 'inside'.

5. In patch_fill, the computation of the shading contour sign was not correct.
   Rather it gave a right sign for most cases,
   we replaced it with a right general formula
   (assuming a non-self-overlapped patch).

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfd.c 1.63, src/gsptype2.c 1.19, src/gxshade1.c 1.41, src/gxshade6.c 1.100]</p>
</blockquote>

<p><strong><a name="2005-05-23_2233"></a>
2005-05-23 22:33 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688010 Errors in overprint with halftoned output.

DETAILS:

The PDF overprintmode can be used to specify overprinting when the  value
of an input color is zero.  The problem was caused by an error in
determining when an input color was zero.  The problem was only apparent
with a 'binary' halftone.  Ie.e one in which on a single component is
being halftoned.  The earlier logic would overprint all components which
were not being halftoned.  The example case involved 100% black and 50%
cyan.  The black component was treated like it was 0%.</pre>
<p>[src/gxht.c 1.17]</p>
</blockquote>

<p><strong><a name="2005-05-23_1824"></a>
2005-05-23 18:24 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite, ps2write) : Shading background was missed in PDF1.2 .

DETAILS :

Bug 688109 "pdfwrite : shading background can erroneusly disappear".

1. A new function gx_dc_pattern2_has_background allows to know whether
   a pattern color has a background.

2. If it has, when converting a shading to a bitmap, entire bitmap
   is being filled, so the shading coverage is trivial,
   and it doesn't need to convert into a masked image or
   into a clipped image. Implemented with defining a new flag
   pdf_lcvd_t::has_background .

3. Minor change : defined the identifier pdf_lcvd_s .

4. In gdevpdfb.c, applied lossles filters to an image,
   if it is not big. The old code did in the
   ForOPDFRead mode only. So now it works for pdfwrite.
   It improves the view of patterns (including shadings),
   rather the compressed iomage size is bigger.
   The old code caused significant distorsions with applying DCT
   to shadings (distorsions appear at patch boundaries and/or
   at the shading coverage boundary).

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfb.c 1.29, src/gdevpdfd.c 1.62, src/gdevpdfx.h 1.117, src/gsptype2.c 1.18, src/gsptype2.h 1.13]</p>
</blockquote>

<p><strong><a name="2005-05-23_1459"></a>
2005-05-23 14:59 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : 'setcachewdevice' must always clip characters.

DETAILS :

Bug 688096 " setcachedevice must clip characters".

'setcachedevice' establises a clipping box when rendering a glyph to a cache.
In same time, when rendering with no caching, the old code did not clip.
As a result, some glyphs were clipped, and some others were not,
depending on the glyph size.

This patch clips Type 3 and Type 10 charactrers when rendering with no cache,
and behaves as the old code with other font types.
We doing so to optimze the performance using the assumption that
"outline" (FontType != 3 &amp;&amp; FontType != 10) fonts must not paint outside FontBBox,
which to be used for clipping in those cases.
Besides that, the patch rounds Type 3 and Type 10 charactrer
coordinates when renderingh with no cache, to provide
an uniform coordinate assignation with the cached mode.

The patch defines a new variant CACHE_DEVICE_NONE_AND_CLIP,
which is defined almost for clarity. Actually the code never
checks for this specific value.

For more details see comments in code.

EXPECTED DIFFERENCES :

Normal 72dpi :

Not detected.

Normal 300dpi :

"027-13.ps"
"032-07.ps"
"205-09.ps"
"212-01.ps"
"213-01.ps"
"214-01.ps"
"264-01.ps"
"289-01.ps"
"298-09.ps"
"321-09.ps"

pdfwrite 72 dpi :

None.

pdfwrite 300dpi :

None.</pre>
<p>[src/gscpm.h 1.5, src/gxchar.c 1.45]</p>
</blockquote>

<p><strong><a name="2005-05-23_1049"></a>
2005-05-23 10:49 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : 'strokepath' could generate wrongly oriented contours.

DETAILS :

Bug 688103 "The dashing direction depends on the initial device CTM determinant".
Bug 688097 "A wrong clipping with 298-01.ps"

The patch computes initial_matrix_reflected = true iff
the initial device CTM has a negative determinant.
Then it is accounted to orient stroke outlines
to a proper direction : they must form positive contours in the user space.
For doing so we properly orient dash caps
in gx_stroke_path_only_aux, and then compensate it in line_join_points.
Several local function prototype were changed to pass
the value of initial_matrix_reflected to line_join_points.

Minor change : moved some visual trace instructions to
a more general function, which is called from several places.

EXPECTED DIFFERENCES :

Normal 72dpi :

"012-13.ps"
"013-13.ps"
"014-05.ps"
"014-13.ps"
"015-05.ps"
"027-09.ps"
"034-10.ps"
"169-05.ps"
"169-09.ps"
"169-13.ps"
"205-13.ps"
"222-05.ps"
"222-13.ps"
"260-01.ps"
"289-01.ps"
"297-01.ps"
"298-01.ps"
"298-05.ps"
"298-09.ps"
"308-04.ps"
"316-07.ps"
"321-01.ps"
"321-05.ps"
"321-13.ps"
"adesso8.pdf"
"file.pdf"
"golfer.eps"

Normal 300dpi :

"014-05.ps"
"015-05.ps"
"027-09.ps"
"034-01.ps"
"159.pdf"
"169-05.ps"
"222-05.ps"
"231-01.ps"
"260-01.ps"
"281-01.ps"
"289-01.ps"
"298-01.ps"
"298-05.ps"
"307-01.ps"
"321-01.ps"
"321-05.ps"
"86554321.pdf"
"adesso7.pdf"
"Bug687546.ps"

pdfwrite 72 dpi :

"012-13.ps"
"013-13.ps"
"014-05.ps"
"014-13.ps"
"015-05.ps"
"034-10.ps"
"169-05.ps"
"169-09.ps"
"169-13.ps"
"222-05.ps"
"222-09.ps"
"222-13.ps"
"260-01.ps"
"297-01.ps"
"316-07.ps"
"adesso8.pdf"
"file.pdf"
"golfer.eps"

pdfwrite 300dpi :

"014-05.ps"
"015-05.ps"
"027-09.ps"
"169-05.ps"
"222-05.ps"
"307-01.ps"
"316-07.ps"
"320-01.ps"</pre>
<p>[src/gxstroke.c 1.14]</p>
</blockquote>

<p><strong><a name="2005-05-19_1639"></a>
2005-05-19 16:39 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for yet another broken PDF that Adobe Reader handles without complaint.
Circular references in Resources are now detected and handled (with a
warning). Bug 687946 for customer 580. Thanks to Alex Cherepanov for this fix

DETAILS:

A dictionary is used to detect the looping and if found a pdfformaterror is
emitted and the checking for transparency halts (returning false). This
does mean that a file with this problem may be incorrectly classified and
will be processed as if NOTRANSPARENCY was in effect.

The performance penalty for the extra checking is negligble (tested with
the 1236 page PDF 1.6 Reference Manual.</pre>
<p>[lib/pdf_main.ps 1.98]</p>
</blockquote>

<p><strong><a name="2005-05-18_1959"></a>
2005-05-18 19:59 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Improving the script with NOOUTERSAVE.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/ps2write.bat 1.15]</p>
</blockquote>

<p><strong><a name="2005-05-18_1951"></a>
2005-05-18 19:51 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Passing NumCopies to the output.

DETAILS :

1. In the ForOPDFRead mode Page objects will have a NumCopies entry
   iff NumCopies in the input isn't null.
   With ForOPDFREad=false it is being ignored.

2. opdfread.ps applies copypage to provide the requested number of copies.
   Zero and negative values are being ignored.

Thus, if a PS document multiplies specific pages,
they will be printed in the requested number.
In same time, entire document can be copied with setting
the NumCopies device parameter to the printer.
This behavior is some different than pswrite.

Debugged with 268-03.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.67, src/gdevpdf.c 1.110, src/gdevpdfx.h 1.116]</p>
</blockquote>

<p><strong><a name="2005-05-18_1021"></a>
2005-05-18 10:21 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A wrong line join with 'stroke'.

DETAILS :

This patch affects all vector devices.
The old code wrongly recognizes closed rectangular paths,
so that unclosed rectangles were converted into closed ones with 'stroke'.

EXPECTED DIFFERENCES :

pdfwrite :

260-01.ps
adesso1.pdf</pre>
<p>[src/gdevvec.c 1.26]</p>
</blockquote>

<p><strong><a name="2005-05-17_2056"></a>
2005-05-17 20:56 Ralph Giles</strong></p>
<blockquote>
<pre>
Update a comment to correctly describe the jasper stream object struct.</pre>
<p>[src/sjpx.h 1.5]</p>
</blockquote>

<p><strong><a name="2005-05-17_2040"></a>
2005-05-17 20:40 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Complete supporting vierws which have no stroke color.

DETAILS :

Color was not synchronized when painting with a low level color.
Debugged with 035-01.ps, 148-01.ps, 148-05.ps, 148-11.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfd.c 1.61]</p>
</blockquote>

<p><strong><a name="2005-05-17_1740"></a>
2005-05-17 17:40 Igor Melichev</strong></p>
<blockquote>
<pre>
opdfread : Implementing HalftoneType 3,6,10.

DETAILS :

1. A bug in ComputeFunction_n0 : s/size/length
2. A bug in ComputeFunction_n0 scaled argument must compare with array size rather than with 1.
3. Creating halftone Thresholds from stream with CreateHalftoneThresholds.
4. Resolve SpotFunction independently on IsObjRef.
5. Resolve TransferFunction for some halftone types.
6. Convert HalftoneType 6 into HalftoneType 3.
7. Ignore HalftoneType &gt; 6 (which are not allowed in Postscript level 2) and print a warning.
   We would like to convert them, but it's too complex.

Debugged with 258-01.ps, 476-01.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.66]</p>
</blockquote>

<p><strong><a name="2005-05-17_1204"></a>
2005-05-17 12:04 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (opdfread) : Some glyphs were substituted with .notdef .

DETAILS :

It was broken when implementing a workaround for broken filters in HP LaserJet 1320 :
endstream was never called, so that definefont_hook was skipped.

1. Moved the processing from 'endstream' to a new procedure HookFont.
2. Imple,mented an 'endobj' daemon with .endobj_daemon,
   which is a property of an object.
3. ReadFontProcs procedures create instances of .endobj_daemon,
   which call HookFont.
4. definefont_hook has been removed forever.
5. 'wendstream' is now an empty procedure,
   which actually is never called due to the HP filter problem.

Debugged with 01_001.pdf .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.65]</p>
</blockquote>

<p><strong><a name="2005-05-17_0841"></a>
2005-05-17 08:41 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Improving the script.

DETAILS :

1. Restricted the source line width with inserting temporary variables.
2. Provided the 'jobserver' option with an environment variable to simplify running Genoa tests.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/ps2write.bat 1.14]</p>
</blockquote>

<p><strong><a name="2005-05-17_0819"></a>
2005-05-17 08:19 Igor Melichev</strong></p>
<blockquote>
<pre>
opdfread : Improving the discipline for function resolving.

DETAILS :

1. Impolemented a general object reference recognizer in IsObjRef.
2. ResolveFunctionSafe is another helper.
3. Used it in function resolving.
4. Replaced ResolveSpotFunction with a general ResolveFunction.
5. Removed an unintended debug printing.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.64]</p>
</blockquote>

<p><strong><a name="2005-05-16_2325"></a>
2005-05-16 23:25 Igor Melichev</strong></p>
<blockquote>
<pre>
opdfread : Implementing n-arguments linear sampled functions in BG, UCR, TR, BG2, UCR2, TR2, HT.

DETAILS :

1. Fixed the stack balanse in ScaleArgN.
2. ComputeFunction_n0 Was not implemented.
3. FunctionToProc_x01 did not properly scale the argument from the Domain.
4. Added the FunctionToProc20 dispatch.
5. Renamed FunctionToProc2 into FunctionToProc12.
6. Renamed FunctionToProc4 into FunctionToProc14.
7. spotfunctions mark copied from pdf_draw.ps
8. ResolveFunction defines an uniform convention for function resolving.
9. Fixed SetTransfer with new convension of function resolving.
10. Implemented BG, UCR, TR, BG2, UCR2, TR2, HT with the new methods for 2-argument functions.

Debugged with 246-01.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.63]</p>
</blockquote>

<p><strong><a name="2005-05-13_1228"></a>
2005-05-13 12:28 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix a typo in a comment.</pre>
<p>[src/msvc32.mak 1.72]</p>
</blockquote>

<p><strong><a name="2005-05-12_1926"></a>
2005-05-12 19:26 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2write) : Did not write halftone, color transfer, and some other graphic state parameters.

DETAILS :

See comment in code.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfg.c 1.62]</p>
</blockquote>

<p><strong><a name="2005-05-12_0201"></a>
2005-05-12 02:01 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Increase the artificial limits in the spot analyzer device
to accomodate Xterra-Regular font.
Fix bug 688077.</pre>
<p>[src/gzspotan.c 1.14]</p>
</blockquote>

<p><strong><a name="2005-05-10_1619"></a>
2005-05-10 16:19 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Properly encrypt the document Info values.

DETAILS :

Bug 688076 "encrypted pdf document properties are garbled".

This patch unwinds the part 7 of the patch
http://ghostscript.com/pipermail/gs-cvs/2005-April/005485.html .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfo.c 1.32]</p>
</blockquote>

<p><strong><a name="2005-05-10_1322"></a>
2005-05-10 13:22 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix overly agressive xref format checking that was tripped up by double
&lt;cr&gt; instead of &lt;cr&gt;&lt;lf&gt;. Bug 688082 for customer 580.

DETAILS:

The xref did have 20 character entries, but as mentioned, a double 0x0d
resulted in the second line being read as an empty line. Go back to the
older method of reading 20 character strings, then add format verification
that only allows white space characters after the 'f' or 'n'.

There may be an underlying problem in the rebuild logic, or the file may
be damaged beyond repair although it does now open. There is a warning
issued about stream EOL that may have confused the rebuild logic.</pre>
<p>[lib/pdf_main.ps 1.97]</p>
</blockquote>

<p><strong><a name="2005-05-07_2256"></a>
2005-05-07 22:56 Ray Johnston</strong></p>
<blockquote>
<pre>
Handle non-integer font size and stop after last page processed.</pre>
<p>[lib/gslp.ps 1.7]</p>
</blockquote>

<p><strong><a name="2005-05-05_0535"></a>
2005-05-05 05:35 Dan Coby</strong></p>
<blockquote>
<pre>
Partial fix for 687814 dithering artifacts.  The given test file shows
some faint halftone dots in the background when rasterized using the
bmp256 device.

DETAILS:

The problem is caused by a combination of factors that aggravate the
situation plus some things in the color look up logic that cause minor
errors in the calculations.

The aggravating factors:

By default, Ghostscript uses a 16x16 halftone cell for low resolutions,
i.e. below 150 dpi.  (I do not know the reasons why and it seems like a
poor choice to me.  However for now, I am not changing the halftone.)
The bmp256 device utilizes a 6x6x6 RGB color cube.  Thus there are 1281
levels ((16 x 16 x 5) + 1) for each halftoned colorant.  This gives a step
size between each level of 0.00078.  Thus even very small errors in the
calculations become visible as faint halftone dots.

The given test file is using a CalRGB color space.  The WhitePoint is
[ 0.9505 1 1.089 ] which is the standard D65 white point.  However with
the given CalRGB parameters and a pure white RGB input (1 1 1). the
resulting XYZ is [0.9505 0.99999 1.089] which has a very small error in
the Y value.  (However the error is small enough that one would not expect
it to be visible.)

The calculations in Ghostscript's halftoning logic for determining the
halftone level truncate values.  With an RGB process color model, this
means that only a pure white is not halftoned.  Thus the small error
mentioned in the previous paragraph becomes visible.  Note:  The truncation
effects work the other way in a CMYK process color model, which is why
we do not see this problem with shades that are nearly white in CMYK
halftoned output.

The calculation errors:

To save CPU time, the color look up logic did not interpolate table
entries which were closer that 0.01.  Thus output values could have an
error as large as 0.01.

The color look up logic clipped table entries to the specified output
range.  This can cause errors with interpolated values when the interpolation
involves one table entry that is clipped and one entry that is not clipped.

The changes in this fix:

The calculations that determine the halftone levels was modified.  Actually
it was simplified.  Prior to the DeviceN changes (in revision 8.00) there
were three separate calculations for halftone levels.  There was a separate
calculation for Gray, RGB, and CMYK color spaces.  Revision 8.00 changed
the halftoning to be based upon the device's process color model (instead
of the color space) and merged the RGB and CMYK calculations.  The two
separate calculations were kept to minimize regressions during the DeviceN
effort.  This change basically keeps the logic that had been used for Gray
process color models.  This version of the calculation does not have the
truncation problems that were present in the RGB/CMYK calculation.  Another
simplification was removal of some logic that was checking for additive
versus subtractive process color model.  Once again this logic was present
only to minimize regressions compared to pre 8.00 results.  The final
result is that this calculation is much simpler, faster, and gives a better
result.

The 'do not interpolate' criteria was reduced to 0.001.  Once again this
can add to the CPU time.

Changes which are not in this fix:

The clamping of look up table entries was not changed.  Changing this
requires that the we would have to clamp the output after the table lookup.
The errors are small but they are large enough that problems are still
seen with the bmp256 device and a 16x16 halftone cell.  There are several
different paths through this logic and thus the probability of creating
worse errors is relatively high.  This change would add slightly to the
CPU time but is required to get the correct result.

EXPECTED DIFFERENCES:

This change produces small changes in the halftone levels.  The changes in
the 'do not interpolate' value affects many files which use CIE or ICC
color spaces.  Between these two changes, this fix affects 165 files.</pre>
<p>[src/gscie.h 1.14, src/gxcmap.c 1.25, src/gxdevndi.c 1.6, src/gxdither.h 1.7]</p>
</blockquote>

<p><strong><a name="2005-05-03_1050"></a>
2005-05-03 10:50 Igor Melichev</strong></p>
<blockquote>
<pre>
Speed up shadings : a minor optimization for the monotonity check of a stitching function.

DETAILS :

It returned false (wrong, must be true) if entire interval falls to the end of the domain.
Speeds up ps2write with "Clarke Tate Manns Chinese.ai".

EXPECTED DIFFERENCES :

Not observed in a local testing with arbitrary devices.
May cause a minor difference with some devices.</pre>
<p>[src/gsfunc3.c 1.26]</p>
</blockquote>

<p><strong><a name="2005-05-03_1041"></a>
2005-05-03 10:41 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Set device parameters to preserve colors.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/ps2write.bat 1.13]</p>
</blockquote>

<p><strong><a name="2005-05-03_0910"></a>
2005-05-03 09:10 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Fix problems with shadings.

DETAILS :

1. gdev_pdf_fill_rectangle_hl_color did not implement a shading conversion
   when called with a shading color.

2. The "convert_to_image" branch of gdev_pdf_fill_path had a problem with
clipping path when called fron the operator 'fill' (rather than 'shfill').

3. In the "convert_to_image" branch of gdev_pdf_fill_path
   improved the balance of Q/q in case of errors.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfd.c 1.60]</p>
</blockquote>

<p><strong><a name="2005-04-29_1658"></a>
2005-04-29 16:58 Ray Johnston</strong></p>
<blockquote>
<pre>
Handle CIDCount value of 65536 which might be seen with Identity CMap.
Fix for customer 562.

DETAILS:

while a multiple string approach had been previously implemented to allow
CIDCount &gt; 32767, with 65536 a 'rangecheck in --string-- would result
when trying to create a string of 65538 bytes (32769 * 2). I chose a
arbitrary break point of 22000 CID's so that three strings would be
enough for 66000 total.</pre>
<p>[lib/gs_cidtt.ps 1.9]</p>
</blockquote>

<p><strong><a name="2005-04-27_1640"></a>
2005-04-27 16:40 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Properly account FontMatrix of a CID font with 'glypshow', 'cshow'.

DETAILS :

Bug 688000 "PDF writer produces misplaced characters".

When a CID font is used with 'glypshow' or with 'show' in a 'cshow' procedure,
pdfwrite creates a Type 0 font for wrapping the CID font according to the PDF standard.
Doing so, the old code created a single type 0 font for all occurances of
the CID font, rather those occurances may have different values of FontMatrix.
The new code creates so many type 0 fonts as many various values of
FontMatrix is used with the CID font.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtc.c 1.42, src/gsfont.c 1.36, src/gsfont.h 1.11]</p>
</blockquote>

<p><strong><a name="2005-04-26_2136"></a>
2005-04-26 21:36 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687883 tiff32nc device and PDF transparency and for 687980
image missing with psdcmyk driver.

DETAILS:

The absence of the images was caused by an error in the handling of PDF 1.4
transparency soft masks (SMask).  The mask data is monochrome.  However it
is saved (like all PDF 1.4 transparency related colors) in the blending
color space.  Currently the process color model of the output device is
being used for the PDF 1.4 blending space.

The fix consists of inverting the image mask data when a subtractive
blending color space is being used.</pre>
<p>[src/gdevp14.c 1.28]</p>
</blockquote>

<p><strong><a name="2005-04-26_2128"></a>
2005-04-26 21:28 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688048 ijs driver broken in 8.51 for ProcessColorModel=Gray versus 8.50

DETAILS:

There were a few minor problems with the gdevijs.c file.

1.  The file has been corrupted with extra ^M's at the end of lines.  (These
cause problems with the MSVC debugger since MSVC gets confused about which
source line is being debugged..  They can also cause problem with the Borland
Compiler.)  This a reoccurring problem and I am getting tired of seeing it.

Unfortunately they are not visible in the diff shown below or in the MSVC
debugger.

2.  The routine gsijs_read_string_malloc has some problems.  The call to
gs_free has str as a parameter when it should have been *str.  (str is a
pointer to a pointer.)  This is the major cause of the reported problem.
The routine only released the old string when the new one needed to be
larger however it always allocated a new string.  Since this is non GC memory,
this causes a leak.</pre>
<p>[src/gdevijs.c 1.11]</p>
</blockquote>

<p><strong><a name="2005-04-25_1228"></a>
2005-04-25 12:28 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Uninitialized variable when encrypting a string from a pdfmark.

DETAILS :

Bug 687809 "pdfwrite: A wrong encryption of bookmarks".

This bug may become another classic example,
which demonstrates a bad coding style.
The function s_PSSD_init incompletely performed the action,
which it is designed for. The reason is that the macro
s_PSSD_init_inline was made especially for optimizing
scan_token, and its name doesn't reflect its action.
When coded s_PSSD_init, its action was forgotten.
As a result we've got an indeterministic behavior.

This fix renames s_PSSD_init_inline into s_PSSD_partially_init_inline
for a better reflection of its action, completes s_PSSD_init,
and makes the letter be public for a regular initialization.
Particularly using it gdevpdfr.c to fix another indeterministic bug,
which persists since the repository was created.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfr.c 1.9, src/iscan.c 1.20, src/sstring.c 1.5, src/sstring.h 1.7]</p>
</blockquote>

<p><strong><a name="2005-04-25_0223"></a>
2005-04-25 02:23 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : font file objects encryption was broken when worked on ps2write.

DETAILS :

Bug 688045 "gs 8.51 cannot create encrypted pdf file correctly".

1. With CompatibilityLevel == 1.2 did not create an uniquie font name.
   Removing pdf_begin_fontfile and open the data stream
   with reserving the object ID before font name is being computed (gdevpdtb.c).
   Detected occasionally, and it is not related to the bug.
   Fixed to establish a correct order of processing,
   setting a proper context for other changes.

2. pdf_write_embedded_font must not set DATA_STREAM_ENCRYPT
   because the font object is being written into the temporary file pdev-&gt;streams.
   It will be encrypted when copyed from the temporary file to the output file.
   See comment in pdf_begin_encrypt.

   The old code actually encrypted it twice, what is equivalent to no encryption.
   We guess it was broken while working on ps2write,
   due to writing font descriptor object before font file object.

3. pdf_write_cmap had same problem as pdf_write_embedded_font.

4. pdf_write_contents_cid2 had same problem with CIDToGIDMap.

5. In pdf_encrypt_encoded_string, the PSSD filter did not move
   the cursor of the underlying stream when closing by EOD.
   We believe that it worked when it was coded,
   and we guess it was broken relatively recently.
   As a workaround, setting close_at_eod = false,
   because this mode appears to move the underlying stream.
   We didn't analyze why PSSD moved it a long ago and doesn't longer move now.

6. pdf_write_cid_system_info_to_stream must not encrypt
   when called from pdf_write_cmap due to (3).

7. Don't encrypt the DocumentInfo dictionary items because Adobe readers
   don't decrypt them.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfo.c 1.31, src/gdevpdfu.c 1.77, src/gdevpdtb.c 1.36, src/gdevpdti.c 1.44, src/gdevpdtw.c 1.43]</p>
</blockquote>

<p><strong><a name="2005-04-24_2201"></a>
2005-04-24 22:01 Ralph Giles</strong></p>
<blockquote>
<pre>
Initial revision</pre>
<p>[jasper/NEWS 1.1, jasper/LICENSE 1.1, jasper/README 1.1, jasper/aclocal.m4 1.1, jasper/COPYRIGHT 1.1, jasper/INSTALL 1.1, jasper/Makefile.am 1.1, jasper/Makefile.in 1.1, jasper/configure 1.1, jasper/configure.ac 1.1, jasper/jasper.spec 1.1, jasper/jasper.spec.in 1.1, jasper/doc/README 1.1, jasper/doc/jasper.pdf 1.1, jasper/doc/jpeg2000.pdf 1.1, jasper/src/Makefile.am 1.1, jasper/src/Makefile.in 1.1, jasper/src/README 1.1, jasper/src/appl/Makefile.am 1.1, jasper/src/appl/Makefile.in 1.1, jasper/src/appl/dummy.c 1.1, jasper/src/appl/imginfo.c 1.1, jasper/src/appl/jiv.c 1.1, jasper/src/appl/imgcmp.c 1.1, jasper/src/appl/jasper.c 1.1, jasper/src/appl/jasper_sdl.c 1.1, jasper/src/libjasper/Makefile.am 1.1, jasper/src/libjasper/Makefile.in 1.1, jasper/src/libjasper/README 1.1, jasper/src/libjasper/dummy.c 1.1, jasper/src/libjasper/bmp/Makefile.am 1.1, jasper/src/libjasper/bmp/Makefile.in 1.1, jasper/src/libjasper/bmp/bmp_cod.c 1.1, jasper/src/libjasper/bmp/bmp_cod.h 1.1, jasper/src/libjasper/bmp/bmp_dec.c 1.1, jasper/src/libjasper/bmp/bmp_enc.c 1.1, jasper/src/libjasper/bmp/bmp_enc.h 1.1, jasper/src/libjasper/jp2/Makefile.am 1.1, jasper/src/libjasper/jp2/Makefile.in 1.1, jasper/src/libjasper/jp2/jp2_cod.c 1.1, jasper/src/libjasper/jp2/jp2_cod.h 1.1, jasper/src/libjasper/jp2/jp2_dec.c 1.1, jasper/src/libjasper/jp2/jp2_dec.h 1.1, jasper/src/libjasper/jp2/jp2_enc.c 1.1, jasper/src/libjasper/jpc/jpc_cod.h 1.1, jasper/src/libjasper/jpc/jpc_dec.c 1.1, jasper/src/libjasper/jpc/jpc_dec.h 1.1, jasper/src/libjasper/jpc/jpc_enc.c 1.1, jasper/src/libjasper/jpc/jpc_enc.h 1.1, jasper/src/libjasper/jpc/jpc_fix.h 1.1, jasper/src/libjasper/jpc/jpc_flt.h 1.1, jasper/src/libjasper/jpc/jpc_math.c 1.1, jasper/src/libjasper/jpc/jpc_math.h 1.1, jasper/src/libjasper/jpc/jpc_mct.c 1.1, jasper/src/libjasper/jpc/jpc_mct.h 1.1, jasper/src/libjasper/jpc/jpc_mqcod.c 1.1, jasper/src/libjasper/jpc/jpc_mqcod.h 1.1, jasper/src/libjasper/jpc/jpc_mqdec.c 1.1, jasper/src/libjasper/jpc/jpc_mqdec.h 1.1, jasper/src/libjasper/jpc/jpc_mqenc.c 1.1, jasper/src/msvc/Makefile.am 1.1, jasper/src/msvc/Makefile.in 1.1, jasper/src/msvc/README 1.1, jasper/src/msvc/imgcmp.dsp 1.1, jasper/src/msvc/imginfo.dsp 1.1, jasper/src/msvc/jasper.dsp 1.1, jasper/src/msvc/jasper.dsw 1.1, jasper/src/msvc/jiv.dsp 1.1, jasper/src/msvc/libjasper.dsp 1.1, jasper/src/libjasper/jpc/Makefile.am 1.1, jasper/src/libjasper/jpc/Makefile.in 1.1, jasper/src/libjasper/jpc/jpc_bs.c 1.1, jasper/src/libjasper/jpc/jpc_bs.h 1.1, jasper/src/libjasper/jpc/jpc_cs.c 1.1, jasper/src/libjasper/jpc/jpc_cs.h 1.1, jasper/src/libjasper/jpc/jpc_mqenc.h 1.1, jasper/src/libjasper/jpc/jpc_qmfb.c 1.1, jasper/src/libjasper/jpc/jpc_qmfb.h 1.1, jasper/src/libjasper/jpc/jpc_t1cod.c 1.1, jasper/src/libjasper/jpc/jpc_t1cod.h 1.1, jasper/src/libjasper/jpc/jpc_t1dec.c 1.1, jasper/src/libjasper/jpc/jpc_t1dec.h 1.1, jasper/src/libjasper/jpc/jpc_t1enc.c 1.1, jasper/src/libjasper/jpc/jpc_t1enc.h 1.1, jasper/src/libjasper/jpc/jpc_t2cod.c 1.1, jasper/src/libjasper/jpc/jpc_t2cod.h 1.1, jasper/src/libjasper/jpc/jpc_t2dec.c 1.1, jasper/src/libjasper/jpc/jpc_t2dec.h 1.1, jasper/src/libjasper/jpc/jpc_t2enc.c 1.1, jasper/src/libjasper/jpc/jpc_t2enc.h 1.1, jasper/src/libjasper/jpc/jpc_tagtree.c 1.1, jasper/src/libjasper/jpc/jpc_tagtree.h 1.1, jasper/src/libjasper/jpc/jpc_tsfb.c 1.1, jasper/src/libjasper/jpc/jpc_tsfb.h 1.1, jasper/src/libjasper/jpc/jpc_util.c 1.1, jasper/src/libjasper/jpc/jpc_util.h 1.1, jasper/src/libjasper/jpg/Makefile.am 1.1, jasper/src/libjasper/jpg/Makefile.in 1.1, jasper/src/libjasper/jpg/README 1.1, jasper/src/libjasper/jpg/jpg_cod.h 1.1, jasper/src/libjasper/jpg/jpg_dec.c 1.1, jasper/src/libjasper/jpg/jpg_dummy.c 1.1, jasper/src/libjasper/jpg/jpg_enc.c 1.1, jasper/src/libjasper/jpg/jpg_enc.h 1.1, jasper/src/libjasper/jpg/jpg_jpeglib.h 1.1, jasper/src/libjasper/jpg/jpg_val.c 1.1, jasper/src/libjasper/mif/Makefile.am 1.1, jasper/src/libjasper/mif/README 1.1, jasper/src/libjasper/mif/mif_cod.c 1.1, jasper/src/libjasper/mif/mif_cod.h 1.1, jasper/src/libjasper/base/Makefile.am 1.1, jasper/src/libjasper/base/Makefile.in 1.1, jasper/src/libjasper/base/jas_cm.c 1.1, jasper/src/libjasper/base/jas_debug.c 1.1, jasper/src/libjasper/base/jas_getopt.c 1.1, jasper/src/libjasper/base/jas_icc.c 1.1, jasper/src/libjasper/base/jas_iccdata.c 1.1, jasper/src/libjasper/base/jas_image.c 1.1, jasper/src/libjasper/base/jas_init.c 1.1, jasper/src/libjasper/base/jas_malloc.c 1.1, jasper/src/libjasper/base/jas_seq.c 1.1, jasper/src/libjasper/base/jas_stream.c 1.1, jasper/src/libjasper/base/jas_string.c 1.1, jasper/src/libjasper/base/jas_tvp.c 1.1, jasper/src/libjasper/base/jas_version.c 1.1, jasper/src/libjasper/include/Makefile.am 1.1, jasper/src/libjasper/include/Makefile.in 1.1, jasper/src/libjasper/include/jasper/jas_debug.h 1.1, jasper/src/libjasper/include/jasper/jas_fix.h 1.1, jasper/src/libjasper/include/jasper/jas_icc.h 1.1, jasper/src/libjasper/include/jasper/jas_image.h 1.1, jasper/src/libjasper/include/jasper/jas_init.h 1.1, jasper/src/libjasper/include/jasper/jas_malloc.h 1.1, jasper/src/libjasper/include/jasper/jas_math.h 1.1, jasper/src/libjasper/include/jasper/jas_seq.h 1.1, jasper/src/libjasper/include/jasper/jas_version.h 1.1, jasper/src/libjasper/mif/Makefile.in 1.1, jasper/src/libjasper/pgx/Makefile.am 1.1, jasper/src/libjasper/pgx/Makefile.in 1.1, jasper/src/libjasper/pgx/pgx_cod.c 1.1, jasper/src/libjasper/pgx/pgx_cod.h 1.1, jasper/src/libjasper/pgx/pgx_dec.c 1.1, jasper/src/libjasper/pgx/pgx_enc.c 1.1, jasper/src/libjasper/pgx/pgx_enc.h 1.1, jasper/src/libjasper/pnm/Makefile.am 1.1, jasper/src/libjasper/pnm/Makefile.in 1.1, jasper/src/libjasper/pnm/pnm_cod.c 1.1, jasper/src/libjasper/pnm/pnm_cod.h 1.1, jasper/src/libjasper/pnm/pnm_dec.c 1.1, jasper/src/libjasper/pnm/pnm_enc.c 1.1, jasper/src/libjasper/pnm/pnm_enc.h 1.1, jasper/src/libjasper/ras/Makefile.am 1.1, jasper/src/libjasper/ras/Makefile.in 1.1, jasper/src/libjasper/ras/ras_cod.c 1.1, jasper/src/libjasper/ras/ras_cod.h 1.1, jasper/src/libjasper/ras/ras_dec.c 1.1, jasper/src/libjasper/ras/ras_enc.c 1.1, jasper/src/libjasper/ras/ras_enc.h 1.1, jasper/data/Makefile.am 1.1, jasper/data/colorprofiles/README 1.1, jasper/data/colorprofiles/erimm.icm 1.1, jasper/data/colorprofiles/esrgb.icm 1.1, jasper/data/colorprofiles/esrgbgrey.icm 1.1, jasper/data/colorprofiles/grey.icm 1.1, jasper/data/colorprofiles/greyromm.icm 1.1, jasper/data/colorprofiles/romm.icm 1.1, jasper/data/colorprofiles/sgray.icm 1.1, jasper/data/colorprofiles/srgb.icm 1.1, jasper/data/colorprofiles/sycc.icm 1.1, jasper/data/images/README 1.1, jasper/data/images/example.mif 1.1, jasper/data/images/goldenears.bmp 1.1, jasper/data/images/goldenears.jpg 1.1, jasper/data/images/stawamuschief_gray.pnm 1.1, jasper/data/images/test.pnm 1.1, jasper/src/libjasper/include/jasper/Makefile.am 1.1, jasper/src/libjasper/include/jasper/Makefile.in 1.1, jasper/src/libjasper/include/jasper/jas_cm.h 1.1, jasper/src/libjasper/include/jasper/jas_config.h 1.1, jasper/src/libjasper/include/jasper/jas_config_ac.h 1.1, jasper/src/libjasper/include/jasper/jas_config_ac.h.in 1.1, jasper/src/libjasper/include/jasper/jas_config_win32.h 1.1, jasper/src/libjasper/include/jasper/jas_getopt.h 1.1, jasper/src/libjasper/include/jasper/jas_stream.h 1.1, jasper/src/libjasper/include/jasper/jas_string.h 1.1, jasper/src/libjasper/include/jasper/jas_tvp.h 1.1, jasper/src/libjasper/include/jasper/jas_types.h 1.1, jasper/src/libjasper/include/jasper/jasper.h 1.1, jasper/data/images/example.mif0 1.1, jasper/data/images/goldenears.pnm 1.1, jasper/data/images/goldenears.ras 1.1, jasper/acaux/compile 1.1, jasper/acaux/depcomp 1.1, jasper/data/images/feep.pnm 1.1, jasper/data/images/feep2.pnm 1.1, jasper/data/images/goldenears_gray.jpg 1.1, jasper/data/images/goldenears_gray.pnm 1.1, jasper/data/images/goldenears_gray.ras 1.1, jasper/data/images/small_16x1.pgm 1.1, jasper/data/images/small_1x1.pgm 1.1, jasper/data/images/stawamuschief.pnm 1.1, jasper/acaux/config.guess 1.1, jasper/acaux/config.sub 1.1, jasper/acaux/install-sh 1.1, jasper/acaux/ltmain.sh 1.1, jasper/acaux/missing 1.1]</p>
</blockquote>

<p><strong><a name="2005-04-24_2158"></a>
2005-04-24 21:58 Ralph Giles</strong></p>
<blockquote>
<pre>
Initial revision</pre>
<p>[jbig2dec/LICENSE 1.1, jbig2dec/README 1.1, jbig2dec/aclocal.m4 1.1, jbig2dec/compile 1.1, jbig2dec/depcomp 1.1, jbig2dec/jbig2_image.c 1.1, jbig2dec/jbig2_image.h 1.1, jbig2dec/jbig2_mmr.c 1.1, jbig2dec/jbig2_mmr.h 1.1, jbig2dec/jbig2dec.c 1.1, jbig2dec/msvc.mak 1.1, jbig2dec/test_jbig2dec.py 1.1, jbig2dec/COPYING 1.1, jbig2dec/Makefile.am 1.1, jbig2dec/Makefile.in 1.1, jbig2dec/config.h.in 1.1, jbig2dec/config_types.h 1.1, jbig2dec/config_types.h.in 1.1, jbig2dec/config_win32.h 1.1, jbig2dec/configure 1.1, jbig2dec/configure.ac 1.1, jbig2dec/getopt.c 1.1, jbig2dec/getopt.h 1.1, jbig2dec/getopt1.c 1.1, jbig2dec/install-sh 1.1, jbig2dec/jbig2.c 1.1, jbig2dec/jbig2.h 1.1, jbig2dec/jbig2_arith.c 1.1, jbig2dec/jbig2_arith.h 1.1, jbig2dec/jbig2_arith_iaid.c 1.1, jbig2dec/jbig2_arith_iaid.h 1.1, jbig2dec/jbig2_arith_int.c 1.1, jbig2dec/jbig2_arith_int.h 1.1, jbig2dec/jbig2_generic.c 1.1, jbig2dec/jbig2_generic.h 1.1, jbig2dec/jbig2_huffman.c 1.1, jbig2dec/jbig2_huffman.h 1.1, jbig2dec/jbig2_hufftab.h 1.1, jbig2dec/jbig2_image_pbm.c 1.1, jbig2dec/jbig2_image_png.c 1.1, jbig2dec/jbig2_metadata.c 1.1, jbig2dec/jbig2_metadata.h 1.1, jbig2dec/jbig2_page.c 1.1, jbig2dec/jbig2_priv.h 1.1, jbig2dec/jbig2_refinement.c 1.1, jbig2dec/jbig2_segment.c 1.1, jbig2dec/jbig2_symbol_dict.c 1.1, jbig2dec/jbig2_symbol_dict.h 1.1, jbig2dec/jbig2_text.c 1.1, jbig2dec/memcmp.c 1.1, jbig2dec/missing 1.1, jbig2dec/os_types.h 1.1, jbig2dec/sha1.c 1.1, jbig2dec/sha1.h 1.1, jbig2dec/snprintf.c 1.1]</p>
</blockquote>

<p><strong><a name="2005-04-24_2146"></a>
2005-04-24 21:46 Ralph Giles</strong></p>
<blockquote>
<pre>
Initial revision</pre>
<p>[libpng/TODO 1.1, libpng/example.c 1.1, libpng/pngconf.h 1.1, libpng/pnggccrd.c 1.1, libpng/pngget.c 1.1, libpng/LICENSE 1.1, libpng/pngmem.c 1.1, libpng/pngrio.c 1.1, libpng/pngset.c 1.1, libpng/pngwio.c 1.1, libpng/png.5 1.1, libpng/png.c 1.1, libpng/pngtrans.c 1.1, libpng/README 1.1, libpng/configure 1.1, libpng/png.h 1.1, libpng/pngnow.png 1.1, libpng/pngread.c 1.1, libpng/pngtest.c 1.1, libpng/pngbar.jpg 1.1, libpng/pngbar.png 1.1, libpng/pngvcrd.c 1.1, libpng/pngpread.c 1.1, libpng/pngwrite.c 1.1, libpng/libpng.txt 1.1, libpng/libpngpf.3 1.1, libpng/pngwtran.c 1.1, libpng/ANNOUNCE 1.1, libpng/INSTALL 1.1, libpng/KNOWNBUG 1.1, libpng/Y2KINFO 1.1, libpng/pngwutil.c 1.1, libpng/CHANGES 1.1, libpng/libpng.3 1.1, libpng/pngrtran.c 1.1, libpng/pngerror.c 1.1, libpng/pngrutil.c 1.1, libpng/pngtest.png 1.1, libpng/contrib/pngminus/makefile.std 1.1, libpng/contrib/pngminus/makefile.tc3 1.1, libpng/contrib/pngminus/pngminus.sh 1.1, libpng/contrib/pngminus/pnm2png.bat 1.1, libpng/contrib/pngminus/pnm2png.sh 1.1, libpng/contrib/gregbook/LICENSE 1.1, libpng/contrib/gregbook/README 1.1, libpng/contrib/gregbook/makevms.com 1.1, libpng/contrib/gregbook/rpng-win.c 1.1, libpng/contrib/pngminus/README 1.1, libpng/contrib/pngminus/makevms.com 1.1, libpng/contrib/pngminus/png2pnm.bat 1.1, libpng/contrib/pngminus/png2pnm.c 1.1, libpng/contrib/pngminus/png2pnm.sh 1.1, libpng/contrib/pngminus/pngminus.bat 1.1, libpng/contrib/pngminus/pnm2png.c 1.1, libpng/contrib/pngsuite/README 1.1, libpng/contrib/pngsuite/basn0g01.png 1.1, libpng/contrib/pngsuite/basn0g02.png 1.1, libpng/contrib/pngsuite/basn0g04.png 1.1, libpng/contrib/pngsuite/basn0g08.png 1.1, libpng/contrib/pngsuite/basn0g16.png 1.1, libpng/contrib/pngsuite/basn2c08.png 1.1, libpng/contrib/pngsuite/basn2c16.png 1.1, libpng/contrib/pngsuite/basn3p01.png 1.1, libpng/contrib/pngsuite/basn3p02.png 1.1, libpng/contrib/pngsuite/basn3p04.png 1.1, libpng/contrib/pngsuite/basn3p08.png 1.1, libpng/contrib/pngsuite/basn4a08.png 1.1, libpng/contrib/pngsuite/basn4a16.png 1.1, libpng/contrib/pngsuite/basn6a08.png 1.1, libpng/contrib/pngsuite/basn6a16.png 1.1, libpng/contrib/gregbook/rpng2-x.c 1.1, libpng/contrib/gregbook/toucan.png 1.1, libpng/contrib/gregbook/writepng.c 1.1, libpng/contrib/gregbook/writepng.h 1.1, libpng/contrib/gregbook/Makefile.sgi 1.1, libpng/contrib/gregbook/Makefile.unx 1.1, libpng/contrib/gregbook/Makefile.w32 1.1, libpng/contrib/gregbook/readpng2.c 1.1, libpng/contrib/gregbook/readpng2.h 1.1, libpng/contrib/gregbook/rpng-x.c 1.1, libpng/contrib/gregbook/wpng.c 1.1, libpng/contrib/gregbook/readpng.c 1.1, libpng/contrib/gregbook/readpng.h 1.1, libpng/contrib/gregbook/rpng2-win.c 1.1, libpng/contrib/visupng/PngFile.c 1.1, libpng/contrib/visupng/PngFile.h 1.1, libpng/contrib/visupng/VisualPng.c 1.1, libpng/contrib/visupng/VisualPng.dsp 1.1, libpng/contrib/visupng/VisualPng.dsw 1.1, libpng/contrib/visupng/VisualPng.ico 1.1, libpng/contrib/visupng/VisualPng.png 1.1, libpng/contrib/visupng/VisualPng.rc 1.1, libpng/contrib/visupng/resource.h 1.1, libpng/contrib/visupng/README.txt 1.1, libpng/contrib/visupng/cexcept.h 1.1, libpng/scripts/makefile.32sunu 1.1, libpng/scripts/makefile.64sunu 1.1, libpng/scripts/makefile.aix 1.1, libpng/scripts/makefile.bor 1.1, libpng/scripts/makefile.dec 1.1, libpng/scripts/makefile.dj2 1.1, libpng/scripts/makefile.elf 1.1, libpng/scripts/makefile.gcc 1.1, libpng/scripts/makefile.knr 1.1, libpng/scripts/makefile.msc 1.1, libpng/scripts/makefile.os2 1.1, libpng/scripts/makefile.sco 1.1, libpng/scripts/makefile.sgi 1.1, libpng/scripts/makefile.tc3 1.1, libpng/scripts/makefile.watcom 1.1, libpng/scripts/smakefile.ppc 1.1, libpng/scripts/SCOPTIONS.ppc 1.1, libpng/scripts/descrip.mms 1.1, libpng/scripts/libpng-config-body.in 1.1, libpng/scripts/libpng-config-head.in 1.1, libpng/scripts/libpng.icc 1.1, libpng/scripts/libpng.pc.in 1.1, libpng/scripts/makefile.acorn 1.1, libpng/scripts/makefile.amiga 1.1, libpng/scripts/makefile.atari 1.1, libpng/scripts/makefile.darwin 1.1, libpng/scripts/makefile.freebsd 1.1, libpng/scripts/makefile.gcmmx 1.1, libpng/scripts/makefile.hpgcc 1.1, libpng/scripts/makefile.intel 1.1, libpng/scripts/makefile.linux 1.1, libpng/scripts/makefile.ne12bsd 1.1, libpng/scripts/makefile.openbsd 1.1, libpng/scripts/makefile.sggcc 1.1, libpng/scripts/makefile.so9 1.1, libpng/scripts/makefile.solaris 1.1, libpng/scripts/makefile.std 1.1, libpng/scripts/makefile.sunos 1.1, libpng/scripts/makefile.vcawin32 1.1, libpng/scripts/makefile.vcwin32 1.1, libpng/scripts/makevms.com 1.1, libpng/scripts/pngos2.def 1.1, libpng/scripts/pngw32.def 1.1, libpng/scripts/pngw32.rc 1.1, libpng/projects/netware.txt 1.1, libpng/projects/wince.txt 1.1, libpng/projects/beos/x86-shared.proj 1.1, libpng/projects/beos/x86-shared.txt 1.1, libpng/projects/beos/x86-static.proj 1.1, libpng/projects/beos/x86-static.txt 1.1, libpng/scripts/makefile.bc32 1.1, libpng/scripts/makefile.beos 1.1, libpng/scripts/makefile.cygwin 1.1, libpng/scripts/makefile.hp64 1.1, libpng/scripts/makefile.hpux 1.1, libpng/scripts/makefile.ibmc 1.1, libpng/scripts/makefile.mips 1.1, libpng/scripts/makefile.netbsd 1.1, libpng/projects/cbuilder5/libpng.bpf 1.1, libpng/projects/cbuilder5/libpng.bpg 1.1, libpng/projects/cbuilder5/libpng.bpr 1.1, libpng/projects/cbuilder5/libpng.cpp 1.1, libpng/projects/cbuilder5/libpng.readme.txt 1.1, libpng/projects/cbuilder5/libpngstat.bpf 1.1, libpng/projects/cbuilder5/libpngstat.bpr 1.1, libpng/projects/cbuilder5/zlib.readme.txt 1.1, libpng/projects/visualc6/README.txt 1.1, libpng/projects/visualc6/libpng.dsp 1.1, libpng/projects/visualc6/libpng.dsw 1.1, libpng/projects/visualc6/pngtest.dsp 1.1, libpng/projects/visualc71/PRJ0041.mak 1.1, libpng/projects/visualc71/README.txt 1.1, libpng/projects/visualc71/README_zlib.txt 1.1, libpng/projects/visualc71/libpng.sln 1.1, libpng/projects/visualc71/libpng.vcproj 1.1, libpng/projects/visualc71/pngtest.vcproj 1.1, libpng/projects/visualc71/zlib.vcproj 1.1]</p>
</blockquote>

<p><strong><a name="2005-04-24_2139"></a>
2005-04-24 21:39 Ralph Giles</strong></p>
<blockquote>
<pre>
Initial revision</pre>
<p>[zlib/FAQ 1.1, zlib/crc32.c 1.1, zlib/example.c 1.1, zlib/zconf.in.h 1.1, zlib/INDEX 1.1, zlib/Makefile 1.1, zlib/Makefile.in 1.1, zlib/README 1.1, zlib/adler32.c 1.1, zlib/compress.c 1.1, zlib/configure 1.1, zlib/crc32.h 1.1, zlib/uncompr.c 1.1, zlib/zconf.h 1.1, zlib/zutil.c 1.1, zlib/zutil.h 1.1, zlib/gzio.c 1.1, zlib/inffixed.h 1.1, zlib/trees.c 1.1, zlib/trees.h 1.1, zlib/deflate.c 1.1, zlib/deflate.h 1.1, zlib/inftrees.c 1.1, zlib/inftrees.h 1.1, zlib/zlib.3 1.1, zlib/algorithm.txt 1.1, zlib/infback.c 1.1, zlib/inffast.c 1.1, zlib/inffast.h 1.1, zlib/zlib.h 1.1, zlib/ChangeLog 1.1, zlib/inflate.c 1.1, zlib/inflate.h 1.1, zlib/minigzip.c 1.1, zlib/old/Make_vms.com 1.1, zlib/old/Makefile.riscos 1.1, zlib/old/README 1.1, zlib/old/descrip.mms 1.1, zlib/old/visual-basic.txt 1.1, zlib/contrib/README.contrib 1.1, zlib/contrib/ada/buffer_demo.adb 1.1, zlib/contrib/ada/zlib-streams.adb 1.1, zlib/contrib/ada/zlib-streams.ads 1.1, zlib/old/zlib.html 1.1, zlib/old/os2/Makefile.os2 1.1, zlib/old/os2/zlib.def 1.1, zlib/qnx/package.qpg 1.1, zlib/contrib/ada/mtest.adb 1.1, zlib/contrib/ada/read.adb 1.1, zlib/contrib/ada/readme.txt 1.1, zlib/contrib/ada/test.adb 1.1, zlib/contrib/ada/zlib-thin.adb 1.1, zlib/contrib/ada/zlib-thin.ads 1.1, zlib/contrib/ada/zlib.adb 1.1, zlib/contrib/ada/zlib.ads 1.1, zlib/contrib/ada/zlib.gpr 1.1, zlib/contrib/puff/Makefile 1.1, zlib/contrib/puff/README 1.1, zlib/contrib/puff/zeros.raw 1.1, zlib/contrib/blast/Makefile 1.1, zlib/contrib/blast/README 1.1, zlib/contrib/blast/blast.c 1.1, zlib/contrib/blast/blast.h 1.1, zlib/contrib/blast/test.pk 1.1, zlib/contrib/blast/test.txt 1.1, zlib/contrib/dotzlib/DotZLib.build 1.1, zlib/contrib/iostream/test.cpp 1.1, zlib/contrib/iostream/zfstream.cpp 1.1, zlib/contrib/iostream/zfstream.h 1.1, zlib/contrib/puff/puff.c 1.1, zlib/contrib/puff/puff.h 1.1, zlib/contrib/untgz/Makefile 1.1, zlib/contrib/untgz/Makefile.msc 1.1, zlib/contrib/untgz/untgz.c 1.1, zlib/contrib/dotzlib/DotZLib.chm 1.1, zlib/contrib/dotzlib/DotZLib.sln 1.1, zlib/contrib/dotzlib/LICENSE_1_0.txt 1.1, zlib/contrib/dotzlib/readme.txt 1.1, zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs 1.1, zlib/contrib/dotzlib/DotZLib/DotZLib.cs 1.1, zlib/contrib/dotzlib/DotZLib/DotZLib.csproj 1.1, zlib/contrib/dotzlib/DotZLib/GZipStream.cs 1.1, zlib/contrib/dotzlib/DotZLib/UnitTests.cs 1.1, zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs 1.1, zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs 1.1, zlib/contrib/dotzlib/DotZLib/CodecBase.cs 1.1, zlib/contrib/dotzlib/DotZLib/Deflater.cs 1.1, zlib/contrib/dotzlib/DotZLib/Inflater.cs 1.1, zlib/contrib/gzappend/gzappend.c 1.1, zlib/contrib/masm686/match.asm 1.1, zlib/contrib/masmx86/gvmat32c.c 1.1, zlib/contrib/masmx86/inffas32.asm 1.1, zlib/contrib/masmx86/readme.txt 1.1, zlib/contrib/masmx86/gvmat32.asm 1.1, zlib/contrib/masmx86/mkasm.bat 1.1, zlib/contrib/minizip/Makefile 1.1, zlib/contrib/minizip/crypt.h 1.1, zlib/contrib/minizip/miniunz.c 1.1, zlib/contrib/minizip/minizip.c 1.1, zlib/contrib/minizip/zip.c 1.1, zlib/contrib/minizip/zip.h 1.1, zlib/contrib/testzlib/testzlib.c 1.1, zlib/contrib/testzlib/testzlib.sln 1.1, zlib/contrib/testzlib/testzlib.vcproj 1.1, zlib/contrib/minizip/ChangeLogUnzip 1.1, zlib/contrib/minizip/ioapi.c 1.1, zlib/contrib/minizip/ioapi.h 1.1, zlib/contrib/minizip/iowin32.c 1.1, zlib/contrib/minizip/iowin32.h 1.1, zlib/contrib/minizip/mztools.c 1.1, zlib/contrib/minizip/mztools.h 1.1, zlib/contrib/minizip/unzip.c 1.1, zlib/contrib/minizip/unzip.h 1.1, zlib/contrib/asm586/README.586 1.1, zlib/contrib/asm586/match.S 1.1, zlib/contrib/asm686/README.686 1.1, zlib/contrib/asm686/match.S 1.1, zlib/contrib/delphi/ZLib.pas 1.1, zlib/contrib/delphi/ZLibConst.pas 1.1, zlib/contrib/delphi/readme.txt 1.1, zlib/contrib/delphi/zlibd32.mak 1.1, zlib/contrib/iostream2/zstream.h 1.1, zlib/contrib/iostream2/zstream_test.cpp 1.1, zlib/contrib/iostream3/README 1.1, zlib/contrib/iostream3/TODO 1.1, zlib/contrib/iostream3/test.cc 1.1, zlib/contrib/iostream3/zfstream.cc 1.1, zlib/contrib/iostream3/zfstream.h 1.1, zlib/contrib/pascal/zlibd32.mak 1.1, zlib/contrib/infback9/README 1.1, zlib/contrib/infback9/infback9.c 1.1, zlib/contrib/infback9/infback9.h 1.1, zlib/contrib/infback9/inffix9.h 1.1, zlib/contrib/infback9/inflate9.h 1.1, zlib/contrib/infback9/inftree9.c 1.1, zlib/contrib/infback9/inftree9.h 1.1, zlib/contrib/pascal/example.pas 1.1, zlib/contrib/pascal/readme.txt 1.1, zlib/contrib/pascal/zlibpas.pas 1.1, zlib/contrib/vstudio/readme.txt 1.1, zlib/contrib/vstudio/vc7/minizip.vcproj 1.1, zlib/contrib/vstudio/vc7/zlibstat.vcproj 1.1, zlib/contrib/vstudio/vc7/zlibvc.def 1.1, zlib/contrib/vstudio/vc7/zlibvc.sln 1.1, zlib/amiga/Makefile.pup 1.1, zlib/amiga/Makefile.sas 1.1, zlib/as400/compile.clp 1.1, zlib/contrib/inflate86/inffas86.c 1.1, zlib/contrib/inflate86/inffast.S 1.1, zlib/contrib/vstudio/vc7/miniunz.vcproj 1.1, zlib/contrib/vstudio/vc7/zlib.rc 1.1, zlib/contrib/vstudio/vc7/zlibvc.vcproj 1.1, zlib/as400/bndsrc 1.1, zlib/as400/readme.txt 1.1, zlib/as400/zlib.inc 1.1, zlib/msdos/Makefile.bor 1.1, zlib/msdos/Makefile.dj2 1.1, zlib/msdos/Makefile.emx 1.1, zlib/msdos/Makefile.msc 1.1, zlib/msdos/Makefile.tc 1.1, zlib/projects/README.projects 1.1, zlib/projects/visualc6/README.txt 1.1, zlib/projects/visualc6/example.dsp 1.1, zlib/projects/visualc6/minigzip.dsp 1.1, zlib/win32/DLL_FAQ.txt 1.1, zlib/win32/Makefile.bor 1.1, zlib/win32/Makefile.emx 1.1, zlib/win32/Makefile.gcc 1.1, zlib/win32/Makefile.msc 1.1, zlib/win32/VisualC.txt 1.1, zlib/win32/zlib.def 1.1, zlib/win32/zlib1.rc 1.1, zlib/projects/visualc6/zlib.dsp 1.1, zlib/projects/visualc6/zlib.dsw 1.1]</p>
</blockquote>

<p><strong><a name="2005-04-24_2131"></a>
2005-04-24 21:31 Ralph Giles</strong></p>
<blockquote>
<pre>
Initial revision</pre>
<p>[jpeg/jdinput.c 1.1, jpeg/wrppm.c 1.1, jpeg/wrrle.c 1.1, jpeg/testimg.bmp 1.1, jpeg/testimg.jpg 1.1, jpeg/coderules.doc 1.1, jpeg/jccoefct.c 1.1, jpeg/jcmainct.c 1.1, jpeg/rdjpgcom.1 1.1, jpeg/rdjpgcom.c 1.1, jpeg/testimg.ppm 1.1, jpeg/example.c 1.1, jpeg/jcapimin.c 1.1, jpeg/jcapistd.c 1.1, jpeg/jconfig.dj 1.1, jpeg/jconfig.st 1.1, jpeg/jconfig.vc 1.1, jpeg/jctrans.c 1.1, jpeg/makelib.ds 1.1, jpeg/rdbmp.c 1.1, jpeg/rdgif.c 1.1, jpeg/jcdctmgr.c 1.1, jpeg/jdatadst.c 1.1, jpeg/rdppm.c 1.1, jpeg/rdrle.c 1.1, jpeg/rdtarga.c 1.1, jpeg/transupp.c 1.1, jpeg/transupp.h 1.1, jpeg/djpeg.1 1.1, jpeg/djpeg.c 1.1, jpeg/install.doc 1.1, jpeg/jdatasrc.c 1.1, jpeg/ansi2knr.1 1.1, jpeg/ansi2knr.c 1.1, jpeg/jcmarker.c 1.1, jpeg/jdcolor.c 1.1, jpeg/makefile.bcc 1.1, jpeg/makefile.cfg 1.1, jpeg/usage.doc 1.1, jpeg/jcmaster.c 1.1, jpeg/makefile.mc6 1.1, jpeg/makefile.mms 1.1, jpeg/makefile.sas 1.1, jpeg/makefile.vms 1.1, jpeg/makefile.wat 1.1, jpeg/README 1.1, jpeg/makeapps.ds 1.1, jpeg/configure 1.1, jpeg/filelist.doc 1.1, jpeg/jcomapi.c 1.1, jpeg/ltmain.sh 1.1, jpeg/jconfig.manx 1.1, jpeg/jcparam.c 1.1, jpeg/jdsample.c 1.1, jpeg/jerror.c 1.1, jpeg/jerror.h 1.1, jpeg/jmorecfg.h 1.1, jpeg/makcjpeg.st 1.1, jpeg/wrjpgcom.1 1.1, jpeg/wrjpgcom.c 1.1, jpeg/jcprepct.c 1.1, jpeg/libjpeg.doc 1.1, jpeg/config.guess 1.1, jpeg/config.sub 1.1, jpeg/install-sh 1.1, jpeg/jcphuff.c 1.1, jpeg/jinclude.h 1.1, jpeg/testimgp.jpg 1.1, jpeg/wrtarga.c 1.1, jpeg/ltconfig 1.1, jpeg/structure.doc 1.1, jpeg/jdmerge.c 1.1, jpeg/jmemdosa.asm 1.1, jpeg/jquant1.c 1.1, jpeg/jquant2.c 1.1, jpeg/testprog.jpg 1.1, jpeg/cderror.h 1.1, jpeg/jccolor.c 1.1, jpeg/jdct.h 1.1, jpeg/jidctflt.c 1.1, jpeg/jidctfst.c 1.1, jpeg/jidctint.c 1.1, jpeg/jidctred.c 1.1, jpeg/jmemansi.c 1.1, jpeg/maktjpeg.st 1.1, jpeg/makvms.opt 1.1, jpeg/rdswitch.c 1.1, jpeg/jdcoefct.c 1.1, jpeg/jdmainct.c 1.1, jpeg/jpegint.h 1.1, jpeg/makeproj.mac 1.1, jpeg/jdapimin.c 1.1, jpeg/jdapistd.c 1.1, jpeg/jddctmgr.c 1.1, jpeg/jdpostct.c 1.1, jpeg/jdtrans.c 1.1, jpeg/jpeglib.h 1.1, jpeg/jutils.c 1.1, jpeg/makljpeg.st 1.1, jpeg/testorig.jpg 1.1, jpeg/jconfig.bcc 1.1, jpeg/jconfig.cfg 1.1, jpeg/jdmarker.c 1.1, jpeg/jdmaster.c 1.1, jpeg/jmemname.c 1.1, jpeg/jmemnobs.c 1.1, jpeg/jversion.h 1.1, jpeg/wizard.doc 1.1, jpeg/jconfig.doc 1.1, jpeg/jconfig.mac 1.1, jpeg/jconfig.mc6 1.1, jpeg/jconfig.sas 1.1, jpeg/jconfig.vms 1.1, jpeg/jconfig.wat 1.1, jpeg/jcsample.c 1.1, jpeg/jfdctflt.c 1.1, jpeg/jfdctfst.c 1.1, jpeg/jmemdos.c 1.1, jpeg/jpegtran.1 1.1, jpeg/jpegtran.c 1.1, jpeg/rdcolmap.c 1.1, jpeg/change.log 1.1, jpeg/jfdctint.c 1.1, jpeg/jmemmac.c 1.1, jpeg/jmemmgr.c 1.1, jpeg/jmemsys.h 1.1, jpeg/makefile.dj 1.1, jpeg/makefile.vc 1.1, jpeg/cdjpeg.c 1.1, jpeg/cdjpeg.h 1.1, jpeg/jchuff.c 1.1, jpeg/jchuff.h 1.1, jpeg/jcinit.c 1.1, jpeg/makdjpeg.st 1.1, jpeg/makefile.ansi 1.1, jpeg/makefile.manx 1.1, jpeg/makefile.unix 1.1, jpeg/cjpeg.1 1.1, jpeg/cjpeg.c 1.1, jpeg/ckconfig.c 1.1, jpeg/jdphuff.c 1.1, jpeg/wrbmp.c 1.1, jpeg/wrgif.c 1.1, jpeg/jdhuff.c 1.1, jpeg/jdhuff.h 1.1]</p>
</blockquote>

<p><strong><a name="2005-04-22_1008"></a>
2005-04-22 10:08 Russell Lang</strong></p>
<blockquote>
<pre>
Correct typo.</pre>
<p>[man/ps2ascii.1 1.34]</p>
</blockquote>

<p><strong><a name="2005-04-21_1011"></a>
2005-04-21 10:11 Igor Melichev</strong></p>
<blockquote>
<pre>
Speed up shadings : a minor optimization for the color monotonity check.

DETAILS :

Bug 687948 "Performance of shading fill much worse than 8.00" (a 8th partial fix).

The color monotonity has been cached, but was not taken from the cache.
It caused extra calls to is_monotonic.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.99]</p>
</blockquote>

<p><strong><a name="2005-04-21_0928"></a>
2005-04-21 09:28 Igor Melichev</strong></p>
<blockquote>
<pre>
Speed up shadings : fixed a crash with unlinear color devices.

DETAILS :

Bug 688050 "C stack overflow with 464-01-fixed.ps (pbmraw/72dpi/noband)".
Bug 687948 "Performance of shading fill much worse than 8.00" (a 7th partial fix).

The C stack overflow happened due to quadrangle_color_change
didn"t account the quadrangle size, causing an infinite
subdivision in case of a non-contiguous color function.
This happened with unlinear color devices only,
because otherwise the quadrangle was mapped to
a linear color fill device function, which doesn"t
perform a subdivision by color.

1. Passed the quadrangle size information to quadrangle_color_change.

2. Used it with unlinear color devices.

3. Trying to use it with a linear color device doesn`t
   give a speed up. Disabling this branch
   but saving it for historical purpose.

4. Inserted a check against the C stack overflow to
   simplify the debugging and the diagnostics.

EXPECTED DIFFERENCES :

1. Fixes a crash with pkmraw, pbmraw 446-01-fixed.ps.

2. Minor differences in rasters with pkmraw, pbmraw @ 72 dpi :
"446-01-fixed.ps"
"464-01-fixed.ps"
"483-05-fixed.ps"
"BEST8-99-Path.fh7.pdf"
"chilis_black.pdf"
"Clarke Tate Manns Chinese.ai"
"gradmesh.ai"
"SmoothShading.pdf"
"STEUER-RollingMesh 3(Final).ai"
"Testform.v1.0.2.pdf"

3. Minor differences in rasters with pkmraw, pbmraw @ 300 dpi :

"446-01-fixed.ps"
"464-01-fixed.ps"
"483-05-fixed.ps"
"Altona_Visual_sb_1v1_x3.pdf"
"BEST8-99-Path.fh7.pdf"
"Clarke Tate Manns Chinese.ai"
"gradmesh.ai"
"SmoothShading.pdf"
"STEUER-RollingMesh 3(Final).ai"</pre>
<p>[src/gxshade6.c 1.98]</p>
</blockquote>

<p><strong><a name="2005-04-20_2005"></a>
2005-04-20 20:05 Ray Johnston</strong></p>
<blockquote>
<pre>
Use the OrigFontName from an embedded font's FOntInfo dictionary since this
is where Windows PostScript dirver puts the real font name when embedding
fonts. Bug 688006 for customer 32.</pre>
<p>[src/zbfont.c 1.29]</p>
</blockquote>

<p><strong><a name="2005-04-20_0844"></a>
2005-04-20 08:44 Igor Melichev</strong></p>
<blockquote>
<pre>
Speed up shadings with optimizing fn_Sd_is_monotonic.

DETAILS :

This change is a fifth partial fix for the bug 687948
"Performance of shading fill much worse than 8.00".

Implemented a new function fn_Sd_1arg_linear_monotonic,
which optimizes fn_Sd_is_monotonic in the case of
1-argument linear sampled function.
It doesn't use the pole cache and the tensor-based algorithm,
saving significant time from the cache allocation,
which otherwise happens once per shfill.

We would like to optimise 1-argument cubic sampled function.
For now delaying it due to the absence of practical cases
which need a high performance.

Minor change : Renamed fn_is_monotonic into fn_Sd_is_monotonic_aux.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gsfunc0.c 1.26]</p>
</blockquote>

<p><strong><a name="2005-04-20_0613"></a>
2005-04-20 06:13 Ray Johnston</strong></p>
<blockquote>
<pre>
Prevent out of range ImageType 4 mask array entries from causing an error
as Adobe Acrobat Reader does. Bug 687611 for customer 870.

DETAILS:

When the Mask array values are beyond the max allowed by the BitsPerComponent,
a rangecheck error must be generated by PostScript, but Adobe Acrobat Reader
ignores the Mask in this case and effectively treats the image as ImageType 1.
This patch generates a pdfformaterror Warning when the problem is seen.</pre>
<p>[lib/pdf_draw.ps 1.92]</p>
</blockquote>

<p><strong><a name="2005-04-19_2122"></a>
2005-04-19 21:22 Stefan Kemper</strong></p>
<blockquote>
<pre>
Added dependancies for gdevpdfj.c</pre>
<p>[src/devs.mak 1.130]</p>
</blockquote>

<p><strong><a name="2005-04-19_1435"></a>
2005-04-19 14:35 Igor Melichev</strong></p>
<blockquote>
<pre>
Speed up shadings with removing fn_domain_is_monotonic.

DETAILS :

1. The function fn_domain_is_monotonic was called when creating any
sampled function object, and its result was not used.
Actually it is a rudiment from the !NEW_SHADINGS code.
This change is a fourth partial fix for the bug 687948
"Performance of shading fill much worse than 8.00".

2. In gxshade1.c removed few rudiments of the !NEW_SHADINGS code.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gsfunc.c 1.12, src/gsfunc.h 1.13, src/gsfunc0.c 1.25, src/gsfunc3.c 1.25, src/gsfunc4.c 1.18, src/gxfunc.h 1.10, src/gxshade1.c 1.40]</p>
</blockquote>

<p><strong><a name="2005-04-19_1222"></a>
2005-04-19 12:22 Igor Melichev</strong></p>
<blockquote>
<pre>
Removing the !NEW_SHADINGS branch.

DETAILS :

This change is algorithmically equivalent.

1. Removed the obsolete code
NEW_SHADINGS 0 and NEW_RADIAL_SHADINGS 0,
which was disabled a long ago.

2. Removed stacks and few other unused fields from
Fb_fill_state_s, A_fill_state_s, R_fill_state_s.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gsshade.c 1.17, src/gxshade1.c 1.39, src/gxshade4.c 1.30, src/gxshade4.h 1.41, src/gxshade6.c 1.97]</p>
</blockquote>

<p><strong><a name="2005-04-19_0948"></a>
2005-04-19 09:48 Igor Melichev</strong></p>
<blockquote>
<pre>
Faster shadings with dividing some quadrangles into 2 triangles.

DETAILS :

It's a third partial fix for the bug 687948
"Performance of shading fill much worse than 8.00".

When a quadrangle color doesn't depend on one axis,
subdivide the quadrangle into 2 triangles.
The old code did into 4 triangles.

1. Renamed 'triangles' into 'triangles4'.
2. Added 'triangles2'.
3. Added 'color_change_bilinear'.

EXPECTED DIFFERENCES :

"442-01.ps"
"446-01-fixed.ps"
"464-01-fixed.ps"
"483-01.ps"
"483-05-fixed.ps"
"Altona-Testsuite_p2_S_x3.pdf"
"Altona_Visual_bb_1v1_x3.pdf"
"Altona_Visual_sb_1v1_x3.pdf"
"BEST8-99-Path.fh7.pdf"
"Bug687840.pdf"
"chilis_black.pdf"
"chilis_red.pdf"
"Clarke Tate Manns Chinese.ai"
"gradmesh.ai"
"Openhuis_pdf_zw.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"self-intersect2.ps"
"shading_prob_800.ps"
"SmoothShading.pdf"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 2(radial).ai"
"STEUER-RollingMesh 3(Final).ai"
"Testform.v1.0.2.pdf"</pre>
<p>[src/gxshade6.c 1.96]</p>
</blockquote>

<p><strong><a name="2005-04-19_0836"></a>
2005-04-19 08:36 Igor Melichev</strong></p>
<blockquote>
<pre>
Faster shadings with setting a stronger clipping box.

DETAILS :

It's another partial fix for the bug 687948
"Performance of shading fill much worse than 8.00".

The old code computed a shading clipping box
as an transform of the shading BBox
to device coordinates. However with a rotation matrix
it significantly expanded the box,
so that more shading parts appear inside the paint region.
The new code sets clipping box equal to the bbox
of the clipping path, so that the rasterization
covers a smaller part of the shading, and the
shading becomes faster.

SHADING_FILL_RECTANGLE_PROC changes the prototype.
The new prototype adds a clipping rectangle in device coordinates,
which provides a stronger clipping of the paint region.
Probably we could drop the old argument "prect",
but leaving it untill the NEW_SHADINGS cleanup.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gsshade.c 1.16, src/gsshade.h 1.9, src/gxshade1.c 1.38, src/gxshade4.c 1.29, src/gxshade4.h 1.40, src/gxshade6.c 1.95]</p>
</blockquote>

<p><strong><a name="2005-04-19_0727"></a>
2005-04-19 07:27 Igor Melichev</strong></p>
<blockquote>
<pre>
Faster shadings with a better function monotonity check.

DETAILS :

It's a partial fix for the bug 687948
"Performance of shading fill much worse than 8.00".
If an axial or radial shading use a sampled function
with many samples, the shading speeds up in 1.2 - 2.5 times.

1. The old code returned an unknown monotonity when the
interval covers several cells of a sampled function.
The new code summarizes the monotonity through multiple cells.

Rather shadings need 1- and 2-dimensional functions only,
we developed an N-dimensional algorithm for
a future use with color spaces and color renderings.

1.1. Generalized the function sample cache to linear functions
(the old code cached cubic ones only).

1.2. Made the branch POLE_CACHE to be permanent.

1.3. The new function is_lattice_monotonic
summarizes the monotonity through multiple cells.

1.4. The virtual function is_monotonic
now returns a mask about a monotonity by each coordinate.

2. The shading decomposition is adopted to the new monotonity check.

2.1. When decomposing a patch into stripes,
the color monotonity doesn't matter,
because further decomposition accounts it.

2.2. When decomposing a quadrangle,
the decomposition axis is being chosen according
to the function monotonity along each axis.

3. In the shading decomposition,
cached the monotonity separately from the linearity
with a new flag linear_color.

EXPECTED DIFFERENCES :

A minor difference in shading color with all devices and resolutions :

"442-01.ps"
"446-01-fixed.ps"
"464-01-fixed.ps"
"478-01.ps"
"483-01.ps"
"483-05-fixed.ps"
"Altona-Testsuite_p2_S_x3.pdf"
"Altona_Visual_bb_1v1_x3.pdf"
"Altona_Visual_sb_1v1_x3.pdf"
"Bug687840.pdf"
"chilis_black.pdf"
"Clarke Tate Manns Chinese.ai"
"Openhuis_pdf_zw.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 2(radial).ai"
"STEUER-RollingMesh 3(Final).ai"</pre>
<p>[src/gsfunc.c 1.11, src/gsfunc.h 1.12, src/gsfunc0.c 1.24, src/gsfunc0.h 1.7, src/gsfunc3.c 1.24, src/gsfunc4.c 1.17, src/gxshade1.c 1.37, src/gxshade4.h 1.39, src/gxshade6.c 1.94]</p>
</blockquote>

<p><strong><a name="2005-04-19_0428"></a>
2005-04-19 04:28 Ralph Giles</strong></p>
<blockquote>
<pre>
Bump the version numbers post-release.</pre>
<p>[doc/News.htm 1.164, lib/gs_init.ps 1.119, src/gscdef.c 1.54, src/version.mak 1.83]</p>
</blockquote>

<p><strong><a name="2005-04-19_0029"></a>
2005-04-19 00:29 Stefan Kemper</strong></p>
<blockquote>
<pre>
Fix for bug 687984.

Incomplete data stream gets artifical data for both DCTE and now
also for PNGPE streams.

Note that it would be nice if all streams either handled missing data
or didn't.</pre>
<p>[src/gdevpdfj.c 1.44]</p>
</blockquote>
<hr>

<h2><a name="Version8.51"></a>Version 8.51 (2005-04-18)</h2>

<p>This is the second stable release in the 8.5x series of Ghostscript.
It contains numerous bug fixes and improvements, particularly in the 
area of PDF 1.6 handling.

<p>Also new in this release is an experimental version of the new level 
2 Postscript output device, which may be of interest to developers.

<p> The following <a href="http://bugs.ghostscript.com/">bug</a> numbers
were open at the time of this release: <blockquote>
405501,
430175,
465936,
493348,
530011,
535932,
578865,
592160,
610478,
614298,
626295,
674418,
685335,
686747,
686842,
686853,
686865,
686919,
686996,
687011,
687039,
687063,
687084,
687095,
687108,
687125,
687146,
687168,
687174,
687193,
687196,
687219,
687221,
687229,
687231,
687243,
687257,
687259,
687271,
687280,
687295,
687297,
687298,
687303,
687314,
687316,
687327,
687342,
687345,
687346,
687360,
687373,
687375,
687397,
687399,
687414,
687435,
687445,
687460,
687475,
687480,
687484,
687485,
687492,
687498,
687514,
687518,
687520,
687523,
687525,
687529,
687531,
687535,
687536,
687545,
687558,
687559,
687560,
687561,
687583,
687593,
687595,
687608,
687611,
687621,
687622,
687628,
687630,
687633,
687642,
687643,
687644,
687650,
687654,
687657,
687663,
687666,
687669,
687674,
687676,
687677,
687678,
687679,
687680,
687682,
687686,
687694,
687695,
687697,
687702,
687707,
687712,
687715,
687721,
687727,
687728,
687729,
687731,
687775,
687780,
687782,
687783,
687793,
687794,
687795,
687796,
687800,
687801,
687805,
687806,
687808,
687809,
687814,
687822,
687825,
687826,
687837,
687844,
687848,
687850,
687853,
687863,
687866,
687868,
687870,
687871,
687875,
687881,
687883,
687887,
687895,
687896,
687901,
687903,
687904,
687907,
687914,
687915,
687918,
687919,
687922,
687931,
687938,
687946,
687948,
687950,
687957,
687960,
687970,
687973,
687974,
687975,
687977,
687978,
687980,
687981,
687983,
687984,
687986,
687989,
687992,
687993,
687994,
687995,
687996,
688000,
688003,
688005,
688006,
688007,
688009,
688010,
688013,
688017,
688020,
688022,
688023,
688024,
688026,
688028,
688032,
688035,
688036,
688037,
688038,
688039,
688040.
</blockquote>

<h3><a name="8.51_Incompatible_changes"></a>Incompatible changes</h3>

<p>
There are no known incompatible changes at this point.

<h3><a name="8.51_changelog"></a>Changelog</h3>

<!-- generated by split_changelog.py from the output of cvs2cl.pl -->

<p><strong><a name="2005-04-18_1826"></a>
2005-04-18 18:26 Ralph Giles</strong></p>
<blockquote>
<pre>
Update final release date.</pre>
<p>[doc/API.htm 1.50, doc/Bug-form.htm 1.46, doc/Bug-info.htm 1.46, doc/C-style.htm 1.52, doc/Commprod.htm 1.38, doc/Copying.htm 1.36, doc/DLL.htm 1.40, doc/Deprecated.htm 1.17, doc/Details8.htm 1.19, doc/Develop.htm 1.146, doc/Devices.htm 1.87, doc/Drivers.htm 1.55, doc/Fonts.htm 1.48, doc/Helpers.htm 1.41, doc/History1.htm 1.36, doc/History2.htm 1.36, doc/History3.htm 1.36, doc/History4.htm 1.36, doc/History5.htm 1.38, doc/History6.htm 1.53, doc/History7.htm 1.41, doc/History8.htm 1.24, doc/Htmstyle.htm 1.41, doc/Install.htm 1.52, doc/Issues.htm 1.49, doc/Language.htm 1.92, doc/Lib.htm 1.40, doc/Maintain.htm 1.47, doc/Make.htm 1.87, doc/News.htm 1.163, doc/Projects.htm 1.64, doc/Ps-style.htm 1.34, doc/Ps2epsi.htm 1.39, doc/Ps2pdf.htm 1.79, doc/Psfiles.htm 1.62, doc/Readme.htm 1.67, doc/Release.htm 1.92, doc/Source.htm 1.36, doc/Testing.htm 1.34, doc/Unix-lpr.htm 1.36, doc/Use.htm 1.132, doc/Xfonts.htm 1.36, doc/gs-vms.hlp 1.34, man/dvipdf.1 1.34, man/font2c.1 1.34, man/gs.1 1.35, man/gslp.1 1.34, man/gsnd.1 1.34, man/pdf2dsc.1 1.33, man/pdf2ps.1 1.35, man/pdfopt.1 1.33, man/pf2afm.1 1.34, man/pfbtopfa.1 1.35, man/printafm.1 1.34, man/ps2ascii.1 1.33, man/ps2epsi.1 1.32, man/ps2pdf.1 1.39, man/ps2pdfwr.1 1.38, man/ps2ps.1 1.41, man/wftopfa.1 1.34, src/version.mak 1.82]</p>
</blockquote>

<p><strong><a name="2005-04-15_0613"></a>
2005-04-15 06:13 Igor Melichev</strong></p>
<blockquote>
<pre>
Psfiles.htm : Documanting a recently addad lib file.

DETAILS :

Fixes a Apr 11 05:15:10 PDT 2005 regression (which actually appeared some time ago).

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Psfiles.htm 1.61]</p>
</blockquote>

<p><strong><a name="2005-04-14_1910"></a>
2005-04-14 19:10 Raph Levien</strong></p>
<blockquote>
<pre>
Fix: use identity matrix (rather than scaling by font matrix) to prepare
parameters for CDevProc procedure in pdfwrite code path. Fixes bug
#688033.

DETAILS

The problem in the 688033 test file was that the CDevProc procedure
for the font was getting called with values that were already scaled
down by .001, even though the PLRM3 says "all of the numeric values
are expressed in the glyph coordinate system of the font." (5.9.2,
p. 350)

My proposed fix is to pass in the identity matrix, instead of the font
matrix, to the gs_default_glyph_info procedure. This patch was tested
with both the 688033 test file and the test file from 687681, which was
the bug that motivated the changes to pdfwrite CDevProc handling. The
patched code also passed a full local regression.</pre>
<p>[src/zchar1.c 1.44]</p>
</blockquote>

<p><strong><a name="2005-04-13_2313"></a>
2005-04-13 23:13 Russell Lang</strong></p>
<blockquote>
<pre>
Add additional files to the Windows source distribution.</pre>
<p>[doc/Release.htm 1.91]</p>
</blockquote>

<p><strong><a name="2005-04-13_2004"></a>
2005-04-13 20:04 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix a SEGV when ImageType 4 has MaskColor values outside the range.
Detected with the PDF file from bug 687611 for customer 870.

DETAILS:

The rangecheck error was being thrown with the gx_image_enum allocated
but with many pointers not initialized so the SEGV happened when the
garbage collector tried to enumerate the image_enum.

The fix is simple and low-risk -- free the penum before returning the
rangecheck error.</pre>
<p>[src/gximage4.c 1.6]</p>
</blockquote>

<p><strong><a name="2005-04-12_2253"></a>
2005-04-12 22:53 Ralph Giles</strong></p>
<blockquote>
<pre>
Update changelogs for the 8.51 release.</pre>
<p>[doc/Changes.htm 1.57, doc/Details.htm 1.16, doc/Details8.htm 1.18, doc/History8.htm 1.23, doc/News.htm 1.162]</p>
</blockquote>

<p><strong><a name="2005-04-12_2221"></a>
2005-04-12 22:21 Ralph Giles</strong></p>
<blockquote>
<pre>
Remove a spurious blockquote.</pre>
<p>[doc/News.htm 1.161]</p>
</blockquote>

<p><strong><a name="2005-04-12_2210"></a>
2005-04-12 22:10 Ralph Giles</strong></p>
<blockquote>
<pre>
Propagate release date changes to the other documentation files.</pre>
<p>[doc/API.htm 1.49, doc/Bug-form.htm 1.45, doc/Bug-info.htm 1.45, doc/C-style.htm 1.51, doc/Commprod.htm 1.37, doc/Copying.htm 1.35, doc/DLL.htm 1.39, doc/Deprecated.htm 1.16, doc/Details8.htm 1.17, doc/Develop.htm 1.145, doc/Devices.htm 1.86, doc/Drivers.htm 1.54, doc/Fonts.htm 1.47, doc/Helpers.htm 1.40, doc/History1.htm 1.35, doc/History2.htm 1.35, doc/History3.htm 1.35, doc/History4.htm 1.35, doc/History5.htm 1.37, doc/History6.htm 1.52, doc/History7.htm 1.40, doc/History8.htm 1.22, doc/Htmstyle.htm 1.40, doc/Install.htm 1.51, doc/Issues.htm 1.48, doc/Language.htm 1.91, doc/Lib.htm 1.39, doc/Maintain.htm 1.46, doc/Make.htm 1.86, doc/Projects.htm 1.63, doc/Ps-style.htm 1.33, doc/Ps2epsi.htm 1.38, doc/Ps2pdf.htm 1.78, doc/Psfiles.htm 1.60, doc/Readme.htm 1.66, doc/Release.htm 1.90, doc/Source.htm 1.35, doc/Testing.htm 1.33, doc/Unix-lpr.htm 1.35, doc/Use.htm 1.131, doc/Xfonts.htm 1.35, doc/gs-vms.hlp 1.33, man/dvipdf.1 1.33, man/font2c.1 1.33, man/gs.1 1.34, man/gslp.1 1.33, man/gsnd.1 1.33, man/pdf2dsc.1 1.32, man/pdf2ps.1 1.34, man/pdfopt.1 1.32, man/pf2afm.1 1.33, man/pfbtopfa.1 1.34, man/printafm.1 1.33, man/ps2ascii.1 1.32, man/ps2epsi.1 1.31, man/ps2pdf.1 1.38, man/ps2pdfwr.1 1.37, man/ps2ps.1 1.40, man/wftopfa.1 1.33]</p>
</blockquote>

<p><strong><a name="2005-04-12_2205"></a>
2005-04-12 22:05 Ralph Giles</strong></p>
<blockquote>
<pre>
Update copyright dates and release notes for 8.15.</pre>
<p>[doc/News.htm 1.160, src/dwsetup.rc 1.14, src/gscdef.c 1.53, src/version.mak 1.81, src/winint.mak 1.26]</p>
</blockquote>

<p><strong><a name="2005-04-12_2120"></a>
2005-04-12 21:20 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for SEGV when PreserveHalftoneInfo=true is given as a pdfwrite
option. Bug 688018.

DETAILS:

The initial problem was that the num_comp was not being looked at
when HalftoneType 5 was written and if num_comp was 3, the 4th
element of ht_ids[] was being used (UMR-wise). The solution to
this was to only write the three halftones and to use the 'Green'
halftone (arbitrarily) for Default.

After fixing the SEGV, another problem surfaced because the object
dictionary was not being terminated with the "&gt;&gt;".

Since I suspected that the threshold_halftone writers were also
broken I tested with 258-01.ps and found more problems. This
code was also quite broken. Since the Threshold array is the
stream data for HalftoneType 6 and 16, I changed this a lot to
emit valid PDF.

EXPECTED DIFFERENCES:

None, since we don't set PreserveHalftoneInfo.</pre>
<p>[src/gdevpdfg.c 1.61]</p>
</blockquote>

<p><strong><a name="2005-04-12_0043"></a>
2005-04-12 00:43 Russell Lang</strong></p>
<blockquote>
<pre>
Make the OS/2 device list almost match that of Windows, with the only
differences being IJS and the Windows or OS/2 specific devices.</pre>
<p>[src/os2.mak 1.45]</p>
</blockquote>

<p><strong><a name="2005-04-08_2355"></a>
2005-04-08 23:55 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688019  /configurationerror in --setpagedevice--.  The PDF
interpreter was incorrectly determining the size of the page.

DETAILS:

The test file specifies the following media box:

/MediaBox [ 0 1080 1620 0 ]

The PDF 1.6 specification says the following about media box rectangles:

"3.8.4 Rectangles
Rectangles are used to describe locations on a page and bounding boxes for a
variety of objects, such as fonts. A rectangle is written as an array of four
numbers giving the coordinates of a pair of diagonally opposite corners.
Typically, the array takes the form
[llx lly urx ury]
specifying the lower-left x, lower-left y, upper-right x, and upper-right
coordinates of the rectangle, in that order. The other two corners of the
rectangle are then assumed to have coordinates (llx, ury) and (urx, lly).

Note: Although rectangles are conventionally specified by their lower-left and
upperright corners, it is acceptable to specify any two diagonally opposite
corners. Applications that process PDF should be prepared to normalize such
rectangles in situations where specific corners are required."

The PDF interpreter was assuming that the MediaBox and the CropBox were
in the 'typical' form.  This fix consists of creating a pair of procedures
for converting rectangles into the typical form and then using the
procedures.</pre>
<p>[lib/pdf_main.ps 1.96]</p>
</blockquote>

<p><strong><a name="2005-04-08_2331"></a>
2005-04-08 23:31 Dan Coby</strong></p>
<blockquote>
<pre>
Removed some extra cntl-M at the end of lines.  These caused problems with
the Borland compiler.</pre>
<p>[src/gdevtfax.c 1.10]</p>
</blockquote>

<p><strong><a name="2005-04-07_0912"></a>
2005-04-07 09:12 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : An MSVC8 warning.

DETAILS :

MSVC claims an implicit type case introduced by the last patch.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevdjet.c 1.13]</p>
</blockquote>

<p><strong><a name="2005-04-07_0844"></a>
2005-04-07 08:44 Igor Melichev</strong></p>
<blockquote>
<pre>
Drivers.htm : Improving the documentation about linear color device virtual functions.

DETAILS :

Bug 688016 "Color(s) that define a gradient fill".

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Drivers.htm 1.53]</p>
</blockquote>

<p><strong><a name="2005-04-06_1645"></a>
2005-04-06 16:45 Raph Levien</strong></p>
<blockquote>
<pre>
Conveys input tray selection info (/ManualFeed and /MediaPosition)
setpagedevice requests to PCL devices. Fixes bug #687899.

DETAILS

1. The behavior of MediaPosition is changed significantly. Previously,
   it was ignored (i.e. omitted altogether from setpd merging). Just
   adding it to setpd merging would not be good - if set at the PS
   level, then it would get checked for equality at the C level (by
   zmatchmedia), and fail horribly if it didn't match. In accordance
   with the PLRM3 text (it will be honored provided it can satisfy the
   normal media matching), in the new version a mismatch simply adds a
   .001 penalty to the matching score.

2. The ljet4 device now contains ManualFeed and MediaPosition fields,
   with appropriate putparams logic to set them.

3. The MediaPosition and ManualFeed strings now create an ESC &amp; l H
   init string, according to the following logic. ManualFeed sends
   ESC &amp; l 2 H; if ManualFeed is false (or not set), then MediaPosition
   0 sends ESC &amp; l 5 H, and MediaPosition1 sends ESC &amp; l 1 H. If none
   of these are set, then no extra init string is generated.

   Obviously, for this feature to be useful, there needs to be an
InputAttributes dictionary in effect, for which the PageSize of
positions 0 and 1 match the PageSize of the setpagedevice request.
[Actually, if only ManualFeed is desired, then there is no need to
fiddle with InputAttributes].

   I think these changes bring our media selection more in line with
what Adobe intended, and could be useful for embedded PS projects as
well. I believe the risk of unwanted changes is small, but considering
the delicacy of the setpagedevice logic, review and testing is
warranted.</pre>
<p>[lib/gs_setpd.ps 1.26, src/gdevdjet.c 1.12, src/zmedia2.c 1.18]</p>
</blockquote>

<p><strong><a name="2005-04-05_1937"></a>
2005-04-05 19:37 Ralph Giles</strong></p>
<blockquote>
<pre>
Disable non-fatal jbig2 debug messages unless JBIG2_DEBUG is defined in the
C preprocessor. Previously, all messages were reported in the general gs
debug build, which was distracting.

Also, initialize the global context pointer to NULL. This isn't necessary
in the standard call order, but is extra insurance against an improper free.</pre>
<p>[src/sjbig2.c 1.6]</p>
</blockquote>

<p><strong><a name="2005-04-05_1617"></a>
2005-04-05 16:17 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Fix problems with encodings.

DETAILS :

1. Since we don't want to include numerous encodings in the output,
   opdfread.ps needs Differences to be computed against StandardEncoding.
   gdevpdtw.c is changed to provide a compatibility.

2. Fixed a bug in opdfread.ps when invresing an encoding in which
   a glyph name appears multiple times. Debugged with comparefiles\01_001.pdf .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.62, src/gdevpdtw.c 1.42]</p>
</blockquote>

<p><strong><a name="2005-04-05_1544"></a>
2005-04-05 15:44 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing a viewer's resource memory control, part 3.

DETAILS :

Fixed a memory management problem in pdfwrite :
a reference to a freed object happened due to
font descriptor components are not explicitely released.
Debugged with ps2write comparefiles\01_001.pdf .
This patch provides a minimal change against that,
rather there are other components,
which would be useful to release explicitly.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/devs.mak 1.129, src/gdevpdfu.c 1.76, src/gdevpdtd.c 1.22, src/gdevpdtd.h 1.5, src/gdevpdtw.c 1.41]</p>
</blockquote>

<p><strong><a name="2005-04-05_1129"></a>
2005-04-05 11:29 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Implementing a viewer's resource memory control, part 2.

DETAILS :

1. opdfread.ps :
Defined the new procedure CleanAllResources and called it after each page,
which defines /.ClearResources /All.
Currently it cleans all objects and all non-standard fonts.
Daemons, if they are stored in the Registry, are not cleaned.
(BTW, daemons may contain a reference to an object,
but we believe that currently unresolved daemons never appear
in Registry when ClearAllResources is being called).

2. ps2write.bat : Updated to involve the resource memory control.
See the log message of the previous patch for more information.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.61, lib/ps2write.bat 1.12]</p>
</blockquote>

<p><strong><a name="2005-04-05_0948"></a>
2005-04-05 09:48 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing a viewer's resource memory control, part 1.

DETAILS :

This patch implements a primitive viewer's resource memory control.

A new device parameter MaxViewerMemorySize specifies the number of bytes
available for storing resources in the viewer's memory.
This parameter defined almost for future extensions.

Currently we distinguish two cases only : if the parameter is greater
than 10000000 bytes, no resource control is being applied,
i.e. pdfwrite assumes that the viewer can store all resources of entire document.
Othervise pdfwrite assumes that the viewer can store resources of a single page.

In the second case pdfwrite cleans internal resource caches after each page,
so that any new resource usage will generate another resource instance
in the output PDF file.

To inform the viewer that the resources may be cleaned,
we add a new key to a page contents stream dictionary.
This is our extension to the PDF specification in order to control
the resource management in the viewer.
The new key name is /.CleanResources.
Currently we provide only the value /All. It means that resources
may be cleaned *after* ending the contents stream.

In future on necessity we can split a page contents stream into substreams
and provide a finer control by resource types with providing
more values for the key /.CleanResources.

When the viewer is informed with allowing to clean resources,
it is not obliged to do so. Further resource appearences simply replace
old ones, if they have same resource name.
Actually now this happens only with font and CID font resources.
Other resource instances may persist in the viewer's memory until
the viewer's garbager frees them when they are not
referred from resource tree dictionaries.

The resource control is mainly intended for ps2write.
An implementation of the viewer's side (in opdfread.ps) will be a separate patch.

Note that when a resource control is being applied,
the output document size may increase significantly.

Currently we don't add MaxViewerMemorySize to user's documentation,
because it depends on another undocumenmted parameter ForOPDFRead
through the ResourcesBeforeUsage flag. First we need to take a decision
whether ps2write will become a new Ghostscript device or it stays a tool
represented with a script. The latter gives more flexibility to users
about composing the header procsets of the generated Postscript document.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.109, src/gdevpdfp.c 1.48, src/gdevpdfu.c 1.75, src/gdevpdfx.h 1.115, src/gdevpdtf.c 1.44, src/gdevpdtf.h 1.28, src/gdevpdti.c 1.43, src/gdevpdtt.c 1.102, src/gdevpdtw.c 1.40]</p>
</blockquote>

<p><strong><a name="2005-04-04_2300"></a>
2005-04-04 23:00 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : LZWEncode filtyer template didn't provide a set_defaults method.

DETAILS :

A problem happens when converting comparefiles\PT.ps with ps2write :
an encoded stream could not decode. The reason is that pdf_flate_binary
did not set defaults to LZWE template.

1. Provided a set_defaults method (fixes pdf_flate_binary).

2. Used it instead an old hack in gdevpsdi.c (a minor improvement).

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpsdi.c 1.41, src/slzwe.c 1.4]</p>
</blockquote>

<p><strong><a name="2005-04-04_2033"></a>
2005-04-04 20:33 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Improve the font handling options.

DETAILS :

1. Made the ps2write code be permanent with removing the configuration switch PS2WRITE.

2. Renamed OrderResources into ForOPDFRead for a better reflection of its semantics.

3. Defined new flags for a better code readability :

    ResourcesBeforeUsage
    HavePDFWidths
    HaveStrokeColor
    HaveCFF

They are set when ForOPDFRead is true and used to control particular features.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/ps2write.bat 1.11]</p>
</blockquote>

<p><strong><a name="2005-04-04_2028"></a>
2005-04-04 20:28 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Improve the font handling options.

DETAILS :

1. Made the ps2write code be permanent with removing the configuration switch PS2WRITE.

2. Renamed OrderResources into ForOPDFRead for a better reflection of its semantics.

3. Defined new flags for a better code readability :

    ResourcesBeforeUsage
    HavePDFWidths
    HaveStrokeColor
    HaveCFF

They are set when ForOPDFRead is true and used to control particular features.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.108, src/gdevpdfb.c 1.28, src/gdevpdfd.c 1.59, src/gdevpdfg.h 1.41, src/gdevpdfj.c 1.43, src/gdevpdfp.c 1.47, src/gdevpdfu.c 1.74, src/gdevpdfx.h 1.114, src/gdevpdtb.c 1.35, src/gdevpdtt.c 1.101, src/gdevpdtw.c 1.39, src/gdevpsdf.h 1.32, src/gsshade.c 1.15, src/gx.h 1.44, src/gxdevcli.h 1.37, src/gxshade6.c 1.93]</p>
</blockquote>

<p><strong><a name="2005-04-04_1620"></a>
2005-04-04 16:20 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Improve the font handling options.

DETAILS :

1. The option HaveCIDSystem is propagated from ps2write to pdfwrite.
   It is still not implemented.

2. The option HaveTrueTypes is added for controlling the availability of TrueTypes.

3. The option PSVersion is removed due to low usefullness after (2).

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Ps2pdf.htm 1.77, src/gdevpdfp.c 1.46, src/gdevpdtt.c 1.100, src/gdevpsdf.h 1.31]</p>
</blockquote>

<p><strong><a name="2005-04-04_1438"></a>
2005-04-04 14:38 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : When generating a PDF 1.2, convert PSLL3 images and shadings into PSLL2 images

DETAILS :

This change propagates recent code from ps2write to pdfwrite.
The old code converts PSLL3 images and shadings into lots of rectangles.
The new code does into an imagemask with a pattern color
(when PatternImagemask == true),
or into a clipped image (when PatternImagemask == false, default).
Note that the latter misses the mask interpolation.

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Ps2pdf.htm 1.76, src/gdevpdfd.c 1.58, src/gdevpdfi.c 1.70, src/gdevpdfj.c 1.42]</p>
</blockquote>

<p><strong><a name="2005-04-04_1153"></a>
2005-04-04 11:53 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Convert shadings into a clipped image (continued 7).

DETAILS :

1. Check for empty bbox before pdf_setup_masked_image_converter,
   because memory devices with empty bbox fail.

2. Create a copy of a path_intersection before scaling it,
   because it may be shared.

3. Fixed the client name gdev_pdf_fill_path when calling some path functions.

Debugged with 478-01.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfd.c 1.57]</p>
</blockquote>

<p><strong><a name="2005-04-04_1042"></a>
2005-04-04 10:42 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Don't use Indexed with a spacial base color space generating a PDF 1.2.

DETAILS :

1. Indexed over a special base color space is a PDF 1.3 feature.

2. Improving the last patch comparing CompatibilityLevel with 1.3 for making
   such checks more uniform through code.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfc.c 1.52, src/gdevpdfu.c 1.73]</p>
</blockquote>

<p><strong><a name="2005-04-04_1014"></a>
2005-04-04 10:14 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Don't use FlateDecode generating a PDF 1.2.

DETAILS :

FlateDecode is a PDF 1.3 feature.
The change is important for ps2write.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfu.c 1.72]</p>
</blockquote>

<p><strong><a name="2005-04-04_1011"></a>
2005-04-04 10:11 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Improving a debug printing.

DETAILS :

1. The errorhandler should print -mark- to simplify the analysis.

2. Removing an unintended 'pstack' that caused HP LaserJet 1320 to discontinue the interpretation.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.60]</p>
</blockquote>

<p><strong><a name="2005-04-04_0932"></a>
2005-04-04 09:32 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Convert shadings into a clipped image (continued 6).

DETAILS :

Fixed a unitialized variable.
Debugged with 468-01-fixed.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfd.c 1.56]</p>
</blockquote>

<p><strong><a name="2005-04-04_0853"></a>
2005-04-04 08:53 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Dropping the code !PDFW_DELAYED_STREAMS.

DETAILS :

PDFW_DELAYED_STREAMS now becomes a permanent feature.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.107, src/gdevpdfu.c 1.71, src/gdevpdtb.c 1.34, src/gdevpdtd.c 1.21, src/gdevpdtf.c 1.43, src/gdevpdti.c 1.42, src/gdevpdtw.c 1.38, src/gdevpdfx.h 1.113, src/gdevpdtb.h 1.11, src/gdevpdtw.h 1.6]</p>
</blockquote>

<p><strong><a name="2005-04-03_1833"></a>
2005-04-03 18:33 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Convert shadings into a clipped image (continued 5).

DETAILS :

1. Fixed the problem with
&lt;&lt;/PatternImagemask false /MaxClipPathSize 12000 /MaxShadingBitmapSize 100000000&gt;&gt;,
which was mentioned in the last log message.

The shading and masked image conversion now looks complete.

2. Fixed a minor problem with 'const'.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfd.c 1.55]</p>
</blockquote>

<p><strong><a name="2005-04-01_1742"></a>
2005-04-01 17:42 stefan</strong></p>
<blockquote>
<pre>
Fixed null pointer access in pdfwrite.

pdf_put_uncolored_pattern() sets pres to null when it selects a solid color.
It's clients must check for this null as it indicates a
done writing the pattern state.</pre>
<p>[src/gdevpdfg.c 1.60]</p>
</blockquote>

<p><strong><a name="2005-03-31_2046"></a>
2005-03-31 20:46 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Convert shadings into a clipped image (continued 4).

DETAILS :

Implement a downsampling when converting a shading into bitmap.

1. A new device parameter MaxShadingBitmapSize controls the downsampling.
   Shadings, which give a (uncompressed) bitmap over the specified size,
   will be scaled down.

2. The scaling algorithm goes to gdevpdfd.c .
   It appears pretty tricky because we need to setup a device with a smaller
   resolution than the target device. Due to that we need to scale paths and colors,
   which are represented in the device space. The function scale_path works for it.

3. The scaling creates a local copy of a device color (which handles the shading)
   and scales the color. Since we can't access further spatial transformations of the color,
   we apply some unusual operation : multiply matrices in the reverse order
   than usual 'concat' does. This makes some useful equations to be soluble
   due to the offset is being scaled as well.

4. A code portion was copied from gx_default_fill_path
   (see comment in code).
   We're unhappy about uncomfortable code structurization.

5. path_scale is implemented with floating point for a debug purpose,
   but in production we use only integers being a power of 2.

6. There is a problem with
   &lt;&lt;/PatternImagemask false /MaxClipPathSize 12000 /MaxShadingBitmapSize 100000000&gt;&gt;
   The problem happens when dividing the scaled bitmap in smaller ones
   due to clip path overflow. This mode to be debugged separately.
   For now set either smaller bitmap size of bigger clip path size.
   Default settings work fine for most cases.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/devs.mak 1.128, src/gdevpdf.c 1.106, src/gdevpdfd.c 1.54, src/gdevpdfp.c 1.45, src/gdevpdfx.h 1.112, src/spprint.c 1.7]</p>
</blockquote>

<p><strong><a name="2005-03-31_0612"></a>
2005-03-31 06:12 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 688011 Segment fault with -r150 and the mswindll device.

DETAILS:

The routine gx_image_cached_char creates a mono bit memory device with
the memory structure pointer set to 0.  It then passes this device to
win_render_char which seg faults when it tries to allocate memory for
a bit map.

The fix consists of using the parent device's memory structure for the
mono bit memory device.</pre>
<p>[src/gxccache.c 1.33]</p>
</blockquote>

<p><strong><a name="2005-03-31_0234"></a>
2005-03-31 02:34 Jack Moffitt</strong></p>
<blockquote>
<pre>
Fix bug where raster lookups failed on new files causing the regression
tool to stop.  Also, skip processing for files without previous rasters
to compare.</pre>
<p>[toolbin/tests/gscheck_pdfwrite.py 1.25, toolbin/tests/gscheck_raster.py 1.15]</p>
</blockquote>

<p><strong><a name="2005-03-30_1633"></a>
2005-03-30 16:33 Raph Levien</strong></p>
<blockquote>
<pre>
Add a discussion of the libjpeg6b component id issue to Issues.htm,
pointing people to a patch. Resolves bug #686980.</pre>
<p>[doc/Issues.htm 1.47]</p>
</blockquote>

<p><strong><a name="2005-03-30_1406"></a>
2005-03-30 14:06 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Convert type 3,4 image into a clipped image (continued 3).

DETAILS :

Apply loseless filters for images smaller than 500 Kbytes
(Useful for images like 468-01-fixed.ps).

We would like to apply the compression chooser.
Dalaying it until users request so.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfb.c 1.27]</p>
</blockquote>

<p><strong><a name="2005-03-30_1343"></a>
2005-03-30 13:43 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Convert type 3,4 image into a clipped image (continued 2).

DETAILS :

1. Optimisation: Merge equal lines while converting a mask into clip path.
2. Bug : When the mask has a bigger resolution, scale up the data image and the mask
   to allow the mask to rasterize in the natural resolution
   (debugged with 468-01-fixed.ps).

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfd.c 1.53, src/gdevpdfi.c 1.69]</p>
</blockquote>

<p><strong><a name="2005-03-30_1248"></a>
2005-03-30 12:48 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Convert type 3,4 image into a clipped image (continued).

DETAILS :

1. Improved the prototype of pdf_setup_masked_image_converter.
2. Renamed 'autorelease' into 'write_on_close' for a better reflection of its meaning.
3. Renamed gx_device_pdf::image_mask_matrix into gx_device_pdf::converting_image_matrix.
3. Type 3 images now convert with no scaling to the device space (int pdf_begin_typed_image).
   The mask image of the typoe 3 image is scaled to the size of the data image.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfd.c 1.52, src/gdevpdfi.c 1.68, src/gdevpdfx.h 1.111]</p>
</blockquote>

<p><strong><a name="2005-03-29_2133"></a>
2005-03-29 21:33 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Convert type 4 image into a clipped image.

DETAILS :

Since HP LaserJet 1320 unsatisfactory handles imagemask with a pattern color,
now we implement an alternative method for type 4 imege representation.
The method creates a clipping path and an image rendered with it.
See http://ghostscript.com/pipermail/gs-cvs/2005-March/005356.html
for additional details.

1. Fixed a typoe in lcvd_get_clipping_box_from_tadget.
   The new correct name is lcvd_get_clipping_box_from_target.
2. Fixed choices of allocators in pdf_setup_masked_image_converter.
3. pdf_image_cvd_enum_procs, pdf_image_end_image_cvd work for cleaning up temporary devices
   after a type 4 image has been processed with pdf_setup_masked_image_converter.
4. Added a branch into pdf_begin_typed_image to work with
   pdf_setup_masked_image_converter when
   pdev-&gt;OrderResources &amp;&amp; !pdev-&gt;PatternImagemask.

We still use OrderResources as a general switch for the ps2write mode.
To be improved later.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfd.c 1.51, src/gdevpdfi.c 1.67]</p>
</blockquote>

<p><strong><a name="2005-03-29_1731"></a>
2005-03-29 17:31 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Convert type 3 image into a clipped image.

DETAILS :

Since HP LaserJet 1320 unsatisfactory handles imagemask with a pattern color,
now we implement an alternative method for type 3 imege representation.
The method creates a clipping path and an image rendered with it.
See http://ghostscript.com/pipermail/gs-cvs/2005-March/005356.html
for additional details.

1. Moved pdf_lcvd_t to the pdfwrite scope gdevpdfx.h .
2. pdf_lcvd_t::mask is being allocated dymacially for a compatibility to gx_image3_end_image.
3. Made a garbager discriptor for pdf_lcvd_t since it is allocated dynamically
   for a compatibility with gx_image3_end_image.
4. Applied pdf_put_matrix for writing matrices.
5. Renamed dump_image into pdf_dump_converted_image.
6. Replaced gs_point pdf_lcvd_t::p with gs_matrix pdf_lcvd_t::m.
7. Factored out pdf_setup_masked_image_converter and pdf_remove_masked_image_converter.
8. Added branches to pdf_image3_make_mid and pdf_image3_make_mcde
   to work with pdf_setup_masked_image_converter.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/devs.mak 1.127, src/gdevpdfd.c 1.50, src/gdevpdfi.c 1.66, src/gdevpdfx.h 1.110]</p>
</blockquote>

<p><strong><a name="2005-03-29_1426"></a>
2005-03-29 14:26 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Propagate return codes truoug gx_image3_end_image.

DETAILS :

The change is important for ps2write.
We don't consider it to te a part of the ps2write project,
because it is generallly useful.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gximage3.c 1.15]</p>
</blockquote>

<p><strong><a name="2005-03-28_1403"></a>
2005-03-28 14:03 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Convert shadings into a clipped image.

DETAILS :

Since HP LaserJet 1320 unsatisfactory handles imagemask with a pattern color,
now we implement an alternative method for shadings representation.
The method creates a clipping path and an image rendered with it.

The new device parameter PatternImagemask specifies whether
imagemask with a pattern color is allowed. Now it defaults to false.
When false, a conversion to a clipped image happens.

The new device parameter MaxClipPathSize specifies a restriction
for clip path segments. When a mask converts into a too big clipping path,
the image and the mask are being subdivided into smaller chunks.

Minor change : Moved the flag OrderResources to gx_device_pdf_s
(it had a too general scope).

A conversion of Type 3 images into clipped images will be a separate patch.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.105, src/gdevpdfd.c 1.49, src/gdevpdfp.c 1.44, src/gdevpdfx.h 1.109, src/gdevpsdf.h 1.30]</p>
</blockquote>

<p><strong><a name="2005-03-25_2126"></a>
2005-03-25 21:26 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : A misprint in option list.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/ps2write.bat 1.10]</p>
</blockquote>

<p><strong><a name="2005-03-25_2013"></a>
2005-03-25 20:13 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Don't set a pattern space when it is already set (continued 2).

DETAILS :

The previous patch caused a problem with 3d party interpreters.

This patch provides a compatibility to gs3.70 and HP LaserJet 1320.
Since we duplicate color commands for stroking and non-stroking colors,
a dup of 'setpattern' caused a problem, because it tried
to setup a pattern over a pattern.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.59]</p>
</blockquote>

<p><strong><a name="2005-03-25_1931"></a>
2005-03-25 19:31 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Don't set a pattern space when it is already set (continued).

DETAILS :

The previous patch caused a problem with some files,
which set a non-stroke color first.

This patch provides a compatibility to gs3.70 .
Since we duplicate color commands for stroking and non-stroking colors,
a dup of 'setpattern' caused a problem, because it tried
to setup a pattern over a pattern.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.58]</p>
</blockquote>

<p><strong><a name="2005-03-25_1800"></a>
2005-03-25 18:00 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Don't set a pattern space when it is already set.

DETAILS :

This patch provides a compatibility to gs3.70 .
Since we duplicate color commands for stroking and non-stroking colors,
a dup of 'setpattern' caused a problem, because it tried
to setup a pattern over a pattern.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.57]</p>
</blockquote>

<p><strong><a name="2005-03-25_1738"></a>
2005-03-25 17:38 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Implementing the RotatePages and the FitPages options (continued).

DETAILS :

.HWMargins caused a problem with 3d party interpreters.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.56]</p>
</blockquote>

<p><strong><a name="2005-03-25_1307"></a>
2005-03-25 13:07 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Create contents streams for empty pages.

DETAILS :

opdfread can't handle pages with no contents due to object ordering.

Minor change : propagated return codes from pdf_open_contents in pdf_close_contents.
This minor change also affects pdfwrite.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.104, src/gdevpdfu.c 1.70]</p>
</blockquote>

<p><strong><a name="2005-03-25_1113"></a>
2005-03-25 11:13 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Work around HP LaserJet 1320 bugs (continued).

DETAILS :

A previous patch fails when no filters applied.
This one fixes that.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.55]</p>
</blockquote>

<p><strong><a name="2005-03-25_1011"></a>
2005-03-25 10:11 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Improve the handling of encodings.

DETAILS :

1. Fixed a bug in GetMacRomanEncodingInverse.
2. Dropped some unused encodings.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.54, lib/ps2write.bat 1.9]</p>
</blockquote>

<p><strong><a name="2005-03-25_0822"></a>
2005-03-25 08:22 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Implementing the RotatePages and the FitPages options.

DETAILS :

This is a further improvement of the last patch.

When RotatePages is defined in the target device,
the opdfread procset rotates pages for a better fitting
into the page size.

When FitPages is defined in the target device,
the opdfread procset scales pages for a better fitting
into the page size.

Note thet if both options are specified,
the procset first rotates and then scales a page.

No rotations happen if a page fits with no rotation or
if a rotation doesn't improve the fitting.

Rather the RotatePages option looks similar to
the distiller parameter AutoRotatePages,
it affects a PS interpreter in the target printer
rather than the distiller in the ps2write host.

Thge implementation accounts /.HWMargins,
which is Ghostscript specific feature.
It is useful when the printer embeds Ghostscript.

Since now the options may appear either in systemdict,
or in userdict, or in globaldict of the printer.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.53]</p>
</blockquote>

<p><strong><a name="2005-03-24_2137"></a>
2005-03-24 21:37 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Implementing the RotatePages option.

DETAILS :

When RotatePages is defined in the target device,
the opdfread procset rotates pages for a better fitting
into the page size.

Rather the RotatePages option looks similar to
the distiller parameter AutoRotatePages,
it affects a PS interpreter in the target printer
rather than the distiller in the ps2write host.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.52]</p>
</blockquote>

<p><strong><a name="2005-03-24_1934"></a>
2005-03-24 19:34 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Fixing problems with TrueType fonts.

DETAILS :

1. The old code tried to position a non-positionable file reading cmap subtables.
The new code read cmap subtables in the order of the file.

2. 'sfnts' array got an exctra element 'true' causing 'invalidfont' with 3d party interpreters.

3. Improved the debug printout of a Type 42 font dictionary.
The old code printed too big strings causing a problem with CPSI.

Debugged with comparefiles\Bug687597.ps and HP LaserJet 1320.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.51]</p>
</blockquote>

<p><strong><a name="2005-03-23_1945"></a>
2005-03-23 19:45 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687434, 687835, and 687982.  These reports are  /vmerror in
--eofill-- or --fill--.  They are caused by the pattern accumulation
device trying to allocate excessively large buffers.

DETAILS:

The pattern accumulation device allocates an image buffer for holding
patterns.  The size of the pattern buffer (prior to this fix) is based
upon the bounding box specified with the pattern.  For the problem files,
the pattern bounding boxes are excessively large.  The vmerrors are the
result.

This fix consists of comparing the pattern bounding boxes to the size
of the page to be imaged.  (All of the files have bounding boxes which
are much larger than the page.)  We determine which part of the pattern
will actually be used and limit the pattern accumulation to the area
which is needed.  Most of this fix consists of stepping the pattern to
check the intersection between the pattern and the page.  The major
complication in this process is simply due to the arbitrary transform
matrix which can be applied between the coordinate space used to define
the pattern and the coordinate frame of the output page.

This fix significantly reduces the buffer sizes required for these
test files.  However it is still possible for a pattern buffer to
exceed available memory.  It is possible to create a solution using some
version of a band list.  However my estimate on that task keeps getting
larger as I look at the details.</pre>
<p>[src/gsptype1.c 1.21]</p>
</blockquote>

<p><strong><a name="2005-03-23_1840"></a>
2005-03-23 18:40 Raph Levien</strong></p>
<blockquote>
<pre>
Set PJL RENDERMODE to GRAYSCALE or COLOR depending on whether device is
pxlmono or pxlcolor, respectively. Fixes bug #687990. Thanks to Jonathan
Kamens for the patch.</pre>
<p>[src/gdevpxut.c 1.6]</p>
</blockquote>

<p><strong><a name="2005-03-23_1741"></a>
2005-03-23 17:41 Ralph Giles</strong></p>
<blockquote>
<pre>
Add the missing ijs-config.1 manpage so our distributed ijs tree
builds cleanly as a separate package. Include other sync changes
to the 0.35 release. Closes bug 687991.</pre>
<p>[ijs/Makefile.am 1.2, ijs/README 1.3, ijs/configure.ac 1.2, ijs/ijs-config.1 1.2, ijs/ijs_spec.pdf 1.2]</p>
</blockquote>

<p><strong><a name="2005-03-18_1952"></a>
2005-03-18 19:52 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Don't apply ASCII85Encode to page contents streams which appear to be already ASCII (continued 2).

DETAILS :

Last two patches are incomplete - font streams were not ASCII encoded.
This one fixes that (All 3 to be applied).

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfu.c 1.69, src/gdevpdfx.h 1.108, src/gdevpdti.c 1.41]</p>
</blockquote>

<p><strong><a name="2005-03-18_1748"></a>
2005-03-18 17:48 Ralph Giles</strong></p>
<blockquote>
<pre>
Clean up a remaining link to the New-user documentation.</pre>
<p>[doc/Bug-info.htm 1.44]</p>
</blockquote>

<p><strong><a name="2005-03-18_1738"></a>
2005-03-18 17:38 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Don't apply ASCII85Encode to page contents streams which appear to be already ASCII (continued).

DETAILS :

The last patch was buggy. This one fixes that (both to be applied).

It's a bug introduced when implementing PDFW_DELAYED_STREAMS.
Restoring the old behavior now.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfu.c 1.68]</p>
</blockquote>

<p><strong><a name="2005-03-18_1728"></a>
2005-03-18 17:28 Ralph Giles</strong></p>
<blockquote>
<pre>
Link to Commprod for the difference between GPL and AFPL Ghostscript.</pre>
<p>[doc/Readme.htm 1.65]</p>
</blockquote>

<p><strong><a name="2005-03-18_1726"></a>
2005-03-18 17:26 Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the out-of-date 'new user' documentation. Most of this is covered by
the readme and the website.</pre>
<p>[doc/Fonts.htm 1.46, doc/Helpers.htm 1.39, doc/Install.htm 1.50, doc/New-user.htm 1.56, doc/Readme.htm 1.64, doc/Use.htm 1.130]</p>
</blockquote>

<p><strong><a name="2005-03-18_1715"></a>
2005-03-18 17:15 Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the obsolete Tester.htm documentation file.</pre>
<p>[doc/Readme.htm 1.63, doc/Tester.htm 1.35]</p>
</blockquote>

<p><strong><a name="2005-03-18_1615"></a>
2005-03-18 16:15 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Work around HP LaserJet 1320 bugs.

DETAILS :

HP LaserJet 1320 appears to have problems with streams -
see comments in code.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.50]</p>
</blockquote>

<p><strong><a name="2005-03-18_1448"></a>
2005-03-18 14:48 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Don't apply ASCII85Encode to page contents streams which appear to be already ASCII.

DETAILS :

It's a bug introduced when implementing PDFW_DELAYED_STREAMS.
Restoring the old behavior now.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfu.c 1.67]</p>
</blockquote>

<p><strong><a name="2005-03-18_1215"></a>
2005-03-18 12:15 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Improve the error handler.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.49]</p>
</blockquote>

<p><strong><a name="2005-03-18_1121"></a>
2005-03-18 11:21 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Add EndOfTask character at the end of a task.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/ps2write.bat 1.8]</p>
</blockquote>

<p><strong><a name="2005-03-18_1036"></a>
2005-03-18 10:36 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Add EndOfTask character at the end of a task.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/EndOfTask.ps 1.1, lib/ps2write.bat 1.7]</p>
</blockquote>

<p><strong><a name="2005-03-17_1545"></a>
2005-03-17 15:45 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Don't write empty elements of Subrs.

DETAILS :

gdevpsf1.c created an incorrect Type 1 font file due to
'readstring' causes a rangecheck with empty string.
Skipping empty elements of Subrs against that.

An empty element of Subr isn't a correct code since
it must contain at least a 'ret' instruction.
Thus empty element actually means "no element".

EXPECTED DIFFERENCES :

None,
because normally pdfwrite doesan't call this code portion.</pre>
<p>[src/gdevpsf1.c 1.21]</p>
</blockquote>

<p><strong><a name="2005-03-17_1308"></a>
2005-03-17 13:08 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Building GS with MSVC, use a proper CRTL version (debug|nodebug).

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/msvc32.mak 1.71]</p>
</blockquote>

<p><strong><a name="2005-03-17_1306"></a>
2005-03-17 13:06 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Write pages in the proper order.

DETAILS :

Bug 687923 "New ps2write inverts the page order".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.103, src/gdevpdfu.c 1.66, src/gdevpdfx.h 1.107]</p>
</blockquote>

<p><strong><a name="2005-03-17_1052"></a>
2005-03-17 10:52 Igor Melichev</strong></p>
<blockquote>
<pre>
fuzzy.c : Fixing the error message format.</pre>
<p>[toolbin/tests/fuzzy.c 1.18]</p>
</blockquote>

<p><strong><a name="2005-03-17_1045"></a>
2005-03-17 10:45 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Fixing an initial matrix bug.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.48]</p>
</blockquote>

<p><strong><a name="2005-03-16_2304"></a>
2005-03-16 23:04 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Keep the operands of knownoget_safe pseudo-operator on the stack to ensure
proper restoration of the operands when it fails. Correctly adjust the stack
in the caller when knownoget_safe fails.
Fix bug 687473 from the customer 780.</pre>
<p>[lib/pdf_main.ps 1.95]</p>
</blockquote>

<p><strong><a name="2005-03-16_1457"></a>
2005-03-16 14:57 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : MSVC8 warning.

DETAILS :

This change is algorythmically equivalent.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/sjpx.c 1.12, src/spdiff.c 1.9]</p>
</blockquote>

<p><strong><a name="2005-03-16_1227"></a>
2005-03-16 12:27 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Coding style and MSVC8 warning in gsciemap.c .

DETAILS :

This change is algorythmically equivalent.

The old code applies macros to generate 3 expressions like this :

(8 &gt;= ((((1 &lt;&lt; 2) * 8 - 9 - 2) &lt; (10)) ? ((1 &lt;&lt; 2) * 8 - 9 - 2) :
(10))) ? (((pcrd-&gt;caches.EncodeABC[0].fixeds.ints.values)
[((tabc[0]) &gt;&gt; ((((1 &lt;&lt; 2) * 8 - 9 - 2) &lt; (10)) ? ((1 &lt;&lt; 2) * 8 - 9 - 2) : (10)))] +
(frac)(((long)((pcrd-&gt;caches.EncodeABC[0].fixeds.ints.values)
[((tabc[0]) &gt;&gt; ((((1 &lt;&lt; 2) * 8 - 9 - 2) &lt; (10)) ? ((1 &lt;&lt; 2) * 8 - 9 - 2) : (10))) + 1] -
(pcrd-&gt;caches.EncodeABC[0].fixeds.ints.values)[((tabc[0]) &gt;&gt; ((((1 &lt;&lt; 2) * 8 - 9 - 2) &lt; (10)) ?
((1 &lt;&lt; 2) * 8 - 9 - 2) : (10)))]) * ((int)(tabc[0]) &amp; ((1 &lt;&lt; ((((1 &lt;&lt; 2) * 8 - 9 - 2) &lt; (10)) ?
((1 &lt;&lt; 2) * 8 - 9 - 2) : (10))) - 1))) &gt;&gt; (((((1 &lt;&lt; 2) * 8 - 9 - 2) &lt; (10)) ? ((1 &lt;&lt; 2) * 8 - 9 - 2) :
(10))))) &lt;&lt; (8 - ((((1 &lt;&lt; 2) * 8 - 9 - 2) &lt; (10)) ? ((1 &lt;&lt; 2) * 8 - 9 - 2) : (10)))) :
(((pcrd-&gt;caches.EncodeABC[0].fixeds.ints.values)
[((tabc[0]) &gt;&gt; ((((1 &lt;&lt; 2) * 8 - 9 - 2) &lt; (10)) ? ((1 &lt;&lt; 2) * 8 - 9 - 2) : (10)))] +
(frac)(((long)((pcrd-&gt;caches.EncodeABC[0].fixeds.ints.values)
[((tabc[0]) &gt;&gt; ((((1 &lt;&lt; 2) * 8 - 9 - 2) &lt; (10)) ? ((1 &lt;&lt; 2) * 8 - 9 - 2) : (10))) + 1] -
(pcrd-&gt;caches.EncodeABC[0].fixeds.ints.values)
[((tabc[0]) &gt;&gt; ((((1 &lt;&lt; 2) * 8 - 9 - 2) &lt; (10)) ? ((1 &lt;&lt; 2) * 8 - 9 - 2) : (10)))]) *
((int)(tabc[0]) &amp; ((1 &lt;&lt; ((((1 &lt;&lt; 2) * 8 - 9 - 2) &lt; (10)) ? ((1 &lt;&lt; 2) * 8 - 9 - 2) :
(10))) - 1))) &gt;&gt; -(8 - ((((1 &lt;&lt; 2) * 8 - 9 - 2) &lt; (10)) ? ((1 &lt;&lt; 2) * 8 - 9 - 2) :
(10))))) &gt;&gt; (((((1 &lt;&lt; 2) * 8 - 9 - 2) &lt; (10)) ? ((1 &lt;&lt; 2) * 8 - 9 - 2) : (10))))

(the other 2 ones replace "[0]" with "[1]" and "[2]").

We gues that MSVC8 is not enough intelligent to prove that the static (sub)expression
((((1 &lt;&lt; 2) * 8 - 9 - 2) &lt; (10)) ? ((1 &lt;&lt; 2) * 8 - 9 - 2) : (10))
is always within the interval [0, 10] and therefore it claims a possible error.
This patch replaces it with a dynamic constant 's',
so that the warning doesn't appear.
In any case we believe that the huge expression above isn't a
good coding style since humans need to read the code sometimes.

For ones who wish a further simplification,
we're happy to bring some useful definitions :

XXX = ((((1 &lt;&lt; 2) * 8 - 9 - 2) &lt; (10)) ? ((1 &lt;&lt; 2) * 8 - 9 - 2) : (10))
YYY = ((int)(tabc[0]) &amp; ((1 &lt;&lt; XXX) - 1))
ZZZ = ((tabc[0]) &gt;&gt; XXX)
TTT = (pcrd-&gt;caches.EncodeABC[0].fixeds.ints.values)

Using them the expression reduces to :

(8 &gt;= XXX) ? ((TTT[ZZZ] + (frac)(((long)(TTT[ZZZ + 1] - TTT[ZZZ]) * YYY) &gt;&gt; (XXX))) &lt;&lt; (8 - XXX))
           : ((TTT[ZZZ] + (frac)(((long)(TTT[ZZZ + 1] - TTT[ZZZ]) * YYY) &gt;&gt; (XXX))) &gt;&gt; -(8 - XXX))

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gsciemap.c 1.16]</p>
</blockquote>

<p><strong><a name="2005-03-16_0947"></a>
2005-03-16 09:47 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Don't drop extension glyphs writing an embedded font.

DETAILS :

The pdf interpreter creates glyph copies with unique_name
to resolve glyph name conflicts while converting Widths to Metrics.
Then pdfwrite drops the extended glyph names (made with unique_name),
to aviod font expansion in the output PDF.

We do not wont to port unique_name and related stuff
to opdfread.ps in order to simplify the latter.
Therefore the drop_extension_glyphs and related things must not be called
when pdfwrite works in the ps2write mode.

We still use OrderResources as a general switch for the ps2write mode.
This should be improved later.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtb.c 1.33, src/gdevpdtw.c 1.37]</p>
</blockquote>

<p><strong><a name="2005-03-16_0938"></a>
2005-03-16 09:38 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Improving the processing of True Type encodings.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.47]</p>
</blockquote>

<p><strong><a name="2005-03-15_1414"></a>
2005-03-15 14:14 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Fit a page with MediaBox.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.46]</p>
</blockquote>

<p><strong><a name="2005-03-15_1136"></a>
2005-03-15 11:36 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc warnings.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtc.c 1.41, src/gstype42.c 1.51, src/gxhintn.c 1.58, src/gxshade6.c 1.92]</p>
</blockquote>

<p><strong><a name="2005-03-15_1121"></a>
2005-03-15 11:21 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Fixing minor problems with text placing.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.45]</p>
</blockquote>

<p><strong><a name="2005-03-14_1808"></a>
2005-03-14 18:08 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687696 PDF 1.4 transparency can use large chunks of memory.
Prior to this fix the handling of PDF 1.4 transparency features used one
or more full size image buffers.  With high resolutions and large images,
these buffers can be multiple gigabytes.  As a result, we were not able
to handle these files.

DETAILS:

PDF 1.4 transparency is handled by a device which is inserted into the
device chain.  Prior to this fix, this device was via the 'device filter'
logic.  With this fix, the PDF 1.4 transparency device is inserted via
the compositor device mechanism.  This change was made since the device
filter logic did not allow other devices to control where the PDF 1.4
transparency device is placed in the device chain.  There is a device
proc which implements the create compositor action.  This allows more
control than the device filter logic.

The first step in this fix was to convert the PDF 1.4 transparency
logic to use the create compositor mechanism.  For situations in which
the clist logic is not being used, the PDF 1.4 transparency device is
created and placed in the same location in the device chain as it was put
by the device filter logic.  In this situation, there is very little
logical difference in the operation of the PDF 1.4 transparency.

For situations in which the clist is used, there are two PDF 1.4
compositing devices created.  There is one device before the clist when the
clist is being written.  There is a second device after the clist when
the clist data is being read.

The device before the clist serves two purposes, it provides a means for
implementing the process color model for the PDF 1.4 compositing.  (The
PDF 1.4 compositing may used a different process color model from the output
device.)  Thus this device has color_info and encode/decode color procs
which match the PDF 1.4 blending color space.  This device also ensures
that the PDF 1.4 blending parameters (blend mode, shape, opacity, etc.)
are passed through the clist to the second PDF 1.4 device.

The second PDF 1.4 device (the one when the clist is being read) is the
same PDF 1.4 compositing device which is used when the clist is not being
used.  This is the device which does the blending operations.  Since the
device is after the clist, the buffers that it needs are the size of a
single band instead of the full page.  This device is placed prior to
the memory device which is used for drawing the raster data.

Two changes were made in the 'create compositor' logic.  The imager state
was being passed as a 'const'.  It is no longer const since the PDF 1.4
transparency compositing changes the cmap procs in the imager state to not
use transfer functions during color calculations.  The transfer functions
are applied later (and the cmap procs restored) when blended image data
is output from the PDF 1.4 compositing buffers.

The second change to the create compositor logic is the addition of two
more procedures to the gs_composite_type_t.procs list.  These procedures
are used by the clist device create compositor routines.  The first
is used to create the PDF 1.4 clist write device.  The second saves and
restores the color_info field for the clist device (see below).

Default versions of the added gs_composite_t.procs were also added for
use by the other compositor devices.  The defaults are no-ops.

The clist logic has a few changes.  Since the PDF 1.4 compositor device
may use a different process color model from the output device, the number
of colorants and the depth (bits per pixel) can be different for the PDF
1.4 compositor and the output device.  Thus changes were needed in parts
of the clist logic which assumed that these items were constant during the
processing of the clist.  An extra field was added to the device halftone
to indicate the number of colorants in effect when the device halftone was
created.  This data is included when the halftone is serialized for the
clist.  (Fortunately the PDF 1.4 compositing does not use halftones or
transfer functions.  So the device halftones and transfer functions do
not need to be changed when the PDF 1.4 compositor is installed.)

As previously mentioned the create compositor procedures for the clist
writer and reader now call a couple of compositor specific routines.  These
allow the compositor to implement actions related to the clist device.
(The PDF 1.4 compositor uses these routines to create the 'write clist'
PDF 1.4 compositor and to save and restore the clist device color info.
The color_info field of the clist device is changed to match the process
color model of the PDF 1.4 compositor while the PDF 1.4 compositor is active.

A additional device parameter (PageUsesTransparency) was added.  This
parameter is sent by the PDF interpreter to indicate if PDF 1.4 transparency
will be used on the page.  The banding/no banding decision and the size
of a band includes an estimate of the size of the PDF 1.4 blending buffers
if this parameter is true.  Note:  The estimate of the size of the
blending buffers is not exact since this calculation is made before the
actual number of buffers, the number of blending colors and alpha channels
is known.  Fixed values are used for the estimated buffer size.  This is
still much better than the pervious situation, in which the only the
output raster size was being used.  The blending buffers can easily be
30 or more times larger than the raster buffer.

This fix also involves the removal of the PDF 1.4 'marking' devices.
The marking devices were used to actually implement the pixel marking.
The marking devices were created at the start of each high level drawing
operation and deleted after the completion of the operation.  The marking
device action has been merged into the primary PDF 1.4 compositing device.
This change eliminates some device creation overhead.  The overhead would
have been worse since most information about high level drawing operations
is not passed through the clist.  As a result it would have been necessary
to create marking devices for each low level operations.

The following issues are not included in this fix but need to be considered.

1)  The device filter logic is no longer used.  It may be desired to remove
this logic.

2)  We currently have a 'create_compositor' device proc.  However there
is not a 'delete_compositor' device proc.  As a result, compositor devices
can stay in the device chain even when they are no longer needed.  The
current fix turns the PDF 1.4 compositor into a 'forwarding' device.  This
is the same method used by the overprint compositor device.  I do not like
leaving these devices since there is some extra overhead and there may be
possible side effects.  (Testing has been done to try to find side effects
and none has been found with the current code.)

3)  This change only affects devices which can use the clist logic.  This
excludes the 'high' level devices.  These include the 'display', 'x11',
and 'pdfwrite' devices.  Thus these device will continue to use a full
image buffer.  It is possible to extend this fix to use a clist device
for the PDF 1.4 device for these devices.</pre>
<p>[src/gdevbbox.c 1.23, src/gdevdflt.c 1.25, src/gdevmem.c 1.9, src/gdevnfwd.c 1.28, src/gdevp14.c 1.27, src/gdevp14.h 1.4, src/gdevprn.c 1.19, src/gdevprn.h 1.14, src/gdevpsdu.c 1.23, src/gsalphac.c 1.8, src/gsht.c 1.23, src/gsistate.c 1.11, src/gsovrc.c 1.9, src/gsropc.c 1.5, src/gstparam.h 1.11, src/gstrans.c 1.19, src/gstrans.h 1.10, src/gxband.h 1.5, src/gxcldev.h 1.14, src/gxclimag.c 1.12, src/gxclist.c 1.15, src/gxclist.h 1.7, src/gxclrast.c 1.33, src/gxclutil.c 1.12, src/gxcmap.c 1.24, src/gxcomp.h 1.7, src/gxdevcli.h 1.36, src/gxdevice.h 1.21, src/gxdevmem.h 1.7, src/gxdht.h 1.9, src/gxdhtserial.c 1.8, src/gxistate.h 1.22, src/lib.mak 1.206, src/zdpnext.c 1.8, src/ztrans.c 1.23, lib/pdf_draw.ps 1.91, lib/pdf_main.ps 1.94]</p>
</blockquote>

<p><strong><a name="2005-03-14_1746"></a>
2005-03-14 17:46 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Assume same color for stroking and non-stroking operations.

DETAILS :

An improvement to opdfread.ps with maintaining different colors
for stroking and non-stroking operations would too complicated.
So we patch pdfwrite against it.

We still use OrderResources as a general switch for ps2write mode.
It should be improved later.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfd.c 1.48]</p>
</blockquote>

<p><strong><a name="2005-03-10_1634"></a>
2005-03-10 16:34 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (type 1 hinter) : Inconsistent transform coefficients after the dynamic glyph scaling.

DETAILS :

Bug 687939 "Fixed precision problems".

t1_hinter__adjust_matrix_precision did not adjust rational transform coefficients.
Due to that, t1_hinter__align_stem_to_grid caused glyph distortions.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxhintn.c 1.57]</p>
</blockquote>

<p><strong><a name="2005-03-10_1457"></a>
2005-03-10 14:57 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Initialize ColorSpace parameter in ijs driver to DeviceRGB. This
prevents a PostScript error in "currentpagedevice setpagedevice"
and similar code when ColorSpace is not explicitly initialized.
Fix bug 687013.</pre>
<p>[src/gdevijs.c 1.10]</p>
</blockquote>

<p><strong><a name="2005-03-10_1301"></a>
2005-03-10 13:01 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add FillOrder device parameter to TIFF fax devices and document the
changes in Devices.htm .
Fix bug 687324

DETAILS :
This fix changes the default from FillOrder = 2 to FillOrder = 1.
According to the TIFF 6.0 specification, Section 8, page 32, support of
FillOrder = 2 is not required in a Baseline TIFF compliant reader.

Support of FillOrder will be addressed to tiffpack and tifflzw devices as
a part of bug 614298 resolution.

EXPECTED DIFFERENCES :
None. TIFF devices are not tested by the regression test.</pre>
<p>[doc/Devices.htm 1.85, src/gdevtfax.c 1.9]</p>
</blockquote>

<p><strong><a name="2005-03-09_1221"></a>
2005-03-09 12:21 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Equal image merging could break the Mask object of a type 3 image.

DETAILS :

Bug 687926 "ps2pdf13 Segfaults on eps figure".

The old code set a reference to a Mask object,
which was freed while the equal image merging.
Delay adding the "Mask" entry into a type 3 image dictionary
until the mask is completed and merged
(maybe replaced with an equal one).

Minor change : fixed a typoe in "pdf_image_useage_t".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfi.c 1.65]</p>
</blockquote>

<p><strong><a name="2005-03-09_0901"></a>
2005-03-09 09:01 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Don't create a CMap resource list.

DETAILS :

Old revisions created an object for CMap resource list.
That object is not required by the PDF specification,
and it was left unreferenced.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtw.c 1.36]</p>
</blockquote>

<p><strong><a name="2005-03-09_0843"></a>
2005-03-09 08:43 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : MSVC 8 debug build was broken.

DETAILS :

Since msvccmd.mak version 1.25 a debug build compiles with no debug info.
This patch restores necessary compiler options.

Particularly msvccmd.mak version 1.25 reads :

     # MSVC 8 does not support debug compile and continue /Gi /ZI.

Don't know where it comes from. My copy of MSVC 8
does support it and I do use it.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/msvccmd.mak 1.26]</p>
</blockquote>

<p><strong><a name="2005-03-08_0740"></a>
2005-03-08 07:40 Ralph Giles</strong></p>
<blockquote>
<pre>
Add uncompr.c which supplies the uncompress() zlib utility routine to our
makefile. This routine isn't currently used by ghostscript, but was available
prior to the source re-arrangement in the zlib 1.2.x releases.</pre>
<p>[src/zlib.mak 1.10]</p>
</blockquote>

<p><strong><a name="2005-03-04_2212"></a>
2005-03-04 22:12 Russell Lang</strong></p>
<blockquote>
<pre>
Correct HTML error in documentation.</pre>
<p>[doc/Use.htm 1.129]</p>
</blockquote>

<p><strong><a name="2005-03-04_2202"></a>
2005-03-04 22:02 Russell Lang</strong></p>
<blockquote>
<pre>
Set the default paper size with DEFAULTPAPERSIZE in gs_init.ps,
which only affects devices that default to A4 or letter paper.
This avoids inappropriately setting the bbox device to
A4 or letter size.

DETAILS:
Some linux distributions change the default paper size
to A4 by uncommenting the following line in gs_init.ps.
  % Optionally choose a default paper size other than U.S. letter.
  % (a4) /PAPERSIZE where { pop pop } { /PAPERSIZE exch def } ifelse

Unfortunately this sets the default paper size for all devices,
including the bbox device for which this is not appropriate.
If the bbox device is set to A4 paper and drawing occurs
outside this area, the bbox device will report an incorrect
bounding box.  There may be custom printer devices which don't
support A4 or letter paper.

The default paper size is now set with DEFAULTPAPERSIZE,
which sets PAPERSIZE only if the paper size is not otherwise
set, the device defaulted to A4 or letter.</pre>
<p>[doc/Use.htm 1.128, lib/gs_init.ps 1.118]</p>
</blockquote>

<p><strong><a name="2005-03-04_2200"></a>
2005-03-04 22:00 Russell Lang</strong></p>
<blockquote>
<pre>
The display device row alignment must be equal to or greater than
the pointer size, since this is a requirement of the memory devices.
Problem noticed on 64-bit builds.</pre>
<p>[src/gdevdsp.c 1.32, src/gdevdsp.h 1.12]</p>
</blockquote>

<p><strong><a name="2005-03-04_2158"></a>
2005-03-04 21:58 Russell Lang</strong></p>
<blockquote>
<pre>
Compile Ghostscript for 64-bit Windows with AMD64 processor.
Change the default install directory to "c:\program files\gs".

DETAILS:
Microsoft Visual Studio .NET 2003 with Windows Server 2003 DDK,
or Microsoft Visual Studio 8 (.NET 2005 beta) are required
to compile for 64-bits.

Dialog boxes return type INT_PTR not BOOL.

Install to the "Program Files" directory as default,
instead of c:\gs.  This allows 32-bit and 64-bit
versions to be installed in separate locations.
For 32-bit GS on 32-bit Windows, "c:\Program Files\gs"
For 32-bit GS on 64-bit Windows, "c:\Program Files (x86)\gs"
For 64-bit GS on 64-bit Windows, "c:\Program Files\gs"
The " (x86)" is added by Windows when a 32-bit program asks
for the "Program Files" folder on 64-bit Windows.
Other languages will translate "Program Files".

The programs still have "32" in their names: gswin32c.exe,
gswin32.exe and gsdll32.dll.  They are distinguished from
the 32-bit versions by their install location.
This avoids changes to many batch files.

The registry entries written by the installer do not
conflict between 32 and 64-bit.
For 32 on 32, or 64 on 64, the location is
  HKLM\Software\AFPL Ghostscript\N.NN
For 32 on 64, Windows adds "WoW6432Node\" to make it
  HKLM\Software\Wow6432Node\AFPL Ghostscript\N.NN

If the "Program Files" folder has a " (x86)" suffix,
this is used as a suffix on the Start Menu items.  This
allows 32-bit and 64-bit GS to be installed without
conflict.  The start menu item for 32-bit GS on 64-bit
Windows is "Ghostscript N.NN (x86)".

Building 64-bit GS on 32-bit Windows can be done
by the usual method - either execute genconf.exe on
a 64-bit platform or hand edit arch.h.

A separate patch will fix the display device DisplayHandle
parameter which is currently truncated to 32-bits.

There is a warning from the linker about exports being
defined multiple ways.  This is not a problem with the
32-bit compile.  This is due to the C code
specifying export and the module definition file
also specifying the export.  Removing the function
names from the module definition file would make the
warning message go away, but may affect 32-bit compiles.</pre>
<p>[doc/Make.htm 1.85, src/dwsetup.cpp 1.11, src/dwsetup.rc 1.13, src/dwuninst.cpp 1.6, src/gp_mswin.c 1.25, src/gp_mswin.h 1.7, src/gsdll32.def 1.6, src/msvc32.mak 1.70, src/msvccmd.mak 1.25, src/msvctail.mak 1.11, src/winint.mak 1.25]</p>
</blockquote>

<p><strong><a name="2005-03-04_2156"></a>
2005-03-04 21:56 Russell Lang</strong></p>
<blockquote>
<pre>
Change display device parameter DisplayHandle from an integer
to a string, to add support for 64-bit platforms.

DETAILS:
The display device passes a (void *) handle to callback functions.
The handle is set before the device is opened, and attempting to
change it afterwards is an error.
The handle may be used by the caller to identify an instance of
the display device, for example it may point to the display instance
object in the caller.
This handle was set using a PostScript integer which is 32-bits long,
typically with -dDisplayHandle.
The existing code will not work correctly on 64-bit architectures.

The display device is changed to return a string as the
DisplayHandle parameter.
Previously the handle would be set using -dDisplayHandle=1234.
The changed code allows it to be passed as
 -dDisplayHandle=1234
 -sDisplayHandle=1234
 -sDisplayHandle=10#1234
 -sDisplayHandle=16#04d2
This should be backward compatible, since users of the
display device will most likely only set the DisplayHandle,
not read its value.

The ghostscript example code in dw*.c, dx*.c and dp*.c
does not use DisplayHandle, so is unaffected by this change.
GSview does use DisplayHandle and will require this
change for operation on 64-bit platforms.

It is assumed that size_t is an integer with the same size
as a pointer.

For HEAD, GS_8_1X</pre>
<p>[src/gdevdsp.c 1.31, src/gdevdsp.h 1.11]</p>
</blockquote>

<p><strong><a name="2005-03-04_1442"></a>
2005-03-04 14:42 Igor Melichev</strong></p>
<blockquote>
<pre>
Unwinding the last patch, which was erroneusely aplied to a wrong branch.</pre>
<p>[src/gdevpdfj.c 1.41]</p>
</blockquote>

<p><strong><a name="2005-03-04_1438"></a>
2005-03-04 14:38 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : ASCII encoding was not applied to some images when requested.

DETAILS :

It fixes a bug, which has been put when implementing the compression chooser.
This is a part of ps2write development, which is also important for pdfwrite.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfj.c 1.39, src/gdevpdfj.c 1.40]</p>
</blockquote>

<p><strong><a name="2005-03-04_1027"></a>
2005-03-04 10:27 Russell Lang</strong></p>
<blockquote>
<pre>
Fix bug #687958 gswin32: Assertion fails due to a bug in dwtext.c.
Keep argument to isprint() within 0-255.</pre>
<p>[src/dwtext.c 1.9]</p>
</blockquote>

<p><strong><a name="2005-03-03_1905"></a>
2005-03-03 19:05 Ray Johnston</strong></p>
<blockquote>
<pre>
Eliminate a performance problem when a TT font has a large 'loca' table.
A fix for 687889 used .sort on the 'loca' table but this takes a long
time if the table is large. Only run the .sort if the table is out of
order which is rare since the TT font spec requires an in-order table.
Bug 687968.

DETAILS:

Apparently our conversion of the 'japan.ps' file creates a TT font with
a loca table that has 20458 entries (even though the original font
in japan.ps didn't have that many). This is needed because there are
many glyphs that are not present, but we need loca table slots that
represent the missing glyphs (same starting offset as next glyph).

The time was being spent doing the '{ lt } .sort' of the array  :-(

I added logic that checked the order as the loca table was converted
to an array so that the .sort could be skipped as long as the table is
in order (which it *should* be for a valid TT font). After this change,
the HEAD time is 1.16 CPU seconds versus 1.08 seconds for gs8.50.
(with the .sort, the time was 257 seconds).

I suppose that we could optimize the .sort (put it into 'C') but
for now I'll just avoid it most of the time.

Note that since the .sort has a procedure callout for the ordering test,
it might not speed up that much in 'C'. That's the other reason that it
is worthwhile to avoid the .sort when possible.</pre>
<p>[lib/gs_ttf.ps 1.43]</p>
</blockquote>

<p><strong><a name="2005-03-03_1315"></a>
2005-03-03 13:15 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Use character codes instead CIDs when creating a ToUnicode CMap.

DETAILS :

Bug 687954 "copy and pasting asian text problems".

The problem depends on what a Postscript printer driver
puts into the GlyphNames2Unicode table.

GlyphNames2Unicode is an undocumented feature, which PScript5.dll uses to
communicate with Adobe Distiller. A long ago from its name
we concluded that it maps character names to Unicode, and it was
confirmed with multiple documents. Now we got a document
(the test case of the bug 687954), which uses character codes instead CIDs,
(CIDs are usually interpreted as "glyph names" in the case of CID fonts).
In the test document CIDs are not equal to character codes due to the embedded CMap
named WinCharSetFFFF-H2. We did not notice this problem before
due to most old documents from PScript5.dll use an identity CMap WinCharSetFFFF-H,

Now we change Ghostscript with using character codes instead CIDs
as keys to GlyphNames2Unicode. We have no technology for a regression test
of the related behavior. We will pass this revision to users in order to study
consequences of this patch from users' responses.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtc.c 1.40, src/gdevpdte.c 1.70]</p>
</blockquote>

<p><strong><a name="2005-03-03_0750"></a>
2005-03-03 07:50 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Write "/Type/CMap" to a CMap resource dictionary.

DETAILS :

Bug 687955 "ghostscript generated pdf causes error in adobe reader"

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtw.c 1.35]</p>
</blockquote>

<p><strong><a name="2005-03-02_1808"></a>
2005-03-02 18:08 Raph Levien</strong></p>
<blockquote>
<pre>
Fix: Move setting of #copies userdict entry outside restore operation
so it doesn't get clobbered. Fixes bug #687964. Thanks to Leon Sha for
the patch.</pre>
<p>[src/gdevpsu.c 1.19]</p>
</blockquote>

<p><strong><a name="2005-03-01_2044"></a>
2005-03-01 20:44 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix a problem with .dividesfnts for large Type42 fonts introduced with the
previous commit. Also replace macro with C-Style compliant inline function.

DETAILS:

The previous code constructed a single 'locatable' string of 4 byte entries
from the sorted array of loca entries. This would fail if the original
was 2 byte (u16) offsets, as seen with 'fonts.pdf' in the regression suite.

The new code constructs the "splitarray" list using the sorted array so
that the string is never created (it wasn't used afterwards).

Also, the related file src/gstype42.c was changed to avoid adding another
macro that doesn't follow C-Style. I intentionally left the ACCESS macro
since this would need at least two lines to replace each ACCESS line.</pre>
<p>[lib/gs_ttf.ps 1.42, src/gstype42.c 1.50]</p>
</blockquote>

<p><strong><a name="2005-02-28_1000"></a>
2005-02-28 10:00 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Reset the clipping path before starting a page.

DETAILS :

Bug 687952 "Clipping path is ignored on pages after first page of PDF output".
Patch from SaGS.
Actually it resets the clipping path before the first page and after each page.
Resetting it after the last page saves few memory for PDF completion.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.102]</p>
</blockquote>

<p><strong><a name="2005-02-27_0556"></a>
2005-02-27 05:56 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix handling of broken TrueType fonts that have a loca table that is not
in order. Bug 687889 for customer 670.

DETAILS:

This is clearly a questionable TT font since the Apple TT font reference
manual clearly states that the length of glyphs can be inferred from
the difference in successive offsets.

Note that the PostScript code only needs to deal with the sorted 'locatable'
in order to decide where to split the glyf strings in the sfnts array
(in the .dividesfnts proc). Otherwise the PostScript code doesn't care.

If the .dividesfnts uses a sorted locatable, but doesn't replace the 'loca'
table written into the sfnts, then the VMerror occurs because the C code
in 'default_get_outline' calculated the glyph_length for the gs_alloc
using loca table entries that might be out of order.

In order to effect the entire fix, I sorted the 'locatable' for the PS
code in .dividesfnts as well as creating a new 'len_glyphs' array in
the gs_type42_data structure that holds the actual glyph lengths.
The glyph lengths are calculated once when the font is initialized in
gs_type42_font_init. If the 'loca' table is in order, then nothing
changes, but if it is out of order, we get the lengths by finding the
next higher glyph offset anywhere in the loca table.

These changes let the file run and show the same glyphs as Adobe Acrobat
Reader.</pre>
<p>[lib/gs_ttf.ps 1.41, src/gstype42.c 1.49, src/gxfont42.h 1.21]</p>
</blockquote>

<p><strong><a name="2005-02-26_2100"></a>
2005-02-26 21:00 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Fixing minor problems with debug printing.

DETAILS :

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.44]</p>
</blockquote>

<p><strong><a name="2005-02-26_1807"></a>
2005-02-26 18:07 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Implementing a conversion of images into ProcessColorModel, step 3 (final).

DETAILS :

1. Attached the "image colors" filter and
provided appropriate color conversions.

2. Changed function prototype to pass filter parameters.

3. Removed all related stubs.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/devs.mak 1.126, src/gdevpdfi.c 1.64, src/gdevpsdf.h 1.29, src/gdevpsdi.c 1.40, src/gdevpsds.c 1.14, src/gdevpsds.h 1.12]</p>
</blockquote>

<p><strong><a name="2005-02-26_1332"></a>
2005-02-26 13:32 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Implementing a conversion of images into ProcessColorModel, step 2.

DETAILS :

This step generalizes the "image to mask" filter into
a general image color conversion filter.
Also improved return codes from s_image_colors_process
in complience to constraints defined in strimpl.h .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpsdi.c 1.39, src/gdevpsds.c 1.13, src/gdevpsds.h 1.11]</p>
</blockquote>

<p><strong><a name="2005-02-25_2108"></a>
2005-02-25 21:08 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Implementing a conversion of images into ProcessColorModel, step 1.

DETAILS :

This patch defines overall logic and data exchange for converting images to
ProcessColorModel color space. For a while, the real convertion is stubbed
with conversion into a bitmask (a 1 bit per sample image).

1. When pdf_begin_typed_image calls pdf_color_space,
a failure means that the image can't represent in the output PDF.
Then we setg up a n image color conversion filter with
psdf_setup_image_colors_filter.

2. The function psdf_setup_image_colors_filter currently is stubbed
with etting up the "image_to_mask" filter instead a general color conversion filter.
Implementing the general filter will be the next step.

3. When conversion happens, pdf_begin_typed_image writes
a ProcessColorModel colore space instead the image color space.
Currently it is stubbed with gs_color_space_index_DeviceGray
to comply with the stub in psdf_setup_image_colors_filter.

4. Multiple bugs (mainly the order of bits in the stream,
and row to tyte alignment) have bin fixed in s_image_to_mask_process.

5. We continue to use pdev-&gt;OrderResources as a general switch
for the ps2write mode, rather it's not fully correct.
The new code will be useful for pdfwrite with CompatibilityLevel &lt; 1.3,
so later we'll need to remove the switch from pdf_begin_typed_image.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfi.c 1.63, src/gdevpsdi.c 1.38, src/gdevpdfx.h 1.106, src/gdevpsdf.h 1.28, src/gdevpsds.c 1.12]</p>
</blockquote>

<p><strong><a name="2005-02-25_1402"></a>
2005-02-25 14:02 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Simplify data exchange for pdf_color_space.

DETAILS :

1. The old code assumes a constraint explained in the comment :
	/* SRZB 2001-04-25/Bl
	 * Since psdf_setup_image_filters may change the color space
	 * (in case of pdev-&gt;params.ConvertCMYKImagesToRGB == true),
	 * we postpone the selection of the PDF color space to here:
	 */
Implement this dependence implicitly with defining a new function
psdf_is_converting_image_to_RGB, in order to cancel the "postpone" constraint.

2. Call pdf_color_space before setting up image filters.
This allows a proper check of the color space compatibility
before image filters are set.
This is important since we'll apply a filter
for the image color space conversion.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfi.c 1.62, src/gdevpsdf.h 1.27, src/gdevpsdi.c 1.37]</p>
</blockquote>

<p><strong><a name="2005-02-25_0758"></a>
2005-02-25 07:58 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Unwind the last patch (disallow ICCBased color spaces when writing a ps2write output).

DETAILS :

When applied the last patch,
we decided to convert ICC profile into a CIEBased color space.
But ICC profiles (especially ones coming from PDF documents from wild)
may contain a general lookup table, and a general lookup
table can't convert into M1*T*M2 transformation,
where Mi are 3D linear transformations, and and
T is unlinear 3-component transformation.
Since a CIEBased color space is restricted with
M1*T*M2 transformation, in a general ICC profile
can't convert into a CIEBased.

Besides that, the ICC-based method can't apply to DeviceN spaces.

Therefore now we choose another implementation strategy.
Single colors will be converted into low level colors in
the ps2write step, and images will be filtered to convert
into low level color spaces.
Will implement a special filter for that.

Due to all above, the last patch appears wrong.
Unwinding it now.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfk.c 1.10]</p>
</blockquote>

<p><strong><a name="2005-02-24_1946"></a>
2005-02-24 19:46 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Allow ICCBased color spaces when writing a ps2write output.

DETAILS :

Since CIEBased is not a PDF 1.2 object, we need to convert it somehow.

One possible way is to write CIEBased into PDF.
We do not choose this way because (1) it will generate an invalid PDF
so that we'll not be able to verify the output with PDF readers;
(2) we have no code for writing a CIEBased color space to PDF or Postscript,
but we do have one for ICCBased.

Another way is to write ICCBased into the ps2write output
and to implement a parsing of ICC profile in opdfread.ps .
We prefer this way since a part of this algorithm (an ICC writer)
already presents in Ghostscript.

Strongly saying, a PDF with ICCBased is not a valid PDF 1.2 document.
But as we noticed before, Adobe PDF viewers simply ignore
pdf level from the document header. So we'll be able to view it
as it is or after a small modification of the header.

We continue to use the flag OrderResources as a general switch for
ps2write mode. Doing so because we still have no
a perfect decision about the list and logics of configuration options.
Later we'll need to bring more order to this field.
Possibly writing a "restricted PDF1.3" would be better that
writing an "extended PDF 1.2".

By the way, pdfwrite appears to have a rudimentary branch
pdf_convert_cie_to_lab, which currently is a stub,
which always fails. We think that this conversion isn't possible
in general due to Lab restricts with a very special class of
transformations. So lakely this branch will never be implemented
and it must always fail.

Please note that with this patch ps2write successfully converts
a smaller class of input files then before it,
because the writer becomes inconsistent with
the reader coded in opdfread.ps . But we do need this step
in the develoipment technology. Actually the files outside the class
were converted into a too long PDF.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfk.c 1.9]</p>
</blockquote>

<p><strong><a name="2005-02-24_1126"></a>
2005-02-24 11:26 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Improving the heap consistensy with compression chooser.

DETAILS :

When a compression chooser is being installed,
s_add_fimter may insert another NullEncode filter to comply the buffering
between the compression chooser and its target.
After the compression chooser is closed, the old code
left the NullEncode filter unreleased in the heap,
so that the heap consistency check claimed a reference
from it to a freed object, which is the target of the
NullEncode. It's not a real bug sisnce NullEncode was never referred,
But running with -Z? got a failure in the heap consistency check.

This patch generalizes the code with closing all filters in the chain
(including the NullEncode) without a dependence on
features of specific filters.

BTW, we're unappy of all this stuff,
becauase actually the compression chooser filter doesn't need any target.
A dummy one was inserted only to work around a crash in
s_add_filter, in the check of the buffer size compliance,
and now we fix a problem with the dummy thing.
Maybe a simpler way would be patching s_add_filter
to allow NULL target (I mean no target at all,
rather than a null filter as the target),
but we don't want to modify that fundamental thing,
which is handled by another engineer.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfj.c 1.38, src/gdevpsdi.c 1.36]</p>
</blockquote>

<p><strong><a name="2005-02-23_1510"></a>
2005-02-23 15:10 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Improving the compatyibility to another PSLL2 interpreter 5D PDF Creator.

DETAILS :

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.43]</p>
</blockquote>

<p><strong><a name="2005-02-23_1048"></a>
2005-02-23 10:48 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : A wrong data were set to sfnts defining a Type 42 font.

DETAILS :

It attached an encoded data.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.42]</p>
</blockquote>

<p><strong><a name="2005-02-23_1008"></a>
2005-02-23 10:08 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Erase all pointers initializing a font structure.

DETAILS :

Bug 687951 "Inconsistent heap after 'definefont' fails.".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gsfont.c 1.35]</p>
</blockquote>

<p><strong><a name="2005-02-23_0957"></a>
2005-02-23 09:57 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfdwrite) : Don't apply FlateEncode generating a PDF 1.2.

DETAILS :

FlateEncode is a PDF 1.2 and PSLL3 feature.
This patch is important for ps2write project.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpsdi.c 1.35]</p>
</blockquote>

<p><strong><a name="2005-02-22_1541"></a>
2005-02-22 15:41 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 89.

DETAILS :

This is a partial fix for the bug 687948
"Performance of shading fill much worse than 8.00".

This patch improves the decision how to subdivide a quadrangle patch.

EXPECTED DIFFERENCES :

normal, 72dpi :

"442-01.ps"
"464-01-fixed.ps"
"478-01.ps"
"Altona-Testsuite_p2_S_x3.pdf"
"Altona_Visual_bb_1v1_x3.pdf"
"Altona_Visual_sb_1v1_x3.pdf"
"chilis_black.pdf"
"Clarke Tate Manns Chinese.ai"
"S2_Digitalproof-Forum_x3k.pdf"
"SmoothShading.pdf"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 2(radial).ai"

normal, 300dpi :

"442-01.ps"
"464-01-fixed.ps"
"478-01.ps"
"Altona-Testsuite_p2_S_x3.pdf"
"Altona_Visual_bb_1v1_x3.pdf"
"Altona_Visual_sb_1v1_x3.pdf"
"chilis_black.pdf"
"Clarke Tate Manns Chinese.ai"
"S2_Digitalproof-Forum_x3k.pdf"
"SmoothShading.pdf"</pre>
<p>[src/gxshade6.c 1.91]</p>
</blockquote>

<p><strong><a name="2005-02-18_2038"></a>
2005-02-18 20:38 Russell Lang</strong></p>
<blockquote>
<pre>
Fix conformance problems in ghostpdf.ppd.  Now tested with cupstestppd.</pre>
<p>[lib/ghostpdf.ppd 1.3]</p>
</blockquote>

<p><strong><a name="2005-02-17_2140"></a>
2005-02-17 21:40 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : A compatibility to a PSLL@ interpreter gs3_70.

DETAILS :

1. With  GS HEAD 'makepattern' always returns a local dictionary, but
with gs3_70 it depends on current allocation mode.
Forced the local allocation mode for any case.

2. Fixed the file name in the error handler message.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.41]</p>
</blockquote>

<p><strong><a name="2005-02-16_2205"></a>
2005-02-16 22:05 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Fix problems with hex encodings (continued).

DETAILS :

The old code sometimes corrupted data when pdfwrite applies /ASCII85EncodePages true .
The data corruption happened while applying ASCII85Decode filter
together with another filter for inline images or embedded fonts.
The reason is that two instances of the stream dumper shared same buffer.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.40]</p>
</blockquote>

<p><strong><a name="2005-02-16_1529"></a>
2005-02-16 15:29 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Implementing a conversion of type 4 images into an 'imagemask' with a pattern color.

DETAILS :

The mask is being generated with a new 4th alternative stream of pdf_image_writer.
Note it's a completely different way than image type 3.

1. Fixed a typo in 'pdf_image_writer_num_alt_streams'.

2. pdf_image_writer_num_alt_streams is increased to 4,
   and added pdf_image_writer::pres_mask.

3. Garbager methods of pdf_image_writer are updated with (2) in gdevpdfj.c .

4. Factored out pdf_begin_image_data_decoded (an equivalent code change).

5. Factored out pdf_end_and_do_image (an equivalent code change).

6. pdf_begin_write_image now may be called at 2nd time to set up the 4th alternative stream.
   The branches for mask==true work for that.

7. Implenented a new filter image_to_mask for converting a colored
   image with MaskColors into an imagemask (gdevpsds.h, gdevpsds.c).

8. psdf_setup_image_to_mask_filter helps for (7). (gdevpsdf.h, gdevpsdi.c)/

9. pdf_begin_typed_image now creates 4th alternative image stream with
   applying the image_to_mask filter - see the branch
   "if (pic-&gt;type-&gt;index == 4 &amp;&amp; pdev-&gt;CompatibilityLevel &lt; 1.3)".
   See comment in there.

10. pdf_image_end_image_data handles the 4th stream
   with the branch "if (pie-&gt;writer.alt_writer_count == 2)".

11. pdf_choose_compression_cos preserves the 4th alternative stream (gdevpdfj.c).

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/devs.mak 1.125, src/gdevpdfg.h 1.40, src/gdevpdfi.c 1.61, src/gdevpdfj.c 1.37, src/gdevpsdf.h 1.26, src/gdevpsdi.c 1.34, src/gdevpsds.c 1.11, src/gdevpsds.h 1.10]</p>
</blockquote>

<p><strong><a name="2005-02-16_1111"></a>
2005-02-16 11:11 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Improve garbager methods of pdf_image_writer.

DETAILS :

This change should be algorithmically equivalent,
rather the order of pointer enumeration is changed slightly.
The goal is to simplify the ps2write project.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfg.h 1.39, src/gdevpdfj.c 1.36]</p>
</blockquote>

<p><strong><a name="2005-02-16_0913"></a>
2005-02-16 09:13 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Implement an explicit initialization of pdf_image_writer.

DETAILS :

This change should be algorithmically equivalent,
rather it initializes more data, which were left uninitiaized
(and hopely unused) by the old code.
The goal is to simplify the ps2write project.

The patch simplifies the logics of pdf_begin_write_image,
and drops its argument, which was added when implementing
the compression chooser.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfb.c 1.26, src/gdevpdfg.h 1.38, src/gdevpdfi.c 1.60, src/gdevpdfj.c 1.35, src/gdevpdfv.c 1.38]</p>
</blockquote>

<p><strong><a name="2005-02-16_0631"></a>
2005-02-16 06:31 Ray Johnston</strong></p>
<blockquote>
<pre>
Add a pdfformaterror Warning for the case where an outline link destination
does not exist (so that the resulting PDF will not have dangling links).</pre>
<p>[lib/pdf_main.ps 1.93]</p>
</blockquote>

<p><strong><a name="2005-02-16_0628"></a>
2005-02-16 06:28 Ray Johnston</strong></p>
<blockquote>
<pre>
Tolerate non-printing garbage characters prior to the %PDF header of a PDF
file. Bug 687942 for customer 670.

DETAILS:

This is yet another example of PDF's that Acrobat Reader can handle that
don't quite meet the spec. AR has the advantage that they don't have to
'auto-sense' PostScript, EPS and PDF and they can just ignore garbage
before the %PDF header. We don't have that advantage.

We've had previous proposals to operate the way AR does, but this would
require a command line switch to force PDF language mode (akin to the
PJL ENTER LANGUAGE functionality of PCL).

This is a simple enough patch and does solve at least one customer's
issue so I'm committing this patch. We can always improve on it later.

Note that skipping initial non-printing characters doesn't interfere
with PostScript or EPS recognition or processing (and may help).</pre>
<p>[lib/pdf_main.ps 1.92]</p>
</blockquote>

<p><strong><a name="2005-02-16_0501"></a>
2005-02-16 05:01 Raph Levien</strong></p>
<blockquote>
<pre>
Fix: make sure that transfer functions and spot functions are permuted
to the same order as the other halftoning parameters. Fixes bug #687916.</pre>
<p>[src/zht2.c 1.13]</p>
</blockquote>

<p><strong><a name="2005-02-15_1447"></a>
2005-02-15 14:47 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (the filling algorithm) : Drpouts could appear at Y-extremes of the path (continued).

DETAILS :

This is a continuation of the patch
http://ghostscript.com/pipermail/gs-cvs/2005-January/005180.html .

Bug 687940 "Infinite loop in spot_into_scan_lines_fd".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfillsl.h 1.8]</p>
</blockquote>

<p><strong><a name="2005-02-14_0237"></a>
2005-02-14 02:37 Ray Johnston</strong></p>
<blockquote>
<pre>
Provide more robust handling of errors in an attempt to prevent badly
formed error handlers defined in the PS file from causing nested errors
(and the infamous dump-like "Unexpected interpreter error").
Refer to bug 687925.

DETAILS:

Note that broken error handlers are fairly common, so running them in a
.internalstopped context makes sense. The .internalstopped is used to
avoid side effects such as modifying the &#36;error dict contents.

Also note that the -dJOBSERVER may often be needed to actually see the
error message since this forces the use of the "standard" error reporting
to stdout.

Expected Differences:

None.</pre>
<p>[lib/gs_init.ps 1.117]</p>
</blockquote>

<p><strong><a name="2005-02-13_2131"></a>
2005-02-13 21:31 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix a problem with the initial matrix when the InputAttributes has a page
size range (four element array) with the lower bounds greater than 0.
Patch submitted by Till Kamppeter for bug 687902.

DETAILS:

The logic was clearly broken. There was an arbitrary MIN_MEDIA_SIZE #define
that was used to allow setting the media size correctly (to the request
instead of the range maximum). The corrected logic determines that a range
is being used when the medium.p{x|y} is not the same as medium.q{x|y}.

Expected Differences:

Since the default InputAttributes only has a single range page size slot,
and the minimum values are 0, 0, this won't change the default behaviour.</pre>
<p>[src/zmedia2.c 1.17]</p>
</blockquote>

<p><strong><a name="2005-02-12_2029"></a>
2005-02-12 20:29 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix so that outline links to non-existent pages do not get processed or
included in the outline passed to pdfwrite (via pdfmark). Bug 687917.

DETAILS:

Broken links cause a 'rangecheck in --get--' in the pdfpagenumber proc.
called from 'linkdest'. We now catch errors (any) using stopped and simply
omit the link from the outline that we write.</pre>
<p>[lib/pdf_main.ps 1.91]</p>
</blockquote>

<p><strong><a name="2005-02-10_2313"></a>
2005-02-10 23:13 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687935 rangecheck in stroke while overprinting on the display device.

DETAILS:

This fix corrects a problem in gx_default_get_bits_rectangle.  The fix
forces the 'actual_data' parameter to NULL when the GB_RETURN_POINTER
option is not included in the parameter options.  A value of NULL in the
actual_data parameter forces the get_bits routine to copy data instead of
simply returning a pointer to the data.

The default implementation of overprinting uses the device get_bit_rectangle
proc to retrieve the current pixel data.  This one of the few situations that
only uses the 'GB_RETURN_COPY' option to the get_bits routine.  (Most cases
use both GB_RETURN_COPY and GB_RETURN_POINTER.)</pre>
<p>[src/gdevdgbr.c 1.12]</p>
</blockquote>

<p><strong><a name="2005-02-09_1942"></a>
2005-02-09 19:42 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Fix problems with heh encodings.

DETAILS :

The old code failed when pdfwrite applies /ASCII85EncodePages true .
This patch fixes that.

When reading the generated PS file with Ghostscript,
we observe a problem with ASCII85Decode filter :
images and fonts appear corrupt,
and embedded fonts cause an access violation on Windows.
In same time Adobe Reader reads them fine.
This secondary problem shouldn't be important for the Postscript generation.
It will be fixed separately.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.39, lib/ps2write.bat 1.6]</p>
</blockquote>

<p><strong><a name="2005-02-09_1830"></a>
2005-02-09 18:30 Ray Johnston</strong></p>
<blockquote>
<pre>
Revert to the redistributable Identity-H and Identity-V CMaps (same as
the CVS revision 1.1). Bug 687933.</pre>
<p>[Resource/CMap/Identity-H 1.3, Resource/CMap/Identity-V 1.3]</p>
</blockquote>

<p><strong><a name="2005-02-09_1636"></a>
2005-02-09 16:36 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Implementing a conversion of type 3 images into an 'imagemask' with a pattern color.

DETAILS :

1. The main worker is use_image_as_pattern.

2. pdf_image_end_image_object2 transfers the condition for calling use_image_as_pattern.

3. pdf_image_end_image_data handles more cases, including the new USE_AS_PATTERN.
   See comment in code near it. Other 2 cases are equivalent to old ones.

4. Don't write the Mask key when the image is used as the pattern color.

5. New fields are added into pdf_device_s to provide a data transfer for use_image_as_pattern.

6. pdf_do_image is splitted into 2 functions. A further simplification
   would be useful, but we delay it in order to simplify this patch.
   See new comments in code.

7. A comment is inserted into gdevpdfd.c to provide a reference to a similar
   code fragment. Maybe we should factor out a common function.
   Delaying to simplify this patch.

8. Added a 'const' to a pdf_add_resource argument,
   since this patch calls it with a constant.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/devs.mak 1.124, src/gdevpdfd.c 1.47, src/gdevpdfg.h 1.37, src/gdevpdfi.c 1.59, src/gdevpdfj.c 1.34, src/gdevpdfx.h 1.105, src/gdevpdti.c 1.40]</p>
</blockquote>

<p><strong><a name="2005-02-08_1652"></a>
2005-02-08 16:52 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a conversion of a shading to a raster image for high level devices (continued 2).

DETAILS :

1. When a patch possibly is self-overlapping, patch_fill passes an empty path
(instead the patch boundary) to the device. Receiveing an empty path, the device
knows that it must convert the coverage area into a mask.

2. pdfwrite converts self-overlapping patches into an imagemask with a colored pattern color,
which paints the shading image. See the new code and comments in gdevpdfd.c.

3. An auxiliary function is added to gsptype2.c .

4. Probably we'll need to break big patterns into small ones
against the printer RAM overflow. Delaying for a while.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/devs.mak 1.123, src/gdevpdfd.c 1.46, src/gsptype2.c 1.17, src/gsptype2.h 1.12, src/gxshade6.c 1.90]</p>
</blockquote>

<p><strong><a name="2005-02-08_1557"></a>
2005-02-08 15:57 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Allow image compression.

EXPECTED DIFFERENCES :

None.
3</pre>
<p>[lib/ps2write.bat 1.5]</p>
</blockquote>

<p><strong><a name="2005-02-07_0638"></a>
2005-02-07 06:38 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687849 Unrecoverable error, converting PDF to TIF.  Igor determined
that the file has a problem that that causes the XREF rebuilding logic to
be invoked and that object 74 0 was not being found.  With this fix, we are
able to rebuild the file.

DETAILS:

The XREF rebuild logic uses a working string while searching for objects.
Object 74 0 was not being found because it is larger than the working
string.  This fix increases the working string size to 65535 bytes (the
maximum size for a string).</pre>
<p>[lib/pdf_rbld.ps 1.8]</p>
</blockquote>

<p><strong><a name="2005-02-06_2132"></a>
2005-02-06 21:32 Ray Johnston</strong></p>
<blockquote>
<pre>
Update the currentpoint after processing invisible text. BUg 687860.

DETAILS:

This could be more efficient, but invisible text is not assumed to be
very performance sensitive. I tested the bugs related to this one
(see the bug report) and this patch still works for those.

Expected Differences:

None.</pre>
<p>[lib/pdf_ops.ps 1.38]</p>
</blockquote>

<p><strong><a name="2005-02-03_0540"></a>
2005-02-03 05:40 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for miterlimit value that is smaller than PostScript PLRM allows.
Bug 687895. Somewhat based on patch from Alex Cherepanov.

DETAILS:

The patch from Alex issued a pdfformaterror *** Warning but reading the
PDF specification, the minimum value of 1 given in the PostScript ref
manual is NOT stated, so we clamp the value to a lower bound of 1 silently.</pre>
<p>[lib/pdf_draw.ps 1.90]</p>
</blockquote>

<p><strong><a name="2005-01-31_1539"></a>
2005-01-31 15:39 Ray Johnston</strong></p>
<blockquote>
<pre>
Some dependencies were missing that caused the build to fail when a subset
of DEVICE_DEVS were included. Specifically, zlib and the 'display' device
were problems. Bug 687920 for customer #580.

DETAILS:

Apparently the needed modules for zlib have changed, but when a 'png'
device was included, the crc32 module was included anyway.

The display device didn't include several dependencies for the new DeviceN
and Spot Color support: gdevdevn.obj gsequivc.obj gdevdcrd.obj</pre>
<p>[src/devs.mak 1.122, src/zlib.mak 1.9]</p>
</blockquote>

<p><strong><a name="2005-01-31_0308"></a>
2005-01-31 03:08 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a conversion of a shading to a raster image for high level devices (continued).

DETAILS :

1. In pdf_copy_color_data, allowed the new value 2 for the parameter for_pattern.
In this case non-lossless filters are allowed.

2. In gdev_pdf_fill_path, fixed the grouping of clip paths for all
meshes|patches of a shading.

3. In gdev_pdf_fill_path, used the shading BBox to minimize
the size of the raster image.

4. In gdevpdfp.c allowed CompatibilityLevel=1.1 .
Now this is done mainly for debug purpose,
but likely we'll use it in ps2write when the target doesn't handle TT fonts.

5. The new function gx_dc_pattern2_get_bbox works for (3).

6. The function shade_bbox_transform2fixed has been renamed into
gx_dc_pattern2_shade_bbox_transform2fixed with making its scope bigger
to work for (5). It has been moved into gsptype2.c,
which is mode fundamental than gxshade.c .
The following changes happened due to that : gsptype2.c, gsptype2.h,
gsshade.c, gxshade.c, gxshade1.c, gxshade4.c.
We would like to do more cleanup with replacing it with
gx_dc_pattern2_get_bbox, but currently we delay that to simplify this patch.

7. Introduced a new field patch_curve_t::straight to know whether a patch
boundary is a straight line. patch_fill uses it when passing the
shading coverage area.

8. mesh_triangle now passes the coverage area.
An auxiliary function mesh_triangle_rec is factored out for that.

9. patch_fill checks for self-overlapoped patches
and prints a warning is the patch appears suspicious.
Comments in patch_fill about that have been improved.

10. patch_fill and mesh_triangle check the sign odf the coverage area,
and change the contour direction for making all contours be positive.
This works for proper clipping.

11. Fixed compressed streams in opdfread.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfb.c 1.25, src/gdevpdfd.c 1.45, src/gdevpdfp.c 1.43, src/gsptype2.c 1.16, src/gsptype2.h 1.11, src/gsshade.c 1.14, src/gxshade.c 1.22, src/gxshade.h 1.12, src/gxshade1.c 1.36, src/gxshade4.c 1.28, src/gxshade6.c 1.89, lib/opdfread.ps 1.38, src/gxshade4.h 1.38, src/lib.mak 1.205]</p>
</blockquote>

<p><strong><a name="2005-01-31_0202"></a>
2005-01-31 02:02 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Improving the check for a degenerate curve.

DETAILS :

This is a minor optimization for the case when a curve degenerates to a dot.
The old code converted it into the PDF instruction 'y', which looks uneven.

EXPECTED DIFFERENCES :

pdfwrite :
"Openhuis_pdf_zw.pdf"</pre>
<p>[src/gdevpsdu.c 1.22]</p>
</blockquote>

<p><strong><a name="2005-01-30_2349"></a>
2005-01-30 23:49 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 88.

DETAILS :

The function is_bended could give a wrong result (false instead true) when
the first vector product is zero. This could cause insufficient subdivision.

EXPECTED DIFFERENCES :

normal, 72dpi :

"442-01.ps"
"446-01-fixed.ps"
"483-05-fixed.ps"

normal, 300dpi :

"442-01.ps"

pdfwrite 72dpi :

"442-01.ps"

normal 300dpi :

"442-01.ps"</pre>
<p>[src/gxshade6.c 1.88]</p>
</blockquote>

<p><strong><a name="2005-01-30_2059"></a>
2005-01-30 20:59 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Uninitialized variables when applying LZWEncode.

DETAILS :

Normally pdfwrite doesn't apply LZWEncode since it prefers FlateEncode.
Meanwhile ps2write needs LZWEncode, and we found unitialized variables in there.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpsdi.c 1.33]</p>
</blockquote>

<p><strong><a name="2005-01-28_1911"></a>
2005-01-28 19:11 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a convertion of a shading to a raster image for high level devices.

DETAILS :

If a high level device can't handle a shading,
it is being converted to a raster image.

This patch implements it only in OrderResources mode.
A generalization to "normal" mode will be done in a separate patch.

The generated bitmap sometimes appears too big since it
doesn't accout a bbox of a real shading coverage.
An optimization is coming soon.

1.The device virtual function pattern_manage now handles
a new request pattern_manage__shading_area.
If it returns 1, the graphics library will pass
the shading area as a special call to fill_path,
with passing NULL images\r state and NULL clipping path.
Such call immediately follows pattern_manage(...., pattern_manage__shading_area).
Currently it goes only to a special converter device (see below),
other devices and the default implementation return 0
for pattern_manage(...., pattern_manage__shading_area).

2. A new local type pdf_lcvd_t implements a subclass for
memory device, which is used especially for converting shadings
to raster image. It is defined locally in pdfwrite.
The subcalss redefines 4 device methods :

2.1. fill_rectangle with shifting the device space.
It is used to mapo the shading and its paths to the image coordinate system.

2.2. get_clipping_box returns the target clipping box,
to deceive a cut-off condition in the shading algorythm.

2.3. pattern_manage returns 1 for pattern_manage__shading_area.

2.4. fill_path is used only for handling the shading area.
It sets a clipping when instantiating the bitmap.

3. gdev_pdf_fill_path implements the convertion with (2).

4. gs_shading_fill_path doesn't set up a clipper device
when it works with the shading convertion device.
Instead that the clipping path is being passed through (2.4).

5,. patch_fill in gxshade6.c checks if the devices needs the
shading area, and if so, passes the area throuhg the special call to
fill_path.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/devs.mak 1.121, src/gdevpdfb.c 1.24, src/gdevpdfd.c 1.44, src/gdevpdfg.h 1.36, src/gdevpdfi.c 1.58, src/gdevvec.h 1.16, src/gsshade.c 1.13, src/gx.h 1.43, src/gxdevcli.h 1.35, src/gxshade6.c 1.87]</p>
</blockquote>

<p><strong><a name="2005-01-28_1851"></a>
2005-01-28 18:51 stefan</strong></p>
<blockquote>
<pre>
fix memory leak for indexed color space data when banding.

In gxclrast.c::clist_playback_band()
color_space.params.indexed.lookup.table.data
leaked on a per band basis.  table.size indicates allocated memory
which is freed at the end of the routine.
The reallocate case when multiple colorspaces are used per band was
correctly handled.

Using a more descriptive client name of "color_space indexed table".</pre>
<p>[src/gxclrast.c 1.32]</p>
</blockquote>

<p><strong><a name="2005-01-28_1811"></a>
2005-01-28 18:11 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : gx_forward_pattern_manage missed a return code.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevnfwd.c 1.27]</p>
</blockquote>

<p><strong><a name="2005-01-26_1848"></a>
2005-01-26 18:48 Raph Levien</strong></p>
<blockquote>
<pre>
Fix: Resolve indirect object references in Widths array. Fixes bug
#687906.</pre>
<p>[lib/pdf_font.ps 1.76]</p>
</blockquote>

<p><strong><a name="2005-01-26_1639"></a>
2005-01-26 16:39 Jack Moffitt</strong></p>
<blockquote>
<pre>
Fix update_specific so that it gets the correct parameters for pdfwrite
testing.  It was previously using the superset of raster parameters.</pre>
<p>[toolbin/tests/update_specific 1.5]</p>
</blockquote>

<p><strong><a name="2005-01-25_2222"></a>
2005-01-25 22:22 Igor Melichev</strong></p>
<blockquote>
<pre>
(pdfwrite) : Don't skip white color while painting a pattern (continued 2).

DETAILS :

This change is important for ps2write only.
It is algorithmically equivalent for other invocations.

1. The patch http://ghostscript.com/pipermail/gs-cvs/2005-January/005163.html
broke the OrderResources mode. Fixed in gdevpdfu.c .
This is another fix to that.

2. Removed the hack about writing non-eexec fonts
because PDF specification doesn't allow it.
Rather ps2write can handle them, we use a PDF viewer
to debug the writer.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfu.c 1.65, src/gdevpdtb.c 1.32]</p>
</blockquote>

<p><strong><a name="2005-01-25_2123"></a>
2005-01-25 21:23 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : A minor change for fixing the repository consistency.

DETAILS :

A wrong revision of pdf_font.ps was committed by error and then removed.
This minor change in a space provides a right repository synchronization.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/pdf_font.ps 1.75]</p>
</blockquote>

<p><strong><a name="2005-01-25_2040"></a>
2005-01-25 20:40 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for an infinite loop in a PDF file that uses Patterns. Bug 687802
for customer #850.

DETAILS:

The problem was that the DefaultQstate used when making a Pattern
was the device *BEFORE* the pdf14 device filter was inserted as
the device. If the underlying device had a different 'depth' than
the PDF14 device, the pattern cache lookup would always fail which
would then cause the fill to return e_RemapColor and perform the
PaintProc again. The 'depth' comparison is in gsptype1.c in the
gx_pattern_cache_lookup	function.

The fix is to set the DefaultQstate *AFTER* the pushpdf14devicefilter
is performed (and of course also reset it after popdevicefilter
is done).

Expected Differences:

None (we didn't have any regression tests that use Patterns in pages
with transparency). In fact, we only had two pages with ANY transparency:
ai2.pdf and dina3_watermark.pdf.</pre>
<p>[lib/pdf_main.ps 1.90]</p>
</blockquote>

<p><strong><a name="2005-01-25_2028"></a>
2005-01-25 20:28 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Improving the output file structure (continued).

DETAILS :

Removed a debug option that was added unintentionally.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/ps2write.bat 1.4]</p>
</blockquote>

<p><strong><a name="2005-01-25_1839"></a>
2005-01-25 18:39 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Improving the output file structure (continued).

DETAILS :

Removed a debug option that was added unintentionally.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/ps2write.bat 1.3]</p>
</blockquote>

<p><strong><a name="2005-01-25_1833"></a>
2005-01-25 18:33 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Improving the output file structure.

DETAILS :

1. Merge opdfread.ps and opdferrh.ps .
2. Fix a header commant in opdfread.
3. Remove opdferrh.ps from ps2write.bat and from documentation.
4. Change the documentation since ps2write is not a "device".

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfrerh.ps 1.3]</p>
</blockquote>

<p><strong><a name="2005-01-25_1830"></a>
2005-01-25 18:30 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write : Improving the output file structure.

DETAILS :

1. Merge opdfread.ps and opdferrh.ps .
2. Fix a header commant in opdfread.
3. Remove opdferrh.ps from ps2write.bat and from documentation.
4. Change the documentation since ps2write is not a "device".

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Psfiles.htm 1.59, lib/opdfread.ps 1.37, lib/ps2write.bat 1.2]</p>
</blockquote>

<p><strong><a name="2005-01-25_1826"></a>
2005-01-25 18:26 Igor Melichev</strong></p>
<blockquote>
<pre>
(pdfwrite) : Don't skip white color while painting a pattern (continued).

DETAILS :

1. The patch http://ghostscript.com/pipermail/gs-cvs/2005-January/005163.html
broke the OrderResources mode. Fixed in gdevpdfu.c .
2. Error codes were wrongly propagated in gdevpdfd.c .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfd.c 1.43, src/gdevpdfu.c 1.64]</p>
</blockquote>

<p><strong><a name="2005-01-25_1118"></a>
2005-01-25 11:18 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (the filling algorithm) : Drpouts could appear at Y-extremes of the path.

DETAILS :

Bug 687717 "Dropouts at Y-extremes when filling a path".

EXPECTED DIFFERENCES :

Normal, 72pdi :

"0.pdf"
"012-01.ps"
"012-05.ps"
"012-09.ps"
"012-13.ps"
"013-01.ps"
"013-05.ps"
"013-09.ps"
"013-13.ps"
"014-01.ps"
"014-05.ps"
"014-09.ps"
"014-13.ps"
"015-01.ps"
"015-05.ps"
"015-09.ps"
"017-01.ps"
"020-01.ps"
"027-01.ps"
"027-05.ps"
"027-09.ps"
"031-01.ps"
"032-01.ps"
"032-07.ps"
"034-01.ps"
"034-10.ps"
"036-01.ps"
"039-01.ps"
"045-01.ps"
"083-01.ps"
"083-05.ps"
"083-09.ps"
"083-13.ps"
"104-01.ps"
"109-01.ps"
"123-01.ps"
"123-05.ps"
"123-09.ps"
"136-01.ps"
"148-16.ps"
"150-01.ps"
"154-01.ps"
"158-01.ps"
"165-01.ps"
"169-01.ps"
"169-05.ps"
"169-09.ps"
"169-13.ps"
"176-01.ps"
"181-01.ps"
"192-01.ps"
"1_2001.pdf"
"1_pct_50_bang.pdf"
"205-01.ps"
"205-05.ps"
"205-09.ps"
"205-13.ps"
"212-01.ps"
"213-01.ps"
"214-01.ps"
"220-01.ps"
"220-07.ps"
"222-01.ps"
"222-05.ps"
"222-09.ps"
"222-13.ps"
"223-01.ps"
"226-01.ps"
"244-01.ps"
"245-01.ps"
"245-07.ps"
"245-13.ps"
"245-17.ps"
"250-01.ps"
"251-01.ps"
"255-01.ps"
"258-01.ps"
"260-01.ps"
"264-01.ps"
"269-01.ps"
"270-01.ps"
"281-01.ps"
"289-01.ps"
"297-01.ps"
"303-01.ps"
"307-01.ps"
"307-07.ps"
"308-04.ps"
"311-03.ps"
"316-07.ps"
"320-01.ps"
"335-01.ps"
"336-01.ps"
"446-01-fixed.ps"
"455690.pdf"
"687572.pdf"
"86554321.pdf"
"a.pdf"
"adesso1.pdf"
"adesso6.pdf"
"adesso8.pdf"
"Altona-Testsuite_p2_S_x3.pdf"
"Altona.Page_3.2002-09-27.pdf"
"Altona_Measure_1v1.pdf"
"Altona_Technical_1v1_x3.pdf"
"Altona_Visual_bb_1v1_x3.pdf"
"Altona_Visual_sb_1v1_x3.pdf"
"BEST8-99-Path.fh7.pdf"
"besttest.pdf"
"budget2.pdf"
"budget2_ai87.pdf"
"Bug1344.ps"
"Bug687044.ps"
"Bug687207.ps"
"Bug687396.ps"
"Bug687546.ps"
"Bug687603.pdf"
"Bug687603.ps"
"Bug687660.ps"
"Bug687660a.ps"
"Bug687698.ps"
"Bug687724.pdf"
"Bug687812.ps"
"Bug687828.pdf"
"Bug687840.pdf"
"bugsample.pdf"
"BW0696FOLD1FRONT.pdf"
"ca.pdf"
"chilis_black.pdf"
"chilis_red.pdf"
"Clarke Tate Manns Chinese.ai"
"colorcir.ps"
"DisplayedGood.pdf"
"DisplayedWrong.pdf"
"escher.ps"
"file2.pdf"
"golfer.eps"
"gs.anotherfailure.pdf"
"gs5.98-dragon.pdf"
"gs6.0-dragon.pdf"
"gslandscape.pdf"
"H00216q.pdf"
"InstandardBuildChar.ps"
"john_clippedimage.pdf"
"knight.pdf"
"LMG-40-7161-RU-DUC-01.pdf"
"messenger.pdf"
"messenger16.pdf"
"motor.pdf"
"muur.eps"
"Openhuis_pdf_zw.pdf"
"Page01.pdf"
"PixelisAd.pdf"
"probe3.pdf"
"PT.ps"
"ridt91.eps"
"RodinCIDEmbed.pdf"
"S2_Digitalproof-Forum_circles.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"shading_prob_800.ps"
"si_tg_brochure.pdf"
"SmoothShading.pdf"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 2(radial).ai"
"STEUER-RollingMesh 3(Final).ai"
"test.pdf"
"tiger.eps"
"time1.pdf"
"type3xshow.eps"
"unihaken-color.pdf"
"vasarely.ps"
"vsem0093.pdf"

Normal, 300dpi :

"0.pdf"
"001-13.ps"
"002-09.ps"
"012-01.ps"
"012-05.ps"
"012-09.ps"
"012-13.ps"
"013-01.ps"
"013-05.ps"
"013-09.ps"
"013-13.ps"
"014-01.ps"
"014-05.ps"
"014-09.ps"
"014-13.ps"
"015-01.ps"
"015-05.ps"
"015-09.ps"
"017-01.ps"
"01_001.pdf"
"020-01.ps"
"027-01.ps"
"027-05.ps"
"027-09.ps"
"027-13.ps"
"031-01.ps"
"032-01.ps"
"032-07.ps"
"034-01.ps"
"034-10.ps"
"035-07.ps"
"036-01.ps"
"039-01.ps"
"045-01.ps"
"083-01.ps"
"083-05.ps"
"083-09.ps"
"083-13.ps"
"102-01.ps"
"103-01.ps"
"104-01.ps"
"109-01.ps"
"118-01.ps"
"123-01.ps"
"123-05.ps"
"123-09.ps"
"136-01.ps"
"148-16.ps"
"149-05.ps"
"150-01.ps"
"154-01.ps"
"158-01.ps"
"165-01.ps"
"169-01.ps"
"169-05.ps"
"169-09.ps"
"169-13.ps"
"175-01.ps"
"176-01.ps"
"181-01.ps"
"192-01.ps"
"1_2001.pdf"
"1_pct_50_bang.pdf"
"205-01.ps"
"205-05.ps"
"205-09.ps"
"205-13.ps"
"212-01.ps"
"213-01.ps"
"214-01.ps"
"220-01.ps"
"220-07.ps"
"222-01.ps"
"222-05.ps"
"222-09.ps"
"222-13.ps"
"223-01.ps"
"226-01.ps"
"231-01.ps"
"237-01.ps"
"244-01.ps"
"245-01.ps"
"245-07.ps"
"245-13.ps"
"245-17.ps"
"250-01.ps"
"251-01.ps"
"255-01.ps"
"257-01.ps"
"258-01.ps"
"260-01.ps"
"264-01.ps"
"269-01.ps"
"270-01.ps"
"281-01.ps"
"289-01.ps"
"297-01.ps"
"298-01.ps"
"298-05.ps"
"298-09.ps"
"303-01.ps"
"307-01.ps"
"307-07.ps"
"308-04.ps"
"310-04.ps"
"311-03.ps"
"316-07.ps"
"320-01.ps"
"321-01.ps"
"321-05.ps"
"321-09.ps"
"321-13.ps"
"327-01.ps"
"334-01.ps"
"335-01.ps"
"336-01.ps"
"442-01.ps"
"446-01-fixed.ps"
"687572.pdf"
"86554321.pdf"
"a.pdf"
"adesso8.pdf"
"Altona-Testsuite_p2_S_x3.pdf"
"Altona.Page_3.2002-09-27.pdf"
"Altona_Measure_1v1.pdf"
"Altona_Technical_1v1_x3.pdf"
"Altona_Visual_bb_1v1_x3.pdf"
"Altona_Visual_sb_1v1_x3.pdf"
"BEST8-99-Path.fh7.pdf"
"besttest.pdf"
"budget2.pdf"
"budget2_ai87.pdf"
"Bug1344.ps"
"Bug687044.ps"
"Bug687207.ps"
"Bug687396.ps"
"Bug687472.ps"
"Bug687489.ps"
"Bug687546.ps"
"Bug687598.ps"
"Bug687603.pdf"
"Bug687603.ps"
"Bug687660.ps"
"Bug687660a.ps"
"Bug687698.ps"
"Bug687724.pdf"
"Bug687812.ps"
"Bug687828.pdf"
"Bug687832.pdf"
"Bug687840.pdf"
"bugsample.pdf"
"bulletin.pdf"
"BW0696FOLD1FRONT.pdf"
"ca.pdf"
"CAT_LOGO.ps"
"chilis_black.pdf"
"chilis_red.pdf"
"Clarke Tate Manns Chinese.ai"
"colorcir.ps"
"DisplayedGood.pdf"
"DisplayedWrong.pdf"
"doretree.ps"
"Es001-01.pdf"
"escher.ps"
"file.pdf"
"file2.pdf"
"Fixed_Original.pdf"
"golfer.eps"
"gs.anotherfailure.pdf"
"gs5.98-dragon.pdf"
"gs6.0-dragon.pdf"
"H00216q.pdf"
"InstandardBuildChar.ps"
"john_clippedimage.pdf"
"knight.pdf"
"LMG-40-7161-RU-DUC-01.pdf"
"messenger.pdf"
"messenger16.pdf"
"motor.pdf"
"mspro.pdf"
"muur.eps"
"non-sepqxd2distiller.pdf"
"Openhuis_pdf_zw.pdf"
"Original.pdf"
"p2b-100.pdf"
"Page01.pdf"
"PixelisAd.pdf"
"probe3.pdf"
"PT.ps"
"QA_Inv.pdf"
"ridt91.eps"
"RodinCIDEmbed.pdf"
"rotate0.pdf"
"rotate180.pdf"
"rotate270.pdf"
"rotate90.pdf"
"S2_Digitalproof-Forum_circles.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"shading_prob_800.ps"
"si_tg_brochure.pdf"
"SmoothShading.pdf"
"Svd.pdf"
"test.pdf"
"tiger.eps"
"time1.pdf"
"Type3stringwidth.ps"
"type3xshow.eps"
"unihaken-color.pdf"
"UnusualFontMatrix.ps"
"vasarely.ps"
"vsem0093.pdf"

pdfwrite,72dpi :

"0.pdf"
"012-01.ps"
"012-05.ps"
"012-09.ps"
"012-13.ps"
"013-01.ps"
"013-05.ps"
"013-09.ps"
"013-13.ps"
"014-01.ps"
"014-05.ps"
"014-09.ps"
"014-13.ps"
"015-01.ps"
"015-05.ps"
"015-09.ps"
"017-01.ps"
"01_001.pdf"
"020-01.ps"
"027-01.ps"
"027-05.ps"
"027-09.ps"
"031-01.ps"
"032-01.ps"
"032-07.ps"
"034-01.ps"
"034-10.ps"
"039-01.ps"
"045-01.ps"
"083-01.ps"
"083-05.ps"
"083-09.ps"
"083-13.ps"
"093-01.ps"
"103-01.ps"
"104-01.ps"
"109-01.ps"
"118-01.ps"
"123-01.ps"
"123-05.ps"
"123-09.ps"
"136-01.ps"
"148-16.ps"
"150-01.ps"
"154-01.ps"
"158-01.ps"
"165-01.ps"
"169-01.ps"
"169-05.ps"
"169-09.ps"
"169-13.ps"
"176-01.ps"
"181-01.ps"
"192-01.ps"
"1_2001.pdf"
"1_pct_50_bang.pdf"
"205-01.ps"
"205-05.ps"
"205-09.ps"
"205-13.ps"
"212-01.ps"
"213-01.ps"
"214-01.ps"
"220-01.ps"
"220-07.ps"
"222-01.ps"
"222-05.ps"
"222-09.ps"
"222-13.ps"
"223-01.ps"
"226-01.ps"
"237-01.ps"
"244-01.ps"
"245-01.ps"
"245-07.ps"
"245-13.ps"
"245-17.ps"
"250-01.ps"
"251-01.ps"
"255-01.ps"
"258-01.ps"
"260-01.ps"
"264-01.ps"
"269-01.ps"
"270-01.ps"
"281-01.ps"
"297-01.ps"
"303-01.ps"
"307-01.ps"
"307-07.ps"
"308-04.ps"
"311-03.ps"
"316-07.ps"
"320-01.ps"
"335-01.ps"
"336-01.ps"
"446-01-fixed.ps"
"455690.pdf"
"687572.pdf"
"86554321.pdf"
"a.pdf"
"adesso1.pdf"
"adesso6.pdf"
"adesso8.pdf"
"Altona-Testsuite_p2_S_x3.pdf"
"Altona.Page_3.2002-09-27.pdf"
"Altona_Measure_1v1.pdf"
"Altona_Technical_1v1_x3.pdf"
"Altona_Visual_bb_1v1_x3.pdf"
"Altona_Visual_sb_1v1_x3.pdf"
"annots.pdf"
"BEST8-99-Path.fh7.pdf"
"besttest.pdf"
"budget2.pdf"
"budget2_ai87.pdf"
"Bug1344.ps"
"Bug687044.ps"
"Bug687207.ps"
"Bug687396.ps"
"Bug687546.ps"
"Bug687603.pdf"
"Bug687603.ps"
"Bug687660.ps"
"Bug687660a.ps"
"Bug687698.ps"
"Bug687724.pdf"
"Bug687812.ps"
"Bug687828.pdf"
"Bug687832.pdf"
"Bug687840.pdf"
"bugsample.pdf"
"bulletin.pdf"
"BW0696FOLD1FRONT.pdf"
"ca.pdf"
"chilis_black.pdf"
"chilis_red.pdf"
"Clarke Tate Manns Chinese.ai"
"colorcir.ps"
"DisplayedGood.pdf"
"DisplayedWrong.pdf"
"escher.ps"
"file2.pdf"
"golfer.eps"
"gs.anotherfailure.pdf"
"gs5.98-dragon.pdf"
"gs6.0-dragon.pdf"
"gslandscape.pdf"
"GS_Stroke_error.pdf"
"H00216q.pdf"
"InstandardBuildChar.ps"
"john_clippedimage.pdf"
"knight.pdf"
"LMG-40-7161-RU-DUC-01.pdf"
"messenger.pdf"
"messenger16.pdf"
"motor.pdf"
"mspro.pdf"
"muur.eps"
"Openhuis_pdf_zw.pdf"
"Page01.pdf"
"PixelisAd.pdf"
"probe3.pdf"
"PT.ps"
"RodinCIDEmbed.pdf"
"rotate180.pdf"
"S2_Digitalproof-Forum_circles.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"shading_prob_800.ps"
"si_tg_brochure.pdf"
"SmoothShading.pdf"
"test.pdf"
"tiger.eps"
"time1.pdf"
"type3xshow.eps"
"unihaken-color.pdf"
"vasarely.ps"
"vsem0093.pdf"

pdfwrite 300dpi:

"0.pdf"
"001-13.ps"
"002-09.ps"
"012-01.ps"
"012-05.ps"
"012-09.ps"
"012-13.ps"
"013-01.ps"
"013-05.ps"
"013-09.ps"
"013-13.ps"
"014-01.ps"
"014-05.ps"
"014-09.ps"
"014-13.ps"
"015-01.ps"
"015-05.ps"
"015-09.ps"
"017-01.ps"
"01_001.pdf"
"020-01.ps"
"027-01.ps"
"027-05.ps"
"027-09.ps"
"027-13.ps"
"031-01.ps"
"032-01.ps"
"032-07.ps"
"034-01.ps"
"034-10.ps"
"035-07.ps"
"036-01.ps"
"039-01.ps"
"045-01.ps"
"083-01.ps"
"083-05.ps"
"083-09.ps"
"083-13.ps"
"093-01.ps"
"102-01.ps"
"103-01.ps"
"104-01.ps"
"109-01.ps"
"118-01.ps"
"123-01.ps"
"123-05.ps"
"123-09.ps"
"136-01.ps"
"148-16.ps"
"149-05.ps"
"150-01.ps"
"154-01.ps"
"158-01.ps"
"165-01.ps"
"169-01.ps"
"169-05.ps"
"169-09.ps"
"169-13.ps"
"175-01.ps"
"176-01.ps"
"181-01.ps"
"192-01.ps"
"1_2001.pdf"
"1_pct_50_bang.pdf"
"205-01.ps"
"205-05.ps"
"205-09.ps"
"205-13.ps"
"212-01.ps"
"213-01.ps"
"214-01.ps"
"220-01.ps"
"220-07.ps"
"222-01.ps"
"222-05.ps"
"222-09.ps"
"222-13.ps"
"223-01.ps"
"226-01.ps"
"231-01.ps"
"237-01.ps"
"244-01.ps"
"245-01.ps"
"245-07.ps"
"245-13.ps"
"245-17.ps"
"250-01.ps"
"251-01.ps"
"255-01.ps"
"257-01.ps"
"258-01.ps"
"260-01.ps"
"264-01.ps"
"269-01.ps"
"270-01.ps"
"281-01.ps"
"297-01.ps"
"298-01.ps"
"298-05.ps"
"298-09.ps"
"303-01.ps"
"307-01.ps"
"307-07.ps"
"308-04.ps"
"310-04.ps"
"311-03.ps"
"316-07.ps"
"320-01.ps"
"321-01.ps"
"321-05.ps"
"321-09.ps"
"321-13.ps"
"327-01.ps"
"334-01.ps"
"335-01.ps"
"336-01.ps"
"442-01.ps"
"446-01-fixed.ps"
"483-05-fixed.ps"
"687572.pdf"
"86554321.pdf"
"a.pdf"
"adesso1.pdf"
"adesso7.pdf"
"adesso8.pdf"
"Altona-Testsuite_p2_S_x3.pdf"
"Altona.Page_3.2002-09-27.pdf"
"Altona_Measure_1v1.pdf"
"Altona_Technical_1v1_x3.pdf"
"Altona_Visual_bb_1v1_x3.pdf"
"Altona_Visual_sb_1v1_x3.pdf"
"BEST8-99-Path.fh7.pdf"
"besttest.pdf"
"budget2.pdf"
"budget2_ai87.pdf"
"Bug1344.ps"
"Bug687044.ps"
"Bug687207.ps"
"Bug687396.ps"
"Bug687472.ps"
"Bug687489.ps"
"Bug687546.ps"
"Bug687598.ps"
"Bug687603.pdf"
"Bug687603.ps"
"Bug687660.ps"
"Bug687660a.ps"
"Bug687698.ps"
"Bug687724.pdf"
"Bug687812.ps"
"Bug687828.pdf"
"Bug687832.pdf"
"Bug687840.pdf"
"bugsample.pdf"
"bulletin.pdf"
"BW0696FOLD1FRONT.pdf"
"ca.pdf"
"CAT_LOGO.ps"
"chilis_black.pdf"
"chilis_red.pdf"
"Clarke Tate Manns Chinese.ai"
"colorcir.ps"
"DisplayedGood.pdf"
"DisplayedWrong.pdf"
"doretree.ps"
"Es001-01.pdf"
"escher.ps"
"file.pdf"
"file2.pdf"
"Fixed_Original.pdf"
"golfer.eps"
"gs.anotherfailure.pdf"
"gs5.98-dragon.pdf"
"gs6.0-dragon.pdf"
"GS_Stroke_error.pdf"
"H00216q.pdf"
"InstandardBuildChar.ps"
"john_clippedimage.pdf"
"knight.pdf"
"LMG-40-7161-RU-DUC-01.pdf"
"messenger.pdf"
"messenger16.pdf"
"motor.pdf"
"mspro.pdf"
"muur.eps"
"ngnews.pdf"
"ngnews1.pdf"
"non-sepqxd2distiller.pdf"
"Openhuis_pdf_zw.pdf"
"Original.pdf"
"p2b-100.pdf"
"Page01.pdf"
"PixelisAd.pdf"
"probe3.pdf"
"PT.ps"
"QA_Inv.pdf"
"RodinCIDEmbed.pdf"
"rotate0.pdf"
"rotate180.pdf"
"rotate270.pdf"
"rotate90.pdf"
"S2_Digitalproof-Forum_circles.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"shading_prob_800.ps"
"si_tg_brochure.pdf"
"SmoothShading.pdf"
"Svd.pdf"
"test.pdf"
"test3.pdf"
"tiger.eps"
"time1.pdf"
"Type3stringwidth.ps"
"type3xshow.eps"
"unihaken-color.pdf"
"UnusualFontMatrix.ps"
"vasarely.ps"
"vsem0093.pdf"
"xngnews.pdf"</pre>
<p>[src/gxfill.c 1.121, src/gxfilltr.h 1.12]</p>
</blockquote>

<p><strong><a name="2005-01-25_0119"></a>
2005-01-25 01:19 Ralph Giles</strong></p>
<blockquote>
<pre>
Always rebuild the jasper autoconf header when configure is run to prevent
the persistence of stale versions. Closes bug 687852.</pre>
<p>[src/configure.ac 1.50]</p>
</blockquote>

<p><strong><a name="2005-01-24_1603"></a>
2005-01-24 16:03 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Register charproc XObjects with a page (continued);

DETAILS :

Fixing cygwin/gcc warnings in the last patch.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfg.h 1.35, src/gdevpdte.c 1.69, src/gdevpdtx.h 1.4]</p>
</blockquote>

<p><strong><a name="2005-01-24_1537"></a>
2005-01-24 15:37 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Register charproc XObjects with a page.

DETAILS :

If an XObject is uzed in a charproc,
it has to be added to the page resource list.

Bug 687894 "Wrong handling of Type 3 fonts (?)"

Generalized pdf_font_resource_t::used_fonts, pdf_register_charproc_font and
pdf_used_charproc_fonts for any resource type.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfj.c 1.33, src/gdevpdte.c 1.68, src/gdevpdtf.c 1.42, src/gdevpdtf.h 1.27, src/gdevpdts.c 1.28, src/gdevpdtx.h 1.3]</p>
</blockquote>

<p><strong><a name="2005-01-24_1219"></a>
2005-01-24 12:19 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Cygwin/gcc warnings.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdte.c 1.67, src/gdevpdtt.c 1.99]</p>
</blockquote>

<p><strong><a name="2005-01-24_1200"></a>
2005-01-24 12:00 Igor Melichev</strong></p>
<blockquote>
<pre>
Define more CMap resources.

DETAILS :

Adding more 4 redistributable Adobe CMaps.

EXPECTED DIFFERENCES :

None.</pre>
<p>[Resource/CMap/Adobe-CNS1-3 1.1, Resource/CMap/Adobe-GB1-4 1.1, Resource/CMap/Adobe-Japan1-4 1.1, Resource/CMap/Adobe-Korea1-2 1.1]</p>
</blockquote>

<p><strong><a name="2005-01-20_0510"></a>
2005-01-20 05:10 Dan Coby</strong></p>
<blockquote>
<pre>
Add switch -dNO_TN5044 to disable the TN 5044 pusedo operators.  These
operators are needed from some QuarkXpress files but cause probems with
some Illustrator 88 and Corel 9 files.  Also add documentation to Use.htm.
This is part of bug 687884.</pre>
<p>[lib/gs_lev2.ps 1.36, doc/Use.htm 1.127]</p>
</blockquote>

<p><strong><a name="2005-01-20_0026"></a>
2005-01-20 00:26 Ray Johnston</strong></p>
<blockquote>
<pre>
Add the "Identity-" CMaps to the decode list.</pre>
<p>[lib/gs_ciddc.ps 1.14]</p>
</blockquote>

<p><strong><a name="2005-01-20_0021"></a>
2005-01-20 00:21 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a comment typo.</pre>
<p>[src/sjbig2.h 1.5]</p>
</blockquote>

<p><strong><a name="2005-01-19_0024"></a>
2005-01-19 00:24 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687897 There are still devices not switched to new API.
This change implements the DeviceN color related changes in the device
API four these four source files.  These devices are not normally part of
the Ghostscript build but they are present in the GS sources.</pre>
<p>[src/gdevccr.c 1.6, src/gdevcp50.c 1.7, src/gdevifno.c 1.6, src/gdevmgr.c 1.8]</p>
</blockquote>

<p><strong><a name="2005-01-17_1736"></a>
2005-01-17 17:36 Ralph Giles</strong></p>
<blockquote>
<pre>
Add new files to the documentation listing.</pre>
<p>[doc/Develop.htm 1.144, doc/Psfiles.htm 1.58]</p>
</blockquote>

<p><strong><a name="2005-01-17_1458"></a>
2005-01-17 14:58 Igor Melichev</strong></p>
<blockquote>
<pre>
(pdfwrite) : Don't skip white color while painting a pattern.

DETAILS :

Bug 687890 "pattern misconverted".

1. Don't skip white color while painting a pattern (gdevpdfd.c).

2. The "%PDF-" file tag was erroneusely written into the pattern stream (gdevpdfu.c).

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfd.c 1.42, src/gdevpdfu.c 1.63]</p>
</blockquote>

<p><strong><a name="2005-01-13_1707"></a>
2005-01-13 17:07 Igor Melichev</strong></p>
<blockquote>
<pre>
(ps2write) : Convert unsupported font types into bitmap fonts (continued).

DETAILS :

This patch is a part of ps2write project.
It has no effect with "usual" invocation of Ghostscript.

1. A code for setting the device parameter HaveCIDSystem was missed from the last patch.
Adding it now.

2. Replace a magic constant with a meanful name psdf_version_ll3.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfp.c 1.42, src/gdevpsdf.h 1.25]</p>
</blockquote>

<p><strong><a name="2005-01-13_1658"></a>
2005-01-13 16:58 Igor Melichev</strong></p>
<blockquote>
<pre>
(ps2write) : Convert unsupported font types into bitmap fonts.

DETAILS :

This patch is a part of ps2write project.
It has no effect with "usual" invocation of Ghostscript.

1. If the target device doesn't support Postscript version 2010,
convert Type 42 fonts into bitmap fonts.

2. Ever convert Type1C into bitmaps since Postscript
level 2 can't handle Type 2 charstrings.

3. Convert CIDFontType0 into bitmap if the target device has no
CID system installed or the font has Type 2 subfonts.

4. Convert CIDFontType2 into bitmap if the target device has no
CID system installed or it doesn't support Postscript version 2010.

5. A new device parameter HaveCIDSystem is defined to the pdfwrite device
to provide information for (3), (4).

A new function gs_cid0_has_type2 is defined to implement (3).

Also fixed a header comment gs_cid0_indexed_font, which was entirely wrong.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtt.c 1.98, src/gdevpsdf.h 1.24, src/gsfcid.c 1.14, src/gxfcid.h 1.14]</p>
</blockquote>

<p><strong><a name="2005-01-13_1226"></a>
2005-01-13 12:26 Igor Melichev</strong></p>
<blockquote>
<pre>
(ps2write) : Require lesser encoding resources.

DETAILS :

This patch is a part of ps2write project.
It has no effect with "usual" invocation of Ghostscript.

1. Defined a new device parameter PSVersion to the pdfwrite device.
   It is being ignored without OrderResources.
   Reserved for future development.

2. pdf_refine_encoding_index allows lesser encodings with OrderResources.

3. MacRomanEncoding and MacGlyphEncoding are still needed for True Type fonts.
Their access has been simplified in lib/opdfread.ps, lib/opdfrerh.ps .

4. Created gs/lib/ps2write.bat to simplify the further maintenance
   of the file list to be concatenated.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfp.c 1.41, src/gdevpdtt.c 1.97, src/gdevpsdf.h 1.23, lib/opdfread.ps 1.36, lib/opdfrerh.ps 1.2, lib/ps2write.bat 1.1]</p>
</blockquote>

<p><strong><a name="2005-01-12_1846"></a>
2005-01-12 18:46 Ralph Giles</strong></p>
<blockquote>
<pre>
Update broken Adobe documentation links. Closes bug 687892.</pre>
<p>[doc/Ps2epsi.htm 1.37, doc/Ps2pdf.htm 1.75, doc/Readme.htm 1.62, doc/Use.htm 1.126]</p>
</blockquote>

<p><strong><a name="2005-01-12_1802"></a>
2005-01-12 18:02 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a typo in the installation file list. Closes bug 687891.</pre>
<p>[src/unixinst.mak 1.38]</p>
</blockquote>

<p><strong><a name="2005-01-12_1023"></a>
2005-01-12 10:23 Igor Melichev</strong></p>
<blockquote>
<pre>
(ps2write) : Provide a compatibility to Adobe CPSI.

DETAILS :

This patch is a part of ps2write project.
It has no effect with "regular" invocation.

1. Defined an error handler and necessary GS-specific operators in a new file opdfrerh.ps .
2. Defined the missed debug switch TTFDEBUG.
3. Defined a debug printing 'printdict', 'printfont'.
4. Fixed an unconformity in FunctionToProc4 with 'run'.
5. Fixed an unconformity: encoding must not be packed arrays ('packedarray' in opdfrerh.ps).

A minor massive change : inserted a space between '=' to
distinguish temporary and permanent debug printing.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.35, lib/opdfrerh.ps 1.1]</p>
</blockquote>

<p><strong><a name="2005-01-12_1009"></a>
2005-01-12 10:09 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Wrong options were passed to psf_write_type1_font.

DETAILS :

This patch is a part of ps2write project.
It has no effect with "regular" invocation (when OrderResources=false).

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtb.c 1.31]</p>
</blockquote>

<p><strong><a name="2005-01-11_1234"></a>
2005-01-11 12:34 Igor Melichev</strong></p>
<blockquote>
<pre>
[Log message beg]
Fix : Unimplemented CIDFont feature with a Type 3 font descendent (continued).

DETAILS :

This is a partial fix for the bug 687875
"pdfwrite : Type 0 FMapType 9 font with a Type 3 descendent converts to bitmaps".

The old code created two fonts and duplicated the text.
With this path the font still converts to bitmaps,
but the text duplication is fixed.

EXPECTED DIFFERENCES :

pdfwrite Bug687845.ps</pre>
<p>[src/gdevpdtt.c 1.96]</p>
</blockquote>

<p><strong><a name="2005-01-10_1454"></a>
2005-01-10 14:54 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Ignore / as a name of BaseEncoding; recover broken PDF files generated
by J.D.Edwards OneWorld (B7333).
Fix bug 687786 from customer 220.</pre>
<p>[lib/pdf_font.ps 1.74]</p>
</blockquote>

<p><strong><a name="2005-01-10_1433"></a>
2005-01-10 14:33 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (the new filling algorithm) : Prevent painting outside the clipping box.

DETAILS :

Bug 687872 "access violation in GS 8.50".

When a trapesoid degenerates to a rectangle,
the old code wrongly truncated it with the clipping box.

Minor change : Moved ybot, ytop definitions closer to their usage.

Due to another known bug 687717, this patch may sometimes cause a regression,
which looks as another missed pixel at a path's Y extreme.
Such regression, when it appears with this patch,
to be considered as a part of the problem 687717.
Expected differences are such cases.

EXPECTED DIFFERENCES :

Normal, 300 dpi :

"Clarke Tate Manns Chinese.ai"
"doretree.ps"
"gs5.98-dragon.pdf"
"gs6.0-dragon.pdf"
"QA_Inv.pdf"
"shading_prob_800.ps"

pdfwrite 300 dpi :

"doretree.ps"
"gs5.98-dragon.pdf"
"gs6.0-dragon.pdf"
"QA_Inv.pdf"</pre>
<p>[src/gxfilltr.h 1.11]</p>
</blockquote>

<p><strong><a name="2005-01-10_1132"></a>
2005-01-10 11:32 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : CDevProc|Metrics|Metrics2 did not work with CIDFontType 0 (continued 2).

DETAILS :

Bug 687832 (PDF interpreter) : CID Font in PDF

The CDevProc output was transformed with w CID font leaf's FontMatrix.
See comment in code.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxchar.c 1.44]</p>
</blockquote>

<p><strong><a name="2005-01-06_1745"></a>
2005-01-06 17:45 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for possibly non-compliant PDF where the /DecodeParms for a stream is
an array, but the /F consists of a single filter name. Bug 687861 for
customer 700.</pre>
<p>[lib/pdf_base.ps 1.45]</p>
</blockquote>

<p><strong><a name="2004-12-25_1049"></a>
2004-12-25 10:49 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Search the whole PDF file for the last occurrence of %%EOF string starting
from the last 1024 bytes. Following Acrobat example, accept invalid PDF files
that have large number of junk bytes at the end.
Fix bug 687474 from customer 580.</pre>
<p>[lib/pdf_main.ps 1.89]</p>
</blockquote>

<p><strong><a name="2004-12-23_2348"></a>
2004-12-23 23:48 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : CDevProc|Metrics|Metrics2 did not work with CIDFontType 0 (continued).

DETAILS :

Bug 687846 "parenthesis misplaced and text strings too long with vertical text".
The bug title is mosleading - actually all glyphs were shifted,
but parenthesis were shifted in another direction due to a different WMode.

We didn't pass actual glyph width to CDevProc when
use_FontBBox_as_Metrics2 is true - see the patch.
I reacll that I wrote this portion of code from scratch 3 years ago.
Our test base did not include test cases for it.
Now we got one.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/zchar1.c 1.43]</p>
</blockquote>

<p><strong><a name="2004-12-22_1852"></a>
2004-12-22 18:52 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Unimplemented CIDFont feature with a Type 3 font descendent.

DETAILS :

Bug 645316 Quark EPS file with CID fonts
Bug 687845 text doesn't appear from embedded japanese font
Bug 687847 text missing from CIDFont

From PLRM3 section 5.11 page 389 :

Under special conditions, a CID can be used when the descendant is a Type 3
base font. The font's BuildGlyph or BuildChar procedure is invoked to render a
character whose code is the last byte originally extracted from the show string.
If this procedure executes setfont to establish a CIDFont as the current font
and then executes a show operation on a string consisting of just that character
code, the code is ignored; instead, the CID determined by the earlier CMap
mapping is used to look up the glyph in the CIDFont. This special case exists
for compatibility with applications that substitute Type 3 fonts for base fonts
in a composite font hierarchy to achieve certain special effects.

This patch fixes the PS interpreter,
but pdfwrite processing needs a separate improvement,
which is described in the new bug 687875.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gstext.c 1.19, src/gxtext.h 1.16, src/int.mak 1.133, src/zchar.c 1.16]</p>
</blockquote>

<p><strong><a name="2004-12-21_2013"></a>
2004-12-21 20:13 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT interpreter) : Provide a tolerance to the FDef array overflow.

DETAILS :

Bug 687858  /invalidfont in --charpath--.
A buggy TT fopnt defines more functions than the max profile specifies.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/ttobjs.c 1.9]</p>
</blockquote>

<p><strong><a name="2004-12-21_1127"></a>
2004-12-21 11:27 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : The interpretation must not depend on the font subset prefix.

DETAILS :

Bug 687856 "PDF interpretation depends on the font subset prefix.".

1. Remaned pdfcachefont into pdffindcachedfont for a better reflection of its function.
2. Defined pdfaddcachedfont.
3. Used it immediately when an embedded font is loaded.
4. Added a comment to code. See it for more details.

EXPECTED DIFFERENCES :

pdfwrite tpc2.ps</pre>
<p>[lib/pdf_font.ps 1.73]</p>
</blockquote>

<p><strong><a name="2004-12-21_0853"></a>
2004-12-21 08:53 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Propagate error code from setup_image_compression.

DETAILS :

Bug 687854 "-dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode" doesn't work .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpsdi.c 1.32]</p>
</blockquote>

<p><strong><a name="2004-12-20_2235"></a>
2004-12-20 22:35 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Targets gconfxx.h and ld.tr had an incorrect dependence in the makefile.

DETAILS :

Bug 687059 "Re-building a ready gswin32.exe".

The old rule

 &#36;(ld_tr) : &#36;(gconfig_h)

wrongly established a dependence opposite to the file modification order.
Diagnosed with inserting "echo xxxxxxxxxxx" after the rule above.
Made the order of targets to be same as the order of
file modifications when they are created with genconf.exe and echogs.exe .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gs.mak 1.30]</p>
</blockquote>

<p><strong><a name="2004-12-20_2222"></a>
2004-12-20 22:22 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Restore missed dependencies on gconfxx.h .

DETAILS :

This is a preparation for fixing the bug
Bug 687059 "Re-building a ready gswin32.exe".

We prefer to commit it separately, since it's definitely an independent bug.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/int.mak 1.132, src/lib.mak 1.204]</p>
</blockquote>

<p><strong><a name="2004-12-20_2217"></a>
2004-12-20 22:17 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Completely remove the platform dependent target lib.tr from makefiles.

DETAILS :

This is a preparation for fixing the bug
Bug 687059 "Re-building a ready gswin32.exe".
The file lib.tr was created for old linkers,
which can't handle objs and libs in a single list file.

This change affects FAPI, which only uses a list of libs,
and only on Windows and OS/2 platforms.
We did not test Borland and Watcom compilers,
but unlikely FAPI is compiled with them.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/bcwin32.mak 1.36, src/genconf.c 1.10, src/gs.mak 1.29, src/msvc32.mak 1.69, src/msvccmd.mak 1.24, src/msvclib.mak 1.29, src/os2.mak 1.44, src/watcw32.mak 1.33, src/winint.mak 1.24]</p>
</blockquote>

<p><strong><a name="2004-12-19_1724"></a>
2004-12-19 17:24 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : The "NeverEmbed" logics was broken (continued 2).

DETAILS :

Bug 687836 "Crash with -dNeverEmbed".
Fixes a cast in the previous patch.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtd.c 1.20]</p>
</blockquote>

<p><strong><a name="2004-12-19_1719"></a>
2004-12-19 17:19 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : The "NeverEmbed" logics was broken (continued).

DETAILS :

Bug 687836 "Crash with -dNeverEmbed".
Fixes 'const' in the previous patch.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtd.c 1.19]</p>
</blockquote>

<p><strong><a name="2004-12-19_1710"></a>
2004-12-19 17:10 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : The "NeverEmbed" logics was broken.

DETAILS :

Bug 687836 "Crash with -dNeverEmbed".
It was an inaccuracy (incomplete testing) when implementing
PDFW_DELAYED_STREAMS for the ps2write project.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtd.c 1.18]</p>
</blockquote>

<p><strong><a name="2004-12-17_2057"></a>
2004-12-17 20:57 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for invalid (zero width) BBox in PDF Form Xobject or Annotation.
Bug 687862 for customer 770.</pre>
<p>[lib/pdf_draw.ps 1.89]</p>
</blockquote>

<p><strong><a name="2004-12-16_1234"></a>
2004-12-16 12:34 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : Prefer 'post' to cmap 1.0, because obsolete PDF writers misuse the latter.

DETAILS :

Bug 687828 "pages retain some of earlier pages displayed/"

The bug title above is misleading.
Real problem is missing characters and rendering .notdef instead.

This patch improves hewristics for choosing an encoding
for True Type fonts. Obsolete versions of Distiller and Ghostscript
wrote a cmap 1.0 (Macintosh Roman) into a PDF, which really uses a
random encoding. For example, the test case of the bug 687828
encodes Arabian characters with cmap 1.0.

Thits patch prefers to use 'post' table instead cmap 1.0,
when a 'post' table presents, and font resource dictionary
doesn't specify Encoding.

Also improved a debug printing.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/gs_ttf.ps 1.40, lib/gs_typ42.ps 1.7]</p>
</blockquote>

<p><strong><a name="2004-12-15_2321"></a>
2004-12-15 23:21 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : A hang adding over 256 glyphs for a stable font copy.

DETAILS :

Bug 687816 "Hang in named_glyph_slot_hashed".

1. Added gs_copied_font_data_s::num_glyphs to monitor
the current number of glyphs in a stable font copy (gxfcopy.c).

2. copy_glyph_data maintains gs_copied_font_data_s::num_glyphs (gxfcopy.c).

3. gs_copied_can_copy_glyphs checks whether the preallocated
size of the glyphs array doesn't exceed (gxfcopy.c).

4. copy_glyph_data is fixed to return error code when
trying to add a glyph over the preallocated size of the glyphs array (gxfcopy.c).

5. pdf_obtain_font_resource_encoded is changed to handle the case when
new glyphs overflow the font copy (gdevpdtt.c).

The changes above fix the bug, but we also provide an additional optimization
with GLYPHS_SIZE_IS_PRIME 1 (gxfcopy.c):

6. Preallocate at least 257 ghyphs rather than 256 ones by the old code;
This coners a font of 256 glyphs and 1 .notdef  (gxfcopy.c).
(Well, that could fix the hang in the sample case of the bug 687816,
but generally there exist other cases due to the font merging,
which require the changes 1-5 above.

7. Use primes numbers for the size of glyphs array instead powers of 2
against unprodactive expense of RAM (gxfcopy.c).

When the changes 5 was done, a regression happened with tpc2.ps :
pdfwrite generated an incorrect PDF. To fix that, we forced to do more changes :

8. pdf_register_charproc_font recieved a gs_id of the PS font instead
the PDF object id. It caused a problem with multiple muster fonts,
because MM instances have same id as the MM font.
pdf_encode_string is changed to pass a correct resource id (gdevpdte.c),

9. Since tpc2.ps generates hundreds of MM font instances, the field
pdf_font_resource_s::u.s.used_fonts may not have a staticly defined size.
replaced with a dynamicly allocated array (gdevpdtf.h, gdevpdte.c).

10. Garbager descriptor for pdf_font_resource_s is changed to maintain (9).

11. A new function pdf_find_resource_by_resource_id is defined for
the correct implementation of pdf_used_charproc_fonts (gdevpdfu.c).

After it another tpc2.ps regression persisted : the character 'y'
dissapperaed in some words. The following changes are done to fix that :

12. Improved thge hash function in pdf_add_subset_prefix (gdevpdtb.c).

13. Defined FINE_GLYPH_USAGE 1 for a better precision of the font subset,
in the case when a PS interpreter callout happens fro CDevProc or for a Type 3 BuildChar
(gdevpdfx.h, gdevpdte.c). Currently it works for non-CID fonts only.

14. Improved the diagnistics for the missed glyph in a Type 1 font (gs_type1.ps).

Actually the last regression reflects another problem in the PDF interpreter,
which is described in a new bug 687856.

EXPECTED DIFFERENCES :

pdfwrite :

test-setweightvector.ps
tpc2.ps

The distilled tpc2.ps gets 1 progression and 1 regression.
The progression is the glyph width. The regression is an ununiform
stem width while rendering the PDF due to problem in the PDF interpreter.
We describe that problem in the new bug 687857.</pre>
<p>[src/gdevpdfu.c 1.62, src/gdevpdfx.h 1.104, src/gdevpdtb.c 1.30, src/gdevpdte.c 1.66, src/gdevpdtf.c 1.41, src/gdevpdtf.h 1.26, src/gdevpdtt.c 1.95, src/gxfcopy.c 1.55, lib/gs_type1.ps 1.16]</p>
</blockquote>

<p><strong><a name="2004-12-14_1242"></a>
2004-12-14 12:42 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : gs_function_is_monotonic computed an unused auxiliary result (continued 5).

DETAILS :

Interval boundaries for subfunctions of a stitching function got an
artithmetic error, which caused the interval to move outside the
subfunction domain. Bug 687840 "/rangecheck in --fill--".
The effect only appeared with MSVC6 release build.

The hunk #2 of this patch fixes the particular problem, but
we prefer to provide a better safety with the hunk #3.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gsfunc3.c 1.23]</p>
</blockquote>

<p><strong><a name="2004-12-14_0932"></a>
2004-12-14 09:32 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT grid fitting) : An assertion failed in the spot analyzer (continued).

DETAILS :

A condition for a stem prolongation was too weak.
Bug 687823 "assert in gzspotan.c with ttcf2cid font".

This re-applies the resent patch, which was reverted before 8.50 release. See
http://ghostscript.com/pipermail/gs-cvs/2004-December/005087.html
http://ghostscript.com/pipermail/gs-cvs/2004-December/005091.html

EXPECTED DIFFERENCES :

The list of differences, which are caused by the patch, is applied below.
Meanwhile the baseline was already upgraded with them :
http://ghostscript.com/pipermail/gs-regression/2004-December/001324.html,
and then the patch was reverted. When the patch was reverted,
the reverse difference should have appeared in the regression report,
but it did not appear for an unclear reason.

72dpi :

01_001.pdf
159.pdf
289-01.ps
adesso7.pdf
adesso8.pdf
Altona.Page_3.2002-09-27.pdf
Altona_Technical_1v1_x3.pdf
Bug687603.ps
Bug687724.pdf
bugsample.pdf
CAIB_highres_page4.pdf
Faktura.pdf
fonts.pdf
japan.ps
keyboard.pdf
korea.ps
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 2(radial).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf
type42_glyph_index.ps

normal, 300dpi :

01_001.pdf
159.pdf
289-01.ps
adesso2.pdf
adesso8.pdf
Altona.Page_3.2002-09-27.pdf
Altona_Technical_1v1_x3.pdf
Bug687603.ps
Bug687724.pdf
bugsample.pdf
CAIB_highres_page4.pdf
Faktura.pdf
fonts.pdf
japan.ps
keyboard.pdf
korea.ps
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 2(radial).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf

pdfwrite 300 dpi :

01_001.pdf
159.pdf
adesso2.pdf
adesso8.pdf
Altona.Page_3.2002-09-27.pdf
Altona_Technical_1v1_x3.pdf
Bug687603.ps
Bug687724.pdf
bugsample.pdf
CAIB_highres_page4.pdf
Faktura.pdf
fonts.pdf
japan.ps
keyboard.pdf
korea.ps
shading_prob_800.ps
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 2(radial).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf</pre>
<p>[src/gzspotan.c 1.13]</p>
</blockquote>

<p><strong><a name="2004-12-13_1754"></a>
2004-12-13 17:54 Ralph Giles</strong></p>
<blockquote>
<pre>
Bump the version after the 8.50 release.</pre>
<p>[lib/gs_init.ps 1.116, src/gscdef.c 1.52, src/version.mak 1.80]</p>
</blockquote>

<hr>

<h2><a name="Version8.50"></a>Version 8.50 (2004-12-10)</h2>

<p>This is the first release in the new stable series of Ghostscript.
In addition to many bug fixes it contains numerous new features. Most
obvious will be improved font handling and rasterization, and better
support for PDF 1.4 and 1.5 documents.

<p> 
New features since the last stable release:

<ul>
<li><p>
Topological grid fitting,
an original method developed for Ghostscript by Dr. Igor V. Melichev, improves 
the rendering of True Type fonts at small resolutions.
See the documentation for <a href="Language.htm#GridFitTT">GridFitTT</a> for information on this
feature.

<li><p>
The PDF writer now implements PDF 1.4 encryption.
See the <a href="Ps2pdf.htm#Encryption">encryption parameter</a> documentation for more
information.

<li><p>
A new rendering method for shadings, developed for Ghostscript by 
Dr. Igor V. Melichev, improves the quality and performance of 
rasterization on continuous tone devices.
The new method allows hardware or software acceleration with help of
customizable routines for filling areas with a linearly varying color.
functions.

<li><p>
Better support for running Ghostscript in "Job Server" mode as a daemon
to continually accept and convert a series of independent files.

<li><p>
Also new is the Rinkj deivce, an
experimental new driver for some inkjet printers using ETS screening
and color profiles to achieve very high quality output for tuned output.
See the <a href="Devices.htm#Rinkj">Rinkj</a> section for more information.

<li><p>
We now support PDF 1.5 files, including the new compression
and encryption modes.

<li><p>
We have beta support for JPEG 2000 compressed images, using the JasPer
compression library. In this release this support is only enabled as in 
the default autoconf (POSIX) and MSVC builds.

</ul>

<p>
This release also has major internal improvements toward thread safety, 
although we have not yet reached this goal. Nevertheless Ghostscript  
should be more robust when used as a library, and these changes were
an important precursor to complete virtualization.


<p> The following <a href="http://bugs.ghostscript.com/">bug</a> numbers
were open at the time of this release: <blockquote>
405501,
430175,
446344,
458780,
463688,
465936,
487953,
493348,
526099,
526491,
530011,
535366,
535932,
578865,
592160,
603934,
610478,
614298,
626295,
674418,
677324,
685335,
686747,
686750,
686816,
686819,
686824,
686841,
686842,
686843,
686853,
686865,
686867,
686919,
686980,
686996,
687011,
687012,
687013,
687039,
687059,
687063,
687084,
687086,
687095,
687105,
687108,
687110,
687122,
687125,
687146,
687168,
687174,
687193,
687196,
687203,
687219,
687221,
687229,
687231,
687243,
687251,
687257,
687259,
687271,
687280,
687295,
687297,
687298,
687303,
687314,
687316,
687324,
687327,
687341,
687342,
687345,
687346,
687360,
687373,
687375,
687394,
687397,
687399,
687401,
687410,
687414,
687434,
687435,
687445,
687460,
687468,
687473,
687474,
687475,
687480,
687484,
687485,
687492,
687497,
687498,
687514,
687518,
687520,
687523,
687525,
687529,
687531,
687535,
687536,
687537,
687539,
687541,
687545,
687551,
687558,
687559,
687560,
687561,
687583,
687593,
687595,
687600,
687608,
687611,
687621,
687622,
687628,
687630,
687633,
687642,
687643,
687644,
687650,
687654,
687657,
687661,
687663,
687666,
687669,
687674,
687676,
687677,
687678,
687679,
687680,
687682,
687684,
687686,
687694,
687695,
687696,
687697,
687702,
687707,
687712,
687715,
687717,
687721,
687727,
687728,
687729,
687731,
687735,
687738,
687754,
687756,
687769,
687772,
687775,
687778,
687780,
687782,
687783,
687786,
687791,
687793,
687795,
687796,
687800,
687802,
687803,
687805,
687806,
687808,
687809,
687813,
687814,
687815,
687816,
687820,
687822,
687823,
687825,
687826,
687827,
687828,
687830,
687831,
687832,
687834,
687835,
687836,
687837,
687838,
687840,
687842,
687843,
687844,
687845,
687846,
687847,
687848,
687849.
</blockquote>

<h3><a name="8.50_Incompatible_changes"></a>Incompatible changes</h3>

<p>
No known incompatible changes at this point

<h3><a name="8.50_changelog"></a>Changelog</h3>

<!-- generated by split_changelog.py from the output of cvs2cl.pl -->

<p><strong><a name="2004-12-10_2348"></a>
2004-12-10 23:48 Ralph Giles</strong></p>
<blockquote>
<pre>
Update 3rd party library versions to match the latest releases.</pre>
<p>[src/all-arch.mak 1.16, src/bcwin32.mak 1.35, src/dvx-gcc.mak 1.29, src/macos-mcp.mak 1.33, src/macosx.mak 1.26, src/msvc32.mak 1.68, src/msvclib.mak 1.28, src/openvms.mak 1.39, src/openvms.mmk 1.31, src/os2.mak 1.43, src/ugcclib.mak 1.29, src/unix-gcc.mak 1.48, src/unixansi.mak 1.39, src/watclib.mak 1.24, src/watcw32.mak 1.32]</p>
</blockquote>

<p><strong><a name="2004-12-10_2328"></a>
2004-12-10 23:28 Ralph Giles</strong></p>
<blockquote>
<pre>
Propagate release date and version changes to the documentation.</pre>
<p>[doc/API.htm 1.48, doc/Bug-form.htm 1.44, doc/Bug-info.htm 1.43, doc/C-style.htm 1.50, doc/Commprod.htm 1.36, doc/Copying.htm 1.34, doc/DLL.htm 1.38, doc/Deprecated.htm 1.15, doc/Details8.htm 1.15, doc/Develop.htm 1.143, doc/Devices.htm 1.84, doc/Drivers.htm 1.52, doc/Fonts.htm 1.45, doc/Helpers.htm 1.38, doc/History1.htm 1.34, doc/History2.htm 1.34, doc/History3.htm 1.34, doc/History4.htm 1.34, doc/History5.htm 1.36, doc/History6.htm 1.51, doc/History7.htm 1.39, doc/History8.htm 1.20, doc/Htmstyle.htm 1.39, doc/Install.htm 1.49, doc/Issues.htm 1.46, doc/Language.htm 1.90, doc/Lib.htm 1.38, doc/Maintain.htm 1.45, doc/Make.htm 1.84, doc/New-user.htm 1.55, doc/Projects.htm 1.62, doc/Ps-style.htm 1.32, doc/Ps2epsi.htm 1.36, doc/Ps2pdf.htm 1.74, doc/Psfiles.htm 1.57, doc/Readme.htm 1.61, doc/Release.htm 1.89, doc/Source.htm 1.34, doc/Tester.htm 1.34, doc/Testing.htm 1.32, doc/Unix-lpr.htm 1.34, doc/Use.htm 1.125, doc/Xfonts.htm 1.34, doc/gs-vms.hlp 1.32, man/dvipdf.1 1.32, man/font2c.1 1.32, man/gs.1 1.33, man/gslp.1 1.32, man/gsnd.1 1.32, man/pdf2dsc.1 1.31, man/pdf2ps.1 1.33, man/pdfopt.1 1.31, man/pf2afm.1 1.32, man/pfbtopfa.1 1.33, man/printafm.1 1.32, man/ps2ascii.1 1.31, man/ps2epsi.1 1.30, man/ps2pdf.1 1.37, man/ps2pdfwr.1 1.36, man/ps2ps.1 1.39, man/wftopfa.1 1.32]</p>
</blockquote>

<p><strong><a name="2004-12-10_2322"></a>
2004-12-10 23:22 Ralph Giles</strong></p>
<blockquote>
<pre>
Update version and date for the 8.50 release. Also some additions to the
release notes.</pre>
<p>[doc/News.htm 1.158, lib/gs_init.ps 1.115, src/gscdef.c 1.51, src/version.mak 1.79]</p>
</blockquote>

<p><strong><a name="2004-12-10_2300"></a>
2004-12-10 23:00 Ralph Giles</strong></p>
<blockquote>
<pre>
Disable JPXDecode support in the default MacOS Codewarrior build, pending
resolution of some functional issues. The autoconf gcc build can be used
as a workaround.</pre>
<p>[src/macos-mcp.mak 1.32]</p>
</blockquote>

<p><strong><a name="2004-12-10_0034"></a>
2004-12-10 00:34 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct an ambiguous '#if DEBUG' to an '#ifdef DEBUG'. Part of the fix
for bug 687830.</pre>
<p>[src/vdtrace.c 1.10]</p>
</blockquote>

<p><strong><a name="2004-12-09_0827"></a>
2004-12-09 08:27 Ralph Giles</strong></p>
<blockquote>
<pre>
Additional clean up for the MacOS CodeWarrior build. Adds a dependency
on gconfigd.h so it gets built when the project file is generated, and
include a search path for the jasper library headers.</pre>
<p>[src/macgenmcpxml.sh 1.12, src/macos-mcp.mak 1.31]</p>
</blockquote>

<p><strong><a name="2004-12-09_0824"></a>
2004-12-09 08:24 Ralph Giles</strong></p>
<blockquote>
<pre>
Update the MacOS test framework to current code.</pre>
<p>[src/dmmain.c 1.5, src/dmmain.r 1.2]</p>
</blockquote>

<p><strong><a name="2004-12-09_0347"></a>
2004-12-09 03:47 Ralph Giles</strong></p>
<blockquote>
<pre>
Use #ifdef DEBUG instead of the ambiguous #if DEBUG.</pre>
<p>[src/gp_macio.c 1.37]</p>
</blockquote>

<p><strong><a name="2004-12-09_0243"></a>
2004-12-09 02:43 Ralph Giles</strong></p>
<blockquote>
<pre>
Add a missing dependency on the DeviceN code to the tiffsep device.</pre>
<p>[src/devs.mak 1.120]</p>
</blockquote>

<p><strong><a name="2004-12-09_0059"></a>
2004-12-09 00:59 Ralph Giles</strong></p>
<blockquote>
<pre>
Modify the MacOS polling implementation to use the new libctx accessor
for the callbacks.</pre>
<p>[src/gp_macpoll.c 1.3]</p>
</blockquote>

<p><strong><a name="2004-12-08_2230"></a>
2004-12-08 22:30 Ralph Giles</strong></p>
<blockquote>
<pre>
Update the jbig2 makefile for the latest release. We now require
jbig2dec 0.7 if you want to compile in the jbig2dec source instead
of linking to the shared library.</pre>
<p>[src/jbig2.mak 1.9]</p>
</blockquote>

<p><strong><a name="2004-12-08_2135"></a>
2004-12-08 21:35 stefan</strong></p>
<blockquote>
<pre>
Delaying changes for assertions and gzspotan.c till after 8.50 release.</pre>
<p>[src/fapi_ft.c 1.14, src/gdevddrw.c 1.27, src/gdevpdfc.c 1.51, src/gdevpsf1.c 1.20, src/gdevpsft.c 1.35, src/gendev.c 1.7, src/gserror.h 1.9, src/gsfcmap.c 1.27, src/gsfunc0.c 1.23, src/gslibctx.c 1.7, src/gsmisc.c 1.22, src/gxccman.c 1.30, src/gxcht.c 1.15, src/gxdhtserial.c 1.7, src/gxfdrop.c 1.16, src/gxpflat.c 1.44, src/gxshade1.c 1.35, src/gxshade6.c 1.86, src/gzspotan.c 1.12, src/siinterp.c 1.7, src/write_t1.c 1.5, src/write_t2.c 1.7]</p>
</blockquote>

<p><strong><a name="2004-12-08_1952"></a>
2004-12-08 19:52 Ralph Giles</strong></p>
<blockquote>
<pre>
Mention the need to run autogen.sh to generate the configure script when
building from CVS.</pre>
<p>[doc/Make.htm 1.83]</p>
</blockquote>

<p><strong><a name="2004-12-08_1947"></a>
2004-12-08 19:47 Ralph Giles</strong></p>
<blockquote>
<pre>
MacOS platform build cleanup.

DETAILS:

Since the libctx changes, stdio hasn't been directly available.
Therefore we no longer support '-' as a special filename in
(the obsolete) gp_open_printer(). We change an fprintf(stderr,...)
to an eprintf() which is more correct in any case.

This change also removes the fprintf() and fputs() implementations
in the MacOS build. Metrowerks CW libc has for some time provided
implementations, but they're even less needed now that we're being
a proper library.</pre>
<p>[src/gp_macio.c 1.36]</p>
</blockquote>

<p><strong><a name="2004-12-08_1809"></a>
2004-12-08 18:09 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT grid fitting) : An assertion failed in the spot analyzer.

DETAILS :

A condition for a stem prolongation was too weak.
Bug 687823 "assert in gzspotan.c with ttcf2cid font".

EXPECTED DIFFERENCES :

72dpi :

01_001.pdf
159.pdf
289-01.ps
adesso7.pdf
adesso8.pdf
Altona.Page_3.2002-09-27.pdf
Altona_Technical_1v1_x3.pdf
Bug687603.ps
Bug687724.pdf
bugsample.pdf
CAIB_highres_page4.pdf
Faktura.pdf
fonts.pdf
japan.ps
keyboard.pdf
korea.ps
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 2(radial).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf
type42_glyph_index.ps

normal, 300dpi :

01_001.pdf
159.pdf
289-01.ps
adesso2.pdf
adesso8.pdf
Altona.Page_3.2002-09-27.pdf
Altona_Technical_1v1_x3.pdf
Bug687603.ps
Bug687724.pdf
bugsample.pdf
CAIB_highres_page4.pdf
Faktura.pdf
fonts.pdf
japan.ps
keyboard.pdf
korea.ps
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 2(radial).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf

pdfwrite 300 dpi :

01_001.pdf
159.pdf
adesso2.pdf
adesso8.pdf
Altona.Page_3.2002-09-27.pdf
Altona_Technical_1v1_x3.pdf
Bug687603.ps
Bug687724.pdf
bugsample.pdf
CAIB_highres_page4.pdf
Faktura.pdf
fonts.pdf
japan.ps
keyboard.pdf
korea.ps
shading_prob_800.ps
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 2(radial).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf</pre>
<p>[src/gzspotan.c 1.11]</p>
</blockquote>

<p><strong><a name="2004-12-08_0504"></a>
2004-12-08 05:04 Ralph Giles</strong></p>
<blockquote>
<pre>
Convert gs_malloc() calls in the MacOS gp_* code to unwrapped libc malloc()
now that gs_malloc() requires a memory pointer, which is not available.

Partial fix for bug 687830.

DETAILS:

Only the call in getenv() is active; the one in gp_init() is not used.

This may have been what the earlier libctx patch was trying to do when
it touched gp_macio.c, changing the function call, but not the arguments,
and breaking the</pre>
<p>[src/gp_mac.c 1.17, src/gp_macio.c 1.35]</p>
</blockquote>

<p><strong><a name="2004-12-08_0120"></a>
2004-12-08 01:20 stefan</strong></p>
<blockquote>
<pre>
Pulled silly macro to try to disuade the direct use of assert()</pre>
<p>[src/gserror.h 1.8]</p>
</blockquote>

<p><strong><a name="2004-12-08_0031"></a>
2004-12-08 00:31 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Provide back-up definitions of /-| /RD /|- /ND /| /NP for the benefit of
embedded PDF fonts that forget to define them. Issue a warning when they are
used. Don't fix PS interpreter because Distiller doesn't accept such fonts
either.
fix bug 687824</pre>
<p>[lib/pdf_font.ps 1.72]</p>
</blockquote>

<p><strong><a name="2004-12-08_0018"></a>
2004-12-08 00:18 stefan</strong></p>
<blockquote>
<pre>
forgot an #undef to correctly disable assert()</pre>
<p>[src/gsmisc.c 1.21]</p>
</blockquote>

<p><strong><a name="2004-12-08_0006"></a>
2004-12-08 00:06 stefan</strong></p>
<blockquote>
<pre>
Moved include outside of function body to fix MSVC compile error.</pre>
<p>[src/gsmisc.c 1.20]</p>
</blockquote>

<p><strong><a name="2004-12-07_2325"></a>
2004-12-07 23:25 stefan</strong></p>
<blockquote>
<pre>
Added macros for assertions:

GS_ASSERT(false)
returns -1 in a release system
asserts in a debug system

GS_DBG_ASSERT(false)
is a NOP in a release system
asserts in a debug system

Both versions will printf to stderr first.

Raw assert() should not be used.
GS_ASSERT will not compile in a void function, as it returns -1.
This means you can not use assertions to change the standard error return
exception handline mechanism in Ghostscript.
You can use them to catch programmer usage errors in a debug build.

gs_misc::gs_assert() is the one place the operating system's assert is called.
This can be modified in a embedded system, again assert is only called in
a debug build.</pre>
<p>[src/fapi_ft.c 1.13, src/gdevddrw.c 1.26, src/gdevpdfc.c 1.50, src/gdevpsf1.c 1.19, src/gdevpsft.c 1.34, src/gdevpx.c 1.15, src/gendev.c 1.6, src/gserror.h 1.7, src/gsfcmap.c 1.26, src/gsfunc0.c 1.22, src/gslibctx.c 1.6, src/gsmisc.c 1.19, src/gxccman.c 1.29, src/gxcht.c 1.14, src/gxdhtserial.c 1.6, src/gxfdrop.c 1.15, src/gxpflat.c 1.43, src/gxshade1.c 1.34, src/gxshade6.c 1.85, src/gzspotan.c 1.10, src/siinterp.c 1.6, src/write_t1.c 1.4, src/write_t2.c 1.6]</p>
</blockquote>

<p><strong><a name="2004-12-07_1024"></a>
2004-12-07 10:24 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Disable an unuseful warning from MSVC8.</pre>
<p>[src/msvccmd.mak 1.23]</p>
</blockquote>

<p><strong><a name="2004-12-07_0528"></a>
2004-12-07 05:28 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct an incorrect cast in the jpx filter. Bug 687831.</pre>
<p>[src/sjpx.c 1.11]</p>
</blockquote>

<p><strong><a name="2004-12-07_0503"></a>
2004-12-07 05:03 Ralph Giles</strong></p>
<blockquote>
<pre>
Add a const qualifier to the jpx filter memory contest. Corrects an error
with Metrowerks CodeWarrior 8.</pre>
<p>[src/sjpx.h 1.4]</p>
</blockquote>

<p><strong><a name="2004-12-07_0229"></a>
2004-12-07 02:29 Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the calls to set the TEXT filetype for the source files. This
has not been necessary for the last few versions of CodeWarrior, and
doing it correctly for the hierarchical jasper source is tedious.</pre>
<p>[src/macos-mcp.mak 1.30]</p>
</blockquote>

<p><strong><a name="2004-12-07_0225"></a>
2004-12-07 02:25 Ralph Giles</strong></p>
<blockquote>
<pre>
Add jasper.mak to the MacOS CW build.</pre>
<p>[src/macos-mcp.mak 1.29]</p>
</blockquote>

<p><strong><a name="2004-12-06_1802"></a>
2004-12-06 18:02 Ralph Giles</strong></p>
<blockquote>
<pre>
Enable compilation of the jasper library source for JPEG 2000 image stream
support in the MacOS Code Warrior build.</pre>
<p>[src/macos-mcp.mak 1.28]</p>
</blockquote>

<p><strong><a name="2004-12-06_1317"></a>
2004-12-06 13:17 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Improvinmg documentation for recently improced algorythms.

DETAILS :

This patch only changes comments in C code.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.120, src/gxfillsl.h 1.7, src/gxfilltr.h 1.10, src/gxshade6.c 1.84, src/gzspotan.c 1.9]</p>
</blockquote>

<p><strong><a name="2004-12-03_0641"></a>
2004-12-03 06:41 Ralph Giles</strong></p>
<blockquote>
<pre>
Decide to run a recursive configure for the jasper source based on
existence of the new jas_config_ac.h instead of the old jas_config.h

We now require the 1.701.0-gs2 (or later) release to build out of the
box. Other versions can still be used by running their configure
manually and touching this file, or by building a separate shared
library.</pre>
<p>[src/configure.ac 1.49]</p>
</blockquote>

<p><strong><a name="2004-12-01_2002"></a>
2004-12-01 20:02 Ray Johnston</strong></p>
<blockquote>
<pre>
Add JPXDecode filter to the default Windows MSVC build. This is based on
the "jasper" source and must be at least version 26 from the svn repository
using svn co http://svn.ghostscript.com:8080/jasper/trunk jasper

DETAILS:

This is a fairly minor modification to the gs MSVC makefiles, but it did
require changing our jasper version (that had accumulated many changes)
to hook in the correct jas_config***.h file and to avoid using windows.h
(so we can build with /Za). See the jasper svn for details of the changes.

EXPECTED DIFFERENCES:

none. (we didn't have any PDF 1.5 files with JPEG2000 images in the
comparefiles).</pre>
<p>[src/msvc32.mak 1.67, src/winlib.mak 1.24]</p>
</blockquote>

<p><strong><a name="2004-12-01_1757"></a>
2004-12-01 17:57 Raph Levien</strong></p>
<blockquote>
<pre>
Fix: in implementation of n operator in clip mode, put pathbbox in stopped
context so that completely empty paths have the same behavior as paths
with empty bbox, rather than causing an error. Fixes bug #687820.

DETAILS

   The test file has a "n W n" sequence, which is a request to clip to
a totally empty path. The error comes from code added to pdf_ops.ps v
1.33 to handle the case where a path is defined but has an empty
bbox. See bug 687136 for more details on this change. Comment #8 of
that bug report suggests that our PDF interpreter always maintains a
currentpoint, which would justify the use of an unprotected
pathbbox. However, that assumption seems to be false. This fix wraps
the pathbbox added in the 1.33 change in a stopped context.</pre>
<p>[lib/pdf_ops.ps 1.37]</p>
</blockquote>

<p><strong><a name="2004-12-01_0817"></a>
2004-12-01 08:17 Ralph Giles</strong></p>
<blockquote>
<pre>
Add a platform-specific JASPERCFLAGS makefile variable to assist with
proper compilation of the jasper jpeg2k library. Set this variable
correctly in the autoconf build.

DETAILS:

The jasper library natively supports building under both autoconf+cc and
MSVC, but expects a preprocessor define to be set to distinguish the
two. While we do carefully construct a special JAS_CC for compiling the
jasper source into Ghostscript, as with all the other 3rd party
libraries, there is only a facility to set special CFLAGS globally.

This change adds a new top-level makefile variable for passing
platform-specific CFLAGS into gs.mak for addition to that global
set.

Also, set JASPERCFLAGS=-DJAS_CONFIGURE in Makefile.in so that the jasper
sourcr expects the autoconf generated configuration header when
compiling as part of Ghostscript.</pre>
<p>[src/Makefile.in 1.40, src/gs.mak 1.28]</p>
</blockquote>

<p><strong><a name="2004-11-30_2031"></a>
2004-11-30 20:31 Russell Lang</strong></p>
<blockquote>
<pre>
Return error code when using -f filename.
Fix bug #687811 strange behavior with -f.</pre>
<p>[src/imainarg.c 1.34]</p>
</blockquote>

<p><strong><a name="2004-11-29_2318"></a>
2004-11-29 23:18 Russell Lang</strong></p>
<blockquote>
<pre>
When doing a Windows debug build, link against the debug run time libraries.</pre>
<p>[src/msvccmd.mak 1.22]</p>
</blockquote>

<p><strong><a name="2004-11-29_0325"></a>
2004-11-29 03:25 Russell Lang</strong></p>
<blockquote>
<pre>
Correct the SubfontID values in the example substitutions.</pre>
<p>[doc/Use.htm 1.124]</p>
</blockquote>

<p><strong><a name="2004-11-24_2009"></a>
2004-11-24 20:09 Russell Lang</strong></p>
<blockquote>
<pre>
Correct errors in .buildnativefontmap procedure.

DETAILS:
The enumeration of fonts returned by .getnativefonts
was being given "array true" which was causing a
typecheck in forall because of a missing exch.
It should have been "true array".

Also, .findfontname was returning a name rather than a
string, so cvn was failing because it was already a name.</pre>
<p>[lib/gs_fonts.ps 1.48]</p>
</blockquote>

<p><strong><a name="2004-11-24_0812"></a>
2004-11-24 08:12 Russell Lang</strong></p>
<blockquote>
<pre>
When using CJK Windows TrueType fonts, add the Windows fonts
directory to the GS_LIB registry variable to allow access to this
directory when SAFER is used.</pre>
<p>[src/dwsetup.cpp 1.10]</p>
</blockquote>

<p><strong><a name="2004-11-23_1218"></a>
2004-11-23 12:18 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT interpreter) : The component 'usage' buffer size was wrongly computed.

DETAILS :

Bug 687810 "/invalidfont in --@0x1e36c".

Note that the error message appears some misleading due to sbx, sby is placed in ostack
for type42_finish. Rather we could fix it in this particular case in type42_finish,
a complete fix appears too complicated. So for now leave it as it is.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/ttfmain.c 1.32]</p>
</blockquote>

<p><strong><a name="2004-11-23_0744"></a>
2004-11-23 07:44 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (type 1 hinter) : Bugs in 'flex' with disabled hinting.

DETAILS :

Bug 687812 "Distortion in charpath outline".

1. Wrong poles were exported from the hinter when 'flex' works with disabled hinting.
2. Improved vdtrace commands for a disabled hinting.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxhintn.c 1.56]</p>
</blockquote>

<p><strong><a name="2004-11-22_1936"></a>
2004-11-22 19:36 Ralph Giles</strong></p>
<blockquote>
<pre>
Null the DEVICE_DEVS_EXTRA variable when calling the link line. This
works around env space limitations on some vendor unicies when a large
set of devices are passed from the make command line through this
variable. Bug 687804.</pre>
<p>[src/unixlink.mak 1.7]</p>
</blockquote>

<p><strong><a name="2004-11-22_1925"></a>
2004-11-22 19:25 Ralph Giles</strong></p>
<blockquote>
<pre>
Cast the gx color index to an int inside the switch argument to
avoid problems with the HP-UX 10 compiler which does not accept
64 bit arguments to switch(). Bug 687804.</pre>
<p>[src/gdevstc.c 1.11]</p>
</blockquote>

<p><strong><a name="2004-11-22_0647"></a>
2004-11-22 06:47 Ralph Giles</strong></p>
<blockquote>
<pre>
Bump the version number after the 8.33 beta release.</pre>
<p>[doc/News.htm 1.157, lib/gs_init.ps 1.114, src/gscdef.c 1.50, src/version.mak 1.78]</p>
</blockquote>

<hr>

<h2><a name="Version8.33"></a>Version 8.33 (2004-11-20)</h2>

<p><strong>This is a release candidate for the next stable 
version of Ghostscript.</strong>

<p> 
New features since the last stable release:

<ul>
<li><p>
Topological grid fitting,
an original method developed for Ghostscript by Dr. Igor V. Melichev, improves 
the rendering of True Type fonts at small resolutions.
See the documentation for <a href="Language.htm#GridFitTT">GridFitTT</a> for information on this
feature.

<li><p>
The PDF writer now implements PDF 1.4 encryption.
See the <a href="Ps2pdf.htm#Encryption">encryption parameter</a> documentation for more
information.

<li><p>
A new rendering method for shadings, developed for Ghostscript by 
Dr. Igor V. Melichev, improves the quality and performance of 
rasterization on continuous tone devices.
The new method allows hardware or software acceleration with help of
customizable routines for filling areas with a linearly varying color.
functions.

<li><p>
This version contains the first release of Rinkj, an
experimental new driver for some inkjet printers using ETS screening.
See the <a href="Devices.htm#Rinkj">Rinkj</a> section for more information.

<li><p>
We now support PDF 1.5 files, including the new compression
and encryption modes.

<li><p>
We have beta support for JPEG 2000 compressed images, using the JasPer
compression library. This is only enabled as part of the default build
in the autoconf (POSIX) build system in this release.

</ul>

<p>
The following <a href="http://bugs.ghostscript.com/">bug</a> numbers were open at
the time of the last release:
<blockquote>
405501,
430175,
446344,
458780,
463688,
465936,
487953,
493348,
526099,
526491,
530011,
535366,
535932,
578865,
592160,
603934,
610478,
614298,
626295,
645316,
674418,
677324,
685335,
686747,
686750,
686816,
686819,
686824,
686841,
686842,
686843,
686853,
686865,
686867,
686919,
686980,
686996,
687011,
687012,
687013,
687039,
687063,
687084,
687086,
687095,
687105,
687108,
687110,
687122,
687125,
687146,
687157,
687168,
687174,
687193,
687196,
687203,
687219,
687221,
687229,
687231,
687243,
687251,
687257,
687259,
687271,
687280,
687295,
687297,
687298,
687303,
687314,
687316,
687324,
687327,
687341,
687342,
687345,
687346,
687360,
687373,
687375,
687394,
687397,
687399,
687401,
687410,
687414,
687434,
687435,
687445,
687460,
687468,
687473,
687474,
687475,
687480,
687484,
687485,
687492,
687497,
687498,
687514,
687518,
687520,
687523,
687525,
687529,
687531,
687535,
687536,
687537,
687539,
687541,
687545,
687551,
687558,
687559,
687560,
687561,
687575,
687583,
687593,
687595,
687600,
687608,
687611,
687621,
687622,
687628,
687630,
687633,
687637,
687642,
687643,
687644,
687650,
687654,
687657,
687661,
687663,
687666,
687669,
687674,
687676,
687677,
687678,
687679,
687680,
687682,
687684,
687686,
687694,
687695,
687696,
687697,
687702,
687707,
687712,
687715,
687717,
687721,
687727,
687728,
687729,
687731,
687732,
687735,
687738,
687754,
687756,
687769,
687772,
687775,
687778,
687780,
687782,
687783,
687786,
687791,
687793,
687795,
687796,
687798,
687799,
687800,
687801,
687802,
687803,
687804,
687805,
687806.
</blockquote>

<h3><a name="8.33_Incompatible_changes"></a>Incompatible changes</h3>

<p>
No known incompatible changes at this point

<h3><a name="8.33_changelog"></a>Changelog</h3>

<!-- generated by split_changelog.py from the output of cvs2cl.pl -->

<p><strong><a name="2004-11-20_0444"></a>
2004-11-20 04:44 Ralph Giles</strong></p>
<blockquote>
<pre>
Propagate release date to all documentation.</pre>
<p>[doc/API.htm 1.47, doc/Bug-form.htm 1.43, doc/Bug-info.htm 1.42, doc/C-style.htm 1.49, doc/Commprod.htm 1.35, doc/Copying.htm 1.33, doc/DLL.htm 1.37, doc/Deprecated.htm 1.14, doc/Details8.htm 1.13, doc/Develop.htm 1.142, doc/Devices.htm 1.83, doc/Drivers.htm 1.51, doc/Fonts.htm 1.44, doc/Helpers.htm 1.37, doc/History1.htm 1.33, doc/History2.htm 1.33, doc/History3.htm 1.33, doc/History4.htm 1.33, doc/History5.htm 1.35, doc/History6.htm 1.50, doc/History7.htm 1.38, doc/History8.htm 1.18, doc/Htmstyle.htm 1.38, doc/Install.htm 1.48, doc/Issues.htm 1.45, doc/Language.htm 1.89, doc/Lib.htm 1.37, doc/Maintain.htm 1.44, doc/Make.htm 1.82, doc/New-user.htm 1.54, doc/Projects.htm 1.61, doc/Ps-style.htm 1.31, doc/Ps2epsi.htm 1.35, doc/Ps2pdf.htm 1.73, doc/Psfiles.htm 1.56, doc/Readme.htm 1.60, doc/Release.htm 1.88, doc/Source.htm 1.33, doc/Tester.htm 1.33, doc/Testing.htm 1.31, doc/Unix-lpr.htm 1.33, doc/Use.htm 1.123, doc/Xfonts.htm 1.33, doc/gs-vms.hlp 1.31, man/dvipdf.1 1.31, man/font2c.1 1.31, man/gs.1 1.32, man/gslp.1 1.31, man/gsnd.1 1.31, man/pdf2dsc.1 1.30, man/pdf2ps.1 1.32, man/pdfopt.1 1.30, man/pf2afm.1 1.31, man/pfbtopfa.1 1.32, man/printafm.1 1.31, man/ps2ascii.1 1.30, man/ps2epsi.1 1.29, man/ps2pdf.1 1.36, man/ps2pdfwr.1 1.35, man/ps2ps.1 1.38, man/wftopfa.1 1.31]</p>
</blockquote>

<p><strong><a name="2004-11-20_0441"></a>
2004-11-20 04:41 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a typo in the reference to the cmpi script.</pre>
<p>[doc/Testing.htm 1.30]</p>
</blockquote>

<p><strong><a name="2004-11-20_0440"></a>
2004-11-20 04:40 Ralph Giles</strong></p>
<blockquote>
<pre>
Update release date and product name.</pre>
<p>[doc/News.htm 1.155, src/gscdef.c 1.49, src/version.mak 1.77]</p>
</blockquote>

<p><strong><a name="2004-11-20_0433"></a>
2004-11-20 04:33 Ralph Giles</strong></p>
<blockquote>
<pre>
Define SHARE_JASPER=0 by default in the windows build. This doesn't
enable anything, but makes it easier to get going.</pre>
<p>[src/winlib.mak 1.23]</p>
</blockquote>

<p><strong><a name="2004-11-19_1956"></a>
2004-11-19 19:56 Ray Johnston</strong></p>
<blockquote>
<pre>
Due to an oversight, JBIG2Decode was omitted from the windows build.
Now it is included in the default FEATURE_DEVS although in the future
this should probably be moved to the pdf.dev</pre>
<p>[src/msvc32.mak 1.66]</p>
</blockquote>

<p><strong><a name="2004-11-19_0439"></a>
2004-11-19 04:39 Ray Johnston</strong></p>
<blockquote>
<pre>
Add some missing initializers for glyph_data_t-&gt;memory. Related to the
687459 fix.</pre>
<p>[src/gdevpsf1.c 1.18, src/gdevpsf2.c 1.33, src/gdevpsfu.c 1.12, src/gsfcid.c 1.13, src/gstype42.c 1.48, src/gxfcopy.c 1.54, src/gxtype1.c 1.41, src/zchar1.c 1.42, src/zfcid0.c 1.25, src/zfcid1.c 1.23]</p>
</blockquote>

<p><strong><a name="2004-11-19_0144"></a>
2004-11-19 01:44 Raph Levien</strong></p>
<blockquote>
<pre>
Copies over new-style color procs when making a null device with a
target, to avoid inconsistent states. Fixes bug #687770.

DETAILS

The problem was a null device (for implementing stringwidth) with
inconsistent color info; the color_info struct specified 4 components,
but the get_color_mapping_procs was
gx_default_DevGray_get_color_mapping_procs, which is the desired value
for null devices instantiated through gs_copydevice
(i.e. -sDEVICE=null). As a result, cm_comps[1] through [3] were left
uninitialized, and, when negative, would crash the halftone logic.

This patch copies over the new-style color mapping procs (the
old-style were already copied) in the gs_make_null_device routine. A
strong argument could be made for changing the logic in
gx_device_copy_color_procs() instead, but it was felt that this change
was more localized.

Dan reviewed this patch during a phone conversation, so I am going ahead
and committing. I'm also opening a new bug to encourage a closer look
at other uses of gx_device_copy_color_procs() to see whether a change
there is beneficial or harmful.</pre>
<p>[src/gsdevice.c 1.24]</p>
</blockquote>

<p><strong><a name="2004-11-18_1709"></a>
2004-11-18 17:09 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix regression created by previous patch for bug 687752.</pre>
<p>[lib/pdf_draw.ps 1.88]</p>
</blockquote>

<p><strong><a name="2004-11-18_1104"></a>
2004-11-18 11:04 Russell Lang</strong></p>
<blockquote>
<pre>
Update Windows installer to use the current name for the license file,
Public.htm not the older PUBLIC.</pre>
<p>[src/winint.mak 1.23]</p>
</blockquote>

<p><strong><a name="2004-11-18_0648"></a>
2004-11-18 06:48 Russell Lang</strong></p>
<blockquote>
<pre>
Add utility mkcidfm.ps to create a cidfmap file based on fonts
found in a directory.
Change MS-Windows installer to optionally update lib/cidfmap
with the CJK fonts found in the Windows font directory.

DETAILS:
Ghostscript does not ship with CJK fonts.
If support for Chinese, Japanese or Korean is added to MS-Windows,
CJK TrueType fonts and font collections are added to the MS-Windows
fonts directory.  These can be used by ghostscript by specifying
mapping and aliases in the lib/cidfmap file.
This patch looks in the MS-Windows fonts directory for known
CJK fonts, and if present it appends appropriate mappings or
aliases to the lib/cidfmap file.
The font names and aliases are currently fixed, but can
be changed by editing mkcidfm.ps.

A new checkbox is added to the installer dialog
"Use Windows TrueType fonts for Chinese, Japanese and Korean"
Only if the user selects this will lib/cidfmap will be updated.
The default behavior is that lib/cidfmap is unchanged.</pre>
<p>[doc/Psfiles.htm 1.55, lib/mkcidfm.ps 1.1, src/dwinst.cpp 1.6, src/dwinst.h 1.7, src/dwsetup.cpp 1.9, src/dwsetup.h 1.6, src/dwsetup.rc 1.12, src/dwuninst.cpp 1.5]</p>
</blockquote>

<p><strong><a name="2004-11-18_0220"></a>
2004-11-18 02:20 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix a missing part of the JOBSERVER implementation that makes the ^D a
self-delimitting token. Fixes bug 687779.</pre>
<p>[src/iscan.c 1.19]</p>
</blockquote>

<p><strong><a name="2004-11-18_0144"></a>
2004-11-18 01:44 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for unlimited recursion in 'cs/CS' implementation (actually in a
certain path in 'resolvecolorspace'. Fixes bug 687752 for Artifex
customer 190.</pre>
<p>[lib/pdf_draw.ps 1.87]</p>
</blockquote>

<p><strong><a name="2004-11-17_1948"></a>
2004-11-17 19:48 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix bug 687777 to remove the makefile dependency of dscparse from the
pdfwrite device. This allows non-PS to include the pdfwrite.dev in the
build. Also updated zdscpars.c to add needed 'mem' pointer.</pre>
<p>[src/devs.mak 1.119, src/int.mak 1.131, src/zdscpars.c 1.17]</p>
</blockquote>

<p><strong><a name="2004-11-16_0253"></a>
2004-11-16 02:53 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Page context stream was not properly formed when starts with an invisible text.

DETAILS :

Bug 687797 "pdfwrite generates invalid pdf".
The improved condition made consistent with gdevpdte.c ln 501.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtt.c 1.94]</p>
</blockquote>

<p><strong><a name="2004-11-15_0112"></a>
2004-11-15 01:12 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for Bug 687459 (SEGV) addressing several problems: (i) Elements
fetched from a font dictionary have to be dereferenced into a ref
since pointers change if the dictionary is resized (to add entries);
(ii) The glyph_cache used by gs_font_cid2 fonts needs to be in stable
memory since elements might be added after a 'save' and the list will
still be refereced by the font, so cannot be freed by 'restore';
(iii) The gs_glyph_cache__release was never being called so creating
a memory leak -- font notification (called by gs_font_finalize) is
now used to free the cache list; (iv) The gs_glyph_cache__release
did not work (probably was never tested since it was not being used).

DETAILS:

Using stable_memory means that the objects created need to be freed
properly, that's why the font_notify mechanism was used. This fixes
the problem reported by the bug and doesn't seem to have created
any other problems (regression test passed).

A 'memory' element was added to the gs_glyph_data_s structure so
that the 'bits' can be allocated using the desired memory (stable
memory in the case that we are using the cache). This was deemed
preferable to always using the pfont-&gt;memory-&gt;stable_memory since
changing to this might cause other problems. This did create a
fair number of changes since every place the get_outline was used,
the glyph_data structure needed to have the 'memory' element set.
We could have used 'NULL' to signal pfont-&gt;memory, but this might
have masked uninitialized memory issues that can be tracked with
tools such as valgrind.

The gs_glyph_cache__release was totally broken, and since it was
not previously used, fixing and testing it presents no risk of
other clients relying on broken behaviour.

The implementation of the cache is VERY RUDIMENTARY -- a linked
list of elements with a hard-coded number (32767) limit to the
size of the cache. The size is too small to be useful for Asian
fonts, but making it bigger will result in a lot of time spent
finding a 'miss' condition. At least the current logic has LRU
slot re-use behaviour (which should be retained). Fixing this,
and making the cache limit larger are left for a later change
(post 8.50 release).

EXPECTED DIFFERENCES:

None.</pre>
<p>[src/gdevpsft.c 1.33, src/gsgcache.c 1.3, src/gsgcache.h 1.2, src/gsgdata.h 1.5, src/gstype42.c 1.47, src/gxfcopy.c 1.53, src/gxttfb.c 1.36, src/zbfont.c 1.28, src/zfcid0.c 1.24, src/zfcid1.c 1.22]</p>
</blockquote>

<p><strong><a name="2004-11-14_0141"></a>
2004-11-14 01:41 Russell Lang</strong></p>
<blockquote>
<pre>
Add missing header include for setting the display device callback.</pre>
<p>[src/imain.c 1.41]</p>
</blockquote>

<p><strong><a name="2004-11-13_2208"></a>
2004-11-13 22:08 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : toolbin/pdfinflt.ps did not decompress some streams (continued).

DETAILS :

The 2nd Patch from SaGS for the bug 687746
"gs\toolbin\pdfinflt.ps doesn't unpack a stream"

The previous patch contained on over-optimization that leaded to a corrupted
operand stack. "{ [ {proc} {proc} ] }" (note: 2 identical inner procs)
can be optimized:
either as "{ [ {proc} dup    ] }" - use VM for only 1 copy of "{proc}"
or as	  "{ { {proc} {proc} } }" - the 2-element array is allocated
				    only once, by the parser, not at
				    each execution of the enclosing proc
but we cannot apply both these optimizations at the same time.

This error affects PDF files that include a /Filter and/or /DecodeParams
specified as 1-element arrays. PDFs for which these entries are a single
name (for /Filter) or dict (for /DecodeParams) or arrays with 2 or more
elements are not affected.

EXPECTED DIFFERENCES :

None.</pre>
<p>[toolbin/pdfinflt.ps 1.7]</p>
</blockquote>

<p><strong><a name="2004-11-12_2128"></a>
2004-11-12 21:28 Russell Lang</strong></p>
<blockquote>
<pre>
Spelling corrections.</pre>
<p>[doc/Use.htm 1.122]</p>
</blockquote>

<p><strong><a name="2004-11-08_1656"></a>
2004-11-08 16:56 Ralph Giles</strong></p>
<blockquote>
<pre>
Add the new image comparison tool to the file index in the documentation.</pre>
<p>[doc/Testing.htm 1.29]</p>
</blockquote>

<p><strong><a name="2004-11-07_2109"></a>
2004-11-07 21:09 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Improve the resource path customization and the related documentation (continued).

DETAILS :

This fixes some minor ambiguities.</pre>
<p>[doc/Use.htm 1.121]</p>
</blockquote>

<p><strong><a name="2004-11-07_1957"></a>
2004-11-07 19:57 Igor Melichev</strong></p>
<blockquote>
<pre>
fuzzy.c : Implementing multipage image files.

DETAILS:

Report will contain a line per different page.
Thus the report file may contain multiple lines.

The output image file contains only the the first page difference
due to a restricted capability of available viewers.

Bug 687765 "fuzzy.c : multipage documents unsupported.".</pre>
<p>[toolbin/tests/fuzzy.c 1.17]</p>
</blockquote>

<p><strong><a name="2004-11-07_1925"></a>
2004-11-07 19:25 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc warnings.

DETAILS :

Cygwin/gcc claims an undefined result in spdiff.c
due to possibly undefined order of evaluation of operands of a binary operation.
The hunk #2 now sets 'ti', rather the old code does not.
But we believe that the change is algorithmically equivalent.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxdevndi.c 1.5, src/spdiff.c 1.8, src/ttinterp.c 1.16]</p>
</blockquote>

<p><strong><a name="2004-11-06_2220"></a>
2004-11-06 22:20 Ralph Giles</strong></p>
<blockquote>
<pre>
Remove some obsolete assert calls which caused problems on some
platforms due to incorrect string quoting in assert.h.</pre>
<p>[src/gxhintn.c 1.55]</p>
</blockquote>

<p><strong><a name="2004-11-06_1930"></a>
2004-11-06 19:30 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix: Python opens files in text mode unless "rb" is needed.</pre>
<p>[toolbin/tests/cmpi.py 1.2]</p>
</blockquote>

<p><strong><a name="2004-11-06_0638"></a>
2004-11-06 06:38 Ray Johnston</strong></p>
<blockquote>
<pre>
Add an interactive image compare tool written in Python by a Python
neophyte. Not quite ready for prime-time, but an interesting enough start
to commit. Even though there are bugs in the differencing, responsiveness
and memory usage, it is still sometimes useful. If a version # were to be
applied to this, I would call it 0.1 (at least it is a positive number).</pre>
<p>[toolbin/tests/cmpi.py 1.1]</p>
</blockquote>

<p><strong><a name="2004-11-05_1703"></a>
2004-11-05 17:03 Ralph Giles</strong></p>
<blockquote>
<pre>
Update the MacOS X platform-specific makefile. Remove -traditional-cpp.
This was added to work around bugs in earlier releases of Apple's gcc,
but it is not necessary with more recent releases, and conflicts with
newer cpp features used by more recent Ghostscript code. Partial fix
for bug 687787.</pre>
<p>[src/macosx.mak 1.25]</p>
</blockquote>

<p><strong><a name="2004-11-04_2031"></a>
2004-11-04 20:31 Russell Lang</strong></p>
<blockquote>
<pre>
Improve documentation for CID fonts.</pre>
<p>[doc/Use.htm 1.120]</p>
</blockquote>

<p><strong><a name="2004-11-03_1746"></a>
2004-11-03 17:46 Ralph Giles</strong></p>
<blockquote>
<pre>
Include stdio_.h instead of the system header according to C style.</pre>
<p>[src/gslibctx.h 1.5, src/lib.mak 1.203]</p>
</blockquote>

<p><strong><a name="2004-11-03_0823"></a>
2004-11-03 08:23 Ray Johnston</strong></p>
<blockquote>
<pre>
Add handling for missing EOL following the %PDF-#.## string in the header.
Yet another bad file that Acrobat Reader handles. Bug 687781.

DETAILS:

If we get an error doing the 'cvr' to get the version #, trim a character
from the end of the string and try again. Stop if the string becomes empty.</pre>
<p>[lib/pdf_main.ps 1.88]</p>
</blockquote>

<p><strong><a name="2004-11-03_0734"></a>
2004-11-03 07:34 Ralph Giles</strong></p>
<blockquote>
<pre>
Add missing opening quotes to the error printouts. This typo came in
as part of an earlier bug fix and prevented compilation. Bug 687784.</pre>
<p>[src/gdevsppr.c 1.9]</p>
</blockquote>

<p><strong><a name="2004-11-01_2121"></a>
2004-11-01 21:21 Jack Moffitt</strong></p>
<blockquote>
<pre>
Fixes Bug#687762.  Includes the date specification of the CVS checkout
in the baseline update log.  This then gets propagated to the daily
reports.</pre>
<p>[toolbin/tests/update_specific 1.4]</p>
</blockquote>

<p><strong><a name="2004-11-01_2109"></a>
2004-11-01 21:09 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Forget cancelled resources.

DETAILS :

Bug 687749 "PS to PDF generates very large PDF document"

1. An indeterministic bug fixed in gdevpdfi.c, hunk #1.

2. Implemented a recognition of equal patterns in gdevpdfi.c
and provided a PDF pattern substitution.
We caould not provide a substitution in the PS interpreter
because an accumulated pattern instance doesn't point
to the corresponding client color.

3. pdf_forget_resource is applied when a resource is cancelled and
is not longer needed. This applies to all redundant resources except patterns,
because patterns keep the substitution data.
We would like to save memory from substitured patterns with
a special substitution table,
but we have no time for such optimization now.

4. The function pdf_forget_resource is some slow
because the data structure was not designed for
removing resources from lists.
We would like to implement dual linked lists,
but we have no time for such optimization now.

5. Since pdf_forget_resource is not applied to patters,
we need to prevent a big growth of the number of stored patterns.
We implemented pdf_drop_resources for that purpose
and drop all substitured pattrens after 300 ones
have been accumulated, but not frequenter than once per page.
This solution isn't perfect, but should work for most cases.
If a substituted pattern is dropped erroneusely,
it will be accumulated again, maybe causing some slowdown.

6. Implemented a new device parameter PrintStatistics.
The new function pdf_print_resource_statistics
prints a statistics to stdout.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.101, src/gdevpdfg.c 1.59, src/gdevpdfg.h 1.34, src/gdevpdfi.c 1.57, src/gdevpdfj.c 1.32, src/gdevpdfp.c 1.40, src/gdevpdfu.c 1.61, src/gdevpdfv.c 1.37, src/gdevpdfx.h 1.103, src/gdevpdti.c 1.39, src/gdevpdtt.c 1.93]</p>
</blockquote>

<p><strong><a name="2004-11-01_1821"></a>
2004-11-01 18:21 Ralph Giles</strong></p>
<blockquote>
<pre>
Exempt three new files from the multiple-include protect check. Like the
previous exemptions, these are templates that must be instantiated multiple
times to function properly.</pre>
<p>[toolbin/tests/check_source.py 1.11]</p>
</blockquote>

<p><strong><a name="2004-11-01_0915"></a>
2004-11-01 09:15 Ralph Giles</strong></p>
<blockquote>
<pre>
We now implement job server behavior. This is no longer an open issue.</pre>
<p>[doc/Issues.htm 1.44]</p>
</blockquote>

<p><strong><a name="2004-11-01_0915"></a>
2004-11-01 09:15 Ralph Giles</strong></p>
<blockquote>
<pre>
Mention the issue with polygon overlap in antialiased rendering.
Closes bug 687742.</pre>
<p>[doc/Use.htm 1.119]</p>
</blockquote>

<p><strong><a name="2004-10-29_0104"></a>
2004-10-29 01:04 Russell Lang</strong></p>
<blockquote>
<pre>
Documentation update to fix some dead links.</pre>
<p>[doc/Readme.htm 1.59]</p>
</blockquote>

<p><strong><a name="2004-10-29_0007"></a>
2004-10-29 00:07 Russell Lang</strong></p>
<blockquote>
<pre>
Documentation fixes, due to changes in iapi.h.</pre>
<p>[doc/API.htm 1.46, doc/Lib.htm 1.36]</p>
</blockquote>

<p><strong><a name="2004-10-28_1734"></a>
2004-10-28 17:34 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Font size was wrong when definefont applied to a scaled font.

DETAILS :

Bug 687615 "ps2pdf squeezes glyph strings".

This continues the patch
http://www.ghostscript.com/pipermail/gs-cvs/2003-August/003487.html (igor486).

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtd.c 1.17]</p>
</blockquote>

<p><strong><a name="2004-10-28_1158"></a>
2004-10-28 11:58 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (vdtrace.c) : Fix gcc warnings and improve C-style.

DETAILS :

This change is algorithmically equivalent.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/vdtrace.c 1.9]</p>
</blockquote>

<p><strong><a name="2004-10-28_0926"></a>
2004-10-28 09:26 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (gswin32) : Opened a window outside the desctop area.

DETAILS :

When the Tracer window was opened with a clean Registry
(particularly at a first run after the operating system instalaton),
the window placement got big negative coordinates.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/dwimg.c 1.17]</p>
</blockquote>

<p><strong><a name="2004-10-28_0839"></a>
2004-10-28 08:39 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (type 1 interpreter) : Replaced Metrics was missed.

DETAILS :

Bug 687614 "mirrored glyph is rendered at incorrect position".

This patch fixes the problem for raster devices.
Without -dNOCACHE the behavior was indeterministic due to
uninitialized cxs.use_FontBBox_as_Metrics2 in zchar1.c.

We ported the change from gstype1.c to gstype2.c with no special testing
because we have no practical examples of Type 2 with a replaced lsb.
It happens so because Type 2 only appears in PDF, which doesn't replace lsb.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gstype1.c 1.32, src/gstype2.c 1.36, src/zchar1.c 1.41]</p>
</blockquote>

<p><strong><a name="2004-10-28_0725"></a>
2004-10-28 07:25 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Glyph positions were wrong for vertical CID fonts (continued 2).

DETAILS :

Bug 687614 "mirrored glyph is rendered at incorrect position".

The new code implements the improved logics :

    /* With WMode 1 v-vector is (WMode 1 origin) - (WMode 0 origin).
       The glyph shifts in the opposite direction.  */
    /* With WMode 0 v-vector is (Metrics sb) - (native sb).
       The glyph shifts in same direction.  */

Also improved the related comments.

EXPECTED DIFFERENCES :

pdfwrite 093-01.ps .</pre>
<p>[src/gdevpdte.c 1.65]</p>
</blockquote>

<p><strong><a name="2004-10-27_1056"></a>
2004-10-27 10:56 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (resource machinery) : Improve the resource path customization and the related documentation (continued).

DETAILS :

A wrong paragraph removed form the documentation.

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Use.htm 1.118]</p>
</blockquote>

<p><strong><a name="2004-10-26_1728"></a>
2004-10-26 17:28 Ralph Giles</strong></p>
<blockquote>
<pre>
Bump the version info after the 8.32 release.</pre>
<p>[doc/News.htm 1.154, lib/gs_init.ps 1.113, src/gscdef.c 1.48, src/version.mak 1.76]</p>
</blockquote>

<p><strong><a name="2004-10-26_1707"></a>
2004-10-26 17:07 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (resource machinery) : Improve the resource path customization and the related documentation.

DETAILS :

1. Explained the resource locator's logics in Use.htm .
Bug 687767 "Adding -Ic:\windows\fonts breaks CJK fonts".

2. The old code missed some directories when the user specifies a non-absolute
path as GenericResourcePath.

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Use.htm 1.117, lib/gs_res.ps 1.38]</p>
</blockquote>

<p><strong><a name="2004-10-26_0944"></a>
2004-10-26 09:44 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : Improve the font substitution and the CID font substitution.

DETAILS :

1. A new procedure .remove_font_name_prefix removes the subset font name prefix
   when computing a substitute font name.
2. Improved a warning when substituting a CID font resource.
3. Improved the documentation about CID font substitution if the PDF interpreter

Bug 687747 "PDF tries substituting but throws /undefinedresource in --findresource--".

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Use.htm 1.116, lib/pdf_font.ps 1.71]</p>
</blockquote>


<hr>

<h2><a name="Version8.32"></a>Version 8.32 (2004-10-26)</h2>

<p>This is the third beta release leading up to the stable 8.5x series.
It contains numerous bug fixes since the last testing release, but
a few outstanding issues remain.

<p> 
New features since the last stable release:

<ul>
<li><p>
Topological grid fitting,
an original method developed for Ghostscript by Dr. Igor V. Melichev, improves 
the rendering of True Type fonts at small resolutions.
See the documentation for <a href="Language.htm#GridFitTT">GridFitTT</a> for information on this
feature.

<li><p>
The PDF writer now implements PDF 1.4 encryption.
See the <a href="Ps2pdf.htm#Encryption">encryption parameter</a> documentation for more
information.

<li><p>
A new rendering method for shadings, developed for Ghostscript by 
Dr. Igor V. Melichev, improves the quality and performance of 
rasterization on continuous tone devices.
The new method allows hardware or software acceleration with help of
customizable routines for filling areas with a linearly varying color.
functions.

<li><p>
This version contains the first release of Rinkj, an
experimental new driver for some inkjet printers using ETS screening.
See the <a href="Devices.htm#Rinkj">Rinkj</a> section for more information.

<li><p>
We now support PDF 1.5 files, including the new compression
and encryption modes.

<li><p>
We have beta support for JPEG 2000 compressed images, using the JasPer
compression library. This is only enabled as part of the default build
in the autoconf (POSIX) build system in this release.

</ul>

<p>
The following <a href="http://bugs.ghostscript.com/">bug</a> numbers were open at
the time of the last release:
<blockquote>
405501,
430175,
446344,
458780,
463688,
465936,
487953,
493348,
526099,
526491,
530011,
535366,
535932,
578865,
592160,
603934,
610478,
614298,
626295,
645316,
674418,
677324,
685335,
686747,
686750,
686816,
686819,
686824,
686841,
686842,
686843,
686853,
686865,
686867,
686919,
686980,
686996,
687011,
687012,
687013,
687039,
687063,
687084,
687086,
687095,
687105,
687108,
687110,
687122,
687125,
687146,
687157,
687168,
687174,
687179,
687193,
687196,
687203,
687219,
687221,
687229,
687231,
687243,
687251,
687257,
687259,
687271,
687275,
687280,
687295,
687297,
687298,
687303,
687314,
687316,
687324,
687327,
687341,
687342,
687345,
687346,
687360,
687373,
687375,
687394,
687397,
687399,
687401,
687410,
687414,
687434,
687435,
687445,
687459,
687460,
687468,
687473,
687474,
687475,
687480,
687484,
687485,
687492,
687497,
687498,
687514,
687518,
687520,
687523,
687525,
687529,
687531,
687535,
687536,
687537,
687539,
687541,
687545,
687551,
687558,
687559,
687560,
687561,
687575,
687583,
687593,
687595,
687600,
687608,
687611,
687614,
687615,
687621,
687622,
687628,
687630,
687633,
687637,
687642,
687643,
687644,
687650,
687654,
687657,
687661,
687663,
687666,
687669,
687674,
687676,
687677,
687678,
687679,
687680,
687682,
687684,
687686,
687694,
687695,
687696,
687697,
687702,
687707,
687712,
687715,
687717,
687721,
687727,
687728,
687729,
687731,
687732,
687735,
687738,
687742,
687747,
687749,
687752,
687754,
687756,
687762,
687765,
687767,
687769,
687770,
687773.
</blockquote>

<h3><a name="8.32_Incompatible_changes"></a>Incompatible changes</h3>

<p>
No known incompatible changes at this point

<h3><a name="8.32_changelog"></a>Changelog</h3>

<!-- generated by split_changelog.py from the output of cvs2cl.pl -->

<p><strong><a name="2004-10-26_0431"></a>
2004-10-26 04:31 Ralph Giles</strong></p>
<blockquote>
<pre>
Move a dependency out of order so it's available when needed.</pre>
<p>[src/lib.mak 1.202]</p>
</blockquote>

<p><strong><a name="2004-10-26_0425"></a>
2004-10-26 04:25 Ralph Giles</strong></p>
<blockquote>
<pre>
Update version and release date in the documentation.</pre>
<p>[doc/API.htm 1.45, doc/Bug-form.htm 1.42, doc/Bug-info.htm 1.41, doc/C-style.htm 1.48, doc/Commprod.htm 1.34, doc/Copying.htm 1.32, doc/DLL.htm 1.36, doc/Deprecated.htm 1.13, doc/Details8.htm 1.11, doc/Develop.htm 1.141, doc/Devices.htm 1.82, doc/Drivers.htm 1.50, doc/Fonts.htm 1.43, doc/Helpers.htm 1.36, doc/History1.htm 1.32, doc/History2.htm 1.32, doc/History3.htm 1.32, doc/History4.htm 1.32, doc/History5.htm 1.34, doc/History6.htm 1.49, doc/History7.htm 1.37, doc/History8.htm 1.15, doc/Htmstyle.htm 1.37, doc/Install.htm 1.47, doc/Issues.htm 1.43, doc/Language.htm 1.88, doc/Lib.htm 1.35, doc/Maintain.htm 1.43, doc/Make.htm 1.81, doc/New-user.htm 1.53, doc/Projects.htm 1.60, doc/Ps-style.htm 1.30, doc/Ps2epsi.htm 1.34, doc/Ps2pdf.htm 1.72, doc/Psfiles.htm 1.54, doc/Readme.htm 1.58, doc/Release.htm 1.87, doc/Source.htm 1.32, doc/Tester.htm 1.32, doc/Testing.htm 1.28, doc/Unix-lpr.htm 1.32, doc/Use.htm 1.115, doc/Xfonts.htm 1.32, doc/gs-vms.hlp 1.30, man/dvipdf.1 1.30, man/font2c.1 1.30, man/gs.1 1.31, man/gslp.1 1.30, man/gsnd.1 1.30, man/pdf2dsc.1 1.29, man/pdf2ps.1 1.31, man/pdfopt.1 1.29, man/pf2afm.1 1.30, man/pfbtopfa.1 1.31, man/printafm.1 1.30, man/ps2ascii.1 1.29, man/ps2epsi.1 1.28, man/ps2pdf.1 1.35, man/ps2pdfwr.1 1.34, man/ps2ps.1 1.37, man/wftopfa.1 1.30]</p>
</blockquote>

<p><strong><a name="2004-10-26_0424"></a>
2004-10-26 04:24 Ralph Giles</strong></p>
<blockquote>
<pre>
Update libpng version to the latest release. There are security
issues with 1.2.5, so upgrading is recommended.</pre>
<p>[src/all-arch.mak 1.15, src/bcwin32.mak 1.34, src/dvx-gcc.mak 1.28, src/macos-mcp.mak 1.27, src/macosx.mak 1.24, src/msvc32.mak 1.65, src/msvclib.mak 1.27, src/openvms.mak 1.38, src/openvms.mmk 1.30, src/os2.mak 1.42, src/ugcclib.mak 1.28, src/unix-gcc.mak 1.47, src/unixansi.mak 1.38, src/watclib.mak 1.23, src/watcw32.mak 1.31]</p>
</blockquote>

<p><strong><a name="2004-10-26_0408"></a>
2004-10-26 04:08 Ralph Giles</strong></p>
<blockquote>
<pre>
Back out double-include protection for gxfill*.h. Contrary to C-style,
these are templates that are configured and included multiple times.
They should probably be .c files rather than .h.</pre>
<p>[src/gxfillsl.h 1.6, src/gxfilltr.h 1.9, src/gxfillts.h 1.5]</p>
</blockquote>

<p><strong><a name="2004-10-26_0351"></a>
2004-10-26 03:51 Ralph Giles</strong></p>
<blockquote>
<pre>
Add double-include protection to four files that needed it. Also
correct a comment typo in a related file's protection.</pre>
<p>[src/gp_os2.h 1.2, src/gxfill.h 1.23, src/gxfillsl.h 1.5, src/gxfilltr.h 1.8, src/gxfillts.h 1.4]</p>
</blockquote>

<p><strong><a name="2004-10-26_0343"></a>
2004-10-26 03:43 Ralph Giles</strong></p>
<blockquote>
<pre>
Add a new-style RCS Id line to the re-instated LZWEncode filter.</pre>
<p>[src/slzwe.c 1.3]</p>
</blockquote>

<p><strong><a name="2004-10-26_0341"></a>
2004-10-26 03:41 Ralph Giles</strong></p>
<blockquote>
<pre>
Commute a C++ style comment.</pre>
<p>[src/main.h 1.8]</p>
</blockquote>

<p><strong><a name="2004-10-26_0338"></a>
2004-10-26 03:38 Ralph Giles</strong></p>
<blockquote>
<pre>
Exempt the rinkj CVS directories from the documentation reference check.</pre>
<p>[toolbin/tests/check_docrefs.py 1.11]</p>
</blockquote>

<p><strong><a name="2004-10-26_0316"></a>
2004-10-26 03:16 Ralph Giles</strong></p>
<blockquote>
<pre>
Revert jbig2 makefile update accidentally included in the last commit.
We want to maintain compatibility with 0.6 for this release.</pre>
<p>[src/jbig2.mak 1.8]</p>
</blockquote>

<p><strong><a name="2004-10-26_0312"></a>
2004-10-26 03:12 Ralph Giles</strong></p>
<blockquote>
<pre>
Add the new gsutil.py source to the file catalog</pre>
<p>[doc/News.htm 1.152, doc/Testing.htm 1.27]</p>
</blockquote>

<p><strong><a name="2004-10-26_0312"></a>
2004-10-26 03:12 Ralph Giles</strong></p>
<blockquote>
<pre>
Update notes and dates for the 8.32 release.</pre>
<p>[src/gscdef.c 1.47, src/jbig2.mak 1.7, src/version.mak 1.75]</p>
</blockquote>

<p><strong><a name="2004-10-26_0250"></a>
2004-10-26 02:50 Ralph Giles</strong></p>
<blockquote>
<pre>
Add libctx memory pointers where required in the compiled-fonts code. This
was missed in the initial commit. Also, add the OBJ directory to the include
path when compiling the font data, since stdpre.h now requires the generate
arch.h header. Closes bug 687758.</pre>
<p>[src/cfonts.mak 1.5, src/iccfont.c 1.11]</p>
</blockquote>

<p><strong><a name="2004-10-25_1511"></a>
2004-10-25 15:11 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : CIDFont-CMap construction didn't work with substituted CID font resources.

DETAILS :

Bug 687766 "CJK cidfmap ignores aliases".

This patch fixes the problem (the change to gs_cidfm.ps)
and provides a debug printing in various modules
related to CID font substitution.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/gs_cidcm.ps 1.12, lib/gs_cidfm.ps 1.7, lib/gs_fntem.ps 1.8, lib/gs_init.ps 1.112, lib/gs_resmp.ps 1.11]</p>
</blockquote>

<p><strong><a name="2004-10-22_0807"></a>
2004-10-22 08:07 Raph Levien</strong></p>
<blockquote>
<pre>
Fixes copying of paths into clipping path list so that it works even
when the path is allocated with local_segments. Fixes bugs #687401,
#687612, and #687750.</pre>
<p>[src/gxcpath.c 1.13]</p>
</blockquote>

<p><strong><a name="2004-10-21_1757"></a>
2004-10-21 17:57 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT interpreter) : Subglyphs were positioned wrongly (continued).

DETAILS :

This fixes the log message of the previous patch in the "expected differences" section.
Bug 687589 "A composite glyph renders wrongly".
Bug 687768 "umlauts misplaced in eps file".

EXPECTED DIFFERENCES :

Testform.v1.0.2.pdf"</pre>
<p>[src/ttfmain.c 1.31]</p>
</blockquote>

<p><strong><a name="2004-10-21_1752"></a>
2004-10-21 17:52 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT interpreter) : Subglyphs were positioned wrongly.

DETAILS :

Bug 687589 "A composite glyph renders wrongly".
Bug 687768 "umlauts misplaced in eps file".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/ttfmain.c 1.30]</p>
</blockquote>

<p><strong><a name="2004-10-21_1505"></a>
2004-10-21 15:05 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT interpreter) : A tolerance to bad TT instructions.

DETAILS :

Bug 687764 "/invalidfont in .type42execchar".
Since we met several fonts with bad TT instructions,
we print a warning and continue with ignoring instructions.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gstype42.c 1.46, src/gxfont42.h 1.20, src/gxttfb.c 1.35, src/ttfmain.c 1.29, src/ttfoutl.h 1.14]</p>
</blockquote>

<p><strong><a name="2004-10-20_1558"></a>
2004-10-20 15:58 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Glyph positions were wrong for vertical CID fonts (continued).

DETAILS :

Bug 687603 "vertical text misplaced after distilling", reopened.
Bug 687753 "Text not aligned when viewed with Acrobat Reader", re-testing.

Disposition :
D1. The PDF spec requires X-compomenent of v-vector always equals to half glyph width.
D2. AR5 appears to use W|DW to compute the X-component of the v-vector of WMode 1.

The previous patch fixed most problems, but one left unfixed.
When a glyph is used with WMode 0, and later with WMode 1,
the second usage doesn't store Width and V due to the 'used' flag is already set.
This patch introduces 2 separate sets of flags for WNode 0 and WMode 1.

Changes :
1. Defined a new field 'used2' fro WMode 1 in gdevpdtf.h .
2. Allocated the used2 array, provided garbager methods,
   and a resizing on demand in gdevpdtf.c .
3. gdevpdtc.c sets used2.
4. Improved the computation of the v-vector in gdevpdtt.c .
   Now pdf_glyph_widths should be conforming to (D1) and (D2).
5. The coordinate adjustment in gdevpdte.c is not longer useful
   due to (4). Removed.
6. When writing W, W2, glyphs are being enumerated with used, used2
   correspondingly (gdevpdtw.c).
7. The accedd to Widths2 sometimes was incorrect. Now fixed (gdevpdtf.c).
8. gdevpdtc.c misused Widths2 as Widths when storing the WMode 0 width
   as a component of theWMode 1 v-vector. Now fixed.

EXPECTED DIFFERENCES :

Bug687603.ps</pre>
<p>[src/gdevpdtc.c 1.39, src/gdevpdte.c 1.64, src/gdevpdtf.c 1.40, src/gdevpdtf.h 1.25, src/gdevpdtt.c 1.92, src/gdevpdtw.c 1.34]</p>
</blockquote>

<p><strong><a name="2004-10-20_0252"></a>
2004-10-20 02:52 Jack Moffitt</strong></p>
<blockquote>
<pre>
Remove quotes from input filenames.</pre>
<p>[toolbin/tests/update_specific 1.3]</p>
</blockquote>

<p><strong><a name="2004-10-20_0130"></a>
2004-10-20 01:30 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite, PDF interpreter) : Glyph positions were wrong for vertical CID fonts.

DETAILS :

Bug 687753 "Text not aligned when viewed with Acrobat Reader".

Disposition :
D1. The PDF spec requires X-compomenent of v-vector always equals to half glyph width.
D2. AR5 appears to use W|DW to compute the X-component of the v-vector of WMode 1.

Changes :
1. With WMode 1, pdf_obtain_cidfont_widths_arrays obtains both Widths and Widths2 arrays
   (gdevpdtf.c, gdevpdtf.h, gdevpdtc.c).
2. For CID fonts gdevpdtc.c computes both WMode 1 and WMode 2 width
   when WMode 1 is requested.
3. Due to (D1), must compensate the half width when computing a glyph position
   in gdevpdte.c (hunk #2).
4. In gdevpdte.c internal data glyph_origin_shift used opposite signs for
   CID and non-CID fonts. Now made uniform.
5. The Type 0 font matrix and the descendent CID font matrix were applied
   in a wrong order in gdevpdte.c .
6. To satisfy (D2) when WMode 1 is only requested,
   write DW 0 when WMode 1 is only requested.
7. After fixing all above, from the test file of the bug 687753 pdfwrite
   generated a PDF, which GS failed interpret due to a curious failure
   with e_dictfull while checking for an absent key /File in the font dictionary.
   Patched zfcid1.c to provide a tolerance.
   Meanwhile we're not sure that it's the best way for fixing that,
   so if someone can bring a better method, feel free to improve.
8. The PDF interpreter is patched to comply with (D2) - pdf_font.ps, hunk #2 .
9. Fixed a bug in .pdfMakeInternalMTXArray : W2 arraytype elements wrongly
   computed the range (debugged with re-distilled Bug687603.ps).

EXPECTED DIFFERENCES :

Bug687603.ps

besides that, it generates an improved PDF for japan-.ps, Type11CDevProc.ps,
but rasters appear same because a change to the PDF interpreter compensates
changes to the PDF writer.</pre>
<p>[lib/pdf_font.ps 1.70, src/gdevpdtc.c 1.38, src/gdevpdte.c 1.63, src/gdevpdtf.c 1.39, src/gdevpdtf.h 1.24, src/gdevpdtw.c 1.33, src/zfcid1.c 1.21]</p>
</blockquote>

<p><strong><a name="2004-10-18_1523"></a>
2004-10-18 15:23 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Degenerate segments must not paint when caps is not round.

DETAILS :

Bug 687720 "Zero length lines must not stroke".
See comment in code.

EXPECTED DIFFERENCES :

Normal 72 dpi :

"012-05.ps"
"013-05.ps"
"014-05.ps"
"015-01.ps"
"015-05.ps"
"027-01.ps"
"027-09.ps"
"032-01.ps"
"034-01.ps"
"034-10.ps"
"083-05.ps"
"123-05.ps"
"169-05.ps"
"192-01.ps"
"222-05.ps"
"298-05.ps"
"307-01.ps"
"321-05.ps"
"file2.pdf"

Normal 300 dpi :

"012-05.ps"
"014-05.ps"
"015-01.ps"
"015-05.ps"
"027-01.ps"
"027-09.ps"
"034-01.ps"
"034-10.ps"
"123-05.ps"
"169-05.ps"
"192-01.ps"
"222-05.ps"
"298-05.ps"
"307-01.ps"
"321-05.ps"
"a.pdf"
"file2.pdf"

pdfwrite 72 dpi :

"012-05.ps"
"013-05.ps"
"014-05.ps"
"015-01.ps"
"015-05.ps"
"027-01.ps"
"027-09.ps"
"032-01.ps"
"034-01.ps"
"034-10.ps"
"083-05.ps"
"123-05.ps"
"169-05.ps"
"192-01.ps"
"222-05.ps"
"298-05.ps"
"307-01.ps"
"321-05.ps"
"ai2.pdf"
"file2.pdf"

pdfwrite 300 dpi :

"012-05.ps"
"014-05.ps"
"015-01.ps"
"015-05.ps"
"027-01.ps"
"027-09.ps"
"034-01.ps"
"034-10.ps"
"083-05.ps"
"123-05.ps"
"169-05.ps"
"192-01.ps"
"222-05.ps"
"298-05.ps"
"307-01.ps"
"321-05.ps"
"a.pdf"
"file2.pdf"</pre>
<p>[src/gxpdash.c 1.6, src/gxstroke.c 1.13]</p>
</blockquote>

<p><strong><a name="2004-10-18_0843"></a>
2004-10-18 08:43 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (Type 1 hinter) : Don't align glyph width to pixels.

DETAILS :

See comment in code.
Bug 687719 "PDFWRITE corrupts letter spacing/placement".

When porting this patch to GS_8_1X please note that the default value
of AlignToPixels is different in HEAD andf GS_8_1X.
Therefore this patch may cause differences witg GS_8_1X.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxhintn.c 1.54]</p>
</blockquote>

<p><strong><a name="2004-10-15_1824"></a>
2004-10-15 18:24 Igor Melichev</strong></p>
<blockquote>
<pre>
(pdfwrite) : Implementing a dynamic recongnition for Type 3 charproc variations (continued 9).
Check the Encoding compatibility while merging Type 3 glyph variations.

DETAILS :

Fixes the reopened bug 687660
"incorrect font rendering/missing glyphs from ps2pdf".

pdf_is_same_charproc1 now checks whether we try to replace
a charproc with one taken from a font with a compatible Encoding.
Before now the encoding was ingnored,
causing a subsequent failure (due to an encoding conflict)
when adding glyphs to the font copy, and an infinite loop.
As usual, the encoding compatibility
is being checked within the list of characters of a current text.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfx.h 1.102, src/gdevpdti.c 1.38, src/gdevpdtt.c 1.91, src/gdevpdtt.h 1.25]</p>
</blockquote>

<p><strong><a name="2004-10-15_1818"></a>
2004-10-15 18:18 Igor Melichev</strong></p>
<blockquote>
<pre>
(pdfwrite) : Implementing a dynamic recongnition for Type 3 charproc variations (continued 8).
Allocate a single character list per text.

DETAILS :

This change is algorithmically equivalent.
It's a preparation for fixing the reopened bug 687660
"incorrect font rendering/missing glyphs from ps2pdf".

For 1-byte fonts now we allocate a singe instance of
pdf_char_glyph_pairs_t for storing the character list for entire text.
Now it is done once per text as an extention to pdf_text_enum_t.
The intention is to provide an access to it from pdf_find_same_charproc.

CID text is still processed in chunks, which
are delimited by font changes or CDevProc callouts.
It may cause a searchability problem with some viewers,
when converting a composefont with a Type 3 descendent.
But unlikely we'll met such case in practice,
due to we have no exmples of composefont with a Type 3 descendent.

We would like to improve the CID text processing sometimes with
with building a complete character list for a text portion
delimited with font changes. The new algorithm for scan_cmap_text
should be like this : first delimit a single font portion,
then construct the character list for the portion,
and then process the portion with possible CDevProc and charproc callouts.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtc.c 1.37, src/gdevpdte.c 1.62, src/gdevpdtf.c 1.38, src/gdevpdtf.h 1.23, src/gdevpdtt.c 1.90, src/gdevpdtt.h 1.24, src/gxfcopy.c 1.52, src/gxfcopy.h 1.11]</p>
</blockquote>

<p><strong><a name="2004-10-15_0855"></a>
2004-10-15 08:55 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : toolbin/pdfinflt.ps did not decompress some streams.

DETAILS :

Patch from SaGS for the bug 687746
"gs\toolbin\pdfinflt.ps doesn't unpack a stream"

Current version of pdfinflt.ps uncompresses only streams that have a single
filter applied, and only if that single filter is /FlateDecode. Proposed
patch (attached) ads support for procesing streams with multiple filters.

However, not all decompressing filters can be removed, and not in all cases
it would be desirable to remove them. The /filterstoremove dictionary lists
filters that are to be processed, and omits filters that are to be preserved
in the output. For streams with multiple filters chained together, the new
version of pdfinflt.ps removes all filters from the first in the
decompressing chain up to, but excluding, the first filter that is to be
preserved. The list of preserved filters, with the reason why these are not
removed, follows:

/RunLengthDecode, /CCITTFaxDecode, /DCTDecode:
These are normaly used for compressing raster images. I assume the main
purpose of this tool is to decompress page streams for debugging, and
decompressing images only adds a huge amount of binary data, making harder
to find and examine content streams. If this is not the case, and getting
raw image data is necessary, simply uncomment the lines corresponding to
these filters.

/JBIG2Decode, /JPXDecode:
There's no (standard) PostScript filter that corresponds to these PDF
filters. (I think) GhostScript implements these filters in the PostScript
interpreter, but not for all platforms, so I added some detection code for
them. The preceding paragraph applies too, so I left the lines corresponding
to these filters commented out.

/Crypt (PDF1.5-specific):
This is a generic interface with decryption plug-ins, and has no PostScript
counterpart (and I don't see how it could have one).

EXPECTED DIFFERENCES :

None.</pre>
<p>[toolbin/pdfinflt.ps 1.6]</p>
</blockquote>

<p><strong><a name="2004-10-14_1832"></a>
2004-10-14 18:32 Ray Johnston</strong></p>
<blockquote>
<pre>
Add logic to capture the ENTIRE regression report to a rotating log file.
As before the ENTIRE regression report is only emailed on Mondays.</pre>
<p>[toolbin/tests/run_nightly 1.29]</p>
</blockquote>

<p><strong><a name="2004-10-14_1728"></a>
2004-10-14 17:28 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Fixing some Type 3 encoding problems.

DETAILS :

We found that Encoding compatibility was insufficiently checked
with Type 3 glyph variations.

It's a preparation for fixing the reopened bug 687660
"incorrect font rendering/missing glyphs from ps2pdf".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdti.c 1.37, src/gdevpdtt.c 1.89]</p>
</blockquote>

<p><strong><a name="2004-10-13_1531"></a>
2004-10-13 15:31 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite, PDF interpreter) : Correctly handle different widths for same glyph (continued).

DETAILS :

This patch continues a long story about the handling of different widths for same glyph
in a PDF embedded font.
The last patch in this series was
http://www.ghostscript.com/pipermail/gs-cvs/2004-September/004834.html

That patch caused a problem with pdfwrite,
which needs to write an original glyph name
rather than a substituted one.

This change establish a new discipnile for
passing the original glyph name from the PDF interpreter to pdfwrite
inside a substituted glyph name, with using an
implementation specific separator (~GS~).

Before writing a font, we apply copied_drop_extension_glyphs
to remove extended glyph names. We don't like to
modify the font, but choose this minimal solution for now.
A better solution would be to introduce another flag to glyph slots
to mark ones, which to be skipped when writing the embedded font.

Bug 687740 "(pdfwrite) A character dissappeared in ADOBE1-4.pdf".

EXPECTED DIFFERENCES :

pdfwrite :

ADOBE1-4.pdf</pre>
<p>[src/gdevpdtb.c 1.29, src/gdevpdtw.c 1.32, src/gxfcopy.c 1.51, src/gxfcopy.h 1.10, src/gxfont.h 1.23, src/gxtype1.c 1.40, lib/pdf_font.ps 1.69]</p>
</blockquote>

<p><strong><a name="2004-10-12_2308"></a>
2004-10-12 23:08 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix LZWEncode filter to use the EarlyChange parameter and also correct the
tifflzw device to initialize EarlyChange to the proper value (1).
Bug 687726.

DETAILS:

The LZWEncode filter failed to use the EarlyChange param but the LZWDecode
did honor this setting. The LZWEncode always acted as if EarlyChange = 1
which since that was the default, worked as long as the Decoder wasn't set
for EarlyChange == 0.

Also, now that the Encoder honors EarlyChange = 0, the tifflzw device needed
to have the flag set correctly (it needs EarlyChange == 1).

EXPECTED DIFFERENCES:

430-01.ps</pre>
<p>[src/gdevtfax.c 1.8, src/slzwe.c 1.2]</p>
</blockquote>

<p><strong><a name="2004-10-08_2255"></a>
2004-10-08 22:55 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : *bfrange boundaries may differ in the last byte only.

DETAILS :

The PDF specification requires so.
Bug 687737 "can't select text in distilled pdf".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gsfcmap.c 1.25]</p>
</blockquote>

<p><strong><a name="2004-10-08_1327"></a>
2004-10-08 13:27 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : The function same_type42_hinting was indeterministic.

DETAILS :

It compares few TrueType tables for equality,
but didn't work out the case when a table is absent.
In that case the bahavior was indeterministic.

Bug 687736 "pdfwrite hangs (or takes really long) on input file".
It created too many font copies and spent lots of time
for garbage collection.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfcopy.c 1.50]</p>
</blockquote>

<p><strong><a name="2004-10-07_2112"></a>
2004-10-07 21:12 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Don't overwrite CFLAGS variable if it is already defined.
Bug 687739</pre>
<p>[src/msvc32.mak 1.64]</p>
</blockquote>

<p><strong><a name="2004-10-07_0518"></a>
2004-10-07 05:18 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix initialization of C stack streams that did not perform s_init().
Bug 687709 that could result in a Segmentation Fault (SEGV)

DETAILS:
The normal s_alloc() streams included s_init() on the allocated stream,
but C stack streams could have uninitialized elements in the stream struct.
Since this was UMR related, and affected the clist mode, the jpeg device
and the pswrite device (and possibly some pdfwrite data), this would be
different on different platforms.

The premature 'CloseTarget' action when the stream-&gt;close_strm was not
initialized as 0 (false) would show up as a SEGV when the -Z@ was used.
Other problems that this patch fixes are not linked to a test file at
the current time.

This change also corrects a trivial typo and a NUL character found in
src/gxtype1.c as a header file related warning in src/imain.c</pre>
<p>[src/gdevjpeg.c 1.8, src/gdevlj56.c 1.6, src/gdevpdfc.c 1.49, src/gdevpdfm.c 1.47, src/gdevpdtb.c 1.28, src/gdevpdtw.c 1.31, src/gdevps.c 1.40, src/gdevpsf1.c 1.17, src/gdevpsf2.c 1.32, src/gdevpsft.c 1.32, src/gdevpsim.c 1.14, src/gdevpsu.c 1.18, src/gsfunc4.c 1.16, src/gxclimag.c 1.11, src/gxclpath.c 1.20, src/gxclrast.c 1.31, src/gxclread.c 1.13, src/gxfcopy.c 1.49, src/gxtype1.c 1.39, src/iccfont.c 1.10, src/imain.c 1.40, src/imainarg.c 1.33, src/stream.c 1.26]</p>
</blockquote>

<p><strong><a name="2004-10-06_1412"></a>
2004-10-06 14:12 Ralph Giles</strong></p>
<blockquote>
<pre>
Add a missing dependency on version.mak to the generation of gconfigd.h.
Without this the revision number isn't correctly updated in an incremental
build. Closes bug 687733.</pre>
<p>[src/gs.mak 1.27, src/version.mak 1.74]</p>
</blockquote>

<p><strong><a name="2004-10-06_1132"></a>
2004-10-06 11:32 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TrueType interpreter) : Calls to user defined instructions were not implemented.

DETAILS :

This implements IDEF and user defined instructions calls
according to the TrueType specification by Apple
http://developer.apple.com/fonts/TTRefMan/ .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/ttinterp.c 1.15, src/ttobjs.c 1.8, src/ttobjs.h 1.6]</p>
</blockquote>

<p><strong><a name="2004-10-05_1245"></a>
2004-10-05 12:45 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : The 'gslibctx' patch had broken FAPI.

DETAILS :

A memory context pointer was added with no initialization.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/zfapi.c 1.53]</p>
</blockquote>

<p><strong><a name="2004-10-05_1024"></a>
2004-10-05 10:24 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (Type 1 hinter) : 'int32' conflicts with AIX compiler standard types.

DETAILS :

Bug 687723 "type conflicts in gxhintn.h"

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxhintn.c 1.53, src/gxhintn.h 1.23, src/lib.mak 1.201]</p>
</blockquote>

<p><strong><a name="2004-10-04_1728"></a>
2004-10-04 17:28 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Optimize gs_c_decode with a binary search.

DETAILS :

Bug 687102 "Optimize gs_c_decode".
Patch from John Desrosiers.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gscedata.c 1.5, src/gscedata.h 1.4, src/gscencs.c 1.8, toolbin/encs2c.ps 1.5]</p>
</blockquote>

<p><strong><a name="2004-10-02_0145"></a>
2004-10-02 01:45 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add TrivialCMYK color space, which simulates standard PostScript CMYK
to RGB conversion on device-independent level.
Fix bug 687711

[DETAILS]
Recent versions of Adobe Acrobat simulate on screen the appearance
of printed documents when the color of an object is specified
in DeviceCMYK color space. The resulting dark colors can be undesirable
for presentation graphics. TrivialCMYK can help when the user had
RGB colors in mind, but for some reason used CMYK colors instead in the
document.</pre>
<p>[Resource/ColorSpace/DefaultCMYK 1.4, Resource/ColorSpace/DefaultRGB 1.4, Resource/ColorSpace/TrivialCMYK 1.1]</p>
</blockquote>

<p><strong><a name="2004-10-01_2336"></a>
2004-10-01 23:36 Russell Lang</strong></p>
<blockquote>
<pre>
Change OS/2 gx_color_index from 32 to 64 bits to allow better
support for DeviceN.</pre>
<p>[src/os2.mak 1.41]</p>
</blockquote>

<p><strong><a name="2004-10-01_2335"></a>
2004-10-01 23:35 Russell Lang</strong></p>
<blockquote>
<pre>
Fix for 687706 Display device 8-bit native incorrectly dithers grays.
This is a partial fix and also needs Dan Coby's fixes to the post
DeviceN halftoning.  The DeviceRGBK color model is added.

DETAILS:
Prior to GS 8, the display device 8-bit native format would use 32
gray levels to avoid halftoning, and a 4x4x4 color cube which did use
halftoning.  The halftoning logic was changed with the introduction
of DeviceN and in GS 8 both grays and colors were being halftoned.

The DeviceRGBK color model is added and used by the display device
native 8-bit format.  The RGB color space to RGBK color model
conversion converts pure RGB grays to the K (black/gray additive)
component.  This allows the 32 gray levels to be recognised by the
halftoning logic as being sufficient to avoid halftoning.</pre>
<p>[src/gdevdsp.c 1.30, src/gxcmap.c 1.23, src/gxcmap.h 1.12, src/zcolor.c 1.21]</p>
</blockquote>

<p><strong><a name="2004-10-01_0340"></a>
2004-10-01 03:40 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687718 The tiffsep device fails when the size of gx_color_index is 32 bits

DETAILS:

The comments on bug 687705 "Compile of 8.31 fails on OS/2" point out that the
tiffsep device fails during device initialization if the size of
gx_color_index is 32 bits.

This is due to a recent change which made the default number of components for
this device equal to 8.  This works if the size of gx_color_index is 64 bits.
But it fails with 32 bits.

This fix changes the default number of components for this device to be
based upon the size of gx_color_index.  It also changes the psdcmyk device
to use the same logic for its default number of components.

This fix also includes changes to doc/Devices.htm which explains that the number
of components will differ based upon the size of gx_color_index (and a link
giving more details on gx_color_index).  More information about the parameters
for the tiffsep device is given including an example command line.</pre>
<p>[doc/Drivers.htm 1.49, src/gdevpsd.c 1.18, src/gdevtsep.c 1.5]</p>
</blockquote>

<p><strong><a name="2004-09-30_1731"></a>
2004-09-30 17:31 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Moving type1_cis_get_metrics to the graphics library.

DETAILS :

Doing so since copied_type1_glyph_outline calls it.
This change is algorithmically equivalent.
Thanks to Stefan for pointing this out.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxtype1.c 1.38, src/zchar1.c 1.40]</p>
</blockquote>

<p><strong><a name="2004-09-30_0637"></a>
2004-09-30 06:37 Dan Coby</strong></p>
<blockquote>
<pre>
This is a partial fix for 687706 Display device 8-bit native incorrectly
dithers grays.  Russell Lang is improving the 8-bit (256 color) display
device to allow more shades of gray.  This change is required for that
effort.

DETAILS:

The pre 8.00 release had more gray levels for the 8-bit display device
but the pre 8.00 release had other related problems in halftoning.  The
fix for those problems eliminated the extra gray levels.

Russell's effort dug up some problems with the handling of halftones
for devices in which the max_color and max_gray values are different
and gray_index is set to an actual component number.  This fix corrects
those problems.

Russell has a patch for the remainder of the effort.  His changes
involve changing the 256 color display device to use a DeviceRGBK process
color model:  red, green, blue and an additive black (gray).  New
device color mapping procs also have been created for this process color
model.  (This is the first example of this process color model in
Ghostscript.)</pre>
<p>[src/gxdevice.h 1.20, src/gxdevndi.c 1.4]</p>
</blockquote>

<p><strong><a name="2004-09-29_2136"></a>
2004-09-29 21:36 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (the filling algorithm) : Unite trapezoids if they have a common side.

DETAILS :

Bug 687716 "Assertion fails in gzspotan.c".
The spot analyzer can't reconstruct the topology when there are
two trapezoids with a common side.

We patched the spot decomposition algorithm with
uniting such trapezoids, because (1) it's too hard to
unite them in the "spotan" device, and (2)
the post-condition of the spot decomposer simplifies.

For more details see a new comment in code.

This patch causes a rendering difference.
We believe that a big part of differences happens due to the bug 687717,
which is currently unfixed due to the QA overload.

If the bug 687717 is fixed before this patch,
a small rendering difference can also appear,
because we unite trapezoids by the equality of x_current, x_next,
which have an arithmetic error. Therefore ununited trapezoids
may have a pixel center between them, which is not painted,
but shifting a boundary to x_current, x_next the pixel center
may fall into a trapezoid, then it is covered by the union and painted.

Besides that, with dropout prevention, a pixel set for the union of
two trapezoids may differ from the union of pixel sets for ununited trapezoids
when at least one of the trapezoids is narrow.
Particularly, two narrow trapezoids may paint 2 pixels,
but its (narrow) union does a single pixel.
Contacting trapesoids are not regular in characters,
which only use a dropout prevention,
but the test file of the bug 687698 (same as for 687667)
demonstrates some ones in a CJK TT font,
which composes hieroglyphs from subglyphs with a deformation and shifting.

EXPECTED DIFFERENCES :

normal 72dpi :

"181-01.ps"
"222-05.ps"
"222-09.ps"
"289-01.ps"
"307-07.ps"
"86554321.pdf"
"bulletin.pdf"
"KozukaB-ILEmbed.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"waterfal.ps"

normal 300dpi :

"012-05.ps"
"012-09.ps"
"013-05.ps"
"013-09.ps"
"123-05.ps"
"123-09.ps"
"222-09.ps"
"289-01.ps"
"307-07.ps"
"86554321.pdf"
"Altona.Page_3.2002-09-27.pdf"
"Altona_Technical_1v1_x3.pdf"

pdfwrite 72dpi :

"181-01.ps"
"222-05.ps"
"222-09.ps"
"307-07.ps"
"86554321.pdf"
"Bug687603.ps"
"bulletin.pdf"
"KozukaB-ILEmbed.pdf"
"S2_Digitalproof-Forum_x3k.pdf"

pdfwrite 300dpi :

"012-05.ps"
"012-09.ps"
"013-05.ps"
"013-09.ps"
"123-05.ps"
"123-09.ps"
"222-09.ps"
"307-07.ps"
"86554321.pdf"
"Altona.Page_3.2002-09-27.pdf"
"Altona_Technical_1v1_x3.pdf"</pre>
<p>[src/gxfilltr.h 1.7]</p>
</blockquote>

<p><strong><a name="2004-09-29_1910"></a>
2004-09-29 19:10 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Handle more than 32 TrueType subglyphs.

DETAILS :

Bug 687698  "Cannot extract the embedded font" error message

1. The old code run out an implementation limit MAX_GLYPH_PIECES.
2. Error code was not propagated.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfcopy.c 1.48]</p>
</blockquote>

<p><strong><a name="2004-09-29_1134"></a>
2004-09-29 11:34 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Don't apply fill adjustment when stroking a character.

DETAILS :

Bug 687667 "Line width in a Type 1 stroked font".

EXPECTED DIFFERENCES :

-r300 CAT_LOGO.ps</pre>
<p>[src/zchar1.c 1.39]</p>
</blockquote>

<p><strong><a name="2004-09-28_2145"></a>
2004-09-28 21:45 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Pattern metrics was imprecize.

DETAILS :

Bug 687581 "A pattern truncated".
This bug is a regression since the December 09 2003 revision.

We still think that we insufficiently understand the Adobe's method,
but now we've got one closer to CPSI than it was before the December 09 2003 revision.
Particularly the pattern step now appears better than on December 09 2003.

This patch includes a change, which is well defined by the math :
the usage of float2fixed_rounded instead float2fixed.
It is a part of the PRECISE_CURRENTPOINT stuff.

The rest of the patch is a kind of hewristic.
We guessed that a pattern size should always round up to allow
a similar logics as for a clipping - "any part of pixel inside".

As before December 09 2003, we improved the case with neither skewing nor rotation.
A further work on the general case may be useful.

At last, some old problems, which existed on December 09 2003,
are still unfixed. An example is -r300 298-09.ps :
a line appears outside the pattern box.
For now living them as they are, because
the primary purpose of this patch is to fix regressions.

EXPECTED DIFFERENCES :

normal 72 dpi :

"176-01.ps"
"255-01.ps"
257-01.ps"  (A dashed line became wider due to a CTM
             coefficient slightly increased,
             and therefore it now looks contiguous.
             It's not a regression.)
"269-01.ps"
"289-01.ps"
"296-01.ps"
"303-01.ps"
"Bug687396.ps"

normal 300 dpi :

"012-09.ps"
"013-09.ps"
"014-09.ps"
"015-09.ps"
"027-13.ps"
"034-10.ps"
"035-07.ps"
"045-01.ps"
"083-09.ps"
"103-01.ps"
"118-01.ps"
"123-09.ps"
"169-09.ps"
"176-01.ps"
"192-01.ps"
"205-09.ps"
"212-01.ps"
"213-01.ps"
"214-01.ps"
"222-09.ps"
"231-01.ps"
"250-01.ps"
"257-01.ps"
"264-01.ps"
"269-01.ps"
"289-01.ps"
"297-01.ps"
"298-09.ps"
"307-07.ps"
"310-04.ps"
"311-03.ps"
"468-01.ps"
"Bug687396.ps"
"mspro.pdf"

pdfwrite 72 dpi :

"176-01.ps"
"212-01.ps"
"214-01.ps"
"257-01.ps" (same as above)
"269-01.ps"
"303-01.ps"
"Bug687396.ps"

pdfwrite 300 dpi :

"012-09.ps"
"013-09.ps"
"014-09.ps"
"015-09.ps"
"017-01.ps"
"027-13.ps"
"034-10.ps"
"035-07.ps"
"045-01.ps"
"083-09.ps"
"103-01.ps"
"118-01.ps"
"123-09.ps"
"169-09.ps"
"176-01.ps"
"192-01.ps"
"205-09.ps"
"212-01.ps"
"213-01.ps"
"214-01.ps"
"222-09.ps"
"231-01.ps"
"244-01.ps"
"245-01.ps"
"245-07.ps"
"245-13.ps"
"245-17.ps"
"250-01.ps"
"255-01.ps"
"257-01.ps"
"258-01.ps"
"264-01.ps"
"269-01.ps"
"270-01.ps"
"297-01.ps"
"298-09.ps"
"307-07.ps"
"310-04.ps"
"311-03.ps"
"321-09.ps"
"327-01.ps"
"468-01.ps"
"Bug687396.ps"
"mspro.pdf"</pre>
<p>[src/gsptype1.c 1.20]</p>
</blockquote>

<p><strong><a name="2004-09-28_0534"></a>
2004-09-28 05:34 Ralph Giles</strong></p>
<blockquote>
<pre>
Export the prototype for gcst_get_memory_ptr() which is now used by
ilocate.c as well as igc.c to igc.h so it is available in both files.
Remove the cast that was papering over the warning this causes.
Completes the fix for bug 687617.</pre>
<p>[src/igc.c 1.14, src/igc.h 1.9, src/ilocate.c 1.12]</p>
</blockquote>

<p><strong><a name="2004-09-28_0226"></a>
2004-09-28 02:26 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Remove a comment about LZW-compatible code that is no longer apply.
Bug 687554.</pre>
<p>[src/Makefile.in 1.39, src/openvms.mmk 1.29]</p>
</blockquote>

<p><strong><a name="2004-09-28_0045"></a>
2004-09-28 00:45 Ralph Giles</strong></p>
<blockquote>
<pre>
Cast the read standard illuminant to icIlluminant instead of
icStandardFlare inside icmMeasurement_read() inside the icc
library. Not really our code, but resolves an enum mis-match
warning. Bug 687694.</pre>
<p>[icclib/icc.c 1.10]</p>
</blockquote>

<p><strong><a name="2004-09-28_0035"></a>
2004-09-28 00:35 Ralph Giles</strong></p>
<blockquote>
<pre>
Add string_.h to some files missing prototypes. Bug 687694.</pre>
<p>[src/devs.mak 1.118, src/gdevps.c 1.39, src/gxpflat.c 1.42, src/lib.mak 1.200]</p>
</blockquote>

<p><strong><a name="2004-09-28_0025"></a>
2004-09-28 00:25 Ralph Giles</strong></p>
<blockquote>
<pre>
Add stdio_.h to the makefile dependencies for gslibctx.c.</pre>
<p>[src/lib.mak 1.199]</p>
</blockquote>

<p><strong><a name="2004-09-28_0008"></a>
2004-09-28 00:08 Ralph Giles</strong></p>
<blockquote>
<pre>
Properly include the portability version of the stdio error. Corrects
type confict problems on HP-UX. Closes bug 687689.</pre>
<p>[src/gslibctx.c 1.5]</p>
</blockquote>

<p><strong><a name="2004-09-27_2114"></a>
2004-09-27 21:14 Russell Lang</strong></p>
<blockquote>
<pre>
Fix bug #687705 Compile of 8.31 fails on OS/2.</pre>
<p>[src/gdevos2p.c 1.9, src/gp_os2.c 1.32, src/os2.mak 1.40]</p>
</blockquote>

<p><strong><a name="2004-09-27_1313"></a>
2004-09-27 13:13 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (Type 1 hinter) : A further improvement of the glyph rendering quality, step 3.

DETAILS :

Don't reset zone alignment.
Bug 687578 "T1 hinter disturbs stem width", Comment #8.

EXPECTED DIFFERENCES :

normal 72 dpi :

"045-01.ps"     ("s" now aligns with the upper zone).
"Bug687603.ps"

normal 300 dpi :

"CIDembedded.pdf"  ("b", "d" now aligns with the bottom zone).

pdfwrite 72 dpi :

"045-01.ps"

pdfwrite 300 dpi :

"chess.ps" (a sloped line hints better).
"CIDembedded.pdf"</pre>
<p>[src/gxhintn.c 1.52]</p>
</blockquote>

<p><strong><a name="2004-09-27_0455"></a>
2004-09-27 04:55 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix SEGV caused by premature free of the bbox device with high level
devices that use the bbox_device of the vector high level device.
Bug 687631.

DETAILS:

The vector device allocated a bbox device, but never incremented the
reference count past zero, so any use of the device that added a forwarding
device with that bbox_device as the target would free the bbox device
when that forwarding device closed. This happens with clipped images
or images that use ROP's since a clipping ROP forwarding could be used.</pre>
<p>[src/gdevvec.c 1.25]</p>
</blockquote>

<p><strong><a name="2004-09-26_2117"></a>
2004-09-26 21:17 Ray Johnston</strong></p>
<blockquote>
<pre>
Add missing source file (it hadn't been 'added', so it did not get included
on the previous LZWEncode commit.</pre>
<p>[src/slzwe.c 1.1]</p>
</blockquote>

<p><strong><a name="2004-09-26_1619"></a>
2004-09-26 16:19 Ray Johnston</strong></p>
<blockquote>
<pre>
Add the LZWEncode filter that actually compresses using the LZW method,
rather than the dummy encoder in slzwce.c that expanded the input, but
that avoided the patent issues. Bug 687554.

Also fix a long standing issue in filter closing that failed to flush the
target stream after the final s_process_write_buf with 'last' == true.
Bug 224134.

DETAILS:

The LZWEncode filter was moved over from an older version of Ghostscript
that actually had a working LZWEncode.

The s_filter_close logic (discussed at length in bug 224134) was fixed
to be consistent with the specification and with Adobe. While the
target stream is not closed (per the specification unless CloseTarget is
true), the specification *DOES* call for an automatic 'flushfile' which
is supposed to be propagated down the filter chain.</pre>
<p>[doc/Develop.htm 1.140, doc/Issues.htm 1.42, doc/Projects.htm 1.59, doc/Ps2pdf.htm 1.71, src/bcwin32.mak 1.33, src/dvx-gcc.mak 1.27, src/lib.mak 1.198, src/macos-mcp.mak 1.26, src/macosx.mak 1.23, src/msvc32.mak 1.63, src/msvclib.mak 1.26, src/openvms.mak 1.37, src/os2.mak 1.39, src/slzwce.c 1.5, src/stream.c 1.25, src/unix-gcc.mak 1.46, src/unixansi.mak 1.37, src/watcw32.mak 1.30, src/zfilter2.c 1.6]</p>
</blockquote>

<p><strong><a name="2004-09-25_2148"></a>
2004-09-25 21:48 Jack Moffitt</strong></p>
<blockquote>
<pre>
Fix error with automatic baseline creation for files which contain spaces
in their names.</pre>
<p>[toolbin/tests/gscheck_pdfwrite.py 1.24, toolbin/tests/gscheck_raster.py 1.14]</p>
</blockquote>

<p><strong><a name="2004-09-25_2027"></a>
2004-09-25 20:27 Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the 'makegnu' utility. It is out of date, and recent changes to
the documentation structure have rendered its automation more-or-less
unnecessary. The appropriate steps to convert releases are now
documented in doc/Release.htm.</pre>
<p>[toolbin/makegnu.tcl 1.6]</p>
</blockquote>

<p><strong><a name="2004-09-25_2024"></a>
2004-09-25 20:24 Ralph Giles</strong></p>
<blockquote>
<pre>
Toolbin cleanup. Remove the extensionless shell wrappers for convenience
utilities, except for gsmake where is aesthetically reasonable. Typing
the script extensions for these little-used commands isn't a hardship.</pre>
<p>[toolbin/cvs2hist 1.4, toolbin/makefonts 1.4, toolbin/makegnu 1.4, toolbin/makehist 1.4, toolbin/makemaster 1.4, toolbin/makeset 1.4, toolbin/maketars 1.4, toolbin/makewin 1.4, toolbin/tmake 1.4]</p>
</blockquote>

<p><strong><a name="2004-09-25_2019"></a>
2004-09-25 20:19 Ralph Giles</strong></p>
<blockquote>
<pre>
Update some remaining occurances of 'GNU Ghostscript' to 'GPL
Ghostscript'.</pre>
<p>[doc/Commprod.htm 1.33, doc/Make.htm 1.80, doc/New-user.htm 1.52, doc/Public.htm 1.7, doc/Readme.htm 1.57]</p>
</blockquote>

<p><strong><a name="2004-09-22_1535"></a>
2004-09-22 15:35 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc warnings.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/zchar1.c 1.38]</p>
</blockquote>

<p><strong><a name="2004-09-22_1532"></a>
2004-09-22 15:32 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Alwasys write the file ID in hexadecimal encoding.

DETAILS :

Bug 687688  "PDF file identifier uses non-alphanumeric characters".
The previous patch was committed by error.
This one fixes that, unwinding the last patch.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.100, src/gdevpdfu.c 1.60]</p>
</blockquote>

<p><strong><a name="2004-09-22_1523"></a>
2004-09-22 15:23 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Alwasys write the file ID in hexadecimal encoding.

DETAILS :

Bug 687688  "PDF file identifier uses non-alphanumeric characters".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfu.c 1.59]</p>
</blockquote>

<p><strong><a name="2004-09-22_1415"></a>
2004-09-22 14:15 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc warnings.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/ichar1.h 1.12]</p>
</blockquote>

<p><strong><a name="2004-09-22_1352"></a>
2004-09-22 13:52 Igor Melichev</strong></p>
<blockquote>
<pre>
CDevProc|Metrics|Metrics2 did not work with CIDFontType 0.

DETAILS :

Bug 687681 "Character spacing incorrect".
The old implementation, which comes from the gs-cjk team,
has a bug accessing the replaced metrics of a CIDFontType 0 font,
which effectively caused the replaced metric to be ignored with CIDFontType 0 fonts.

1. Bug : With CIDFontType 0, CDevProc|Metrics|Metrics2 was searched
   in the descendent type 1 or 2 font rather than in the parent type 9 font.

   1.1. A Type 9 font needs to be accessed via a descendent Type 1|2 font
        in pfont-&gt;procs.glyph_info. Added a new field gs_type1_data_s::parent,
        and provided an access through it with a new function gs_font_parent.

   1.2. Metrics|Metrics2 is now accessed through gs_font_parent.

   1.3. To access CDevProc implemented a new function zchar_get_CDevProc,
        which also works through gs_font_parent.

   1.4. gs_type1_data_s::parent needs to reset while a type 9 font finalization,
        due to a reason, which we could not understand for sure.
        Likely descendent fonts appear to have a bigger lifetime than
        their parent type 9 font. Probably the descendents are pointed from
        somewhere besides FDArray (maybe the font registry ?
        or maybe after scaling the type 9 font from a type 9 copy ?),
        and we think it's not good.
        We believe that they should be released together with the type 9 font.
        For now leaving it as it is, working around with a hack notify_remove_font_type9.

   1.5. In stable font copies gs_type1_data_s::parent is set to NULL
        to simplify the finalization. They are not used now.

2. Bug : In some cases the glyph bytecode was used instead the CID
   as a key for searching a Metrics|Metrics2 element (zchar1.c).

3. Bug : The PDF interpreter wrongly scaled W,W2,DW,DW2 for CIDFontTYpe0 (pdf_font.ps).

4. pdfwrite : Improved the generation of W, W2 for CID fonts,
   because after implementing (1) re-distilled 401-01.ps rendered incorrectly.

   4.1. Prefer a non-zero width when computing DW, DW2 (gdevpdtw.c)
        (debugged with 401-01.ps).

   4.2. Don't skip zero W, W2 elements. The old code recognized zeros as
        unused glyphs, but must do with the real glyph set in the font copy
        (debugged with the test file of the bug 687681).

5. zcharstring_outline still ignores CDevProc. We believe that it is correct,
   because it is used to compute font features with no dependence on
   the relaced metrics.

6. pdfwrite : Allowed a CDevProc callout for CIDFontType 0, because
   pdfwrite needs to know replaced widths, as well as it was done a half year ago
   for CIDFontType2. Actually after implementing (1) pdfwrite stopped
   to work correctly when re-distilling a PDF file with CIDFontType0,
   due to now it uses W,W2,DW,DW2.

   6.1. A new function z1_set_cache is defined for this purpose
        similarly to zchar42_set_cache.

   6.2. gs_font_procs::glyph_outline now retrieves the side bearing and width.
        Added a new argument 'sbw' to all implementations.

      6.2.1. Currently this function extension is implemented for charstring fonts only,
          which need to interpret a charstring to retrieve the info :
          type 1,2,9, because we don't want to run the type 1 interpreter 2 times
          for getting sbw and bbox. Other font types retrieve zeros,
          which currently are not used.

      6.2.2. type1_cis_get_metrics has been made public.

7. We believe that the implementation of W,W2,DW,DW2 in the PDF interpreter,
   which was contributed by the gs-cjk team, is unreasonably overcomplicated,
   because it is based on CDevProc, which needs an interpreter callout,
   which appears extremily hard from pdfwrite.
   For now leaving it as it is (except a small improvement in (3)).
   We would like to generate Metrics, Metrics2 instead that.
   Note that a small part of this patch (the part (1)) is necessary
   for generating Metrics, Metrics2 for CIDFontTYpe 0.

EXPECTED DIFFERENCES :

Almost all differences are a single pixel glyph shift.

normal 72dpi :

"Altona.Page_3.2002-09-27.pdf"
"HeiseiMinStd.pdf"
"KozukaB-ILEmbed.pdf"
"Openhuis_pdf_zw.pdf"
"RodinCIDEmbed.pdf"

normal 300dpi :

"289-01.ps"
"Altona.Page_3.2002-09-27.pdf"
"Altona_Technical_1v1_x3.pdf"
"CIDembedded.pdf"
"HeiseiMinStd.pdf"
"KozukaB-ILEmbed.pdf"
"Openhuis_pdf_zw.pdf"
"RodinCIDEmbed.pdf"

pdfwrite 72dpi :

"Altona.Page_3.2002-09-27.pdf"
"HeiseiMinStd.pdf"
"KozukaB-ILEmbed.pdf"
"Openhuis_pdf_zw.pdf"
"RodinCIDEmbed.pdf"

pdfwrite 300dpi :

"CIDembedded.pdf"
"HeiseiMinStd.pdf"
"KozukaB-ILEmbed.pdf"
"Openhuis_pdf_zw.pdf"
"RodinCIDEmbed.pdf"</pre>
<p>[src/gdevpdtt.c 1.88, src/gdevpdtw.c 1.30, src/gsfont.c 1.34, src/gstype42.c 1.45, src/gxfcopy.c 1.47, src/gxfont.h 1.22, src/gxfont1.h 1.13, src/gxtype1.c 1.37, src/gxtype1.h 1.19, src/ichar1.h 1.11, src/icharout.h 1.10, src/zchar.c 1.15, src/zchar1.c 1.37, src/zcharout.c 1.13, src/zfcid0.c 1.23, src/zfcid1.c 1.20, src/zfont1.c 1.13, src/zfont42.c 1.21, lib/pdf_font.ps 1.68]</p>
</blockquote>

<p><strong><a name="2004-09-22_0037"></a>
2004-09-22 00:37 Dan Coby</strong></p>
<blockquote>
<pre>
Move the definition of gs_overprint_t from gsovrc.c to gsovrc.h.  This
makes this structure definition available to future devices which may
want to define their own overprint compositor.</pre>
<p>[src/gsovrc.c 1.8, src/gsovrc.h 1.4, src/lib.mak 1.197]</p>
</blockquote>

<p><strong><a name="2004-09-21_2230"></a>
2004-09-21 22:30 Dan Coby</strong></p>
<blockquote>
<pre>
Correct some gcc warnings.</pre>
<p>[src/gdevdevn.c 1.23, src/zcolor.c 1.20]</p>
</blockquote>

<p><strong><a name="2004-09-21_1000"></a>
2004-09-21 10:00 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Generate an error message when pdfmark points beyond the last page.

DETAILS :

Fixes the bug 687693 "A dangling reference from DOCVIEW pdfmark".
We want to return error code, but currently we don't due to
bug 687686 "Ghostscript creates bad xref from ADOBE1-4.pdf".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.99, src/gdevpdfm.c 1.46, src/gdevpdfx.h 1.101]</p>
</blockquote>

<p><strong><a name="2004-09-20_2328"></a>
2004-09-20 23:28 Dan Coby</strong></p>
<blockquote>
<pre>
Partial fix for 687657 Text in transparency mask yields rangecheck in
discardtransparencymask.

DETAILS:

Three problems have been found with this file.

The rangecheck is actually a secondary effect.  The actual problem
was a typecheck in setrgbcolor.  However that error occurred inside
a stopped context.

1) The file has a mask group.  This group specifies a color space (CS).
The previous code set the current color space to the given value.
However the FillColorSpace and StrokeColorSpace were not set.  As a
result, a DeviceRGB color space was being used instead of the specified
DeviceGray color space.  This resulted in a mismatch in the number
of operands when the color as set (1 versus 3).  The fix consists of
setting both StrokeColorSpace and FillColorSpace when a mask group
contains a CS value.

2) The file uses scn for setting color values for a DeviceGray color
space.  FillColor and StrokeColor can contain wither a single numeric
value (which is common but not required for DeviceGray) or an array
of values for all other color spaces.  The scn and SCN operators were
always assuming that these values always contained arrays.  The fix
consists of checking for the non array cases in the operators.

3) The appearance produced by Ghostscript with the test file does not
match Adobe.  A solid magenta rectangle is produced by Ghostscript.
Adobe shows magenta text.  This problem is NOT fixed by this patch.
Note:  If the test file is opened with Illustrator CS and then saved,
Ghostscript does produced the same appearance as Adobe for the saved
file.  The reason for the differences are not currently known.  However
there are some more details in the bug report on this issue.</pre>
<p>[lib/pdf_draw.ps 1.86, lib/pdf_ops.ps 1.36]</p>
</blockquote>

<p><strong><a name="2004-09-20_2214"></a>
2004-09-20 22:14 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687403 Poor halftoning for 16 color (4 bit) devices.

DETAILS:

This bug is a brother to bug 687390.  That bug was for 256
color (8 bit) devices.  Russell Lang suggested testing the 4 bit
devices and they were found to have problems caused by the same
logical error.  The halftoning logic assumes that all components
for a device have the same number of shades.  This was not true
for the implementations of the 4 and 8 bit color devices.
This fix converts the 16 color devices to using a 2x2x2 cube.

Note:  A possible future enhancement would be to convert these
devices to using a 4 level gray for shades of pure gray (R = G
= B).</pre>
<p>[src/gdevbmp.c 1.10, src/gdevdsp.c 1.29, src/gdevmgr.c 1.7, src/gdevmswn.c 1.12, src/gdevpccm.c 1.7, src/gdevpccm.h 1.8, src/gdevpcfb.c 1.6, src/gdevpcx.c 1.8, src/gdevpm.c 1.10, src/gdevpng.c 1.11]</p>
</blockquote>

<p><strong><a name="2004-09-20_2142"></a>
2004-09-20 21:42 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687664 tiffsep sometimes producing apparently corrupt files
sometimes.

DETAILS:

The tiffsep device did not properly handle multiple page input files.
This change adds multiple page handling to the tiffsep device.  Most
of the various tiff related routines already properly handled multiple
pages so changes were only required inside the tiffsep device.

The changes consists of:

1.  Moving several variables which were local to tiffsep_print_page
into the tiffsep device structure and adding initialization.  These
variables provide state information to the general tiff handling
routines and the file pointers for the separation files.

2.  Add logic for determining if the output file name includes a
numeric format specification.  If so then we create individual separation
files for each page.  If not then we create a single file for each
separation.

3.  A device close procedure was added to ensure that the separation
files were closed.</pre>
<p>[src/gdevtsep.c 1.4]</p>
</blockquote>

<p><strong><a name="2004-09-20_1621"></a>
2004-09-20 16:21 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Could merge fonts with insufficient subrs.

DETAILS :

Bug 687675 "ps2pdf13 gives ERROR -15 closing the device"
happened due to an inaccurate computation of Subrs array inclusion.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfcopy.c 1.46]</p>
</blockquote>

<p><strong><a name="2004-09-20_1306"></a>
2004-09-20 13:06 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Degenerate curves could cause a too big number of flattened curve segnments.

DETAILS :

Bug 687653 "-dNOTRANSPARENCY still allocates large buffers".
Actually the problem happens due to the bbox device
sets a high resolution, and degenerate curves with zero X or Y variation
use "the conservative method" in gx_curve_log2_samples.
With this change degenerate curves will render as line segments.

EXPECTED DIFFERENCES :

golfer.eps At 72dpi (a 2 pixels difference).</pre>
<p>[src/gxpcopy.c 1.23]</p>
</blockquote>

<p><strong><a name="2004-09-20_1050"></a>
2004-09-20 10:50 Russell Lang</strong></p>
<blockquote>
<pre>
Fixes bug #687690 MSVC6 warning in dwimg.c.</pre>
<p>[src/dwimg.c 1.16]</p>
</blockquote>

<p><strong><a name="2004-09-20_0959"></a>
2004-09-20 09:59 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : vd_save caused a yntax error in a release build.

DETAILS :

See the comment added to vdtrace.h :
   /* NOTE :
  	    Use vd_save at end of the definition group of a  block,
  	    because in release build it compiles to the empty operator. */

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.83, src/vdtrace.h 1.14]</p>
</blockquote>

<p><strong><a name="2004-09-20_0648"></a>
2004-09-20 06:48 Raph Levien</strong></p>
<blockquote>
<pre>
Changes bbox device forwarding logic so that get_page_device requests
are always forwarded to the target. Fixes bug #687421. Note: this change
backs out a change made to gdevnfwd.c between GS 4.70 and 4.80, with a
confusing explanation in the change notes. Changes to the page device
behavior in forwarding devices would not be surprising. See the code
review notes linked from the bug for more details.</pre>
<p>[src/gdevbbox.c 1.22, src/gdevnfwd.c 1.26, src/gsovrc.c 1.7]</p>
</blockquote>

<p><strong><a name="2004-09-20_0613"></a>
2004-09-20 06:13 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix handling of CMaps to be able to handle large number of CMap entries
seen with some (Adobe) CMap files. Also fix name of a CMap file and
remove garbage at the end of one of our CMap files. Bug 687555.
Thanks to Alex Cherepanov for the changes to allow large CMaps.</pre>
<p>[Resource/CMap/Adobe-CNS1-ETen-B5 1.2, Resource/CMap/Adobe-CNS1-ETenms-B5 1.1, Resource/CMap/Adobe-Korea1-H-Mac 1.2, lib/gs_cmap.ps 1.18, src/zfcmap.c 1.16]</p>
</blockquote>

<p><strong><a name="2004-09-20_0019"></a>
2004-09-20 00:19 Jack Moffitt</strong></p>
<blockquote>
<pre>
Sets explicit umask for nightly regression run.  Fixes Bug #687648.</pre>
<p>[toolbin/tests/run_nightly 1.28]</p>
</blockquote>

<p><strong><a name="2004-09-19_2356"></a>
2004-09-19 23:56 Jack Moffitt</strong></p>
<blockquote>
<pre>
Fix support for filenames that include spaces.  Also add '.ai' as a PDF
type extension.</pre>
<p>[toolbin/tests/gstestgs.py 1.24]</p>
</blockquote>

<p><strong><a name="2004-09-19_2355"></a>
2004-09-19 23:55 Jack Moffitt</strong></p>
<blockquote>
<pre>
Fix a typo made by someone's previous commit.</pre>
<p>[toolbin/tests/gscheck_pdfwrite.py 1.23]</p>
</blockquote>

<p><strong><a name="2004-09-19_1705"></a>
2004-09-19 17:05 Jack Moffitt</strong></p>
<blockquote>
<pre>
Added new gsutil module for utility functions.  Changed all file extension
checks to use new gsutil.check_extension().  Added support for '.ai' as
a file extension.  This should fix the problem of several files in
comparefiles not making it into the nightly runs.</pre>
<p>[toolbin/tests/gscheck_pdfwrite.py 1.22, toolbin/tests/gscheck_raster.py 1.13, toolbin/tests/gsutil.py 1.1, toolbin/tests/make_testdb 1.13, toolbin/tests/revert_baseline 1.13, toolbin/tests/revert_pdfbaseline 1.11, toolbin/tests/update_baseline 1.14, toolbin/tests/update_pdfbaseline 1.10]</p>
</blockquote>

<p><strong><a name="2004-09-19_1632"></a>
2004-09-19 16:32 Jack Moffitt</strong></p>
<blockquote>
<pre>
Add log rotation for the Ghostscript stdout and stderr logs.  Fixes
Bug #687574.</pre>
<p>[toolbin/tests/run_nightly 1.27, toolbin/tests/testing.cfg.example 1.6]</p>
</blockquote>

<p><strong><a name="2004-09-18_2200"></a>
2004-09-18 22:00 Russell Lang</strong></p>
<blockquote>
<pre>
Fixes bug #687683 "gswin32c : Ctrl+C doesn't stop the application".
Make Ctrl+C in the image window act the same as Ctrl+C in the
console window, which generates a signal to exit the process.</pre>
<p>[src/dwimg.c 1.15]</p>
</blockquote>

<p><strong><a name="2004-09-17_0614"></a>
2004-09-17 06:14 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687625 Incorrect spot color behavior in tiffsep.  Garbage
text was being printed for the spot color names.

DETAILS:

The problem was with the allocation and GC enumeration logic for the
storage for the storage for the spot color names.  Thus the problem
was only apparent after the GC relocation logic had executed.

The fix involves adding enumeration logic for the gs_param_string
structure and correcting the allocation of storage for the data.

Note:  The file src/gdevdevn.c was missed in the previous commit on
this topic.</pre>
<p>[src/gdevdevn.c 1.22]</p>
</blockquote>

<p><strong><a name="2004-09-17_0555"></a>
2004-09-17 05:55 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687625 Incorrect spot color behavior in tiffsep.  Garbage
text was being printed for the spot color names.

DETAILS:

The problem was with the allocation and GC enumeration logic for the
storage for the storage for the spot color names.  Thus the problem
was only apparent after the GC relocation logic had executed.

The fix involves adding enumeration logic for the gs_param_string
structure and correcting the allocation of storage for the data.</pre>
<p>[src/gsparam.h 1.12]</p>
</blockquote>

<p><strong><a name="2004-09-17_0542"></a>
2004-09-17 05:42 Ralph Giles</strong></p>
<blockquote>
<pre>
Use PSOBJDIR as a staging area for the name-rewritten scripts at unix
install time. We previously used 'sed -i' to modify the installed file
in place, but this option is a recent extension and insufficiently
portable. The install script also isn't capable enough to accept files
through pipes, so we much have an intermediate staging area. PSOBJDIR
should be a safe place to write to for this purpose. Fix for 686863.</pre>
<p>[src/unixinst.mak 1.37]</p>
</blockquote>

<p><strong><a name="2004-09-16_1514"></a>
2004-09-16 15:14 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : Correctly handle different widths for same glyph.

DETAILS :

Bug 687672  "incorrect font rendering".

An Encoding may specify various character codes for same glyph, and
Widths may specify different widths for those codes.
Thus same glyph may be used with different widths.

This patch continues a long story about the handling of different widths for same glyph,
which includes my old hacks (pdf_font.ps Revision 1.22 and 1.26)
and Alex's change pdf_font.ps Revision 1.57 .
Alex defines new glyph names for same glyph to resolve the widths conflict.
After the Alex's change my old hacks appear low useful, and can be removed.

This patch
1. Removes the hacks;
2. Improves the Alex's change with the case when CharStrings has no referred glyph
   (debugged with 1_2001.pdf)
3. Improves the Alex's change with minimizing a number of newly generated names,
   because the test file of the bug 687672 maps many charcodes to .notdef with various widths.

Here is a list of bugs related to this change :

687672
623292
467492
517474
444366

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/pdf_font.ps 1.67, lib/pdf_ops.ps 1.35]</p>
</blockquote>

<p><strong><a name="2004-09-16_0803"></a>
2004-09-16 08:03 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : A library context was not provided for bbox device.

DETAILS :

BBox device needs a library context for gs_next_id called from gx_image_enum_common_init.
It was not provided when the bbox device has no target.

We assume that the bbox device behavior doesn't depend on availability of a memory pointer -
likely it is so from reading the code.

Bug 687671 "epswriter it's not working at all."

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevbbox.c 1.21, src/gdevbbox.h 1.6, src/gdevvec.c 1.24, src/gslib.c 1.15, src/gximag3x.c 1.20]</p>
</blockquote>

<p><strong><a name="2004-09-16_0746"></a>
2004-09-16 07:46 Ralph Giles</strong></p>
<blockquote>
<pre>
Fix a typo in and earlier commit.</pre>
<p>[src/unixinst.mak 1.36]</p>
</blockquote>

<p><strong><a name="2004-09-16_0657"></a>
2004-09-16 06:57 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : A syntax error in a recent patch.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevbbox.c 1.20]</p>
</blockquote>

<p><strong><a name="2004-09-15_1941"></a>
2004-09-15 19:41 Ray Johnston</strong></p>
<blockquote>
<pre>
Remove trailing ^M on lines in several commits by alexcher.</pre>
<p>[src/dwimg.h 1.11, src/dwmain.c 1.21, src/dwmainc.c 1.24, src/dwtrace.h 1.7, src/gdevbbox.c 1.19, src/gdevwdib.c 1.9, src/gs.c 1.14, src/iscannum.c 1.10, src/stream.c 1.24, src/unistd_.h 1.12, src/zdevice.c 1.10]</p>
</blockquote>

<p><strong><a name="2004-09-15_1146"></a>
2004-09-15 11:46 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix the problems reported by HP aC++/C compiler but unrelated to the crash.
Partial fix for 687643

[DETAILS]
gs.c, int.mak - include the prototype of gs_malloc_init()
ttfmain.c - fix partly initialized FixMatrix m;
gdevpsd.c - allocate 4 elements for CMYK, not 3</pre>
<p>[src/gdevpsd.c 1.17, src/gs.c 1.13, src/int.mak 1.130, src/ttfmain.c 1.28]</p>
</blockquote>

<p><strong><a name="2004-09-15_0759"></a>
2004-09-15 07:59 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 87.

DETAILS :

Contrary to PLRM3 page 689, Background was not ignored with shfill.
Adding gs_pattern2_instance_s::shfill for that.
Bug 687673 "Axial shadings differ from Adobe".

EXPECTED DIFFERENCES :

Background isn't painted with 'shfill' (a progression) :
"464-01.ps"
"483-01.ps"
"483-05-fixed.ps"</pre>
<p>[src/gscolor3.c 1.9, src/gsptype2.c 1.15, src/gsptype2.h 1.10, src/lib.mak 1.196]</p>
</blockquote>

<p><strong><a name="2004-09-15_0721"></a>
2004-09-15 07:21 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 86.

DETAILS :

1. Implemented gx_shade_background with a compatible INTERPATCH_PADDING logic
   for filling a background.
2. The clipping logic in gdevdsha.c must be "any ppart of pixel inside",
   as it is in other places.
3. Dont need adjust_swapped_boundary for clipping rectangles (gxshade6.c).
4. INTERPATCH_PADDING is enlarged to half pixel. See comment in code.
5. Optimized with a better clipping in gx_shade_trapezoid.

Completes the fix for 687585 "A shading renders narrower than its background".

EXPECTED DIFFERENCES :

Shadings render slightly different :

"442-01.ps"
"446-01-fixed.ps"
"464-01.ps"
"478-01.ps"
"483-01.ps"
"483-05-fixed.ps"
"Altona-Testsuite_p2_S_x3.pdf"
"BEST8-99-Path.fh7.pdf"
"chilis_black.pdf"
"chilis_red.pdf"
"Clarke Tate Manns Chinese.ai"
"gradmesh.ai"
"Openhuis_pdf_zw.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"self-intersect2.ps"
"shading_prob_800.ps"
"SmoothShading.pdf"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 2(radial).ai"
"STEUER-RollingMesh 3(Final).ai"
"Testform.v1.0.2.pdf"</pre>
<p>[src/gdevdsha.c 1.11, src/gsshade.c 1.12, src/gxshade4.h 1.37, src/gxshade6.c 1.82]</p>
</blockquote>

<p><strong><a name="2004-09-14_2138"></a>
2004-09-14 21:38 Russell Lang</strong></p>
<blockquote>
<pre>
Add custom page size to PostScript Printer Description file.</pre>
<p>[lib/ghostpdf.ppd 1.2]</p>
</blockquote>

<p><strong><a name="2004-09-14_0645"></a>
2004-09-14 06:45 Russell Lang</strong></p>
<blockquote>
<pre>
Fixes bug 687542 Print with pswrite gives 'Could not open the
file \\spool\yourprinter'. Add a %printer% IODevice for OS/2,
which opens to a temporary file then later copies it to the
print spooler.  This will need "%printer%yourprinter",
not "\\spool\yourprinter".
This is needed to make pswrite write to a printer queue.</pre>
<p>[doc/Develop.htm 1.139, src/gp_os2.c 1.31, src/gp_os2.h 1.1, src/gp_os2pr.c 1.1, src/os2.mak 1.38]</p>
</blockquote>

<p><strong><a name="2004-09-14_0642"></a>
2004-09-14 06:42 Russell Lang</strong></p>
<blockquote>
<pre>
Add support for 4-bit/pixel CMYK to the display device clients for
Windows and gtk+.</pre>
<p>[src/dwimg.c 1.14, src/dxmain.c 1.15, src/gdevdsp.c 1.28]</p>
</blockquote>

<p><strong><a name="2004-09-13_2232"></a>
2004-09-13 22:32 Ray Johnston</strong></p>
<blockquote>
<pre>
Ignore MediaPosition when selecting a media type. Adobe CPSI does it this
way, and the PLRM suggests that this is advisory only. Bug 687547 for
customer 780.

DETAILS:

Adobe CPSI also ignores this parameter without generating any error or
warning. The PLRM says:

  This parameter does not override the normal media selection process
  described in the text, but if specified it will be honored--provided it can
  satisfy the input media request in a manner consistent with normal media
  selection--even if the media source it specifies is not the best available
  match for the requested attributes.

Since an input PS file is unlikely to have a PPD that accurately reflects
the 'slot' numbers of our InputAttributes dictionary, we also ignore this
option and instead give the 'best fit' based on size and orientation (and
other parameters that may exist).</pre>
<p>[lib/gs_setpd.ps 1.25]</p>
</blockquote>

<p><strong><a name="2004-09-13_2208"></a>
2004-09-13 22:08 Ray Johnston</strong></p>
<blockquote>
<pre>
Handle CS/cs PDF operators that have a colorspace array as an operand
instead of a name as the specification requires (yet another broken PDF
that Acrobat Reader handles without complaint). Issue pdfformaterror when
bad CS operands are seen. Bug 687610 for customer 770.</pre>
<p>[lib/pdf_draw.ps 1.85]</p>
</blockquote>

<p><strong><a name="2004-09-13_1832"></a>
2004-09-13 18:32 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 85.

DETAILS :

Propagate error codes from shade_bbox_transform2fixed.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade1.c 1.33, src/gxshade4.c 1.27, src/gxshade4.h 1.36, src/gxshade6.c 1.81]</p>
</blockquote>

<p><strong><a name="2004-09-13_1601"></a>
2004-09-13 16:01 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 84.

DETAILS :

Fixed a Cygwin/gcc warning.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gsshade.c 1.11]</p>
</blockquote>

<p><strong><a name="2004-09-13_1552"></a>
2004-09-13 15:52 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 83.

DETAILS :

This is a partial fix for the bug
687585 "A shading renders narrower than its background".
It fixes various secondary problems :

1. gx_default_fill_linear_color_scanline could miss pixels at the end of the scanline
   (bug 687585 "A shading renders narrower than its background", the right boundary).

2. decompose_linear_color could miss pixels when swapping axes of the clip rectangle.
   (bug 687585 "A shading renders narrower than its background", the top boundary).
   Defined adjust_swapped_boundary and applied for this purpose.

3. mesh_padding cauld miss pixels  when swapping axes of the padding.
   Defined adjust_swapped_boundary and applied for this purpose.

4. Moved the fill adjustment from gx_dc_pattern2_fill_path to gsshade.c
   and disabled it in the NEW_SHADINGS build, because NEW_SHADINGS build never
   needs it. Instead that it applies mesh_padding.
   The new function gx_dc_pattern2_fill_path_adjusted access the new functionality
   from outside gsshade6.c .
   Also renamed gx_dc_pattern2_fill_path_adjusted with gx_dc_pattern2_fill_path
   for a better reflection of its new purpose.

5. Implemented VD_TRACE_DOWN in try_device_linear_color.
   The old code did a misleading drawing.

6. Fixed a conflict of the 's' flag in the -T argument.
   Changed the documentation to reflect that.

EXPECTED DIFFERENCES :

Shading render slightly different :

72 dpi :
"446-01-fixed.ps"
"483-01.ps"
"483-05-fixed.ps"
"chilis_black.pdf"
"Clarke Tate Manns Chinese.ai"
"gradmesh.ai"
"Openhuis_pdf_zw.pdf"  (a strong progression)
"SmoothShading.pdf"
"STEUER-RollingMesh 3(Final).ai"

300dpi :

"442-01.ps"
"446-01-fixed.ps"
"464-01.ps"
"483-01.ps"
"483-05-fixed.ps"
"BEST8-99-Path.fh7.pdf"  (a strong progression)
"chilis_black.pdf"
"Clarke Tate Manns Chinese.ai"
"gradmesh.ai"
"Openhuis_pdf_zw.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"SmoothShading.pdf"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 2(radial).ai"
"STEUER-RollingMesh 3(Final).ai" (a strong progression)</pre>
<p>[src/gdevdsha.c 1.10, doc/Use.htm 1.114, src/gsptype2.c 1.14, src/gsptype2.h 1.9, src/gsshade.c 1.10, src/gsshade.h 1.8, src/gxfill.c 1.119, src/gxshade6.c 1.80, src/gxstroke.c 1.12, src/lib.mak 1.195]</p>
</blockquote>

<p><strong><a name="2004-09-13_0713"></a>
2004-09-13 07:13 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Improve the error reporting about a dangling resource map record.

DETAILS :

When a resource map record pointed to an undefined resource,
it printed "undefinedresource in GetSize". With this inprovement
it prints the substituted resource name instead GetSize.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/gs_cidfm.ps 1.6]</p>
</blockquote>

<p><strong><a name="2004-09-12_1912"></a>
2004-09-12 19:12 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 82.

DETAILS :

The preceeding patch was incorrect in the point (1)
"constant_color_quadrangle painted a triangle when the quadrangle is degenerate.".
There exist cases when quadrangle degenerates to a triangle, and
the patched code skipped it. This putch fixes that.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.79]</p>
</blockquote>

<p><strong><a name="2004-09-09_2101"></a>
2004-09-09 21:01 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Type 3 charproc must inherit flattnes from the text context.

DETAILS :

Bug 687582 "Flatness in a Type 3 font".
The feature has been tested with Adobe CPSI.

EXPECTED DIFFERENCES :

"012-09.ps"
"013-09.ps"
"014-09.ps"
"015-09.ps"
"020-01.ps"
"027-05.ps"
"032-07.ps"
"045-01.ps"
"083-09.ps"
"093-01.ps"
"103-01.ps"
"118-01.ps"
"136-01.ps"
"165-01.ps"
"192-01.ps"
"205-09.ps"
"231-01.ps"
"233-01.ps"
"238-01.ps"
"251-01.ps"
"281-01.ps"
"289-01.ps"
"298-09.ps"
"308-04.ps"
"311-03.ps"
"321-09.ps"
"409-01.ps"
"a.pdf"
"Altona.Page_3.2002-09-27.pdf"
"Altona_Technical_1v1_x3.pdf"
"Bug687207.ps"
"Type3stringwidth.ps"</pre>
<p>[src/gxpaint.c 1.5, src/lib.mak 1.194]</p>
</blockquote>

<p><strong><a name="2004-09-09_2052"></a>
2004-09-09 20:52 Ray Johnston</strong></p>
<blockquote>
<pre>
Fixes for security problems not fixed in previous commit and fixes for
other problems identified by SaGS in bug report -- detecting recursion,
allowing r/w strings in procedures (but not in PermitFile arrays).
Bug 687559.</pre>
<p>[lib/gs_lev2.ps 1.35]</p>
</blockquote>

<p><strong><a name="2004-09-09_1747"></a>
2004-09-09 17:47 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 81.

DETAILS :

1. constant_color_quadrangle painted a triangle when the quadrangle is degenerate.
2. rangecheck happened if the path lies entirely within an Extend area of an axial shading.
3. Due to a poor precision of t0, t1, Extend areas were painted when they have a zero width.
Bug 687646  &lt;pdfwrite : A strange shading in "Clarke Tate Manns Chinese.ai" &gt;.

EXPECTED DIFFERENCES :

"442-01.ps"
"chilis_black.pdf"
"chilis_red.pdf"
"Clarke Tate Manns Chinese.ai"</pre>
<p>[src/gxshade1.c 1.32, src/gxshade6.c 1.78]</p>
</blockquote>

<p><strong><a name="2004-09-09_1244"></a>
2004-09-09 12:44 Igor Melichev</strong></p>
<blockquote>
<pre>
fuzzy.c : Improving the return codes.

DETAILS:

Return 2 on "out of window",
return 1 with a difference within the window,
return 0 otherwize (files equal).</pre>
<p>[toolbin/tests/fuzzy.c 1.16]</p>
</blockquote>

<p><strong><a name="2004-09-09_1133"></a>
2004-09-09 11:33 Igor Melichev</strong></p>
<blockquote>
<pre>
(pdfwrite) : Implementing a dynamic recongnition for Type 3 charproc variations (continued 7).

DETAILS :

A flag to be reset when going to the next character.
Bug 687660 "incorrect font rendering/missing glyphs from ps2pdf"

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdte.c 1.61]</p>
</blockquote>

<p><strong><a name="2004-09-09_1124"></a>
2004-09-09 11:24 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (Type 1 hinter) : A further improvement of the glyph rendering quality, step 2.

DETAILS :

Switch on the new code in gxhintn.h, gxhintn.c .
See the preceeding log message about the configuration flags :
http://www.ghostscript.com/pipermail/gs-cvs/2004-September/004792.html .
Fixes bugs
687578 "T1 hinter disturbs stem width"
687579 "Type 1 hinter disturbs glyph height"
687588  "A CJK TT rendering worse"

EXPECTED DIFFERENCES :

A massive glyph rendering difference :
about 50% of files at 72dpi, and about 95% of files at 300dpi.</pre>
<p>[src/gxhintn.h 1.22]</p>
</blockquote>

<p><strong><a name="2004-09-08_1013"></a>
2004-09-08 10:13 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (Type 1 hinter) : A further improvement of the glyph rendering quality, step 1.

DETAILS :

This change is algorithmically equivalent,
because new code is disabled wirth configuration switches
listed below.

1. FINE_STEM_COMPLEXES
   1.1. Stem complex could miss a common boundary.
   1.2. Stem width could be distorsed due to a common boundary missing
        (Bug 687578 "T1 hinter disturbs stem width".).
   1.3. Overall hint (if presents) should have a bigger priority.
2. ALIGN_BY_STEM_MIDDLE
   2.1. A stem middle could be shifted too much due to
        independent grid-fitting of boundaries and the change 1.2 -
        see 'i' in ccc-.pdf attached to Bug 687578.
        Fixed with an improved alignment with t1_hinter__align_stem_to_grid.
   2.2. This isn't applicable for top|bottom zones from the TT stem recognizer,
        because we want to force outer boundaries to keep the glyph height.
   2.3. 033-52-5873.pdf defines "pseodo-stem" hints,
        which have only one boundary corresponding to real poles.
        recognize them with t1_hinter__mark_existing_stems,
        and don't apply the improved alignment,
        because those stems designate outer glyph boundaries,
        which we want to force the uniform glyph height.
        Apparently fixes Bug 687579 "Type 1 hinter disturbs glyph height".
3. OPPOSITE_STEM_COORD_BUG_FIX
   Aligning a stem width, the resolutions by X and Y were exchenged.
4. TT_AUTOHINT_TOPZONE_BUG_FIX
   topzone and botzone were mixed when come from the TT stem recognizer.

Also improved general comments in gxhintn.c .

EXPECTED DIFFERENCES :

None (the new code disabled).</pre>
<p>[src/gxhintn.c 1.51, src/gxhintn.h 1.21]</p>
</blockquote>

<p><strong><a name="2004-09-08_0936"></a>
2004-09-08 09:36 Igor Melichev</strong></p>
<blockquote>
<pre>
fuzzy.c : Improving the report message.

DETAILS:

Print report message if any difference found.
Before now it was printed only if out of window.
Return error code only if out of window,
as it was before.</pre>
<p>[toolbin/tests/fuzzy.c 1.15]</p>
</blockquote>

<p><strong><a name="2004-09-08_0700"></a>
2004-09-08 07:00 Ralph Giles</strong></p>
<blockquote>
<pre>
Translate the name of the gs executable stored in the utility scripts at
install-time on unix. Closes bug 686863.

DETAILS:

The autoconf build supports a --with-gs=&lt;name&gt; option for setting the
name of the Ghostscript executable, which is stored in the makefiles as
'&#36;(GS)', but scripts such at ps2pdf that expect to make invoke
Ghostscript made no use of this variable, causing version skew at best,
complete failure of that popular utility at worst. We therefore now
rewrite the hard-coded name each time we install the utility scripts.</pre>
<p>[src/unixinst.mak 1.35]</p>
</blockquote>

<p><strong><a name="2004-09-08_0628"></a>
2004-09-08 06:28 Ralph Giles</strong></p>
<blockquote>
<pre>
Propagate autotools build system changes from the GS_8_1X branch. Use
the proper macro for the 'rm' function, and a more specific test for
locating the local libpng library source.</pre>
<p>[src/Makefile.in 1.38, src/configure.ac 1.48]</p>
</blockquote>

<p><strong><a name="2004-09-06_2123"></a>
2004-09-06 21:23 Ray Johnston</strong></p>
<blockquote>
<pre>
Change regression test flags to use new JOBSERVER flag. Older flags are
retained to allow older regression testing to still use this module.</pre>
<p>[toolbin/tests/gstestgs.py 1.23]</p>
</blockquote>

<p><strong><a name="2004-09-06_0726"></a>
2004-09-06 07:26 Ray Johnston</strong></p>
<blockquote>
<pre>
Add some job server related support. The -dJOBSERVER option defines the
^D to start a new encapsulated job, and the ^D is changed to be a self-
delimitting token in the scanner. Fixes 687079.

DETAILS:

For backward compatibility, -dNOOUTERSAVE is retained, but this does
*NOT* define the ^D to start a new encapsulated job. As specified in the
updates to doc/Use.htm, in order to avoid an /invalidrestore error,
the input should be from stdin otherwise the restore done as part of the
new job encapsulation (restore returns to the server state) will encounter
a file object that was created after the encapsulation save.

This allows 289-01.ps to complete IFF the -dJOBSERVER option is used
during regression testing. Thus the only (eventual) regression change
will be:

289-01.ps</pre>
<p>[doc/Use.htm 1.113, lib/gs_init.ps 1.111, lib/gs_lev2.ps 1.34, src/scantab.c 1.5]</p>
</blockquote>

<p><strong><a name="2004-09-03_2023"></a>
2004-09-03 20:23 Ray Johnston</strong></p>
<blockquote>
<pre>
Add missing memory argument in 'I' interp debug printing. Also remove
local prototype for debug_print_ref in favor of using idebug.h. Fixes
SEGV when using -ZI or (I) true .setdebug.</pre>
<p>[src/int.mak 1.129, src/interp.c 1.20]</p>
</blockquote>

<p><strong><a name="2004-09-02_2149"></a>
2004-09-02 21:49 Ralph Giles</strong></p>
<blockquote>
<pre>
Use the MTIME define from the stat module rather than a numerical index
to specify the modification time in python. Propagates a similar change
from gscheck_raster.py.</pre>
<p>[toolbin/tests/gscheck_pdfwrite.py 1.21]</p>
</blockquote>

<p><strong><a name="2004-09-02_2130"></a>
2004-09-02 21:30 Ralph Giles</strong></p>
<blockquote>
<pre>
Propagate memory pointer gs_malloc() changes to the optional lj3100sw
device. Patch from Harald Koenig. Closes bug 687636.</pre>
<p>[src/gdevl31s.c 1.5]</p>
</blockquote>

<p><strong><a name="2004-09-02_0826"></a>
2004-09-02 08:26 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Unwind an unintentional change to setup_image_compression.

DETAILS :

I guess that gdevpsdi.c revision 1.30 was unintentionally modified with the patch
http://www.ghostscript.com/pipermail/gs-cvs/2004-August/004681.html

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpsdi.c 1.31]</p>
</blockquote>

<p><strong><a name="2004-08-31_2207"></a>
2004-08-31 22:07 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687640 Unable to set default halftones for PDF.

DETAILS:

To support both PS level 1 and PS level 2 interpreting modes,
Ghostscript defines two routines for setting a default halftone.
PS level 1 does not support resources.  Thus for PS 1 we have
.setdefaultscreen which sets a default halftone which is defined
inside of gs_init.ps.  For PS 2, we have .setdefaulthalftone
which is similar to .setdefaultscreen except that it also checks
for a default halftone resource.

The PDF interpreter's handler for the /HT gstate parameter
called .setdefaultscreen if the parameter value was /Default.
This fix changes the handler to use .setdefaulthalftone instead.
This results in the PDF interpreter using the default halftone
resource if it is present.</pre>
<p>[lib/pdf_draw.ps 1.84]</p>
</blockquote>

<p><strong><a name="2004-08-31_2036"></a>
2004-08-31 20:36 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix ResourceForAll Category procedure to make sure that the path given
by GenericResourceDir systemparam is included in the enumeration.
Bug 687641.</pre>
<p>[lib/gs_res.ps 1.37]</p>
</blockquote>

<p><strong><a name="2004-08-31_2005"></a>
2004-08-31 20:05 Ralph Giles</strong></p>
<blockquote>
<pre>
Bump version after the 8.31 beta release.</pre>
<p>[doc/News.htm 1.151, lib/gs_init.ps 1.110, src/gscdef.c 1.46, src/version.mak 1.73]</p>
</blockquote>

<p><strong><a name="2004-08-31_1923"></a>
2004-08-31 19:23 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Trap C stack overflow exception on Borland C and MSVC. Without the
trap the application silently terminates when C stack overflows.
Fix bug 687461

[DETAILS]
Watcom C 1.2 doesn't need the trap. It is also the only compiler tested
that converts trailing recursion to iteration. GCC 3.2 on Windows still
generates programs that fail silently but I don't know how to fix this.
GCC 2.95 on Linux reports the stack overflow.</pre>
<p>[src/dwmain.c 1.20, src/dwmainc.c 1.23, src/windows_.h 1.7, src/winint.mak 1.22]</p>
</blockquote>

<p><strong><a name="2004-08-31_1349"></a>
2004-08-31 13:49 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Arcs were imprecise (continued).

DETAILS :

A previous patch had a minor portability defect :
PRECISE_CURRENTPOINT was used before defined.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxmatrix.h 1.10]</p>
</blockquote>

<p><strong><a name="2004-08-31_1323"></a>
2004-08-31 13:23 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Arcs were imprecise.

DETAILS :

Bug 687584 "An extra element painting a circle.".

The problem happened due to the PRECISE_CURRENTPOINT patch
http://www.ghostscript.com/pipermail/gs-cvs/2004-March/004333.html
appears incomplete : arcs were not improved.
This patch fixes that.

1. Applied gs_point_transform2fixed_rounding in arc_add
to be consistent with the precise current point.

2. Renamed float2fixed_rounding with float2fixed_rounded
and made it global.

3. Moved the definition of PRECISE_CURRENTPOINT
to the appropriate scope.

We leave many places in code, in which
the unrounded transform is still applied,
but those places do not deal with the current point.

EXPECTED DIFFERENCES :

Massive difference with acrs :

normal, 72 dpi :
"012-01.ps"
"012-05.ps"
"012-09.ps"
"012-13.ps"
"013-01.ps"
"013-05.ps"
"013-09.ps"
"013-13.ps"
"014-01.ps"
"014-05.ps"
"014-09.ps"
"014-13.ps"
"015-01.ps"
"015-05.ps"
"015-09.ps"
"027-05.ps"
"031-01.ps"
"032-01.ps"
"032-07.ps"
"034-01.ps"
"034-10.ps"
"035-07.ps"
"103-01.ps"
"123-01.ps"
"123-05.ps"
"123-09.ps"
"148-16.ps"
"149-05.ps"
"150-01.ps"
"154-01.ps"
"158-01.ps"
"192-01.ps"
"237-01.ps"
"244-01.ps"
"289-01.ps"
"298-09.ps"
"308-04.ps"
"311-03.ps"
"321-09.ps"
"Bug687207.ps"
"vasarely.ps"

normal 300 dpi :

"213-01.ps"
"214-01.ps"
"244-01.ps"
"245-07.ps"
"245-13.ps"
"245-17.ps"
"258-01.ps"
"270-01.ps"
"289-01.ps"
"014-01.ps"
"014-01.ps"
"014-13.ps"
"012-01.ps"
"012-05.ps"
"012-09.ps"
"012-13.ps"
"013-01.ps"
"013-05.ps"
"013-09.ps"
"013-13.ps"
"014-01.ps"
"014-05.ps"
"014-09.ps"
"014-13.ps"
"015-01.ps"
"015-05.ps"
"015-09.ps"
"027-05.ps"
"031-01.ps"
"032-01.ps"
"034-01.ps"
"034-10.ps"
"035-07.ps"
"103-01.ps"
"123-01.ps"
"123-05.ps"
"123-09.ps"
"148-16.ps"
"149-05.ps"
"150-01.ps"
"154-01.ps"
"158-01.ps"
"192-01.ps"
"237-01.ps"
"244-01.ps"
"298-09.ps"
"308-04.ps"
"311-03.ps"
"321-09.ps"
"Bug687207.ps"
"vasarely.ps"

pdfwrite, 72 dpi :

"012-01.ps"
"012-13.ps"
"013-01.ps"
"013-05.ps"
"013-09.ps"
"013-13.ps"
"014-01.ps"
"014-05.ps"
"014-13.ps"
"015-01.ps"
"015-05.ps"
"032-01.ps"
"034-10.ps"
"123-01.ps"
"123-05.ps"
"192-01.ps"
"298-09.ps"
"321-09.ps"
"vasarely.ps"

pdfwrite 300 dpi :

"012-01.ps"
"012-05.ps"
"012-09.ps"
"012-13.ps"
"013-01.ps"
"013-05.ps"
"013-09.ps"
"013-13.ps"
"014-01.ps"
"014-05.ps"
"014-09.ps"
"014-13.ps"
"015-01.ps"
"015-05.ps"
"015-09.ps"
"027-05.ps"
"032-01.ps"
"032-07.ps"
"034-01.ps"
"034-10.ps"
"109-01.ps"
"123-01.ps"
"123-05.ps"
"123-09.ps"
"192-01.ps"
"220-01.ps"
"237-01.ps"
"245-17.ps"
"251-01.ps"
"255-01.ps"
"258-01.ps"
"269-01.ps"
"270-01.ps"
"298-09.ps"
"308-04.ps"
"321-09.ps"
"442-01.ps"
"446-01.ps"
"Bug687207.ps"
"vasarely.ps"</pre>
<p>[src/gsmatrix.c 1.8, src/gspath.c 1.10, src/gspath1.c 1.10, src/gxfixed.h 1.9, src/gxmatrix.h 1.9, src/gxstate.h 1.11]</p>
</blockquote>

<p><strong><a name="2004-08-31_0907"></a>
2004-08-31 09:07 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing Visual Trace for 'stroke'.

DETAILS :

It is necessary for analyzing the Bug 687584,
and it is useful in general.

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Use.htm 1.112, src/gxfill.c 1.118, src/gxstroke.c 1.11, src/lib.mak 1.193, src/vdtrace.h 1.13]</p>
</blockquote>

<p><strong><a name="2004-08-30_2145"></a>
2004-08-30 21:45 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687607   Text missing with TextALphaBits=2 and tiffsep device.

DETAILS:

The TextAlphaBits and GraphicsAlphaBits device parameters were not working
for devices with a depth of more than 32 bits.  The fix involves replacing
the copy_alpha device procs in the 40, 48, 56, and 64 bit memory devices
with the gx_default_copy_alpha routine.  These devices previously had a
copy_alpha routine which did nothing.  This was a mistake from when these
devices were created as part of the DeviceN work.</pre>
<p>[src/gdevm40.c 1.2, src/gdevm48.c 1.2, src/gdevm56.c 1.3, src/gdevm64.c 1.3]</p>
</blockquote>

<p><strong><a name="2004-08-30_1645"></a>
2004-08-30 16:45 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for security problems with user parameters, in particular the
/PermitFileReading array. Also corrects handling of parameter arrays
that contain a 'mark'. Fixes bug 687559. Thanks to mat. Gh. Savulescu
(SaGS) for the bug report and for a suggested patch.</pre>
<p>[lib/gs_lev2.ps 1.33]</p>
</blockquote>

<hr>

<h2><a name="Version8.31"></a>Version 8.31 (2004-08-28)</h2>

<p>
This is a beta release of the development tree. It contains a number 
of new features and is made available for those interested in testing
the new version before it becomes the next stable release.

<p>
This second beta contains a large number of bug fixes over the earlier 
8.30 version.

<p> 
New features since the last stable release:

<ul>
<li><p>
Topological grid fitting,
an original method developed for Ghostscript by Dr. Igor V. Melichev, improves 
the rendering of True Type fonts at small resolutions.
See the documentation for <a href="Language.htm#GridFitTT">GridFitTT</a> for information on this
feature.

<li><p>
The PDF writer now implements PDF 1.4 encryption.
See the <a href="Ps2pdf.htm#Encryption">encryption parameter</a> documentation for more
information.

<li><p>
A new rendering method for shadings, developed for Ghostscript by 
Dr. Igor V. Melichev, improves the quality and performance of 
rasterization on continuous tone devices.
The new method allows hardware or software acceleration with help of
customizable routines for filling areas with a linearly varying color.
functions.

<li><p>
This version contains the first release of Rinkj, an
experimental new driver for some inkjet printers using ETS screening.
See the <a href="Devices.htm#Rinkj">Rinkj</a> section for more information.

<li><p>
We now support PDF 1.5 files, including the new compression
and encryption modes.

<li><p>
We have beta support for JPEG 2000 compressed images, using the JasPer
compression library. This is only enabled as part of the default build
in the autoconf (POSIX) build system in this release.

</ul>

<p>
The following <a href="http://bugs.ghostscript.com/">bug</a> numbers were open at
the time of release:
<blockquote>
405501,
430175,
446344,
456692,
458780,
463688,
465936,
487953,
493348,
526099,
526491,
530011,
535366,
535932,
578865,
592160,
603934,
610478,
614298,
626295,
634036,
645316,
674418,
677324,
685335,
686747,
686750,
686816,
686819,
686824,
686841,
686842,
686843,
686853,
686863,
686865,
686867,
686902,
686919,
686980,
686996,
687011,
687012,
687013,
687039,
687063,
687079,
687084,
687086,
687095,
687102,
687105,
687108,
687110,
687122,
687125,
687146,
687157,
687168,
687174,
687179,
687193,
687196,
687203,
687219,
687221,
687229,
687231,
687243,
687251,
687257,
687259,
687271,
687275,
687280,
687295,
687297,
687298,
687303,
687314,
687316,
687324,
687327,
687341,
687342,
687345,
687346,
687360,
687373,
687375,
687394,
687397,
687399,
687401,
687403,
687410,
687414,
687421,
687434,
687435,
687445,
687459,
687460,
687461,
687467,
687468,
687473,
687474,
687475,
687479,
687480,
687484,
687485,
687490,
687492,
687497,
687498,
687501,
687512,
687514,
687516,
687518,
687520,
687523,
687524,
687525,
687528,
687529,
687531,
687535,
687536,
687537,
687539,
687541,
687542,
687545,
687547,
687551,
687552,
687554,
687555,
687558,
687559,
687560,
687561,
687571,
687574,
687575,
687577,
687578,
687579,
687581,
687582,
687583,
687584,
687585,
687586,
687588,
687589,
687590,
687592,
687593,
687595,
687600,
687601,
687607,
687608,
687610,
687611,
687612,
687614,
687615,
687616,
687617,
687621,
687622,
687625,
687627,
687628,
687630,
687631,
687632,
687633,
687634.
</blockquote>

<h3><a name="8.31_Incompatible_changes"></a>Incompatible changes</h3>

<p>
No known incompatible changes at the time of release.

<h3><a name="8.31_changelog"></a>Changelog</h3>

<!-- generated from the output of cvs2cl -->

<p><strong><a name="2004-08-28_2210"></a>
2004-08-28 22:10 Ralph Giles</strong></p>
<blockquote>
<pre>
Update the version and date on the VMS help file.</pre>
<p>[doc/gs-vms.hlp 1.29]</p>
</blockquote>

<p><strong><a name="2004-08-28_2152"></a>
2004-08-28 21:52 Ralph Giles</strong></p>
<blockquote>
<pre>
Update release date on documentation.</pre>
<p>[doc/API.htm 1.44, doc/Bug-form.htm 1.41, doc/Bug-info.htm 1.40, doc/C-style.htm 1.47, doc/Commprod.htm 1.32, doc/Copying.htm 1.31, doc/DLL.htm 1.35, doc/Deprecated.htm 1.12, doc/Details8.htm 1.9, doc/Develop.htm 1.138, doc/Devices.htm 1.81, doc/Drivers.htm 1.48, doc/Fonts.htm 1.42, doc/Helpers.htm 1.35, doc/History1.htm 1.31, doc/History2.htm 1.31, doc/History3.htm 1.31, doc/History4.htm 1.31, doc/History5.htm 1.33, doc/History6.htm 1.48, doc/History7.htm 1.36, doc/History8.htm 1.13, doc/Htmstyle.htm 1.36, doc/Install.htm 1.46, doc/Issues.htm 1.41, doc/Language.htm 1.87, doc/Lib.htm 1.34, doc/Maintain.htm 1.42, doc/Make.htm 1.79, doc/New-user.htm 1.51, doc/Projects.htm 1.58, doc/Ps-style.htm 1.29, doc/Ps2epsi.htm 1.33, doc/Ps2pdf.htm 1.70, doc/Psfiles.htm 1.53, doc/Readme.htm 1.56, doc/Release.htm 1.86, doc/Source.htm 1.31, doc/Tester.htm 1.31, doc/Testing.htm 1.26, doc/Unix-lpr.htm 1.31, doc/Use.htm 1.111, doc/Xfonts.htm 1.31, man/dvipdf.1 1.29, man/font2c.1 1.29, man/gs.1 1.30, man/gslp.1 1.29, man/gsnd.1 1.29, man/pdf2dsc.1 1.28, man/pdf2ps.1 1.30, man/pdfopt.1 1.28, man/pf2afm.1 1.29, man/pfbtopfa.1 1.30, man/printafm.1 1.29, man/ps2ascii.1 1.28, man/ps2epsi.1 1.27, man/ps2pdf.1 1.34, man/ps2pdfwr.1 1.33, man/ps2ps.1 1.36, man/wftopfa.1 1.29]</p>
</blockquote>

<p><strong><a name="2004-08-28_2147"></a>
2004-08-28 21:47 Ralph Giles</strong></p>
<blockquote>
<pre>
Change the product name to BETA RELEASE</pre>
<p>[src/gscdef.c 1.45]</p>
</blockquote>

<p><strong><a name="2004-08-28_2147"></a>
2004-08-28 21:47 Ralph Giles</strong></p>
<blockquote>
<pre>
Add recent new files to the listings in the documentation.</pre>
<p>[doc/Develop.htm 1.137, doc/Psfiles.htm 1.52]</p>
</blockquote>

<p><strong><a name="2004-08-28_2128"></a>
2004-08-28 21:28 Ralph Giles</strong></p>
<blockquote>
<pre>
Update release notes and open bug list for the 8.31 beta release. Bump
the release date as well.</pre>
<p>[doc/News.htm 1.150, src/version.mak 1.72]</p>
</blockquote>

<p><strong><a name="2004-08-26_0913"></a>
2004-08-26 09:13 Russell Lang</strong></p>
<blockquote>
<pre>
Fix half-toning for display device, bug 687629.

DETAILS:
Prior to DeviceN, dither_gray/max_gray were used if ncomp==1.
With DeviceN, dither_gray/max_gray are used if gray_index &gt;= 0.
The display device was not correctly setting gray_index for
native 1-bit/pixel format.</pre>
<p>[src/gdevdsp.c 1.27]</p>
</blockquote>

<p><strong><a name="2004-08-26_0015"></a>
2004-08-26 00:15 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for image matrix having negative values.  Thanks to Len Sorenson
for submitting this patch (author unknown).  Bug #687411.

DETAILS:

The error is using floor to round a value without checking if it might
be negative first. There were actually two places that did this even
though the patch that was originally submitted only was for one of them.</pre>
<p>[src/gximag3x.c 1.19]</p>
</blockquote>

<p><strong><a name="2004-08-26_0004"></a>
2004-08-26 00:04 Ray Johnston</strong></p>
<blockquote>
<pre>
Close the font file after the font has been processed (loaded into VM).
This prevents a problem with using up too many file handles detected on
Solaris. Thanks to Alex Cherepanov for the patch. Bug #687066.

DETAILS:

The patch has no effect on the cache. There is no point of not closing
the file after the content has been copied to memory.

On GNU/Linux GS has 250K VMThreshold and 1024 handles. That's enough.
On Windows GS has 1M VNThreshold and 512 handles. This is still OK.
On Solaris GS has 1M VMThreshold and 256 handles. Handles can be used up
before garbage collection starts. The following program fails on Solaris.

(a)(w) file closefile
1000 { (a)(r) file pop } repeat

Dependence on VMThreshold indicates that GC is not activated by
open(2) failing with EMFILE . This is a real bug, the patch is
just a work around that we may need to fix later, but not likely to
be a problem.</pre>
<p>[lib/gs_type1.ps 1.15]</p>
</blockquote>

<p><strong><a name="2004-08-25_2352"></a>
2004-08-25 23:52 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix to close streams at EOF (not only filter streams), as required by
the PLRM. Thanks to Alex Cherepanov for this patch. Bug #687505.

DETAILS:

This is similar to a patch that I had developed and tested prior to
Alex's patch. I had tested my patch, then Alex's against the regression
suite and determined that it does not cause any differences.

Alex's patch conforms to my analysis of the problem and the fix.</pre>
<p>[src/stream.c 1.23]</p>
</blockquote>

<p><strong><a name="2004-08-25_1556"></a>
2004-08-25 15:56 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Bind all operators in DefaultGray, DefaultRGB, DefaultCMYK color spaces.
Partial fix for the bug 687608</pre>
<p>[Resource/ColorSpace/DefaultCMYK 1.3, Resource/ColorSpace/DefaultGray 1.3, Resource/ColorSpace/DefaultRGB 1.3]</p>
</blockquote>

<p><strong><a name="2004-08-24_1751"></a>
2004-08-24 17:51 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A page compression type change could cause a crash.

DETAILS :

Bug 687626 "A crash in pdfwrite".
It crashed after the compression is changed from none to Flate
with setdevparams inside a page.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.98, src/gdevpdfu.c 1.58, src/gdevpdfx.h 1.100]</p>
</blockquote>

<p><strong><a name="2004-08-24_1536"></a>
2004-08-24 15:36 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : gs_lib_ctx was wrongly accessed while looking up a dictionary stack extension.

DETAILS :

Bug 687623  A crash in the interp.c

EXPECTED DIFFERENCES :

Fixes crash with re-distilled files :
251-01.ps
Bug687044.ps
Bug687489.ps
test-setweightvector.ps,
tpc2.ps</pre>
<p>[src/idstack.c 1.7]</p>
</blockquote>

<p><strong><a name="2004-08-24_1536"></a>
2004-08-24 15:36 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : gs_lib_ctx was not accessible while clist_playback_band.

DETAILS :

Bug 687624 "A crash in gp_check_interrupts".

EXPECTED DIFFERENCES :

Fixes crash with re-distilled files :
Svd.pdf
test.pdf</pre>
<p>[src/gxclread.c 1.12]</p>
</blockquote>

<p><strong><a name="2004-08-24_1252"></a>
2004-08-24 12:52 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT interpreter) : Provide a tolerance to an inconsistent cvt length.

DETAILS :

Bug 687604 "/invalidfont in --show-- error".

We analyzed UFST and Free Type 2.
UFST has same problem.
FreeType 2 provides a tolerance, which we port now.
Note that now we don't port a tolerance for other CVT commands.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/ttinterp.c 1.14]</p>
</blockquote>

<p><strong><a name="2004-08-24_1058"></a>
2004-08-24 10:58 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT interpreter) : A minor portability problem.

DETAILS :

A preprocessor statement didn't start in the first column.
Occasionally discovered readin the code.
Some time ago it was claimed as non-portable.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/ttload.c 1.6]</p>
</blockquote>

<p><strong><a name="2004-08-24_0910"></a>
2004-08-24 09:10 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Makefiles missed a dependency.

DETAILS :

After rebuilding the last revision got a crash due to gp_mspol.c
was not recompiled. Found out that gslibctx_h was
wrongly defined in lib.mak .
Also changed the including of stdio.h in gslibctx.h to
a C library file (IMO it should be so).

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gslibctx.h 1.4, src/lib.mak 1.192]</p>
</blockquote>

<p><strong><a name="2004-08-23_0957"></a>
2004-08-23 09:57 Russell Lang</strong></p>
<blockquote>
<pre>
Allow the display device row alignment to be changed from the
default 4 bytes to 8, 16, 32 or 64 bytes.

DETAILS:
If the image is allocated in video display memory, an alignment
such as 16 bytes (128-bit memory) may be required.
This is implemented by making the underlying memory device
use a larger width than the display device.</pre>
<p>[src/gdevdsp.c 1.26, src/gdevdsp.h 1.10]</p>
</blockquote>

<p><strong><a name="2004-08-19_2152"></a>
2004-08-19 21:52 Russell Lang</strong></p>
<blockquote>
<pre>
Changed iapi to use a void* instead of a gs_main_instance pointer.</pre>
<p>[src/dmmain.c 1.4, src/dpmain.c 1.12, src/dwmainc.c 1.22, src/dxmain.c 1.14, src/dxmainc.c 1.10]</p>
</blockquote>

<p><strong><a name="2004-08-19_1933"></a>
2004-08-19 19:33 stefan</strong></p>
<blockquote>
<pre>
Changed iapi to use a void* instead of a gs_main_instance pointer.
Cleaned up warning related to function pointer signature miss-matches.

DETAILS:

iapi.h no longer defines a type for gs_main_instance *
This will likely need to be put back in for backward compatibility.

The iapi interface now uses a void * instance handle reflecting
that it is an opaque type to the outside world.

Note that function pointer argument miss-matches generate warnings in
msvc but not in gcc.  These have been fixed.</pre>
<p>[src/dwmain.c 1.19, src/gdevpdtw.c 1.29, src/gdevpsf.h 1.27, src/gdevpsfm.c 1.15, src/gsalloc.c 1.22, src/gsccode.h 1.14, src/gscpixel.c 1.13, src/gscpixel.h 1.7, src/gscspace.c 1.18, src/gsdevice.c 1.23, src/gslibctx.c 1.4, src/gslibctx.h 1.3, src/gxccman.c 1.28, src/gxfcache.h 1.27, src/iapi.c 1.12, src/iapi.h 1.13, src/idict.c 1.12, src/ilocate.c 1.11, src/iutil.c 1.11, src/iutil.h 1.8, src/sdctc.c 1.6, src/zchar32.c 1.5, src/zcssepr.c 1.16, src/zfont.c 1.12, src/zpacked.c 1.7]</p>
</blockquote>

<p><strong><a name="2004-08-19_1050"></a>
2004-08-19 10:50 Russell Lang</strong></p>
<blockquote>
<pre>
Add a PPD for PostScript to be used by ghostscript ps2pdf.</pre>
<p>[doc/Develop.htm 1.136, doc/Ps2pdf.htm 1.69, lib/ghostpdf.inf 1.1, lib/ghostpdf.ppd 1.1]</p>
</blockquote>

<p><strong><a name="2004-08-19_0738"></a>
2004-08-19 07:38 Russell Lang</strong></p>
<blockquote>
<pre>
Enable progressive updates for the image window of
the MS-Windows ghostscript command line program.
Change update method to use a Windows timer.

DETAILS:
In the MS-Windows GUI executable (i.e. text window managed by
ghostscript rather than using a system console window), the image
window is progressively updated every second or so as each page
is drawn.  The console executable did not do this.

The update code for both GUI and console executables is changed to
use a timer.  The display update code is called whenever particular
device drawing operations happen, and if a timer is not already
running, it starts an update timer.  The minimum update interval
is shortened from 1s to 100ms. The time to refresh the window is
measured, and the update interval may be increased to make sure
that updates account for no more than 10% of processing.
The update interval is decreased if subsequent updates are
much quicker.  The timer is stopped by any sync.</pre>
<p>[src/dwimg.c 1.13, src/dwimg.h 1.10, src/dwmainc.c 1.21]</p>
</blockquote>

<p><strong><a name="2004-08-18_2225"></a>
2004-08-18 22:25 stefan</strong></p>
<blockquote>
<pre>
Fixed dependancies for gslibctx.h</pre>
<p>[src/int.mak 1.128, src/lib.mak 1.191]</p>
</blockquote>

<p><strong><a name="2004-08-18_2224"></a>
2004-08-18 22:24 stefan</strong></p>
<blockquote>
<pre>
Removed redundant include.</pre>
<p>[src/gsmalloc.c 1.13]</p>
</blockquote>

<p><strong><a name="2004-08-18_2044"></a>
2004-08-18 20:44 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Check for glyph name conflicts while font merging.

DETAILS :

Bug 687597  pdf created by pdfwrite has garbled text (spr 3994)

1. When a document embeds 2 fonts with same name, same hinting
and same glyph names but different charstrings, the old code
didn't compare charstrings and erroneusely merged fonts.

2. pdf_obtain_font_resource_encoded didn't compare the hinting
because same_type1_hinting computed a too strong condition
(this change is not strongly neccessary for the bug).

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtt.c 1.87, src/gxfcopy.c 1.45]</p>
</blockquote>

<p><strong><a name="2004-08-18_1440"></a>
2004-08-18 14:40 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Wrong glyph positions with CIDFontType2 with no vmtx.

DETAILS :

Bug 687603  vertical text misplaced after distilling .

1. When computing the glyph position, must account that we write
DW2[0 0] when there is no vmtx.

2. Computing a DW2, the advance got a wrong sign.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtt.c 1.86]</p>
</blockquote>

<p><strong><a name="2004-08-18_0448"></a>
2004-08-18 04:48 Dan Coby</strong></p>
<blockquote>
<pre>
Implementation of 687496 transparency and CMYK support.

DETAILS:

This change extends our current implementation of the PDF 1.4
transparency to include blending in a DeviceCMYK color space.
There is also a partial implementation of a DeviceGray blending
space.  However I do not have a method of generating test data
for a DeviceGray blending space.  Currently the choice of a
blending color space is based upon the process color model of
the output device.

Note:  There two differences expected in the regression testing.
These are with ai2.pdf and dina3_watermark.pdf.</pre>
<p>[src/gdevp14.c 1.26, src/gxblend.c 1.6, src/lib.mak 1.190]</p>
</blockquote>

<p><strong><a name="2004-08-17_2021"></a>
2004-08-17 20:21 Ray Johnston</strong></p>
<blockquote>
<pre>
Add PDFSTEP debug aid. Prints a step number at end of PDFDEBUG line, and
sync's the display, then reads a number of steps to skip (&lt;cr&gt; == single
step). This is rudimentary but somewhat useful. Invoked with -dPDFSTEP.</pre>
<p>[lib/pdf_base.ps 1.44]</p>
</blockquote>

<p><strong><a name="2004-08-17_1956"></a>
2004-08-17 19:56 Ralph Giles</strong></p>
<blockquote>
<pre>
Bump the version number after the last beta release.</pre>
<p>[lib/gs_init.ps 1.109, src/gscdef.c 1.44, src/version.mak 1.71]</p>
</blockquote>

<p><strong><a name="2004-08-17_1939"></a>
2004-08-17 19:39 Ralph Giles</strong></p>
<blockquote>
<pre>
Remove references to the FreeType license. Artifex Software, Inc. has
purchased rights to the FreeType 1 code and the work included here is
relicensed under the same terms as with the rest of the Ghostscript code.</pre>
<p>[LICENSE 1.4, doc/FTL.txt 1.3]</p>
</blockquote>

<p><strong><a name="2004-08-17_1859"></a>
2004-08-17 18:59 Ray Johnston</strong></p>
<blockquote>
<pre>
Add support for PDF single stepping debug aid (PDFSTEP). Actual interpreter
changes made separately.</pre>
<p>[lib/gs_init.ps 1.108]</p>
</blockquote>

<p><strong><a name="2004-08-17_1753"></a>
2004-08-17 17:53 Ray Johnston</strong></p>
<blockquote>
<pre>
Handle invalid PDF's that use 0.0 font scaling (Tf operator). Fixes bug
687606 for customer number 780.

DETAILS:

If the font scale is 0.0, then just use a very small value. This may result
in a small unwanted dot, but that is probably not an issue since it is
an invalid value. The better approach for 'invisible' text is to use
TextRenderingMode 3. The 'pdfformaterror' function is used to complain
about this so the problem might get fixed by the PDF Creator.</pre>
<p>[lib/pdf_ops.ps 1.34]</p>
</blockquote>

<p><strong><a name="2004-08-14_0206"></a>
2004-08-14 02:06 Russell Lang</strong></p>
<blockquote>
<pre>
Correct the previous MSVC 8 updates to allow compilation with debugging.</pre>
<p>[src/msvc32.mak 1.62, src/msvccmd.mak 1.21]</p>
</blockquote>

<p><strong><a name="2004-08-13_1259"></a>
2004-08-13 12:59 stefan</strong></p>
<blockquote>
<pre>
Added missing parameter types to prototype.</pre>
<p>[src/gpcheck.h 1.9]</p>
</blockquote>

<p><strong><a name="2004-08-13_0457"></a>
2004-08-13 04:57 Russell Lang</strong></p>
<blockquote>
<pre>
Detect the version of Microsoft Visual C++ from the version of nmake.</pre>
<p>[doc/Make.htm 1.78, src/msvc32.mak 1.61]</p>
</blockquote>

<p><strong><a name="2004-08-13_0016"></a>
2004-08-13 00:16 Russell Lang</strong></p>
<blockquote>
<pre>
Add support for compiling with the beta of Microsoft Visual
Studio 2005, also known as MSVC 8.

DETAILS:
Add new MSVC_MINOR_VERSION=1 to distinguish Microsoft Visual
Studio .NET 2003 (MSVC 7.1) from Microsoft Visual Studio .NET
(MSVC 7.0)
Add new MSVC_VERSION=8 for Microsoft Visual Studio 2005
Ignore deprecated warnings from MSVC 8 with /wd4996, because
insecure CRTL functions like strcpy and sprintf are now
marked as deprecated.
Remove /Ze which is always the default and is unknown to MSVC 8.
Replace /O with /O2.  The former is not documented for MSVC 5 - 8
and is unknown to MSVC 8.
Remove /Gs and /Ge for MSVC 8.  Stack checking is now always done.</pre>
<p>[doc/Make.htm 1.77, src/msvc32.mak 1.60, src/msvccmd.mak 1.20]</p>
</blockquote>

<p><strong><a name="2004-08-11_1433"></a>
2004-08-11 14:33 stefan</strong></p>
<blockquote>
<pre>
Added memory pointers to gsmalloc use by jpg2000 interface.

DETAILS:

Added jpx_memory to the stream state since the memory pointer
in a normal stream object in often NULL indicating a stack object.</pre>
<p>[src/sjpx.c 1.10, src/sjpx.h 1.3, src/zfjpx.c 1.2]</p>
</blockquote>

<p><strong><a name="2004-08-11_1336"></a>
2004-08-11 13:36 Ray Johnston</strong></p>
<blockquote>
<pre>
When scaling factors of /ImageMatrix in a image mask for ImageType3 are
negative, translation offset values for image mask rendering are
incorrect and it makes abnormal output (eg. white lines).
This patch fixes this bug #686843. Thanks to Len Sorensen for the analysis.</pre>
<p>[src/gximag3x.c 1.18]</p>
</blockquote>

<p><strong><a name="2004-08-11_1333"></a>
2004-08-11 13:33 Ray Johnston</strong></p>
<blockquote>
<pre>
When scaling factors of /ImageMatrix in a image mask for ImageType3 are
negative, translation offset values for image mask rendering are
incorrect and it makes abnormal output (eg. white lines).
This patch fixes this bug #686843. Thanks to Len Sorensen for the analysis.</pre>
<p>[src/gximage3.c 1.14]</p>
</blockquote>

<p><strong><a name="2004-08-11_1258"></a>
2004-08-11 12:58 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix bug 687038 that resulted in a crash if the initial device was not
pdfwrite.

DETAILS:

This was almost fixed by recent changes to gs_pdfwr.ps and
gs_setpd.ps for bugs 687325, 687436 and 687458.

Unfourtunately, the initialization of parameters only occurred
if the initial device was pdfwrite. A second patch removing
the initial device constraint on the '1010' .schedule_init
process was committed and fixes the problem.

Note that there was a work-around that if -dPDFSETTINGS=... was
given on the command line, it also worked.

EXPECTED DIFFERENCES:

none, since we don't test for this usage.</pre>
<p>[lib/gs_pdfwr.ps 1.39]</p>
</blockquote>

<p><strong><a name="2004-08-10_1302"></a>
2004-08-10 13:02 stefan</strong></p>
<blockquote>
<pre>
Added memory_t pointers to gs_malloc() gs_free() calls in
devices that aren't normally built.</pre>
<p>[src/gdev3b1.c 1.5, src/gdevadmp.c 1.6, src/gdevccr.c 1.5, src/gdevcif.c 1.6, src/gdevcp50.c 1.6, src/gdevcslw.c 1.5, src/gdevhl7x.c 1.10, src/gdevimgn.c 1.7, src/gdevlp8k.c 1.5, src/gdevlxm.c 1.5, src/gdevmgr.c 1.6, src/gdevn533.c 1.6, src/gdevo182.c 1.6, src/gdevokii.c 1.7, src/gdevos2p.c 1.8, src/gdevp14.c 1.25, src/gdevphex.c 1.7, src/gdevpsdi.c 1.30, src/gdevsgi.c 1.6, src/gdevsj48.c 1.5, src/gdevsppr.c 1.8, src/gdevsunr.c 1.7, src/gdevwddb.c 1.7, src/gdevwprn.c 1.10, src/gp_macio.c 1.34]</p>
</blockquote>

<p><strong><a name="2004-08-10_1259"></a>
2004-08-10 12:59 stefan</strong></p>
<blockquote>
<pre>
fixed bug with iapi, removed gs_lib_finit()'s call of gs_malloc_release.

DETAILS:

The problem is that single instance and multi instance interfaces
both call gs_to_exit() with different meanings.

If gs_lib_init0 was called then it should malloc_release
single instance exit library means free all.

If the iapi interface was used then the memory
should not be freed since gs_lib_finit() and gs_to_exit()
are called when the interpreter is exited but there is a
seperate delete_instance call that should free the memory</pre>
<p>[src/gsinit.c 1.7]</p>
</blockquote>

<p><strong><a name="2004-08-09_1702"></a>
2004-08-09 17:02 stefan</strong></p>
<blockquote>
<pre>
Fixed uninitialized fstdio2 pointer.</pre>
<p>[src/gslibctx.c 1.3]</p>
</blockquote>

<p><strong><a name="2004-08-05_2017"></a>
2004-08-05 20:17 stefan</strong></p>
<blockquote>
<pre>
Fixed incorrect function pointer prototype,
const gs_memory_t *  argument was missing.</pre>
<p>[src/gxfcache.h 1.26, src/gxfcopy.c 1.44]</p>
</blockquote>

<p><strong><a name="2004-08-05_2015"></a>
2004-08-05 20:15 stefan</strong></p>
<blockquote>
<pre>
Valid memory pointer used create a tile_clip device instead of NULL.

Details :

This needs to be leak checked.</pre>
<p>[src/gxp1fill.c 1.6]</p>
</blockquote>

<p><strong><a name="2004-08-05_1702"></a>
2004-08-05 17:02 stefan</strong></p>
<blockquote>
<pre>
Windows only:
check_interrupts() with a mem pointer to access the poll function.

DETAILS :

This is windows specific since only windows uses the polling
function in check_interrupts() macros.  If the gs_dll interface
is used then a single instance is forced since the design of that
interface forces one thread per process.  The iapi interface can not
but enabled for more than one thread until the stream calling check_interrupts()
calls are fixed.

process_interrupts(NULL) calls are currently hacked to access a global memory
pointer intended for access to stderr.  This is a place holder until the
stream object changed that guarantee a valid memory pointer in process_stream
calls are committed.  Basically it is common to allocate a stream object on the
stack and use it in a functional manor with an uninitialized memory pointer in the
object.</pre>
<p>[src/gdevdbit.c 1.11, src/gdevddrw.c 1.25, src/gdevwpr2.c 1.18, src/gdevwprn.c 1.9, src/gp_macpoll.c 1.2, src/gp_mslib.c 1.6, src/gp_mspol.c 1.5, src/gp_mswin.c 1.24, src/gxclrast.c 1.30, src/gxclread.c 1.11, src/gxclutil.c 1.11, src/gxdtfill.h 1.27, src/sfxfd.c 1.10, src/sfxstdio.c 1.9]</p>
</blockquote>

<p><strong><a name="2004-08-04_2340"></a>
2004-08-04 23:40 stefan</strong></p>
<blockquote>
<pre>
fixed typo in last commit.</pre>
<p>[src/gpcheck.h 1.8]</p>
</blockquote>

<p><strong><a name="2004-08-04_2333"></a>
2004-08-04 23:33 stefan</strong></p>
<blockquote>
<pre>
gs_memory_t pointer additions for msvc build.

DETAILS :

Mostly gs_malloc() and gs_free() additions of a gs_memory_t argument.

Not gsdll.c forces a single instance.</pre>
<p>[src/gdev4081.c 1.6, src/gdev4693.c 1.9, src/gdev8510.c 1.7, src/gdevdm24.c 1.8, src/gdevdsp.c 1.25, src/gdevescp.c 1.7, src/gdevmswn.c 1.11, src/gdevmsxf.c 1.8, src/gdevpjet.c 1.7, src/gdevwpr2.c 1.17, src/gp_mspol.c 1.4, src/gpcheck.h 1.7, src/gsargs.c 1.9, src/gsdll.c 1.12, src/gsmisc.c 1.18, src/gxccache.c 1.32, src/gxclutil.c 1.10, src/imain.h 1.9, src/interp.c 1.19, src/main.h 1.7, src/msvc32.mak 1.59, src/sfxstdio.c 1.8]</p>
</blockquote>

<p><strong><a name="2004-08-04_1936"></a>
2004-08-04 19:36 stefan</strong></p>
<blockquote>
<pre>
Addition of a Library Context to start the process of removing globals.

DETAILS :

The goals is to remove globals from the system, this includes static
globals that would hinder multiple threads from running at once.

gs_lib_ctx is intended to be used as the opaque "handle" object
that a client would use to associate with a thread running through
the library.  Independent of a gs or a language switch build, this
needs a new iapi2.h that allows the use of better job control from the
client side.

gs_lib_ctx is stashed under the gs_memory_t object and all memory objects
used by a thread refer to the same gs_lib_ctx.  This storage location was
choosen as a convenence since a memory_t pointer is common throughout the
system.  Most of the turmoil is adding memory_t pointers to functions that
used global variables but didn't have a memory pointer.

FILE stdin, stdout, stderr are one per process by default.
stdin and stdout may be changed but stderr may not.
FILE stderr is one per process and shouldn't be changed.
Note the stderr_fn is also one per process, changing this function pointer
will not help as most users of stderr printing do not have a thread handle.
Changing to a thread local storage mechanism can solve this.

gs_id's  are currently per thread with each thread starting over at  1.
This can be moved to per process with mutexes if so desired.

A library context has a pointer to the top_of_system the intent is that this
a void handle avaliable to make top of the system calls without knowing the
data type.  In a postscript only  build this would be gs_main_instance but
in a language switched build this would be an object above that main_universe.

Other members of gs_lib_ctx_t are nothing more than global objects relocated
to this "bag".  gs_name_table, dict_autoexpand  are examples of this.  There
are a few more globals that will be moved.

At the moment iapi is still constrained to one thread, since some of the
globals haven't been removed yet.

The display device's callback function setting is supported for now
but this interface should be changed to a sDEVICE style call.

gs_memory_t is the base type the abstract type gs_raw_memory_t is gone,
this means that all memory types must derive from gs_memory_t.
In addition to a pointer to the gs_lib_ctx there is a pointer to a
non_gc_memory this will always point to a non garbage collected memory,
it maybe the current object or an object below the current gargabe
collected memory space.  This can be used were the previous code
used the global gs_malloc_memory.  gs_malloc() now takes a memory pointer,
it finds the non-gc memory from a valid memory pointer and allocates from it.

The gdevbit device has an improved algorthym for converting from cmyk to rgb,
this is never used by postscript but for pcl rops it puts the k plane into rgb.</pre>
<p>[src/bfont.h 1.10, src/devs.mak 1.117, src/dstack.h 1.6, src/files.h 1.10, src/gdevbj10.c 1.9, src/gdevcdj.c 1.15, src/gdevdcrd.c 1.6, src/gdevepsc.c 1.11, src/gdevepsn.c 1.9, src/gdevijs.c 1.9, src/gdevp14.c 1.24, src/gdevpdfb.c 1.23, src/gdevpdfc.c 1.48, src/gdevpdfg.c 1.58, src/gdevpdfg.h 1.33, src/gdevpdfi.c 1.56, src/gdevpdfk.c 1.8, src/gdevpdfv.c 1.36, src/gdevpdti.c 1.36, src/gdevplnx.c 1.10, src/gdevprn.c 1.18, src/gdevprna.c 1.6, src/gdevpsdi.c 1.29, src/gdevpxat.h 1.6, src/gdevpxen.h 1.6, src/gdevstc.c 1.10, src/gdevupd.c 1.16, src/gdevvec.c 1.23, src/gdevxcmp.c 1.9, src/gdevxxf.c 1.9, src/gp_mac.c 1.16, src/gs.c 1.12, src/gs_dll_call.h 1.1, src/gsalloc.c 1.21, src/gsalloc.h 1.7, src/gsalphac.c 1.7, src/gsccode.h 1.13, src/gscdevn.c 1.21, src/gscolor.c 1.14, src/gscolor1.c 1.11, src/gscolor3.c 1.8, src/gscparam.c 1.10, src/gscpixel.c 1.12, src/gscpixel.h 1.6, src/gscrd.c 1.6, src/gscrd.h 1.7, src/gscscie.c 1.12, src/gscsepr.c 1.27, src/gscspace.c 1.17, src/gscspace.h 1.14, src/gsdevice.c 1.22, src/gsequivc.c 1.5, src/gsexit.h 1.10, src/gsfcid2.c 1.6, src/gsfcmap.c 1.24, src/gsfcmap1.c 1.7, src/gsfont.c 1.33, src/gsht.c 1.22, src/gsht1.c 1.15, src/gshtx.c 1.6, src/gsimage.c 1.12, src/gsinit.c 1.6, src/gsio.h 1.8, src/gsiodevs.c 1.6, src/gsistate.c 1.10, src/gslib.c 1.14, src/gslib.h 1.6, src/gslibctx.c 1.2, src/gslibctx.h 1.2, src/gsmalloc.c 1.12, src/gsmalloc.h 1.6, src/gsmemlok.c 1.6, src/gsmemory.c 1.9, src/gsmemory.h 1.8, src/gsmemraw.h 1.8, src/gsmemret.c 1.5, src/gsmisc.c 1.17, src/gsovrc.c 1.6, src/gspcolor.c 1.14, src/gsptype1.c 1.19, src/gsstate.c 1.24, src/gsstruct.h 1.18, src/gsstype.h 1.6, src/gsutil.c 1.10, src/gsutil.h 1.8, src/gxacpath.c 1.10, src/gxalloc.h 1.11, src/gxccache.c 1.31, src/gxccman.c 1.27, src/gxcht.c 1.13, src/gxclbits.c 1.9, src/gxclrast.c 1.29, src/gxclread.c 1.10, src/gxclrect.c 1.7, src/gxcpath.c 1.12, src/gxcspace.h 1.13, src/gxdevcli.h 1.34, src/gxdevice.h 1.19, src/gxdhtserial.c 1.5, src/gxfcmap.h 1.16, src/gxfcopy.c 1.43, src/gxht.c 1.16, src/gxht.h 1.9, src/gximag3x.c 1.17, src/gximage.c 1.7, src/gxpcmap.c 1.13, src/gxttfb.c 1.34, src/gzht.h 1.13, src/ialloc.c 1.7, src/ialloc.h 1.6, src/iapi.c 1.11, src/ibnum.c 1.8, src/ibnum.h 1.8, src/ichar.h 1.7, src/icharout.h 1.9, src/icid.h 1.8, src/icie.h 1.7, src/icstate.h 1.13, src/idebug.c 1.9, src/idebug.h 1.6, src/idict.c 1.11, src/idict.h 1.6, src/idparam.c 1.9, src/idparam.h 1.7, src/idstack.c 1.6, src/ifapi.h 1.19, src/ifont.h 1.14, src/ifont1.h 1.7, src/ifont42.h 1.9, src/igc.c 1.13, src/igc.h 1.8, src/igcref.c 1.6, src/iimage.h 1.7, src/iinit.c 1.10, src/ilocate.c 1.10, src/imain.c 1.39, src/imainarg.c 1.32, src/iminst.h 1.8, src/iname.h 1.5, src/interp.c 1.18, src/iparam.c 1.10, src/iplugin.c 1.5, src/iplugin.h 1.5, src/isave.c 1.11, src/isave.h 1.7, src/iscan.c 1.18, src/iscanbin.c 1.14, src/iutil.c 1.10, src/iutil.h 1.7, src/lib.mak 1.189, src/sdctc.c 1.5, src/std.h 1.12, src/szlibc.c 1.6, src/ttload.c 1.5, src/zarray.c 1.5, src/zbfont.c 1.27, src/zchar.c 1.14, src/zchar1.c 1.36, src/zcharout.c 1.12, src/zcharx.c 1.7, src/zcid.c 1.9, src/zcie.c 1.12, src/zcolor.c 1.19, src/zcontext.c 1.11, src/zcontrol.c 1.11, src/zcrd.c 1.8, src/zcsdevn.c 1.12, src/zcsindex.c 1.7, src/zcspixel.c 1.5, src/zcssepr.c 1.15, src/zdevice.c 1.9, src/zdevice2.c 1.9, src/zdict.c 1.6, src/zdps.c 1.8, src/zdps1.c 1.7, src/zfapi.c 1.52, src/zfcid0.c 1.22, src/zfcid1.c 1.19, src/zfcmap.c 1.15, src/zfile.c 1.41, src/zfileio.c 1.17, src/zfont.c 1.11, src/zfont0.c 1.7, src/zfont1.c 1.12, src/zfont2.c 1.7, src/zfont32.c 1.5, src/zfont42.c 1.20, src/zfontenum.c 1.4, src/zfrsd.c 1.10, src/zfunc.c 1.14, src/zfunc3.c 1.7, src/zfunc4.c 1.12, src/zgeneric.c 1.8, src/zgstate.c 1.10, src/zht2.c 1.12, src/zht2.h 1.3, src/zicc.c 1.7, src/zimage.c 1.14, src/zimage3.c 1.7, src/ziodevs.c 1.9, src/ziodevsc.c 1.7, src/zmatrix.c 1.8, src/zmedia2.c 1.16, src/zmisc.c 1.7, src/zmisc2.c 1.7, src/zmisc3.c 1.6, src/zpacked.c 1.6, src/zpcolor.c 1.15, src/zrelbit.c 1.6, src/zshade.c 1.15, src/zstring.c 1.6, src/ztoken.c 1.14, src/ztrans.c 1.22, src/ztype.c 1.8, src/zupath.c 1.10, src/zusparam.c 1.13, src/zvmem.c 1.8]</p>
</blockquote>

<p><strong><a name="2004-08-04_0100"></a>
2004-08-04 01:00 Ralph Giles</strong></p>
<blockquote>
<pre>
add a .cvsignore list for generated files</pre>
<p>[contrib/pscolor/.cvsignore 1.1]</p>
</blockquote>

<p><strong><a name="2004-08-04_0055"></a>
2004-08-04 00:55 Ralph Giles</strong></p>
<blockquote>
<pre>
Add variable declaration for the path to the ghostscript executable to
the unix wrapper scripts. This simplifies changing the invocation name.
Partial fix for bug 686863.</pre>
<p>[lib/bdftops 1.5, lib/dumphint 1.2, lib/dvipdf 1.5, lib/eps2eps 1.6, lib/font2c 1.4, lib/gsbj 1.4, lib/gsdj 1.4, lib/gsdj500 1.4, lib/gslj 1.4, lib/gslp 1.4, lib/gsnd 1.4, lib/pdf2dsc 1.6, lib/pdf2ps 1.7, lib/pdfopt 1.7, lib/pf2afm 1.5, lib/pfbtopfa 1.6, lib/pphs 1.4, lib/ps2ascii 1.7, lib/ps2epsi 1.10, lib/ps2pdfwr 1.10, lib/ps2ps 1.7, lib/pv.sh 1.4, lib/unix-lpr.sh 1.5, lib/wftopfa 1.4]</p>
</blockquote>

<p><strong><a name="2004-08-02_0333"></a>
2004-08-02 03:33 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : .OrigFont was not provided when an embeded font is defined.

DETAILS :

Bug 687598 "Courier CE font problems".
The test case embeds a font with an instandard FontMatrix [ 0.00039 0 0 0.00039 0 0 ].
For passing it to pdfwrite, the procedure .completefont adds the
/.OrigFont key to the font dictionary. However the key was added after
.buildfont1 is called, and the device did not recieve the information at the time.
This patch moves the .OrigFont setting ahead to the .buildfont* call.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/gs_fonts.ps 1.47]</p>
</blockquote>

<p><strong><a name="2004-07-30_2132"></a>
2004-07-30 21:32 Dan Coby</strong></p>
<blockquote>
<pre>
More work upon 687551 Implement the remaining TN 5044 procedures.
This commit implements the setcmykoverprint procedure.

DETAILS:

We received a posting against 687551.  This posting indicated that some
files in arXiv.org were failing with the current version of Ghostscript
but worked with older versions.  The files were all created by a package
called Canvas by Deneba Systems.  They failed because setcmykoverprint
was not defined.

Evidently the people at Deneba Systems did not read the following comment
from page 15 of TN 5044:

"Note The setcmykoverprint operator has not been adopted by the industry.
It remains on the list of color convention operators because it has some
perceived usefulness, but it is not supported by any shipping host-based
separation applications today."

The even stranger detail is that the Deneba Systems people have a
dummy version of this procedure that does not implement overprinting.
Thus if they do not need overprinting, they have no need to use this
procedure.

The files also fail with Distiller 6.0, Illustrator CS, and Photoshop 6.0.
However this change allows these files to work with current Ghostscript.

The change consists of putting in a dummy version of the setcmykoverprint
procedure.  This version does not actually implement overprinting.</pre>
<p>[lib/gs_lev2.ps 1.32]</p>
</blockquote>

<p><strong><a name="2004-07-29_1919"></a>
2004-07-29 19:19 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : True Type font loader : numLoca run out the PS string size limit.

DETAILS :

Bug 687599 "/rangecheck in --string--".
This patch increases the maximal 'loca' size to 64528 bytes,
which is enough for the customer's file.
A further improvement would be to allow more 'loca' segments
(currently arbitrary restricted with 2 for a minor code simplification).

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/gs_ttf.ps 1.39]</p>
</blockquote>

<p><strong><a name="2004-07-29_1746"></a>
2004-07-29 17:46 Igor Melichev</strong></p>
<blockquote>
<pre>
1. Fix (PS interpreter) : The FontBBox validation check was too strong.
2. Fix (pdfwrite) : Explicitely set line parameters in a charproc.

DETAILS :

Bug 687594 "Barcode Width".
See comments in the new code.

This solution is a partial one.
With the current architecture of the Postscript interpreter,
a device can't recognize whether a PS charproc sets line parameters or not.
Therefore we copy to PDF the values, which appear at a first use
within a charproc. The old code copied only values, which differ from defaults.
The new behavior appears closer to Adobe Distiller.

A complete solution should copy the PS behavior to PDF,
i.e. the PDF charproc should set those and only those parameters,
which are set by the PS charproc. For doing that we need flags in the graphic state structure
per each graphic state parameter, reset all them before running a charproc,
and set whenever a parameter is changed. Without the flag, when the charproc sets
a value equal to the old one (which was inherited from the context of
the glyph usage), the event of setting is lost and causes a line width and other problems.
We don't want such a deep change now, and go with the partial solution,
because the partial solution appears enough for customer's needs.
Likely Adobe Distiller have same architectural problem, and resolves it in same manner.

EXPECTED DIFFERENCES :

pdfwrite, 72dpi :
012-09.ps
013-09.ps
014-09.ps
015-09.ps
083-09.ps
123-09.ps
205-09.ps
250-01.ps
296-01.ps
298-09.ps
321-09.ps

pdfwrite 300dpi :

012-09.ps
013-09.ps
014-09.ps
015-09.ps
027-05.ps
032-07.ps
034-10.ps
083-09.ps
093-01.ps
123-09.ps
169-09.ps
205-09.ps
212-01.ps
213-01.ps
214-01.ps
222-09.ps
238-01.ps
250-01.ps
296-01.ps
298-09.ps
307-07.ps
321-09.ps</pre>
<p>[src/gdevpdtt.c 1.85, src/gslparam.h 1.5, src/zchar.c 1.13]</p>
</blockquote>

<p><strong><a name="2004-07-28_1946"></a>
2004-07-28 19:46 Ralph Giles</strong></p>
<blockquote>
<pre>
test commit; verifying the cvs announcement list is working.</pre>
<p>[src/Makefile.in 1.37]</p>
</blockquote>

<p><strong><a name="2004-07-28_1009"></a>
2004-07-28 10:09 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : gs_function_is_monotonic computed an unused auxiliary result (continued 4).

DETAILS :

FunctionType 3 did not account stitches with reversed interval boundaries : lower &gt; upper.
Also added a tolerance to a small noise.
687573 Error: /rangecheck in --.shfill--

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gsfunc3.c 1.22]</p>
</blockquote>

<p><strong><a name="2004-07-26_2333"></a>
2004-07-26 23:33 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687572 AFPL Ghostscript 8.14 fails with some PDF files.

DETAILS:

The given file uses the scn operator inside of a form.  The scn
operator is used for defining a color with DeviceN color spaces.
The scn operator uses .pdfcount (inside of scresolve) to determine
the number of parameters.  However inside a form, there is an extra
dictionary on the stack.

The fix consists of adjusting pdfemptycount (which is used by .pdfcount)
to match the stack depth while executing a form.  After the form is
executed, pdfemptycount is returned to its previous value.</pre>
<p>[lib/pdf_draw.ps 1.83]</p>
</blockquote>

<p><strong><a name="2004-07-26_2321"></a>
2004-07-26 23:21 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687591 Overprint Preview is not documented.  This change adds
documentaion for how Ghostscript handles overprinting and spot colors
to Use.htm.</pre>
<p>[doc/Use.htm 1.110]</p>
</blockquote>

<p><strong><a name="2004-07-24_0812"></a>
2004-07-24 08:12 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 39 : Implementing embedded TrueType fonts (continued).

DETAILS :

This fixes the problem with True Type encoding :
account 'post' when 'cmap' can't give a character mapping.
Debugged wit 159.pdf , the character /registered.

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps,
148-01.ps, 245-01.ps, 415-01.ps, 477-03.ps,
0.pdf, 000040cf.000_60.pdf acrobat.pdf, bulletin.pdf, test.pdf, PT.ps,
UnusualFontMatrix.ps, 159.pdf .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.34]</p>
</blockquote>

<p><strong><a name="2004-07-23_1911"></a>
2004-07-23 19:11 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 39 : Implementing embedded TrueType fonts.

DETAILS :

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps,
148-01.ps, 245-01.ps, 415-01.ps, 477-03.ps,
0.pdf, 000040cf.000_60.pdf acrobat.pdf, bulletin.pdf, test.pdf, PT.ps,
UnusualFontMatrix.ps, 159.pdf .

Embedded fonts work, but there exist an encoding problem with 159.pdf .
The PS reader must have AdobeGlyphList and MacRomanEncoding.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.33]</p>
</blockquote>

<p><strong><a name="2004-07-22_1735"></a>
2004-07-22 17:35 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 38 : Implementing embedded Type 1 fonts.

DETAILS :

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps,
148-01.ps, 245-01.ps, 415-01.ps, 477-03.ps,
0.pdf, 000040cf.000_60.pdf acrobat.pdf, bulletin.pdf, test.pdf, PT.ps,
UnusualFontMatrix.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.32]</p>
</blockquote>

<p><strong><a name="2004-07-22_1304"></a>
2004-07-22 13:04 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 38 : Write font data after the font descriptor.

DETAILS :

opdfread.ps will use this constraint to provide
a proper context for interpreting font data.
Rather we need this constraint with ps2write only,
we always implement it to simplify the code.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtb.c 1.27, src/gdevpdtb.h 1.10, src/gdevpdtd.c 1.16]</p>
</blockquote>

<p><strong><a name="2004-07-22_1108"></a>
2004-07-22 11:08 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 37 : Don't convert Type 1 into CFF when generating ps2write output.

DETAILS :

1. Applied the Type 1 font writer.
2. Rather Type1C is a PDF 1.2 feature, we can't write it into a ps2write output.
   We use the OrderResources parameter to decide about (not)converting Type 1
   into Type1C (i.e. into CFF), because we want to write some PDF1.2 objects
   into a ps2write output (for example - function objects,
   because we don't want to convert them in C code).
3. The parameter OrderResources isn't a good switch for deciding about CFF
   due to the parameter name, but currently we don't want to define one more parameter.
   Maybe will improve it later.
4. Fixed a bug, which wrote "/Length1 -1" with Type1C.
5. CONVERT_CFF_TO_TYPE1 is reserved for further development.
6. Fixed Cygwin/gcc warnings in gdevpdfg.c .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfg.c 1.57, src/gdevpdfx.h 1.99, src/gdevpdtb.c 1.26]</p>
</blockquote>

<p><strong><a name="2004-07-22_0756"></a>
2004-07-22 07:56 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 36 : Switching on the new code DELAYED_STREAMS, PS2WRITE.

DETAILS :

See log messages of previous patches.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevvec.h 1.15]</p>
</blockquote>

<p><strong><a name="2004-07-20_0708"></a>
2004-07-20 07:08 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix to make sure that device deactivation is invoked before final close
of the device when exit. Bug #687557.

DETAILS:

It is not known whether or not this ever worked, but this change does
make sure that the .uninstalldevice gets invoked before the final
closedevice on exit.

EXPECTED DIFFERENCES.

None detected with regression suite.</pre>
<p>[src/imain.c 1.38]</p>
</blockquote>

<p><strong><a name="2004-07-17_1844"></a>
2004-07-17 18:44 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix so that compiled fonts have the dictionary permissions set correctly.
Bug 687444 for customer #531.

DETAILS:

Previously the 'dict_attrs' parameter was ignored. I compared the attrs
of the compiled font to a font loaded from a PFB file using:

%! -------------------------------------------------------------------------
% Procedure to check attributes of all elements of a dictionary
% used to check Font dict contents.

/dumpattrs {    % object dumpattrs -
  dup { rcheck } stopped { pop (?) } { { (r) } { (-) } ifelse } ifelse print
  dup { wcheck } stopped { pop (?) } { { (w) } { (-) } ifelse } ifelse print
  dup { xcheck } stopped { pop (?) } { { (x) } { (-) } ifelse } ifelse print
  (    ) print type = flush
} bind def

/chkattrs {     % dict chkattrs -       and lots of formatted output
  (Dictionary:     ) print dup dumpattrs
  { exch
    (    /                    ) dup dup 4 -1 roll
    20 string cvs
    5 exch putinterval print
    (    /                    ) 0 exch putinterval
    dumpattrs
  } forall
} bind def

/Helvetica findfont chkattrs
quit

%--------------------------------------------------------------------------</pre>
<p>[src/iccfont.c 1.9]</p>
</blockquote>

<p><strong><a name="2004-07-16_2214"></a>
2004-07-16 22:14 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Provide a delayed stream writing.

DETAILS :

The ps2write requires length of streams to be written before the stream.
This implements pdf_begin_data_stream with opening a stream object in a temporary file,
using a methgod similar to pdf_enter_substream.
With the new mechanizm the output file doesn't need to be positionable,
and the generated PDF appears more effective because the number of objects is smaller.

Also fixed a bug in gdevpdfu.c : crashed when encrypted with no page compression.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.97, src/gdevpdfu.c 1.57, src/gdevpdfx.h 1.98, src/gdevpdtb.c 1.25, src/gdevpdtf.c 1.37, src/gdevpdti.c 1.35, src/gdevpdtw.c 1.28, src/gdevpdtw.h 1.5]</p>
</blockquote>

<p><strong><a name="2004-07-15_1639"></a>
2004-07-15 16:39 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Discard the output file seekability requirement in the /PS pdfmark implementation.

DETAILS :

The ps2write requires length of streams to be written before the stream.
The implementation of /PS pdfmark wrote a length in a separate object after the stream.
Now /PS pdfmark is implemented with pdf_enter_substream,
which writes the length directly into the object dictionary.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfm.c 1.45]</p>
</blockquote>

<p><strong><a name="2004-07-15_1237"></a>
2004-07-15 12:37 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : text.operation was inconsistent after replacing TEXT_FROM_GLYPHS.

DETAILS :

Bug 687563 "segfault during pdfwrite".
text.operation became inconsistent after replacing
TEXT_FROM_*_GLYPH* with TEXT_FROM_STRING.
Declared a stronger constraint for process_text_modify_width,
and documented the trick with text indices in process_plain_text.

EXPECTED DIFFERENCES :

pdfwtite -r300 tpc2.ps</pre>
<p>[src/gdevpdtc.c 1.36, src/gdevpdte.c 1.60]</p>
</blockquote>

<p><strong><a name="2004-07-14_1821"></a>
2004-07-14 18:21 Ray Johnston</strong></p>
<blockquote>
<pre>
Sort the output in filename order to make comparison of daily db's easier.</pre>
<p>[toolbin/tests/dump_testdb 1.7]</p>
</blockquote>

<p><strong><a name="2004-07-14_1757"></a>
2004-07-14 17:57 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 35 : Fixing more problems with color spaces.

DETAILS :

The alternative space of [/Indexed [/Separation ...] ...] was not resolved.

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps,
148-01.ps, 245-01.ps, 415-01.ps, 473-01.ps, 477-03.ps,
0.pdf, 000040cf.000_60.pdf acrobat.pdf, bulletin.pdf, test.pdf, PT.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.31]</p>
</blockquote>

<p><strong><a name="2004-07-14_1757"></a>
2004-07-14 17:57 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Don't write DeviceN, DevicePixel colors with CompatibilityLevel&lt;=1.2 .

DETAILS :

PDF 1.2 doesn't define DeviceN, DevicePixel.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfc.c 1.47, src/gdevpdfg.c 1.56]</p>
</blockquote>

<p><strong><a name="2004-07-14_1559"></a>
2004-07-14 15:59 Ralph Giles</strong></p>
<blockquote>
<pre>
Include string_.h for missing prototypes of strlen() &amp;c. Bug 687541.</pre>
<p>[src/gscdevn.c 1.20, src/gsfcmap.c 1.23, src/gsht1.c 1.14, src/int.mak 1.127, src/lib.mak 1.188, src/zfile1.c 1.12]</p>
</blockquote>

<p><strong><a name="2004-07-14_1538"></a>
2004-07-14 15:38 Ralph Giles</strong></p>
<blockquote>
<pre>
Cast pointer type to avoid a warning. Bug 687541.</pre>
<p>[src/sjpx.c 1.9]</p>
</blockquote>

<p><strong><a name="2004-07-14_1534"></a>
2004-07-14 15:34 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct some types to unsigned to match the gp_file_name_combine() prototype.
Partial fix for bug 687541.</pre>
<p>[src/gp_unix_cache.c 1.3]</p>
</blockquote>

<p><strong><a name="2004-07-14_1424"></a>
2004-07-14 14:24 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix to pdfwrite initialization to make sure initial distiller params are
incorporated into the device. Also add collection of distillerparams when
building currentpagedevice. Fixes bugs 687325, 687436 and 687458.

DETAILS:

Earlier change to use .putdeviceparamsonly in gs_pdfwr.ps so that the
use of setdistillerparams does not reinitialize the device caused the
initial parameter settings to not be set in the device. The change to
gs_pdfwr.ps accomplishes this.

Part of the investigation by Igor Melichev discovered that the values of
disillerparams would not be correctly reflected in the pagedevice. The
change to gs_setpd.ps collects the currentdistillerparams when the device
is pdfwrite and merges new values into the pagedevice dictionary. The
method is similar to that used for the dynamicppkeys such as PageCount
that can be changed by the device. For the distillerparams, the values
are changed dynamically by setdistillerparams.

EXPECTED DIFFERENCES.

Rotation of several files is restored to the correct value given by
gs8.11:

541.pdf
mspro.pdf
new_rect_nr.pdf
pstopdf.pdf
xes2ps-problem.pdf</pre>
<p>[lib/gs_pdfwr.ps 1.38, lib/gs_setpd.ps 1.24]</p>
</blockquote>

<p><strong><a name="2004-07-13_1952"></a>
2004-07-13 19:52 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 34 : Applying filters to the page contents stream.

DETAILS :

Due to the device parameter problem in the PS interpreter,
the distilled PT.ps had a filtered contents stream in spite of we disabled filters.
Fixing it now to avoid the dependence on another project.

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps,
148-01.ps, 245-01.ps, 415-01.ps, 477-03.ps,
0.pdf, 000040cf.000_60.pdf acrobat.pdf, bulletin.pdf, test.pdf, PT.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.30]</p>
</blockquote>

<p><strong><a name="2004-07-13_1931"></a>
2004-07-13 19:31 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 33 : Fixing problems with color spaces in image XObjects.

DETAILS :

1. The Separation color space needs to resolve and substitute the alternative color space.
2. The Pattern color space needs to resolve and substitute the base color space.
3. Removed an obsolete temporary debug printing.

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps,
148-01.ps, 245-01.ps, 415-01.ps, 477-03.ps,
0.pdf, 000040cf.000_60.pdf acrobat.pdf, bulletin.pdf, test.pdf .

EXPECTED DIFFERENCES :

None.
`</pre>
<p>[lib/opdfread.ps 1.29]</p>
</blockquote>

<p><strong><a name="2004-07-13_1858"></a>
2004-07-13 18:58 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 32 : Fixing problems with color spaces in inline images.

DETAILS :

Inline images use local allocation mode for image data.

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps,
148-01.ps, 245-01.ps, 415-01.ps, 477-03.ps,
0.pdf, 000040cf.000_60.pdf acrobat.pdf .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.28]</p>
</blockquote>

<p><strong><a name="2004-07-13_1558"></a>
2004-07-13 15:58 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 31 : Implementing DecodeParms for filters.

DETAILS :

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps, 245-01.ps, 415-01.ps,
0.pdf, 000040cf.000_60.pdf acrobat.pdf .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.27]</p>
</blockquote>

<p><strong><a name="2004-07-13_1513"></a>
2004-07-13 15:13 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 30 : Continue the implementation of color spaces.

DETAILS :

1. Implemented Lab.
2. A pattern color space specification can contain an indirect reference.
3. Moved the StreamDumperBuffer definition to the proper place.

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps, 245-01.ps,
0.pdf, 000040cf.000_60.pdf acrobat.pdf .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.26]</p>
</blockquote>

<p><strong><a name="2004-07-13_1344"></a>
2004-07-13 13:44 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 29 : The inplementation of FunctionType 4 was wrong.

DETAILS :

The test case 245-01.ps .
Also implemented a debug printing of the uncompressed data steram.

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps, 0.pdf,
000040cf.000_60.pdf acrobat.pdf .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.25]</p>
</blockquote>

<p><strong><a name="2004-07-13_1238"></a>
2004-07-13 12:38 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Don't write shadings with CompatibilityLevel&lt;=1.2 .

DETAILS :

Bug 687567 "pdfwrite : Shadings are written with CompatibilityLevel=1.2" :
Shadings are not allowed in PDF 1.2 .
This patch simply forwards to the default implementation,
causing a shading to decompose into thousands of constant color areas.

Probably a convertion to an image would be a better solution -
delaying it for a while, because our current goal is to make
ps2write working somehow.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfd.c 1.41, src/gdevpdfg.c 1.55]</p>
</blockquote>

<p><strong><a name="2004-07-13_1202"></a>
2004-07-13 12:02 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Wrong /Matrix from /BP pdfmark (continued).

DETAILS :

Fixing a misprint in the patch
http://www.ghostscript.com/pipermail/gs-cvs/2004-May/004502.html
Thanks to SaGS for pointing it out.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfm.c 1.44]</p>
</blockquote>

<p><strong><a name="2004-07-13_1109"></a>
2004-07-13 11:09 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Dont create the alternative image compression if a loseless compression is only allowed.

DETAILS :

It is an optimization.
The problem was occasionally found when working on the bug 687325,
rather that bug is irrelevant. It created 2 alternative streams with same filters.
This change rejects the creation of the second stream in such cases.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfi.c 1.55, src/gdevpsdi.c 1.28]</p>
</blockquote>

<p><strong><a name="2004-07-10_0855"></a>
2004-07-10 08:55 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 28 : Fixing tab characters in the source code (continued).

DETAILS :

This change is syntactically equivalent.
Also removed an unuseful comment.
Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps, 0.pdf,
000040cf.000_60.pdf acrobat.pdf .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.24]</p>
</blockquote>

<p><strong><a name="2004-07-10_0804"></a>
2004-07-10 08:04 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 27 : Implemented FunctionType 4.

DETAILS :

245-01.ps contains one.
Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps, 0.pdf,
000040cf.000_60.pdf acrobat.pdf .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.23]</p>
</blockquote>

<p><strong><a name="2004-07-09_2054"></a>
2004-07-09 20:54 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 26 : Fixing tab characters in the source code.

DETAILS :

This change is syntactically equivalent.
Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps, 0.pdf,
000040cf.000_60.pdf acrobat.pdf .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.22]</p>
</blockquote>

<p><strong><a name="2004-07-09_2028"></a>
2004-07-09 20:28 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 25 : Fixing various problems in functions and color spaces.

DETAILS :

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps, 0.pdf,
000040cf.000_60.pdf acrobat.pdf .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.21]</p>
</blockquote>

<p><strong><a name="2004-07-09_1652"></a>
2004-07-09 16:52 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 24 : An initial implementation of functions.

DETAILS :

1-argument FunctionType 0 is converted to a Postscript procedure.
The Order is ignored. 3d order functions interpolate as 1st order.
Maybe we'll convert them in C in pdfwrite.
N-argument FunctionType 0 are coded but not tested yet.
Other function types are not coded.

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps, 0.pdf, 000040cf.000_60.pdf .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.20]</p>
</blockquote>

<p><strong><a name="2004-07-08_1715"></a>
2004-07-08 17:15 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 23 : Implementing Indexed and Separation (continued).

DETAILS :

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps, 0.pdf, 000040cf.000_60.pdf .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.19]</p>
</blockquote>

<p><strong><a name="2004-07-08_1528"></a>
2004-07-08 15:28 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 22 : Implementing Indexed and Separation.

DETAILS :

SubstitutePDFColorSpace factored out from ResolveColorSpace.
Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps, 0.pdf, 000040cf.000_60.pdf .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.18]</p>
</blockquote>

<p><strong><a name="2004-07-08_1400"></a>
2004-07-08 14:00 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 20 : Implementing CalGray, CalRGB.

DETAILS :

- implemented the color space cache PDFColorSpaces;
- improved the procedure 'error';
- a bug in Register : s|gt|ge;
- moved color procedures before image procedures;
- a bug in the CompleteOutlineImage comment.
- ResolveColorSpace now converts CalGray, CalRGB.

Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps 148-01.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.17]</p>
</blockquote>

<p><strong><a name="2004-07-08_1112"></a>
2004-07-08 11:12 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 20 : The implementations of Q,q,CharProc were incomplete.

DETAILS :

Minor change : collected work data definitions in a single place.
Tested with Bug687546.ps, 017-01.ps, 035-01.ps, 035-07.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.16]</p>
</blockquote>

<p><strong><a name="2004-07-08_1006"></a>
2004-07-08 10:06 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 17 : Implementing Patterns.

DETAILS :

Tested with Bug687546.ps, 035-01.ps, 035-07.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.15]</p>
</blockquote>

<p><strong><a name="2004-07-08_0803"></a>
2004-07-08 08:03 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 18 : Fix : Length was written to a wrong file position.

DETAILS :

Fixes a bug in the patch
http://www.ghostscript.com/pipermail/gs-cvs/2004-July/004607.html .
Thanks to Ray Johnston for pointing it out.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfm.c 1.43]</p>
</blockquote>

<p><strong><a name="2004-07-07_1519"></a>
2004-07-07 15:19 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 17 : Image XForm implementation.

DETAILS :

Tested with Bug687546.ps, 035-01.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.14]</p>
</blockquote>

<p><strong><a name="2004-07-07_1424"></a>
2004-07-07 14:24 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 16 : Inline image implementation.

DETAILS :

Tested with Bug687546.ps, TESTIMG.PS .
The interpretation completes, but some images render wrongly.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.13]</p>
</blockquote>

<p><strong><a name="2004-07-07_1142"></a>
2004-07-07 11:42 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 15 : Fix : ObjectRegistry expansion code was wrong.

DETAILS :

Tested with Bug687546.ps, 148-01.ps .
148-01.ps still fails due to unimplemented images.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.12]</p>
</blockquote>

<p><strong><a name="2004-07-07_1100"></a>
2004-07-07 11:00 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 14 : Fix : fonts may have no Encoding.

DETAILS :

Tested with Bug687546.ps, 148-01.ps .
148-01.ps still fails due to unimplemented images.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.11]</p>
</blockquote>

<p><strong><a name="2004-07-07_1040"></a>
2004-07-07 10:40 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 13 : Implementing Type 3 fonts.

DETAILS :

A minor restructurization of the code and a debug printout improvement.
Tested with Bug687546.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.10]</p>
</blockquote>

<p><strong><a name="2004-07-07_1019"></a>
2004-07-07 10:19 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 12 : Implementing Type 3 fonts.

DETAILS :

1. Implemented a delayed stream interpretation.
2. Implemented Type 3 fonts.
3. Renamed UnRefD with ResolveD.
4. Debug switches are bound.

Tested with Bug687546.ps - now it renders fine.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.9]</p>
</blockquote>

<p><strong><a name="2004-07-07_0933"></a>
2004-07-07 09:33 Russell Lang</strong></p>
<blockquote>
<pre>
Fixes bug 687451 "default resolution for display device"
Set the display resolution from the MS-Windows display resolution,
using a device parameter -dDisplayResolution=DPI.

DETAILS:
The initial resolution must be set in display_put_params.
Setting it in display_open is too late because this leaves
the device resolution and currentpagedevice reporting
different values.  Callbacks can't be used in display_put_params
because the callback structure is not yet initialized.
This leaves a device parameter on the command line as
the cleanest implementation.
If HWResolution is set (e.g. from -r72), then use that.
Otherwise, if DisplayResolution is set, use that in the
initial display_put_params.  After that, ignore all further
use of DisplayResolution.
The Windows client adds -dDisplayResolution=DPI to the
command lines, similar to the existing -dDisplayFormat.
The Windows client gets the resolution from the GDI.
The default Windows display resolution is 96dpi (the same
as the display device).  This can be changed to 120dpi by
selecting "large fonts", or other values in recent versions
of Windows.</pre>
<p>[doc/Devices.htm 1.80, src/dwmain.c 1.18, src/dwmainc.c 1.20, src/gdevdsp.c 1.24, src/gdevdsp.h 1.9, src/gdevdsp2.h 1.8]</p>
</blockquote>

<p><strong><a name="2004-07-07_0909"></a>
2004-07-07 09:09 Russell Lang</strong></p>
<blockquote>
<pre>
Fixes bug 687562 "vector devices close output file incorrectly".
Vector devices open the output file with gx_device_open_output_file,
so should close it with gx_device_close_output_file, not fclose.
This was preventing pswrite from correctly closing special
files such as "%printer%Printer Name" on Windows and OS/2.</pre>
<p>[src/gdevvec.c 1.22]</p>
</blockquote>

<p><strong><a name="2004-07-07_0907"></a>
2004-07-07 09:07 Russell Lang</strong></p>
<blockquote>
<pre>
In the Windows %printer% IODevice, the existing thread handle
is closed automatically when the thread finishes.  Duplicate
the thread handle so we always have a valid handle for waiting
and closing.

DETAILS:
When the thread finishes, the CRTL _endthread is closing
the existing handle.  During debugging, it was found that
waiting on the thread handle was Ok because the thread
was still running, but by the time CloseHandle ran the
thread handle was invalid.

IODevices are effectively static, so iodev-&gt;state is initialized
once at the start of the interpreter.  There is no need to
test if iodev-&gt;state is valid.</pre>
<p>[src/gp_msprn.c 1.4]</p>
</blockquote>

<p><strong><a name="2004-07-06_2215"></a>
2004-07-06 22:15 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687565 Incorrect equiv color for Orange in Altona test file.
The altona test file Altona_Visual_bb_1v1_x3.pdf contains a spot color
called Orange.  An incorrect equivalent CMYK color is being determined for
this spot color.  The result is that the spot color is being displayed as
black for the devices which handle spot colors and attempt to determine
equivalent CMYK colors for the spot colors.  These are the psdcmyk,
tiffsep, and display (with -dDisplayFormat=16#a0800) devices.

DETAILS:

The Orange spot color is used in two different DeviceN color spaces.  The
first color space has components named 'None'.  These components are used
as part of a special feature described in section 4.5 of the PDF 1.5 spec.
This feature uses the None components as a means for passing values to
the color space's alternate tint transform function.  In the example in
the spec., these values are an equivalent color in the alternate color
space.

Our logic for determining an equivalent CMYK color for a spot colorant
sets all color components except for the desired spot color to zero and
then uses the tint transform function to form an alternate color.  This
results in the equivalent CMYK color being black since the None values
contain the real information for the tint transform function.

This change consists of check for the presence of DeviceN color space
components named None.  If any are detected then the equivalent CMYK
color logic exits rather than determine an invalid color.  This is
sufficient for this case since the second color space which contains
the Orange spot color does not have the None components.  For the
general case, a solution needs to be found which samples colors given
actual values for the None components.</pre>
<p>[src/gsequivc.c 1.4]</p>
</blockquote>

<p><strong><a name="2004-07-06_1927"></a>
2004-07-06 19:27 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 11 : Implementing Metrics for Type 1,2,42 fonts (continued).

DETAILS :

The previous patch appeares incomplete due to MissingWidth. Now fixing.
CID fonts and Type 3 fonts are still stubbed.
Tested with Bug687546.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.8]</p>
</blockquote>

<p><strong><a name="2004-07-06_1904"></a>
2004-07-06 19:04 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 10 : Implementing Metrics for Type 1,2,42 fonts.

DETAILS :

CID fonts and Type 3 fonts are still stubbed.
Tested with Bug687546.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.7]</p>
</blockquote>

<p><strong><a name="2004-07-06_1744"></a>
2004-07-06 17:44 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 9 : Implementing Encoding for Type 1,2,42 fonts.

DETAILS :

CID fonts and Type 3 fonts are still stubbed.
Tested with Bug687546.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.6]</p>
</blockquote>

<p><strong><a name="2004-07-06_1348"></a>
2004-07-06 13:48 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 8 : Implementing ExtGState.

DETAILS :

Function objects are subbed yet.
Debugged with Bug687546.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.5]</p>
</blockquote>

<p><strong><a name="2004-07-06_1205"></a>
2004-07-06 12:05 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 7 : Implementing text rendering operastors.

DETAILS :

Font loading is stubbed yet.
Debugged with Bug687546.ps .
TextRenderingMode!=0 isn't debugged yet.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.4]</p>
</blockquote>

<p><strong><a name="2004-07-05_2116"></a>
2004-07-05 21:16 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 6 : :Providing a page stream execution context.

DETAILS :

Most operators are eother stubbed or unimplemented,
but the interpretation runs and prints a trace.
Debugged wioth Bug687546.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.3]</p>
</blockquote>

<p><strong><a name="2004-07-05_1703"></a>
2004-07-05 17:03 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 5 : Page streams must interpret immediately.

DETAILS :

This works against a huge memory consumption.
Also improved comments, the module structurization and error processing.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.2]</p>
</blockquote>

<p><strong><a name="2004-07-05_1703"></a>
2004-07-05 17:03 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 4 : Stream data length must preceed the stream.

DETAILS :

The new code is disabled with PS2WRITE 0 in gdevvec.h .

pdf_begin_data_stream, pdfmark_PS wrote a stream data length after the stream object.
With OrderResources true we write a direct object instead that.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfm.c 1.42, src/gdevpdfu.c 1.56, src/gdevpdfx.h 1.97]</p>
</blockquote>

<p><strong><a name="2004-07-05_1255"></a>
2004-07-05 12:55 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write step 3 : Initial commit for the Ordered PDF Reader.

DETAILS :

This revision only reads PDF objects into VM.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/opdfread.ps 1.1]</p>
</blockquote>

<p><strong><a name="2004-07-03_1051"></a>
2004-07-03 10:51 Russell Lang</strong></p>
<blockquote>
<pre>
Log Message:
Fixes bug 686956 Display device does not support separations.
Add support for separations to display device.
This requires a change to the display callback structure.
Support is maintained for clients using version 1 of the structure.

DETAILS:
Add support for a new color format, DISPLAY_COLORS_SEPARATION,
which supports CMYK and spot colors.  A new callback
display_separation() is used to tell the client about
the names and CMYK equivalents of each separation.
The callback structure version number is incremented to 2
to show that has changed.  The display devices checks
whether it is passed the older v1 structure or the newer
v2 structure, and only calls the new separation callback
if it was given a v2 structure.
Only 8-bit/pixel, up to 8 components and 64-bit depth are supported.
In the Windows and gtk+ clients, a subset of these 8 separations
can be selected for display.
The new code is based on the tiffsep device.</pre>
<p>[doc/API.htm 1.43, doc/Devices.htm 1.79, src/dwimg.c 1.12, src/dwimg.h 1.9, src/dwmain.c 1.17, src/dwmainc.c 1.19, src/dxmain.c 1.13, src/gdevdsp.c 1.23, src/gdevdsp.h 1.8, src/gdevdsp2.h 1.7, src/idisp.c 1.7]</p>
</blockquote>

<p><strong><a name="2004-07-01_1923"></a>
2004-07-01 19:23 Igor Melichev</strong></p>
<blockquote>
<pre>
(pdfwrite) : Implementing a dynamic recongnition for Type 3 charproc variations (continued 6).

DETAILS :

Bug 687546 pdfwrite : Type 3 glyph variations (was: ps2pdf segfaults)
Relates to 687044, 687472, 687489, 687546.
charproc_just_accumulated was not properly initialized on some circumstances.

EXPECTED DIFFERENCES :

Bug687546.ps (new)</pre>
<p>[src/gdevpdtt.c 1.84]</p>
</blockquote>

<p><strong><a name="2004-07-01_1827"></a>
2004-07-01 18:27 Dan Coby</strong></p>
<blockquote>
<pre>
Correct some warnings from the MSVC compiler.</pre>
<p>[src/gscdevn.c 1.19, src/gscsepr.c 1.26, src/gsht.c 1.21, src/gzht.h 1.12]</p>
</blockquote>

<p><strong><a name="2004-07-01_0441"></a>
2004-07-01 04:41 Dan Coby</strong></p>
<blockquote>
<pre>
This change creates common routines for handling the DeviceN related
device parameters (SeparationColorNames, SeparationOrder, and
MaxSeparations).  The change also splits up some common routines that
were assuming that the device was a 'printer' device.</pre>
<p>[src/devs.mak 1.116, src/gdevdevn.c 1.21, src/gdevdevn.h 1.10, src/gdevnfwd.c 1.25, src/gdevpsd.c 1.16, src/gdevtsep.c 1.3, src/gdevxcf.c 1.9, src/gxcmap.c 1.22, src/gxcmap.h 1.11]</p>
</blockquote>

<p><strong><a name="2004-06-30_1737"></a>
2004-06-30 17:37 Raph Levien</strong></p>
<blockquote>
<pre>
Fixes nonportable code in the vasarely.ps example file so that keeps
to reasonable page size values even when default clippath is very
large (as is the case with the bbox device). Fixes bug #687549.</pre>
<p>[examples/vasarely.ps 1.3]</p>
</blockquote>

<p><strong><a name="2004-06-30_1455"></a>
2004-06-30 14:55 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdsfwrite) : Compression of XObjects implicitely depended on CompressFonts (continued).

DETAILS :

Fixing a compiler error with PS2WRITE 1.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfu.c 1.55]</p>
</blockquote>

<p><strong><a name="2004-06-30_1450"></a>
2004-06-30 14:50 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdsfwrite) : Compression of XObjects implicitely depended on CompressFonts.

DETAILS :

This patch makes the dependence explicit.
Have no idea which distiller parameter must controll patterns and forms,
so keeping the old dependence.
With OrderResources=true pages now depend on CompressPages.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfi.c 1.54, src/gdevpdfm.c 1.41, src/gdevpdfu.c 1.54, src/gdevpdfx.h 1.96, src/gdevpdti.c 1.34]</p>
</blockquote>

<p><strong><a name="2004-06-30_1435"></a>
2004-06-30 14:35 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write part 2 : Delay writing pages.

DETAILS :

The new code is disabled with PS2WRITE 0 in gdevvec.h .

With OrderResources=true it writes pages at the end of the document,
after all resources are written to PDF.
Before that pages are accumulated in a temporary file.

OrderResources has been moved from distiller parameters to device parameters.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.96, src/gdevpdfg.c 1.54, src/gdevpdfp.c 1.39, src/gdevpdfu.c 1.53, src/gdevpdfx.h 1.95, src/gdevpsdf.h 1.22, src/gdevpsdp.c 1.14]</p>
</blockquote>

<p><strong><a name="2004-06-30_1154"></a>
2004-06-30 11:54 Igor Melichev</strong></p>
<blockquote>
<pre>
ps2write part 1 : starting the project.

DETAILS :

Define a new temporary configuration switch PS2WRITE.
The new code is disabled with PS2WRITE 0 in gdevvec.h .

Our development strategy is to make pdfwrite to generate an output,
which a PS interpreter can handle with a special procset.
For a while we'll not define a new ps2write device,
but enhance the pdfwrite device with a new feature.

A new temporary distiller parameter OrderResources will make pdfwrite
to keep a proper resource ordering for generating a PS output.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpsdf.h 1.21, src/gdevpsdp.c 1.13, src/gdevvec.h 1.14]</p>
</blockquote>

<p><strong><a name="2004-06-30_0815"></a>
2004-06-30 08:15 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : MSVC compiler warning.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevtsep.c 1.2]</p>
</blockquote>

<p><strong><a name="2004-06-29_2246"></a>
2004-06-29 22:46 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687553 rangecheck in .sethalftone5 and SeparationOrder.

DETAILS:

If a file specifies a type 5 halftone and the SeparationOrder device
parameter is specified then a rangecheck can occur.  This happens when
the halftone includes two or more colorants that are not in the
SeparationOrder parameter or one colorant and a 'Default' value.

The problem occurs because the get_color_comp_index device procs use
GX_DEVICE_COLOR_MAX_COMPONENTS to indicate colorants which are not
being imaged due to the colorant not be included in the list for the
SeparationOrder device parameter.  However the
gs_color_name_component_number routine was using the same value to
indicate 'Default' halftones.

The fix consists of modifying gs_color_name_component_number to look
for GX_DEVICE_COLOR_MAX_COMPONENTS from the get_color_comp_index
device proc.  If found then the component is treated the same as
a component that is not present in the device.  The halftoning
logic is only concerned with the colorants which are actually being
used by the device.</pre>
<p>[src/gsht.c 1.20]</p>
</blockquote>

<p><strong><a name="2004-06-29_2227"></a>
2004-06-29 22:27 Dan Coby</strong></p>
<blockquote>
<pre>
Correct spelling in a comment.</pre>
<p>[src/gxcmap.h 1.10]</p>
</blockquote>

<p><strong><a name="2004-06-29_2101"></a>
2004-06-29 21:01 Dan Coby</strong></p>
<blockquote>
<pre>
Change the default handling of the MaxSeparations device parameter.  This
parameter is only used by some of the DeviceN mode devices (which have
their own handling of this parameter).  The default handler now simply
ignores this parameter.  However it does read the parameter.  Not reading
the parameter was causing problems with PDF files and page devices.</pre>
<p>[src/gsdparam.c 1.17]</p>
</blockquote>

<p><strong><a name="2004-06-29_0105"></a>
2004-06-29 01:05 Ralph Giles</strong></p>
<blockquote>
<pre>
Add contributed pscolor utility by Carsten Hammer. This splits a ps
document into two, one consisting only of black and white pages, and
one of color pages. Useful for printing on separate devices.

Submitted under bug 602263.

The Makefile needs updating for the new location.</pre>
<p>[contrib/pscolor/Makefile 1.1, contrib/pscolor/instream.yy 1.1, contrib/pscolor/test.c 1.1]</p>
</blockquote>

<p><strong><a name="2004-06-28_1713"></a>
2004-06-28 17:13 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : True Type grid fitting must not apply to FAPI fonts.

DETAILS :

Bug 687543 "FAPI: Type 42 is broken".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxccman.c 1.26, src/lib.mak 1.187]</p>
</blockquote>

<p><strong><a name="2004-06-24_1010"></a>
2004-06-24 10:10 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : A dangling pointer from TExecution_Context could cause a memory corruption.

DETAILS :

The pointed area was never used and the pointer was not listed in the garbager descriptor.
Due to the latter it was not relocated and a wrong object was released through it.
Bug 687533  "segmentation fault on this PS file"

We still keep the pointer defined, because we don't want to change FreeType structures.
But now we don't allocate the area for its referent.

Minor change (ttinterp.c) : skip allocating a debug data of zero size.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/ttfmemd.c 1.7, src/ttinterp.c 1.13, src/ttobjs.c 1.7]</p>
</blockquote>

<p><strong><a name="2004-06-24_0951"></a>
2004-06-24 09:51 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix: Unwinding the recent change to gsdparam.c becauase it breaks the PDF interpreter.

DETAILS :

All comparefiles/*.pdf failed with -sDEVICE=ppmraw after the change
http://www.ghostscript.com/pipermail/gs-cvs/2004-June/004575.html .

EXPECTED DIFFERENCES :

See DETAILS.</pre>
<p>[src/gsdparam.c 1.16]</p>
</blockquote>

<p><strong><a name="2004-06-24_0720"></a>
2004-06-24 07:20 Dan Coby</strong></p>
<blockquote>
<pre>
Add source file src/gdevtsep.c.  This file is part of the implementation
687440 and 542629.</pre>
<p>[src/gdevtsep.c 1.1]</p>
</blockquote>

<p><strong><a name="2004-06-24_0654"></a>
2004-06-24 06:54 Dan Coby</strong></p>
<blockquote>
<pre>
Add the src/gdevtsep.c file.  This contains the tiffgray, tiff32nc, and
tiffsep devices.</pre>
<p>[doc/Develop.htm 1.135]</p>
</blockquote>

<p><strong><a name="2004-06-24_0651"></a>
2004-06-24 06:51 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT interpreter) : The implementation of INSTCTRL did not follow the TT specification by Apple.

DETAILS :

Bug 687526 /invalidfont in --show--
See http://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html#INSTCTRL
The old implementation comes from FreeType.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/ttinterp.c 1.12]</p>
</blockquote>

<p><strong><a name="2004-06-24_0648"></a>
2004-06-24 06:48 Dan Coby</strong></p>
<blockquote>
<pre>
This change implements the enhancements described in 542629 CMYK
tiff driver and 687440 Support for outputting PDF separations
separately.  This change implements three devices:  tiffgray
which produces an 8 bit gray output with uncompressed data,
tiff32nc which produces 32 bit CMYK with uncompressed data, and
tiffsep which produces a tiffgray file for each separation
(CMYK and spot colors) and it also produces a CMYK output file
which is created using the CMYK image data plus the spot
colors image data.  The spot colors are converted to CMYK using
the logic in 687431.

DETAILS:

This change requires that 687504 be included in the sources.

The tiffgray and tiff32nc devices are logically similar to the
tiff24nc device except for the use of gray and CMYK process
color models.

The tiffsep device uses much of the logic which has been created
for the psdcmyk and spotcmyk devices.  These include logic for
implementing the SeparationOrder setpagedevice parameter 687423,
logic for determining an equivalent CMYK color to spot colors
687431, and automatically detecting spot colors (without requiring
that they be specified via the SeparationColorNames setpagedevice
parameter 687504.

The tiffsep device also prints the names of any spot colors
detected within a document to stderr.  (stderr is also use for the
output from the bbox device.)  For each spot color the name of
the color is printed preceded by '%%SeparationName:  '.  This
provides a mechanism for external applications to be informed about
the names of spot colors with a document.

Due to the 64 bit pixel size limitation, the tiffsep can handle
a maximum of 8 colorants per pass.  However it is possible to
handle more than 8 colorants by doing multiple passes.  For each
pass after the first one, the names of all of the separations need
to be specified via the SeparationColorNames parameter and the
names of the desired separations need to be specified via the
SeparationOrder parameter.  When colorants are selected via the
SeparationOrder parameter, the composite CMYK output contains
the equivalent CMYK data only from the selected colorants.  It is
possible to create an overall CMYK composite for more than 8
colorants by then adding together (via an external application like
imagemagick) the composite CMYK output files from the individual
Ghostscript passes.

Internally each spot color is assigned a spot color number.  These
numbers start with 0 for the first spot color.  The spot color
numbers are assigned in the same order as the names are printed to
stderr (see above).  This order also matches the ordering in the
SeparationColorNames list, if this parameter is specified.  The
spot color numbers are not affected by the SeparationOrder parameter.

This device creates multiple output files.  The file specified
via the OutputFile command line parameter is used to contain the
composite CMYK equivalent.  File names for the separations for the
CMYK planes are created by appending '.Cyan.tif', '.Magenta.tif'
'.Yellow.tif' or '.Black.tif' to the to the end of the file name
specified via the OutputFile parameter.  File names for the spot
color separation files are created by appending '.sn.tif' (where n
is the spot color number) to the end of the file name specified via
the OutputFile parameter.

The src/gdevtsep.c source file does have a compile time option for
including/not the '.tif' at the end of the created file name.  It
also has a compile time option for using the name of the spot color
as part of the file name.  However this is not enabled since there
may be conflicts with spot color names (in which Adobe allows almost
anything) and the operating system's conventions on file naming.

This change consists of the new source module src/gdevtsep.c,
changes to devs.mak for defining the new devices, changes to the
various top level make files for including these devices in their
DEVICE_DEVS definitions, and changes to the documentation files.</pre>
<p>[doc/Devices.htm 1.78, src/Makefile.in 1.36, src/devs.mak 1.115, src/dvx-gcc.mak 1.26, src/gdevdevn.h 1.9, src/gsdparam.c 1.15, src/macos-mcp.mak 1.25, src/msvc32.mak 1.58, src/openvms.mak 1.36, src/os2.mak 1.37, src/unix-gcc.mak 1.45, src/unixansi.mak 1.36, src/watcw32.mak 1.29]</p>
</blockquote>

<p><strong><a name="2004-06-24_0647"></a>
2004-06-24 06:47 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 80.

DETAILS :

A stronger prevention of a tiny decomposition of a color.
It works against glitches in function|color monotonity|linearity checks.

EXPECTED DIFFERENCES :

72dpi :
Altona-Testsuite_p2_S_x3.pdf
Clarke Tate Manns Chinese.ai
S2_Digitalproof-Forum_x3k.pdf

300dpi :
Clarke Tate Manns Chinese.ai
S2_Digitalproof-Forum_x3k.pdf</pre>
<p>[src/gxshade6.c 1.77]</p>
</blockquote>

<p><strong><a name="2004-06-24_0503"></a>
2004-06-24 05:03 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687534 Unable to determine equivalent CMYK for spot colors
that are only used with overprint.

DETAILS:

The given test file uses spot colors.  However the psdcmyk device
was creating output files which did not contain equivalent CMYK
colors for the spot colors.  The cause was that the previous
version of the logic was capturing the equivalent CMYK colors
when the psdcmyk device's high drawing procs were called.  However
if overprinting is enabled, then the overprint device was inserting
its own versions of these routines.  Since it only took one call
to a high level drawing handler, the previous logic would capture
the equivalent CMYK colors if there were any drawing operations
with a spot color that did not have overprinting enabled.

The fix consists of moving the capturing of the equivalent CMYK
colors to a new device proc.  This new device proc is called
update_spot_equivalent_colors.  This device proc is called whenever
a Separation or a DeviceN color space is installed.

The default version of the proc does nothing.  Thus there is only
a small amount of overhead added for the installation of Separation
and DeviceN color spaces for devices which do not need the equivalent
CMYK colors for spot colors.

Most of the change consists of the standard details of adding a
new device proc.  There are several places that have to be updated
when this is done.  The documentation in doc/Drivers.htm was updated
to include this new proc.  The high level drawing handlers in the
psdcmyk devices were removed and a new psd_update_spot_equivalent_colors
procedure was added.  Some minor changes were made in the logic in
gsequivc.c since it is no longer necessary to scan through base and
alternate color spaces looking for Separation and DeviceN color spaces.
The comments at the beginning of gsequivc.c was changed to reflect
the changes in the logic for capturing equivalent CMYK colors for
spot colors.</pre>
<p>[doc/Drivers.htm 1.47, src/gdevbbox.c 1.18, src/gdevdflt.c 1.24, src/gdevnfwd.c 1.24, src/gdevprn.c 1.17, src/gdevpsd.c 1.15, src/gdevrops.c 1.12, src/gscdevn.c 1.18, src/gscsepr.c 1.25, src/gsequivc.c 1.3, src/gsequivc.h 1.2, src/gxclip.c 1.15, src/gxclip2.c 1.11, src/gxclipm.c 1.13, src/gxclist.c 1.14, src/gxdevcli.h 1.33, src/gxdevice.h 1.18]</p>
</blockquote>

<p><strong><a name="2004-06-24_0317"></a>
2004-06-24 03:17 Ray Johnston</strong></p>
<blockquote>
<pre>
Minor change to avoid a spurious compiler warning about 't' used before
initialized. Fixes bug #687412.

DETAILS:

This is an invalid warning, since 't' is always initialized before use,
however the extensive use of macros confuses some compilers. IMO, this
is an abuse of macros, but this is endemic in the older GS code.</pre>
<p>[src/spdiff.c 1.7]</p>
</blockquote>

<p><strong><a name="2004-06-23_2037"></a>
2004-06-23 20:37 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Disable idiom recognition feature during execution of .bindnow
because it has no effect except burning a few seconds of CPU time.
Fix bug 687521</pre>
<p>[lib/gs_init.ps 1.107]</p>
</blockquote>

<p><strong><a name="2004-06-23_1857"></a>
2004-06-23 18:57 stefan</strong></p>
<blockquote>
<pre>
Fixed CMYK to RGB conversion.

Used in rop code where RGB -&gt; CMYK -&gt; RGB needs to work correctly
in the black and white cases.</pre>
<p>[src/gdevbit.c 1.10]</p>
</blockquote>

<p><strong><a name="2004-06-23_1850"></a>
2004-06-23 18:50 stefan</strong></p>
<blockquote>
<pre>
Fix macro to use it's arguments.  Platform specific, under exersized code.</pre>
<p>[src/gxfarith.h 1.7]</p>
</blockquote>

<p><strong><a name="2004-06-23_0904"></a>
2004-06-23 09:04 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (ps2ascii) : Provide a tolerance to old versions of dvips output.

DETAILS :

Bug 531300  "ps2ascii chokes on ch-xoff and ch-* routines".
Patch from Mike attached to the bug.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/ps2ascii.ps 1.10]</p>
</blockquote>

<p><strong><a name="2004-06-19_0401"></a>
2004-06-19 04:01 Ray Johnston</strong></p>
<blockquote>
<pre>
Add new CMaps and update older ones to latest. Bug #687470. Thanks to
A. Cherepanov for providing part of the newer files.</pre>
<p>[Resource/CMap/83pv-RKSJ-H 1.2, Resource/CMap/90ms-RKSJ-H 1.2, Resource/CMap/90ms-RKSJ-UCS2 1.1, Resource/CMap/90ms-RKSJ-V 1.2, Resource/CMap/90msp-RKSJ-H 1.1, Resource/CMap/90msp-RKSJ-V 1.1, Resource/CMap/90pv-RKSJ-H 1.2, Resource/CMap/90pv-RKSJ-UCS2 1.1, Resource/CMap/90pv-RKSJ-UCS2C 1.1, Resource/CMap/90pv-RKSJ-V 1.2, Resource/CMap/Add-RKSJ-H 1.2, Resource/CMap/Add-RKSJ-V 1.2, Resource/CMap/Adobe-CNS1-B5pc 1.1, Resource/CMap/Adobe-CNS1-ETen-B5 1.1, Resource/CMap/Adobe-CNS1-H-CID 1.1, Resource/CMap/Adobe-CNS1-H-Host 1.1, Resource/CMap/Adobe-CNS1-H-Mac 1.1, Resource/CMap/Adobe-CNS1-UCS2 1.1, Resource/CMap/Adobe-GB1-GBK-EUC 1.1, Resource/CMap/Adobe-GB1-GBpc-EUC 1.1, Resource/CMap/Adobe-GB1-H-CID 1.1, Resource/CMap/Adobe-GB1-H-Host 1.1, Resource/CMap/Adobe-GB1-H-Mac 1.1, Resource/CMap/Adobe-GB1-UCS2 1.1, Resource/CMap/Adobe-Japan1-90ms-RKSJ 1.1, Resource/CMap/Adobe-Japan1-90pv-RKSJ 1.1, Resource/CMap/Adobe-Japan1-H-CID 1.1, Resource/CMap/Adobe-Japan1-H-Host 1.1, Resource/CMap/Adobe-Japan1-H-Mac 1.1, Resource/CMap/Adobe-Japan1-PS-H 1.1, Resource/CMap/Adobe-Japan1-PS-V 1.1, Resource/CMap/Adobe-Japan1-UCS2 1.1, Resource/CMap/Adobe-Korea1-H-CID 1.1, Resource/CMap/Adobe-Korea1-H-Host 1.1, Resource/CMap/Adobe-Korea1-H-Mac 1.1, Resource/CMap/Adobe-Korea1-KSCms-UHC 1.1, Resource/CMap/Adobe-Korea1-KSCpc-EUC 1.1, Resource/CMap/Adobe-Korea1-UCS2 1.1, Resource/CMap/B5pc-H 1.1, Resource/CMap/B5pc-UCS2 1.1, Resource/CMap/B5pc-UCS2C 1.1, Resource/CMap/B5pc-V 1.1, Resource/CMap/CNS-EUC-H 1.1, Resource/CMap/CNS-EUC-V 1.1, Resource/CMap/EUC-H 1.2, Resource/CMap/EUC-V 1.2, Resource/CMap/Ext-RKSJ-H 1.2, Resource/CMap/Ext-RKSJ-V 1.2, Resource/CMap/GB-EUC-H 1.1, Resource/CMap/GB-EUC-V 1.1, Resource/CMap/GBK-EUC-H 1.2, Resource/CMap/GBK-EUC-UCS2 1.1, Resource/CMap/GBK-EUC-V 1.2, Resource/CMap/GBK2K-H 1.1, Resource/CMap/GBK2K-V 1.1, Resource/CMap/GBKp-EUC-H 1.1, Resource/CMap/GBKp-EUC-V 1.1, Resource/CMap/GBT-EUC-H 1.1, Resource/CMap/GBT-EUC-V 1.1, Resource/CMap/GBpc-EUC-H 1.1, Resource/CMap/GBpc-EUC-UCS2 1.1, Resource/CMap/GBpc-EUC-UCS2C 1.1, Resource/CMap/GBpc-EUC-V 1.1, Resource/CMap/H 1.2, Resource/CMap/HKdla-B5-H 1.1, Resource/CMap/HKdla-B5-V 1.1, Resource/CMap/HKdlb-B5-H 1.1, Resource/CMap/HKdlb-B5-V 1.1, Resource/CMap/HKgccs-B5-H 1.1, Resource/CMap/HKgccs-B5-V 1.1, Resource/CMap/HKm314-B5-H 1.1, Resource/CMap/HKm314-B5-V 1.1, Resource/CMap/HKm471-B5-H 1.1, Resource/CMap/HKm471-B5-V 1.1, Resource/CMap/HKscs-B5-H 1.1, Resource/CMap/HKscs-B5-V 1.1, Resource/CMap/Identity-H 1.2, Resource/CMap/Identity-V 1.2, Resource/CMap/KSC-EUC-H 1.1, Resource/CMap/KSC-EUC-V 1.1, Resource/CMap/KSCms-UHC-H 1.2, Resource/CMap/KSCms-UHC-HW-H 1.1, Resource/CMap/KSCms-UHC-HW-V 1.1, Resource/CMap/KSCms-UHC-UCS2 1.1, Resource/CMap/KSCms-UHC-V 1.2, Resource/CMap/KSCpc-EUC-H 1.1, Resource/CMap/KSCpc-EUC-UCS2 1.1, Resource/CMap/KSCpc-EUC-UCS2C 1.1, Resource/CMap/UCS2-90ms-RKSJ 1.1, Resource/CMap/UCS2-90pv-RKSJ 1.1, Resource/CMap/UCS2-B5pc 1.1, Resource/CMap/UCS2-ETen-B5 1.1, Resource/CMap/UCS2-GBK-EUC 1.1, Resource/CMap/UCS2-GBpc-EUC 1.1, Resource/CMap/UCS2-KSCms-UHC 1.1, Resource/CMap/UCS2-KSCpc-EUC 1.1, Resource/CMap/UniCNS-UCS2-H 1.2, Resource/CMap/UniCNS-UCS2-V 1.2, Resource/CMap/UniGB-UCS2-H 1.2, Resource/CMap/UniGB-UCS2-V 1.2, Resource/CMap/UniJIS-UCS2-H 1.2, Resource/CMap/UniJIS-UCS2-HW-H 1.1, Resource/CMap/UniJIS-UCS2-HW-V 1.1, Resource/CMap/UniJIS-UCS2-V 1.2, Resource/CMap/UniKS-UCS2-H 1.2, Resource/CMap/UniKS-UCS2-V 1.2, Resource/CMap/V 1.2]</p>
</blockquote>

<p><strong><a name="2004-06-18_1746"></a>
2004-06-18 17:46 Igor Melichev</strong></p>
<blockquote>
<pre>
(pdfwrite) : Implementing a dynamic recongnition for Type 3 charproc variations (continued 5).

DETAILS :

pdf_set_charproc_attrs went out the pw array range,
and caused an indeterministic behavior with Bug687044.ps .

EXPECTED DIFFERENCES :

Not detected on Windows, but the old revision was indeterministic.</pre>
<p>[src/gdevpdti.c 1.33, src/gdevpdfx.h 1.94, src/gdevpdtt.c 1.83]</p>
</blockquote>

<p><strong><a name="2004-06-18_0700"></a>
2004-06-18 07:00 Dan Coby</strong></p>
<blockquote>
<pre>
687504 Enhancement: Imaging spot colors without using the
SeparationColorNames parameter.

DETAILS:

The purpose of this enhancement is to provide an example of how
to implement imaging spot colors without requiring that they be
specified in advance via the SeparationColorNames setpagedevice
parameter.  Note:  Spot colors are only supported on a few devices
which have output file formats which allow for spot colors.  These
are currently the psdcmyk, spotcmyk, and xcfcmyk devices.

This commit only implements this feature on the psdcmyk, spotcmyk
and devicen devices.

In order to implement this feature, a device needs to be able to
allocate image buffer memory for each colorant and to detect when
a new colorant is being used inside of a color space.  The
implementation has the following pieces:

1.  The handling of the MaxSeparation setpagedevice parameter was
extended.  Previously this parameter was always set to one.  For
most devices it now indicates the number of colorants being used
by the device.  For most devices this is a fixed quantity, however
for the psdcmyk device, this parameter can be used to tell the
device to allocate image buffer memory for up to eight colorants.
(The eight colorant limit is due to the fact that the psdcmyk
device uses 8 bits per colorant and we currently have a 64 bit
maximum pixel size.)

2.  The devices already have a 'get_color_comp_index' routine which
is used to query if a colorant is supported by the device.  However
this routine is used for both real components in color spaces and also
for some special cases.  For instance, the same halftone may be used
either for a cyan or a red colorant.  To handle this case, the halftoning
setup logic will query the get_color_comp_index routine to check if
cyan is supported by the device.  If not then a query is made to see
if the device supports red.  By monitoring the names of the components
passed to get_color_comp_index routine, a device can detect when a new spot
color is being used.  However it is necessary to be able to detect
the special cases so that the device does not believe that it has a
'red' spot color.  To do this the third parameter of the
get_color_comp_index device proc was logically modified to indicate
if a name represents a name actually in a color space or one of the
special case situations.  Previously this parameter was not being used.

3.  The get_color_comp_index routine for the psdcmyk device was
modified to look for new spot colors and to add then to its list of
colorants if there was space available.  Note:  This also required
that the psdcmyk device have its own structure descriptor, pointer
enumeration and relocation procedures.  The macro which was used to
define the psdcmyk and psdrgb devices needed to be changed since the
previous macro used the st_device_printer structure descriptor instead
of the new structure descriptor for the psd devices.</pre>
<p>[src/gdevdevn.c 1.20, src/gdevdevn.h 1.8, src/gdevnfwd.c 1.23, src/gdevperm.c 1.4, src/gdevpsd.c 1.14, src/gdevxcf.c 1.8, src/gscdevn.c 1.17, src/gscsepr.c 1.24, src/gscspace.c 1.16, src/gsdparam.c 1.14, src/gsht.c 1.19, src/gxcmap.c 1.21, src/gxcmap.h 1.9]</p>
</blockquote>

<p><strong><a name="2004-06-17_2142"></a>
2004-06-17 21:42 Ralph Giles</strong></p>
<blockquote>
<pre>
Protect genarch's test for sizeof(long long) with and #ifdef HAVE_LONG_LONG
since a number of platforms (particularly MSVC) do not support this type.</pre>
<p>[src/genarch.c 1.11, src/stdint_.h 1.5]</p>
</blockquote>

<p><strong><a name="2004-06-17_1305"></a>
2004-06-17 13:05 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Round elements of Mask array to the nearest integer following implementation
of AR4, AR5, AR6.
Fix bug 687494 from customer 580.</pre>
<p>[lib/pdf_draw.ps 1.82]</p>
</blockquote>

<p><strong><a name="2004-06-17_1114"></a>
2004-06-17 11:14 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Arithmetic errors could cause a function monotonity misrecongition.

DETAILS :

Bug 687511 "shadinds: infinite recursion".

EXPECTED DIFFERENCES :

Not detected on Windows.
On Linux expecting a difference with :
Altona-Testsuite_p2_S_x3.pdf
S2_Digitalproof-Forum_x3k.pdf</pre>
<p>[src/gsfunc0.c 1.21]</p>
</blockquote>

<p><strong><a name="2004-06-16_2001"></a>
2004-06-16 20:01 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix parsing of -2147483648.5, min_int followed by a fractional part.
Fix bug 687500</pre>
<p>[src/iscannum.c 1.9]</p>
</blockquote>

<p><strong><a name="2004-06-16_1122"></a>
2004-06-16 11:22 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Allow named object reference in the Action key of /ANN pdfmark.

DETAILS :

Bug 687386  "-dEmbedAllFonts does not work".

It's a PDF 1.5 feature. We still incompletely support PDF 1.5 .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfm.c 1.40]</p>
</blockquote>

<p><strong><a name="2004-06-16_0927"></a>
2004-06-16 09:27 Ralph Giles</strong></p>
<blockquote>
<pre>
Protect against cache values containing spaces. This shouldn't be a problem, the change is more for consistency.</pre>
<p>[src/configure.ac 1.47]</p>
</blockquote>

<p><strong><a name="2004-06-16_0927"></a>
2004-06-16 09:27 Ralph Giles</strong></p>
<blockquote>
<pre>
Try to use long long as a 64 bit type in the genarch fallback stdint definitions. Fix for bug 687514.</pre>
<p>[src/genarch.c 1.10, src/stdint_.h 1.4]</p>
</blockquote>

<p><strong><a name="2004-06-15_2028"></a>
2004-06-15 20:28 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A wrong CFF string index randiomization.

DETAILS :

Bug 687507 "pdfwrite device closes with -15".

1. Randomization parameters for cff_string_index were computed wrongly,
causing the search to skip some items. As a consequence,
some strings were added to the table many times, causing
a groth of the table while CFF size estimation iterations,
and psf_write_type2_font returned error due to "offset &gt; End_offset".

2. If an error happened writing a font after pdf_begin_fontfile is done,
unconditionally call pdf_end_fontfile to provide a consistent stream state.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtb.c 1.24, src/gdevpsf2.c 1.31, src/lib.mak 1.186]</p>
</blockquote>

<p><strong><a name="2004-06-15_1527"></a>
2004-06-15 15:27 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Make pdf_dominant_rotation() return unknown text rotation for the file
without text. It returned 0 rotation before, which excluded consideration
of DSC comments later on.
Fix bug 687515</pre>
<p>[src/gdevpdf.c 1.95]</p>
</blockquote>

<p><strong><a name="2004-06-10_1909"></a>
2004-06-10 19:09 Igor Melichev</strong></p>
<blockquote>
<pre>
(pdfwrite) : Implementing a dynamic recongnition for Type 3 charproc variations (continued 4).

DETAILS :

Recent changes about charproc variations caused an appearence of idle entries
in the xref table. Those entries pointed to zero length objects
and were never referred.

Idle entries appeared due to the substream accumulator reserved an object id
before entering a substream, but later the object (a charproc) was cancelled.

This patch delays the reservation of an object id until we decide
that the object won't be cancelled. Added a new argument of pdf_enter_substream
for this purpose.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfi.c 1.53, src/gdevpdfm.c 1.39, src/gdevpdfx.h 1.93, src/gdevpdti.c 1.32]</p>
</blockquote>

<p><strong><a name="2004-06-10_1641"></a>
2004-06-10 16:41 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 80.

DETAILS :

Propagated error codes from is_color_monotonic, is_color_linear.
Should fix the bug 687511 "shadinds: infitite recursion".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.76]</p>
</blockquote>

<p><strong><a name="2004-06-09_2047"></a>
2004-06-09 20:47 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (type 1 hinter) : an indeterministic bug in t1_hinter__simplify_representation.

DETAILS :

Bug 687508 "segfault with cvs head".

1. An old defect in the code :
when contour_count is greater than hint_count,
and the hinting is disabled by one axis,
random hints could appear,
causing indeterministic effects.

2. this-&gt;grid_fit_x ans this-&gt;grid_fit_y were erroneusely exchanged.

EXPECTED DIFFERENCES :

72dpi :

036-01.ps
Bug687044.ps
Faktura.pdf
kazmir.pdf
RealCities.pdf
test.pdf
xgfddg.pdf</pre>
<p>[src/gxhintn.c 1.50]</p>
</blockquote>

<p><strong><a name="2004-06-09_1207"></a>
2004-06-09 12:07 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (type 1 hinter) :
1. Ever align the Y-coordinate of a glyph origin to pixels.
2. Improve the unaligned pole interpolation;
3. Set a waeaker angle threshold in t1_hinter__is_stem_hint_applicable.
4. Allow an offset fuzz in t1_hinter__is_stem_hint_applicable.
5. Align upper/lower horizontal stems by the upper/lower edge.
6. A dependency was missed in lib.mak .

DETAILS :

Bug 687419 "poor font rendering on X11 with gs 8.14".

The intention of this change is to improve the rendering quality
with TextAlphaBits &gt; 1, but actually it modifies glyph rendering in all cases.

1.
The test file of the bug 687419 shows that we had 3
inconsistent requirements :
- the analigned glyph origin;
- uniform glyph size;
- and contrast stems.
Since an uniform glyph height looks critical,
we drop the analygned Y-coordinate of the glyph origin.
In other words, now we ever align
the Y-coordinate of the glyph origin to pixels.
This also reduces the number of glyph raster variants in the cache.

2.
The old interpolation algorithm could cause
significant distortions with flex-like serifs, which are not marked with flex.
The character 'L' in the test document of the bug 687419 demonstrates that.
If the path goes outside the interpolation interval
and have no turns, now we shift the "outer" parts rather than
breaking the path at extremal poles. (We wanted this change
a long ago but haven't got a strong reason for it.)

3.
The threshold in t1_hinter__is_stem_hint_applicable changed from
1/3 to 9/10. This makes more stems to recognize. The reason for that
is the same character "L".

4.
Allowed a blue_fuzz offset t1_hinter__is_stem_hint_applicable.
Debugged with comparefiles/tpc2.ps .

5. In the test file of the bug 687419 the small font has no
upper alignment zone for lowercase. This caused an uniform glyph height
due to wide and norrow horizontal stems aligned ocasionally
by top or bottom. Implemented a choice of the aligned edge
depending on the Y-coordinate of stem middle relative to
the glyph middle.

6. gxhintn_h was defined in lib.mak after it is used at once.

EXPECTED DIFFERENCES :

Almost all comparefiles render differently.</pre>
<p>[src/gxchar.c 1.43, src/gxhintn.c 1.49, src/lib.mak 1.185, src/gxhintn.h 1.20]</p>
</blockquote>

<p><strong><a name="2004-06-08_1142"></a>
2004-06-08 11:42 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Merge equal ExtGState objects.

DETAILS :

Bug 687487 "(pdfwrite) redundant ExtGState objects".

Now we represent ExtGState objects as cos_dict_t instances,
and perform a full comparizon before writing them into the output PDF.
Redundant equal objects are being substituted and skipped.

This patch consists of 4 parts :

1. Creting an ExtGstate object, replaced old calls to stream functions
with calls to cos_dict_t functions.

2. Implemented the comparizon/substitution logic in pdf_end_gstate.

3. pdf_prepare_drawing now doesn't pass keys to
pdf_update_halftone, pdf_update_transfer, pdf_write_transfer_map,
because we don't want them to become a part of a value.
Instead that we made them to be keys of the cos_dict_t instance.

4. Defined new functions cos_dict_put_c_key_bool and cos_dict_put_string_copy
to simplify the new code.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfg.c 1.53, src/gdevpdfo.c 1.30, src/gdevpdfo.h 1.19]</p>
</blockquote>

<p><strong><a name="2004-06-03_1712"></a>
2004-06-03 17:12 Igor Melichev</strong></p>
<blockquote>
<pre>
(pdfwrite) : Implementing a dynamic recongnition for Type 3 charproc variations (continued 3).

DETAILS :

Must check FontMatrix when deciding about same charproc.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdti.c 1.31]</p>
</blockquote>

<p><strong><a name="2004-06-02_1745"></a>
2004-06-02 17:45 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : 1. After used a process color, continue using it for same client color space.
2. A bug in pdf_set_initial_color could miss some color commands.

DETAILS :

1. Bug 687197 "ps2pdf creates incorrect PDF".
Defined nad maintained new flags pdev-&gt;fill_used_process_color and pdev-&gt;stroke_used_process_color
for vector devices. The function pdf_reset_color use them when the cclient color space
isn't embeddable.

2. Occasionally found that pdf_set_initial_color set saved colors to pdev-&gt;vg_initial
rather than to argument pointers. This could loose some color commands with a small probability,
so that some objects could get a wrong color.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfb.c 1.22, src/gdevpdfd.c 1.40, src/gdevpdfg.c 1.52, src/gdevpdfg.h 1.32, src/gdevpdfp.c 1.38, src/gdevpdtt.c 1.82, src/gdevpdfx.h 1.92, src/gdevvec.h 1.13]</p>
</blockquote>

<p><strong><a name="2004-06-02_1319"></a>
2004-06-02 13:19 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : ConvertCMYKImagesToRGB crashed.

DETAILS :

Bug 687428 "ConvertCMYKImagesToRGB does not produce a PDF-File".
It made a pointer from global memory to C stack.
Fixed with allocating the structure dinamically.
It produces a small garbage, which is not critical in pdfwrite.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpsdi.c 1.27]</p>
</blockquote>

<p><strong><a name="2004-06-02_1214"></a>
2004-06-02 12:14 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : 'midpoint' formula was wrong.

DETAILS :

Bug 687463 "The 'midpoint' formula is wrong".

EXPECTED DIFFERENCES :

I didn't detect any on Windows.
After recent changes this stuff works only with curves,
which can't flatten with 2^12 segments,
and which are not a part of a shading,
so likely the probability of a difference is small.</pre>
<p>[src/gxpflat.c 1.41, src/gxshade6.c 1.75]</p>
</blockquote>

<p><strong><a name="2004-06-02_0037"></a>
2004-06-02 00:37 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a typo. Thanks to Russell for catching this one.</pre>
<p>[doc/Make.htm 1.76]</p>
</blockquote>

<p><strong><a name="2004-06-01_2113"></a>
2004-06-01 21:13 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687477 Bad incremental update to a PDF file.

DETAILS:

The given test file had a bad incremental update.  This update
has two problems:

1.  The trailer dict only had a Prev entry.  None of the required
entries were present.  To fix this problem, entries from previous
trailer dicts are placed into the initial trailer dict if there is
no entry with the same key in the initial trailer dict.

2.  The update had an xref table with two entries.  One of them
was bad.  (Not a very good percentage.)  To fix this problem,
all entries in the composite xref table are scanned to verify that
they point to a valid objects.  If not then the rebuild logic is
used to attempt to recover the xref data.  This can be disabled
by adding -dNoVerifyXref to the command line.  In most cases,
the verification time is not noticeable but I did find a file with
104,000 xref entries and it took about 2 seconds to verify the
xref table.</pre>
<p>[lib/pdf_base.ps 1.43, lib/pdf_main.ps 1.87, lib/pdf_rbld.ps 1.7]</p>
</blockquote>

<p><strong><a name="2004-06-01_1720"></a>
2004-06-01 17:20 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : A Cygwin/gcc warning.

DETAILS :

The prefious patch appeared incomplete. Now fixing.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfx.h 1.91]</p>
</blockquote>

<p><strong><a name="2004-06-01_1706"></a>
2004-06-01 17:06 Igor Melichev</strong></p>
<blockquote>
<pre>
(pdfwrite) : Implementing a dynamic recongnition for Type 3 charproc variations (continued 2).

DETAILS :

This is a final step of fixing the bug 687489
"pdfwrite creates invalid Type3 font -- missing characters".

This patch provides a check whether a color was changed while
a PS charproc interpretation. A color command is written
into the PDF charproc if and only if the PS charproc changed the color.

This patch discovers a bug in Adobe Acrobat Reader 5 :
with the test document of the bug 687489 it paints an "invisible" text in the 4th page.
That text isn't visible when viewing with Adobe reader 6 and with GS.
The text is painted with a white color, but AR 5 erroneusly paints it with black.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfd.c 1.39, src/gdevpdfg.c 1.51, src/gdevpdfg.h 1.31, src/gdevpdtt.c 1.81]</p>
</blockquote>

<p><strong><a name="2004-06-01_1703"></a>
2004-06-01 17:03 Igor Melichev</strong></p>
<blockquote>
<pre>
High level devices may need a device color while executing stringwidth.

DETAILS :

This is second step of fixing the bug 687489
"pdfwrite creates invalid Type3 font -- missing characters".
The problem happens due to the old code could run a charproc while
executing a stringwidth, when device color is not evaluated.

This patch provides the device color loading with no dependence
on the text operation.
dev_proc(dev, text_begin) now receives a device color in any case.
THIS IS AN INCOMPATIBLE CHANGE : if an old device depends on
a device color ability, it will malfunction.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gstext.c 1.18]</p>
</blockquote>

<p><strong><a name="2004-06-01_1342"></a>
2004-06-01 13:42 Igor Melichev</strong></p>
<blockquote>
<pre>
(pdfwrite) : Implementing a dynamic recongnition for Type 3 charproc variations (continued).

DETAILS :

This is a preparation for fixing the bug 687489
"pdfwrite creates invalid Type3 font -- missing characters".
The problem happens due to the old code could run a charproc while
executing a stringwidth, when the PDF viewer state isn't syncronized
with the PS graphic state.
We don't synchronize in this case because stringwidth doesn't paint.

Our intention is to know whether a charproc changes graphic state parameters :
current color, line width, etc. For doing so we need
(1) to save the viewer state in the viewer state stack,
and then (2) synchronize with the PS graphic state without
writing commands to the PDF. This patch does provide (1)
but does not implement (2) because we want to check
the change (1) for no regressions.
The change (2) will be a separate step.

Saving a viewer state in a stack when entering a charproc
was contributed with the recent patch
http://www.ghostscript.com/pipermail/gs-cvs/2004-May/004507.html
as an improvement of pdf_enter_substream, which was called from
pdf_install_charproc_accum called from pdf_text_set_cache.
In other words, the viewer state saving was deferred until setcachedevice/setcharwidth.
However we need to save the viewer state in the beginning of a PS charproc.

This patch moves the call to pdf_enter_substream from pdf_install_charproc_accum
to the TEXT_PROCESS_RENDER branch of pdf_text_process.
We believe that the new logic is more straight :
we start the charproc stream accumulation immediately before the PS interpreter
enters a charproc interpretation.

Minor changes :

1. Defined pdf_start_charproc_accum as a symmetric one for pdf_end_charproc_accum.
2. Renamed pdf_install_charproc_accum into pdf_set_charproc_attrs.
3. Improved the argument list of pdf_prepare_text_drawing.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdti.c 1.30, src/gdevpdfx.h 1.90, src/gdevpdtt.c 1.80]</p>
</blockquote>

<p><strong><a name="2004-06-01_0237"></a>
2004-06-01 02:37 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Aviod a PostScript error in ps2ascii when the source file uses composite fonts.
For now, dump the strings in the unmodified encoding when the corresponding
font is composite.
Fix bug 687466.</pre>
<p>[lib/ps2ascii.ps 1.9]</p>
</blockquote>

<hr>

<h2><a name="Version8.30"></a>Version 8.30 (2004-05-29)</h2>

<p>
This is an beta release of the development tree. It contains numerous
new features and is made available for those interested in testing out
the new version before it becomes the next stable release.

<p> 
New features in this version :

<ul>
<li><p>
Topological grid fitting,
an original method developed for Ghostscript by Dr. Igor V. Melichev, improves 
the rendering of True Type fonts at small resolutions.
See the documentation for <a href="Language.htm#GridFitTT">GridFitTT</a> for information on this
feature.

<li><p>
The PDF writer now implements PDF 1.4 encryption.
See the <a href="Ps2pdf.htm#Encryption">encryption parameter</a> documentation for more
information.

<li><p>
A new rendering method for shadings, developed for Ghostscript by 
Dr. Igor V. Melichev, improves the quality and performance of 
rasterization on continuous tone devices.
The new method allows hardware or software acceleration with help of
customizable routines for filling areas with a linearly varying color.
functions.

<li><p>
This version contains the first release of Rinkj, an
experimental new driver for some inkjet printers using ETS screening.
See the <a href="Devices.htm#Rinkj">Rinkj</a> section for more information.

<li><p>
We now support PDF 1.5 files, including the new compression
and encryption modes.

<li><p>
We have beta support for Jpeg2000 compressed images, using the JasPer
compression library. This is only enabled as part of the default build
in the autoconf (POSIX) build system in this release.

</ul>

<p>
The following <a href="http://bugs.ghostscript.com/">bug</a> numbers were open at
the time of the last release:
<blockquote>
405501,
414947,
430175,
446344,
456692,
458780,
463688,
465936,
487460,
487953,
493348,
509829,
513731,
514194,
526099,
526491,
530011,
535366,
535932,
542629,
555072,
558151,
572865,
578865,
592160,
592837,
601336,
602263,
603934,
605830,
607850,
610478,
611898,
614298,
617523,
626295,
634036,
634358,
645316,
651644,
667301,
669654,
674417,
674418,
677324,
677430,
680301,
681469,
685335,
686747,
686750,
686752,
686816,
686819,
686824,
686833,
686834,
686841,
686842,
686843,
686853,
686860,
686863,
686865,
686867,
686873,
686889,
686896,
686897,
686902,
686904,
686919,
686930,
686936,
686937,
686954,
686956,
686958,
686963,
686980,
686996,
686999,
687011,
687012,
687013,
687020,
687021,
687029,
687038,
687039,
687050,
687063,
687066,
687072,
687079,
687084,
687085,
687086,
687093,
687095,
687102,
687105,
687108,
687110,
687122,
687123,
687125,
687137,
687145,
687146,
687155,
687157,
687163,
687168,
687171,
687174,
687179,
687181,
687193,
687196,
687197,
687203,
687211,
687214,
687219,
687221,
687229,
687230,
687231,
687243,
687251,
687257,
687259,
687271,
687275,
687280,
687289,
687295,
687297,
687298,
687303,
687304,
687314,
687316,
687322,
687324,
687325,
687327,
687331,
687341,
687342,
687345,
687346,
687355,
687360,
687364,
687369,
687373,
687375,
687380,
687386,
687388,
687392,
687394,
687395,
687397,
687398,
687399,
687401,
687403,
687406,
687407,
687410,
687411,
687412,
687414,
687419,
687421,
687424,
687426,
687428,
687434,
687435,
687436,
687437,
687438,
687440,
687441,
687442,
687444,
687445,
687446,
687448,
687451,
687452,
687454,
687458,
687459,
687460,
687461,
687463,
687465,
687466,
687467,
687468,
687470,
687471,
687473,
687474,
687475,
687476,
687477,
687479,
687480,
687481,
687484,
687485,
687486,
687487,
687489,
687490,
687491.
</blockquote>

<h3><a name="8.30_Incompatible_changes"></a>Incompatible changes</h3>

<p>
No known incompatible changes at this point

<h3><a name="8.30_changelog"></a>Changelog</h3>
 
<!-- generated from the output of cvs2cl -->

<p><strong><a href="2004-05-31_0602"></a>
2004-05-31 06:02 Dan Coby</strong></p>
<blockquote>
<pre>
Correct various compiler warnings from MSVC and gcc.  Fix for 
687441.</pre>
<p>[src/gdevdevn.h1.7, src/gdevdevn.c 1.19, src/gdevpsd.c 1.13,
src/gsequivc.c 1.2]</p>
</blockquote>

<p><strong><a name="2004-05-31_0534"></a>
2004-05-31 05:34 Ralph Giles</strong></p>
<blockquote>
<pre>
JPXDecode support is only enabled for the autoconf build. Mention this
in the release notes, and add some brief notes to the MSVC makefile
about how to make it build.</pre>
<p>[doc/News.htm 1.149, src/msvc32.mak 1.57]</p>
</blockquote>

<p><strong><a name="2004-05-31_0508"></a>
2004-05-31 05:08 Ralph Giles</strong></p>
<blockquote>
<pre>
Update the open bug list in the release notes.</pre>
<p>[doc/News.htm 1.148]</p>
</blockquote>

<p><strong><a name="2004-05-30_0950"></a>
2004-05-30 09:50 Russell Lang</strong></p>
<blockquote>
<pre>
Enable separable_and_linear and separable for the display device.
Fixes bug #687442.

DETAILS:
Enable separable_and_linear for gray, RGB and CMYK formats.
The display device needs to explicitly call check_device_separable
because it is closed and reopened when the callback is set,
which causes linear_and_separable to be reset.
Set the gray_index which is not set by check_device_separable.
Prevent the unimplemented DISPLAY_ALPHA_FIRST and
DISPLAY_ALPHA_LAST from being used.
Make it clear that the display_map_rgb_color_rgb and
display_map_color_rgb_rgb functions only work with 8bits/pixel.</pre>
<p>[src/gdevdsp.c 1.22]</p>
</blockquote>

<p><strong><a name="2004-05-29_2107"></a>
2004-05-29 21:07 Raph Levien</strong></p>
<blockquote>
<pre>
Added more news items, in preparation for 8.30 release.</pre>
<p>[doc/News.htm 1.147]</p>
</blockquote>

<p><strong><a name="2004-05-29_0219"></a>
2004-05-29 02:19 Ralph Giles</strong></p>
<blockquote>
<pre>
Relocate the gxhldevc_h macro out of order so all its dependencies are
available.</pre>
<p>[src/lib.mak 1.184]</p>
</blockquote>

<p><strong><a name="2004-05-29_0210"></a>
2004-05-29 02:10 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a dependency typo.</pre>
<p>[src/lib.mak 1.183]</p>
</blockquote>

<p><strong><a name="2004-05-29_0121"></a>
2004-05-29 01:21 Ralph Giles</strong></p>
<blockquote>
<pre>
Update documenation dates and version category for release.</pre>
<p>[doc/API.htm 1.42, doc/Bug-form.htm 1.40, doc/Bug-info.htm 1.39, doc/C-style.htm 1.46, doc/Commprod.htm 1.31, doc/Copying.htm 1.30, doc/DLL.htm 1.34, doc/Deprecated.htm 1.11, doc/Details8.htm 1.6, doc/Develop.htm 1.134, doc/Devices.htm 1.77, doc/Drivers.htm 1.46, doc/Fonts.htm 1.41, doc/Helpers.htm 1.34, doc/History1.htm 1.30, doc/History2.htm 1.30, doc/History3.htm 1.30, doc/History4.htm 1.30, doc/History5.htm 1.32, doc/History6.htm 1.47, doc/History7.htm 1.35, doc/History8.htm 1.10, doc/Htmstyle.htm 1.35, doc/Install.htm 1.45, doc/Issues.htm 1.40, doc/Language.htm 1.86, doc/Lib.htm 1.33, doc/Maintain.htm 1.41, doc/Make.htm 1.75, doc/New-user.htm 1.50, doc/News.htm 1.146, doc/Projects.htm 1.57, doc/Ps-style.htm 1.28, doc/Ps2epsi.htm 1.32, doc/Ps2pdf.htm 1.68, doc/Psfiles.htm 1.51, doc/Readme.htm 1.55, doc/Release.htm 1.85, doc/Source.htm 1.30, doc/Tester.htm 1.30, doc/Testing.htm 1.25, doc/Unix-lpr.htm 1.30, doc/Use.htm 1.109, doc/Xfonts.htm 1.30, man/dvipdf.1 1.28, man/font2c.1 1.28, man/gs.1 1.29, man/gslp.1 1.28, man/gsnd.1 1.28, man/pdf2dsc.1 1.27, man/pdf2ps.1 1.29, man/pdfopt.1 1.27, man/pf2afm.1 1.28, man/pfbtopfa.1 1.29, man/printafm.1 1.28, man/ps2ascii.1 1.27, man/ps2epsi.1 1.26, man/ps2pdf.1 1.33, man/ps2pdfwr.1 1.32, man/ps2ps.1 1.35, man/wftopfa.1 1.28, src/gscdef.c 1.43, src/version.mak 1.70]</p>
</blockquote>

<p><strong><a name="2004-05-29_0111"></a>
2004-05-29 01:11 Ralph Giles</strong></p>
<blockquote>
<pre>
Add new rinkj driver files to the index in Develop.htm.</pre>
<p>[doc/Develop.htm 1.133]</p>
</blockquote>

<p><strong><a name="2004-05-28_2358"></a>
2004-05-28 23:58 Raph Levien</strong></p>
<blockquote>
<pre>
Add sample setup file for Rinkj driver, more documentation.</pre>
<p>[doc/Devices.htm 1.76, lib/rinkj-2200-setup 1.1]</p>
</blockquote>

<p><strong><a name="2004-05-28_2350"></a>
2004-05-28 23:50 Raph Levien</strong></p>
<blockquote>
<pre>
Adds basic documentation for Rinkj driver, update copyright banners.</pre>
<p>[doc/Devices.htm 1.75, src/rinkj/evenbetter-rll.c 1.2, src/rinkj/evenbetter-rll.h 1.2, src/rinkj/rinkj-byte-stream.c 1.2, src/rinkj/rinkj-byte-stream.h 1.2, src/rinkj/rinkj-config.c 1.2, src/rinkj/rinkj-config.h 1.2, src/rinkj/rinkj-device.c 1.2, src/rinkj/rinkj-device.h 1.2, src/rinkj/rinkj-dither.c 1.2, src/rinkj/rinkj-dither.h 1.2, src/rinkj/rinkj-epson870.c 1.2, src/rinkj/rinkj-epson870.h 1.2, src/rinkj/rinkj-screen-eb.c 1.2, src/rinkj/rinkj-screen-eb.h 1.2]</p>
</blockquote>

<p><strong><a name="2004-05-28_2326"></a>
2004-05-28 23:26 Dan Coby</strong></p>
<blockquote>
<pre>
This change implements "687431 Add determining equivalent CMYK
colors for spot colors".  This change currently only affects the
psdcmyk device.

DETAILS:

For a description of the implementation see the comments at
the beginning of gsequivc.c.

In addition to the comments in gsequivc.c, the gs_separation
structure was changed to simplify it.  The gs_separation_info
structure was removed and the names filed moved into the
gs_separations structure.</pre>
<p>[src/devs.mak 1.114, src/gdevdevn.c 1.18, src/gdevdevn.h 1.6, src/gdevprn.c 1.16, src/gdevpsd.c 1.12, src/gsequivc.c 1.1, src/gsequivc.h 1.1]</p>
</blockquote>

<p><strong><a name="2004-05-28_2309"></a>
2004-05-28 23:09 Ralph Giles</strong></p>
<blockquote>
<pre>
Use ST_MTIME instead of the ctime to determine the date of the last
baseline update. Partial fix for bug 687481.</pre>
<p>[toolbin/tests/gscheck_raster.py 1.12]</p>
</blockquote>

<p><strong><a name="2004-05-28_2302"></a>
2004-05-28 23:02 Raph Levien</strong></p>
<blockquote>
<pre>
Initial commit of rinkj (resplendent inkjet) drivers, using ETS screening.</pre>
<p>[src/devs.mak 1.113, src/gdevrinkj.c 1.1, src/rinkj/evenbetter-rll.c 1.1, src/rinkj/evenbetter-rll.h 1.1, src/rinkj/rinkj-byte-stream.c 1.1, src/rinkj/rinkj-byte-stream.h 1.1, src/rinkj/rinkj-config.c 1.1, src/rinkj/rinkj-config.h 1.1, src/rinkj/rinkj-device.c 1.1, src/rinkj/rinkj-device.h 1.1, src/rinkj/rinkj-dither.c 1.1, src/rinkj/rinkj-dither.h 1.1, src/rinkj/rinkj-epson870.c 1.1, src/rinkj/rinkj-epson870.h 1.1, src/rinkj/rinkj-screen-eb.c 1.1, src/rinkj/rinkj-screen-eb.h 1.1]</p>
</blockquote>

<p><strong><a name="2004-05-28_0708"></a>
2004-05-28 07:08 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : Wrong processing of a big CIDToGIDMap.

DETAILS :

Bug 687471 problem with japanese fonts

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/pdf_font.ps 1.66]</p>
</blockquote>

<p><strong><a name="2004-05-27_1905"></a>
2004-05-27 19:05 Igor Melichev</strong></p>
<blockquote>
<pre>
(pdfwrite) : 1. Implementing a dynamic recongnition for Type 3 charproc variations;
2. Bug : Viewer state could desynchronize when entering a charproc accumulation.

DETAILS :

Bug 687472 "barcode wrongly converted to type3 font".

Type 3 glyph variations may appear if BuildChar uses setcharwidth.
If a charproc uses setcharwidth, we perform the charproc accumulation
for each character occurance, and compare the accumulated stream with older
ones if they exist. In the case of exact equality
(including the character name and character code),
the old charproc is used. Othervise we embed a new one.

If the character code was used with another charproc,
we create another PDF font to resolve the conflict.
Thus a single PS Type 3 font may convert into several
PDF Type 3 fonts, and the text may be broken into smaller pieces.
Particularly this happens with the test file of the bug 687472.
Viewers must account that implementing the text serchability.

A new array pdfont-&gt;u.simple.s.type3.cached is used to remember whether
a charproc uses setcachedevice[2]. If a character used it at ones,
we assume that all further its occurances to do same.
We think that this assumption is implied by PLRM.

Viewer state was not saved when entering a charproc accumulation,
and was not restored after exiting it (a bug).
This could cause wrong object attributes
and excessive commands written into PDF.
This patch fixes that.

Some PDFs become longer due to excessive ExtGState objects
generated for dropped copies of charprocs.
Opened a new bug 687487 for tracking this issue.

EXPECTED DIFFERENCES :

An unimportant difference with pdfwrite -r72 :
136-01.ps
prob1.pdf
tpc2.ps
xes2ps-problem.pdf

An unimportant difference with pdfwrite -r300 :
260-01.ps
tpc2.ps
xes2ps-problem.pdf</pre>
<p>[src/gdevpdf.c 1.94, src/gdevpdfg.c 1.50, src/devs.mak 1.112, src/gdevpdfg.h 1.30, src/gdevpdfj.c 1.31, src/gdevpdfu.c 1.52, src/gdevpdfx.h 1.89, src/gdevpdte.c 1.59, src/gdevpdtf.c 1.36, src/gdevpdtf.h 1.22, src/gdevpdti.c 1.29, src/gdevpdtt.c 1.79, src/gdevpdtt.h 1.23]</p>
</blockquote>

<p><strong><a name="2004-05-27_1028"></a>
2004-05-27 10:28 Igor Melichev</strong></p>
<blockquote>
<pre>
(pdfwrite) : Delaying the charproc insertion until it is accumulated.

DETAILS :

This change is a part of the work on the bug 687472 "barcode wrongly converted to type3 font".
Our intention is to recognize Type 3 glyph variations,
which may appear if BuildChar uses setcharwidth.

For the case of no error while charproc accumulation
this change should be algorithmically equivalent.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtt.c 1.78, src/gdevpdfx.h 1.88]</p>
</blockquote>

<p><strong><a name="2004-05-27_1025"></a>
2004-05-27 10:25 Igor Melichev</strong></p>
<blockquote>
<pre>
(pdfwrite) : Delaying the charproc insertion until it is accumulated.

DETAILS :

This change is a part of the work on the bug 687472 "barcode wrongly converted to type3 font".
Our intention is to recognize Type 3 glyph variations,
which may appear if BuildChar uses setcharwidth.

For the case of no error while charproc accumulation
this change should be algorithmically equivalent.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.93, src/gdevpdti.c 1.28]</p>
</blockquote>

<p><strong><a name="2004-05-27_0322"></a>
2004-05-27 03:22 Ralph Giles</strong></p>
<blockquote>
<pre>
Handle some errors that could halt the regression run.

DETAILS:

When running a raster comparison, the test case generates a ShortDescription
that includes the modification date of the baseline raster date. If no such
file exists, the baseline gs is run to create an entry. However, if that
insertion attempt fails, there is no baseline raster for reference. While
the test case itself handled this properly, the ShortDescription logic did
not, throwing an error that terminated the whole run.

Also, makesum was returning '0' instead of None on failure, which was
incompatible with the use of its return value as a dbm key. It now
returns None in that case, and when it cannot stat the file argument
at all.</pre>
<p>[toolbin/tests/gscheck_raster.py 1.11, toolbin/tests/gssum.py 1.7]</p>
</blockquote>

<p><strong><a name="2004-05-26_1549"></a>
2004-05-26 15:49 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix reference count of overprint compositor so that it doesn't get freed
too early. Fixes SEGV of bug #687425 for customer #1110.

DETAILS:

This only showed up when banding was being used.

This only showed up when a high level image was being rendered from the
clist since this installed a 'clipper' device on top of the overprint
compositor. When the clipper device was closed, the finalization proc
decremented the reference count for the 'target' device of the clipper
which was the overprint compositor. When the overprint reference count
was decremented to 0, it was freed even though it was being used by
the clist renderer.

EXPECTED DIFFERENCES:

None.</pre>
<p>[src/gxclrast.c 1.28]</p>
</blockquote>

<p><strong><a name="2004-05-26_0844"></a>
2004-05-26 08:44 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Wrong /Matrix from /BP pdfmark.

DETAILS :

Bug 687430 "Wrong transformation matrix with Form XObjects".
Patch from sags5495 at hotmail dot com (SaGS), adopted by igorm.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfm.c 1.38]</p>
</blockquote>

<p><strong><a name="2004-05-26_0410"></a>
2004-05-26 04:10 Dan Coby</strong></p>
<blockquote>
<pre>
Log message:

Revised fix for 687418 WTS does not work with bitcmyk driver.

DETAILS:

The changes in this revised fix are pretty extensive.  Note:  This
patch includes several items from Russell Lang.  I am including these
since they are required for the proper execution of the patch and
it does not seem reasonable to require possible testers or reviewers
to have to track down and install these patches separately.

The list of changes includes:

1.  Added logic to check_device_separable to also set the gray_index
value.  This suggestion came from Russell Lang.

2.  Add verification that a colorants bits are consecutive.  (from
Russell Lang in:
http://www.ghostscript.com/pipermail/gs-code-review/2004-May/004501.html

3.  Changes to gx_default_encode_color and gx_default_decode_color
to use position and bit count info from the device's color_info data.
(Also from Russell Lang in the previously mentioned submission.)
(See the comments in item 21 below about the gx_default_decode_color
routine.)

4.  Included test routines. (Also from Russell Lang in the previously
mentioned submission.)

5.  Added calls to check_device_separable prior to calls to the
various 'fill_in_procs' routines (gx_device_fill_in_procs,
gx_forward_fill_in_procs, fill_in_procs).  The fill_in_procs routines
use the separable information in choosing default routines for
the encode_color and decode_color routines.  Thus we have a chicken
and egg problem since check_device_separable also uses the device's
encode_color routine.  The test routines from Russell were a great
help in debugging

Also various changes that were found while testing this patch:

6.  The various color deskjet drivers (gdevcdj.c) was incorrectly setting
the dither_grays and dither_colors values to 5 instead of 256.  (I
have no idea why.)  The max_gray and max_color values were set to
being set correctly to 255.

7.  The color deskjet devices (gdevcdj.c) were doing BG and UCR
removal inside of the encode_color routines.  These devices use the
default color_mapping_procs which also do these tasks.  The code in
the encode_color_routine was removed since it could cause conflicts
with the overprint routines.  The code in the encode_color routine
was also using a fixed BG/UCR logic (from PS level 2).

8.  Corrected a problem in the color desk jet decode_color routine
which was always returning zero for the black value.

9.  Changed the casting for values assigned to the std_colorant_names
field.  Note:  MSVC and gcc complain about different conditions.
There does not seem to be a combination that will keep both happy.
This set produces no complaints from gcc.

10.  Corrected the setting of dither_grays and dither_colors for the
devicen device.  Previously this was being set to 1 when it should have
been set to 256.  Found by Russell Lang.

11.  Modified check_device_separable to only check for appropriate
values of the max_gray/dither_grays and max_color/dither_colors
pairs only for gray/color devices.

12.  Added check for encode_color routines which encode zero
bits for a colorant.  Previously this condition would have caused
an infinitely in check_device_separable.  Change suggested by
Russell Lang.

13.  Removed a previous call to set_linear_color_bits_mask_shift
in gx_default_fill_in_procs.  This has been logically replaced by
the calls to check_device_separable which have been added.

14.  Corrected a problem in the ppm_map_rgb_color in gdevpbm.c.
This routine was calling gx_default_encode_color which requires

15.  Corrected problem in pcx256 device which incorrectly setting
the dither_grays and dither_colors values.

16.  Removed the check_process_color_names routine from gdevpsd.c
since it not used.

17.  Modified the dci_alpha_values macro in gxdevcli.h.  This
macro was setting some devices as 'separable' but was not setting
the related color_info fields (comp_shift, comp_bits, comp_mask).
Now this macro sets a devices as 'unknown'.  The check_device_separable
routine will change this for devices which are separable.  Devices
which want to change their process color model need to either set
themselves as 'unknown' and let check_device_separable handle things
or else the device needs to setup its own values for separable
color_info fields.

18.  Added a call to check_device_separable into gdev_x_open in
gdevxini.c.  With this addition, the x11 device is detected as being
sperable.  This is need since the x11 device sets up a color map in
gdev_x_open.  Prior to this, the encode_color routine for he x11 device
returns 0 regardless of its input.

19.  Modified the uniprint device (gdevupd.c) and color laser jet
devices (gdevcljc.) to use 256 instead of 5 for its dither_gray and
dither_color values with devices that have 8 bits per colorant.  This
is appropriate since the the max_gray and max_color values are 255.
(I do not know why these values were being set to 5.  This same error
was found in gdevcdj.c.  My only guess is that it was a typo in gdevcdj.c.
Since this device is recommended as an example of how to code a color
raster device (in Devices.htm), the error was propogated into the
other devices.

20.  Added more comments to gxdevcli.h explaining the use of the
gray_index, max_gray, dither_grays, max_color, and dither_colors
fields in the device color_info structure.

21.  Changed the gx_default_decode_color routine (again).  Russell
Lang created two revisions to this routine as part of his efforts on
this task.  However one version was slow but produced the desired
results.  The second version was faster but its output was slightly
different.  This revision produces the same output as the first
version but does so without the while loops that slowed its operation.

Note:  There is another related submission from Russell Lang that is
not included in this patch.  This consists of changes to the display
device for making it 'separable'.  This change is needed for Igor's
linear shading work.
http://www.ghostscript.com/pipermail/gs-code-review/2004-May/004500.html</pre>
<p>[src/gdevcdj.c 1.14, src/gdevcljc.c 1.7, src/gdevcmap.c 1.6, src/gdevdevn.c 1.17, src/gdevdevn.h 1.5, src/gdevdflt.c 1.23, src/gdevdsp.c 1.21, src/gdevmem.c 1.8, src/gdevp14.c 1.23, src/gdevp2up.c 1.6, src/gdevpbm.c 1.11, src/gdevpcx.c 1.7, src/gdevplnx.c 1.9, src/gdevpnga.c 1.9, src/gdevprn.c 1.15, src/gdevpsd.c 1.11, src/gdevrops.c 1.11, src/gdevupd.c 1.15, src/gdevxalt.c 1.11, src/gdevxcf.c 1.7, src/gdevxini.c 1.14, src/gsdevice.c 1.21, src/gslib.c 1.13, src/gxcmap.c 1.20, src/gxdevcli.h 1.32, src/gximag3x.c 1.16, src/gximage3.c 1.13, src/gxpcmap.c 1.12, src/zcolor.c 1.18, doc/Language.htm 1.85]</p>
</blockquote>

<p><strong><a name="2004-05-25_1041"></a>
2004-05-25 10:41 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Form XObject`s /BBox could contain reals in exponential format.

DETAILS :

Bug 687429 Form XObject`s /BBox may contain reals in exponential format.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfm.c 1.37]</p>
</blockquote>

<p><strong><a name="2004-05-25_0920"></a>
2004-05-25 09:20 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix an MSVC compiler warning.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdte.c 1.58]</p>
</blockquote>

<p><strong><a name="2004-05-24_2335"></a>
2004-05-24 23:35 Ralph Giles</strong></p>
<blockquote>
<pre>
Add a missing header include for gsutil.h which provides the prototype  for bytes_compare(). Corrects a gcc warning.</pre>
<p>[src/devs.mak 1.111, src/gdevpdte.c 1.57]</p>
</blockquote>

<p><strong><a name="2004-05-24_1756"></a>
2004-05-24 17:56 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687453 Problem with overprinting and shading.

DETAILS:

The given test file is a PDF file.  PDF allows for separate overprint
parameters for stroke and fill operations.  (There are also separate
parameters for other conditions in PDF.)  Usually this is handled by
the PDF interpreter by calling either setfillstate or setstrokestate
at the start of the handler for each operator.  However this call
was missing from the sh (shfill) handler.</pre>
<p>[lib/pdf_draw.ps 1.81]</p>
</blockquote>

<p><strong><a name="2004-05-24_1221"></a>
2004-05-24 12:21 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add /WhiteIsOpaque page device parameter to provide user interface to the
corresponding bbox device flag. Fix a bug introduced in gdevbbox.c v.1.9
(for bug 645531) that left bdev-&gt;white and bdev-&gt;black uninitialized,
resulting in black objects skipped as white.
Fix bugs 687410, 687478</pre>
<p>[src/gdevbbox.c 1.17, doc/Devices.htm 1.74]</p>
</blockquote>

<p><strong><a name="2004-05-20_1706"></a>
2004-05-20 17:06 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Add Encoding element even if the font has no glyph.

DETAILS :

Debugged with the test file of the bug 687464
"Problem converting from PS to PDF. 2 latin characters did not convert properly." :
different PDFs generated with URW fonts and with Soft Horizon fonts
rather none of them were embeded.

The old code did not add a glyph to Encoding if the PS font has no glyph defined.
Due to that, if the source encoding uses an instand glyph,
the instandard glyph was not written to Differences,
causing a standard glyph erroneusely appeared instead the instandard glyph.
With this patch an Encoding element and a ToUnicode element are created in any case :
either the glyph is defined in the PS font, or not.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdte.c 1.56]</p>
</blockquote>

<p><strong><a name="2004-05-20_0741"></a>
2004-05-20 07:41 Ralph Giles</strong></p>
<blockquote>
<pre>
Apply a recursive 'configure' step to the autoconf build to generate
required code for the jasper library.

DETAILS:

The jasper library also ships with an autoconf build framework for POSIX
systems. Unfortunately, it relies on this framework to generate a header
file with defines describing the local system. This header, located in
jasper/src/libjasper/include/jas_config.h can be generated by hand from
the jas_config.h.in template, but it must be available when we're directly
compiling the source as part of Ghostscript.

We could attempt to construct one of our own, but within the confines
of an autoconf build, using jasper's native configure is more robust.
We could also go ahead and use recursive make to build the library
natively, but we would need a static makefile for non-autoconf builds.

Jasper provides an alternate header, jas_config2.h for use with MSVC.</pre>
<p>[src/configure.ac 1.46]</p>
</blockquote>

<p><strong><a name="2004-05-20_0734"></a>
2004-05-20 07:34 Ralph Giles</strong></p>
<blockquote>
<pre>
Add the jasper include path when compiling the JPXDecode filter so the
headers can be found if they're not already installed on the system.
Required to compile in the jasper library source from a fresh distribution
of the third-party library.</pre>
<p>[src/int.mak 1.126, src/lib.mak 1.182]</p>
</blockquote>

<p><strong><a name="2004-05-19_1109"></a>
2004-05-19 11:09 Igor Melichev</strong></p>
<blockquote>
<pre>
Documenting the new implementation of shadings.</pre>
<p>[doc/News.htm 1.145]</p>
</blockquote>

<p><strong><a name="2004-05-18_1342"></a>
2004-05-18 13:42 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 79.

DETAILS :

Removed unused variables.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.74]</p>
</blockquote>

<p><strong><a name="2004-05-18_1107"></a>
2004-05-18 11:07 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 78.

DETAILS :

Implementing gx_color_map_procs::is_halftoned and use it in shadings
to know whether linear color functions are applicable.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevp14.c 1.22, src/gdevplnx.c 1.8, src/gxcmap.c 1.19, src/gxcmap.h 1.8, src/gxshade6.c 1.73]</p>
</blockquote>

<p><strong><a name="2004-05-18_1036"></a>
2004-05-18 10:36 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 78.

DETAILS :

Implementing gx_color_map_procs::is_halftoned and use it in shadings
to know whether linear color functions are applicable.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevp14.c 1.21]</p>
</blockquote>

<p><strong><a name="2004-05-18_0957"></a>
2004-05-18 09:57 Igor Melichev</strong></p>
<blockquote>
<pre>
Documenting the new implementation of shadings.</pre>
<p>[doc/Drivers.htm 1.45]</p>
</blockquote>

<p><strong><a name="2004-05-17_1727"></a>
2004-05-17 17:27 Ralph Giles</strong></p>
<blockquote>
<pre>
Reword the description of the new shading implementation.</pre>
<p>[doc/News.htm 1.144]</p>
</blockquote>

<p><strong><a name="2004-05-17_1224"></a>
2004-05-17 12:24 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 77 (release candidate).

DETAILS :

1. A bug in is_quadrangle_color_linear caused an indeterministic choice of subdivision.
2. Provided a better order of filling wedges.
3. Mesh padding now stronger follows the V-boundary of a patch.

EXPECTED DIFFERENCES :

"442-01.ps"
"446-01.ps"
"483-01.ps"
"483-05-fixed.ps"
"483-05.ps"
"Clarke Tate Manns Chinese.ai"
"gradmesh.ai"
"self-intersect2.ps"
"SmoothShading.pdf"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 2(radial).ai"
"STEUER-RollingMesh 3(Final).ai"</pre>
<p>[src/gxshade6.c 1.72]</p>
</blockquote>

<p><strong><a name="2004-05-13_1524"></a>
2004-05-13 15:24 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Remove unused label.
Partial fix for bug 687441.</pre>
<p>[src/gdevwpr2.c 1.16]</p>
</blockquote>

<p><strong><a name="2004-05-13_1303"></a>
2004-05-13 13:03 Igor Melichev</strong></p>
<blockquote>
<pre>
Documenting the new implementation of shadings, step 76.</pre>
<p>[doc/News.htm 1.143]</p>
</blockquote>

<p><strong><a name="2004-05-13_1252"></a>
2004-05-13 12:52 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 76.
Switching new radial shadings on.
Radial shadings render in 3...10 times faster.
Radial shadings are not longer restricted with 8bpc.

EXPECTED DIFFERENCES :

"442-01.ps"
"483-01.ps"
"Clarke Tate Manns Chinese.ai"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 2(radial).ai"
"STEUER-RollingMesh 3(Final).ai"</pre>
<p>[src/gxshade4.h 1.35]</p>
</blockquote>

<p><strong><a name="2004-05-13_1246"></a>
2004-05-13 12:46 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 75.

DETAILS :

This is a continuation to the previous patch :
  4. Optimized for constant color :
    Fix : pfs-&gt;monotonic_color was not properly restored.

EXPECTED DIFFERENCES :

"442-01.ps"
"464-01.ps"
"483-01.ps"
"chilis_black.pdf"
"Clarke Tate Manns Chinese.ai"
"STEUER-RollingMesh 1(linear).ai"</pre>
<p>[src/gxshade6.c 1.71]</p>
</blockquote>

<p><strong><a name="2004-05-13_1140"></a>
2004-05-13 11:40 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 74.

DETAILS :

In the enabled code :

1. Non-linear color quadrangles are subdivided into quadrangles.
   This complies the color approximation with the specified smoothness.
2. Skipped quadrangles and triangles outside the clipping area.
3. Fixed the 'midpoint' formula. It was wrong and coused excessive subdivision.

In the disabled code (NEW_RADIAL_SHADINGS 0 in gxshade4.h) :

1. Debugged Extensions.
2. mesh_padding and wedges with zero length sides were tested.
3. Skipped painting outside the clipping area.
4. Optimized for constant color.

Known problems left :
1. With self-intersecting patches, outer wedges may paint in a wrong order.
This can cause such dropout that a lower part of the patch penetrates
through the upper part in single pixels.

EXPECTED DIFFERENCES :

"442-01.ps"
"446-01.ps"
"464-01.ps"
"483-01.ps"
"483-05-fixed.ps"
"483-05.ps"
"chilis_black.pdf"
"Clarke Tate Manns Chinese.ai"
"gradmesh.ai"
"Openhuis_pdf_zw.pdf"
"self-intersect2.ps"
"SmoothShading.pdf"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 3(Final).ai"
"Testform.v1.0.2.pdf"</pre>
<p>[src/gxshade1.c 1.31, src/gxshade4.h 1.34, src/gxshade6.c 1.70]</p>
</blockquote>

<p><strong><a name="2004-05-12_2133"></a>
2004-05-12 21:33 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 73.

DETAILS :

The new code is disabled with NEW_RADIAL_SHADINGS in gxshade4.h .

The old implementation of the radial shading extensions appears
incompatible with the tensor representation of the radial shading
due to different spatial subdivision. Collisions at extension
boundaries caused dropouts.

Besides that, the old implementation
can't handle the case in which circles contact each another and one
circle is inside another. Also we suspect that with the old implementation
the trailing extension can overlap the shading when represented as "triangles".

This patch implements extensions with tensor patches.
Rather they have a constant color, we need the wedge logics
to work with them. Also we reworked the analyzis of
special cases of mutual placement of the base circles.

The new code works, but there are known problems :

1. Extensions to be tested systematically.
2. Debug mesh_padding and wedges with zero length sides.
3. Skip painting outside the clipping area.
4. Optimize for constant color.
5. Why "STEUER-RollingMesh 2(radial).ai-.pdf" generates so many triangles ?
6. Outer wedges may break the order of painting.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade1.c 1.30, src/gxshade4.h 1.33, src/gxshade6.c 1.69]</p>
</blockquote>

<p><strong><a name="2004-05-12_2012"></a>
2004-05-12 20:12 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 72.

DETAILS :

1. Another continuation for the bug in LAZY_WEDGES of the step 65 :
"color was desynchronized with vertices when filling a wedge."
Previous attempts to fix it appear wrong.
This one implements entirely different logics.
The division count is now a property of a division point.

2. Fixed the wrong order of colors in ln 2800 in the function "triangles".

EXPECTED DIFFERENCES :

"442-01.ps"
"483-01.ps"</pre>
<p>[src/gxdtfill.h 1.26, src/gxshade4.h 1.32, src/gxshade6.c 1.68]</p>
</blockquote>

<p><strong><a name="2004-05-12_1808"></a>
2004-05-12 18:08 Jack Moffitt</strong></p>
<blockquote>
<pre>
Fix regression reports (the previous commit accidentally did the exact
opposite of what we wanted).  Also, cleaned up the way the report is built
so that it is much less confusing.</pre>
<p>[toolbin/tests/run_nightly 1.26]</p>
</blockquote>

<p><strong><a name="2004-05-12_1537"></a>
2004-05-12 15:37 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Avoid a numeric exception; throw /rangecheck when .getbitsrect operator is
invoked with raster width = 0.
Fix bug 687223.</pre>
<p>[src/zdevice.c 1.8]</p>
</blockquote>

<p><strong><a name="2004-05-12_1133"></a>
2004-05-12 11:33 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 72.

DETAILS :

1. A continuation for the bug in LAZY_WEDGES of the step 65 :
"color was desynchronized with vertices when filling a wedge." :
open_wedge_median did not set l-&gt;from_last_side.

2. A bug : Color linearity check missed the shading function linearity check.
Debugged with "MLC2\PROB322-shadings\Clarke Tate Manns Chinese-1.ai.pdf"
(the big yellow radial gradient) and NEW_RADIAL_SHADINGS 1.

EXPECTED DIFFERENCES :

"442-01.ps"
"464-01.ps"
"483-01.ps"
"Clarke Tate Manns Chinese.ai"
"gradmesh.ai"
"Openhuis_pdf_zw.pdf"
"STEUER-RollingMesh 1(linear).ai"</pre>
<p>[src/gxshade6.c 1.67]</p>
</blockquote>

<p><strong><a name="2004-05-12_0004"></a>
2004-05-12 00:04 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix some warnings about unused variables and undeclared functions
generated by MSVC with warning level 3. Move the definition of WARNOPT
and add ifdef's.
Partial fix for bug 687441.

[DETAILS]
Although nmake overrides internal definitions when called from command line,
it doesn't do so when the makefile is invoked from Development Studio.</pre>
<p>[src/dwimg.c 1.11, src/dwimg.h 1.8, src/dwmain.c 1.16, src/dwmainc.c 1.18, src/dwtrace.h 1.6, src/gdevm64.c 1.2, src/gdevwdib.c 1.8, src/msvc32.mak 1.56, src/msvccmd.mak 1.19, src/unistd_.h 1.11]</p>
</blockquote>

<p><strong><a name="2004-05-11_2048"></a>
2004-05-11 20:48 Alex Cherepanov</strong></p>
<blockquote>
<pre>
GCC with -ffast-math compiles ang/90. as ang*(1/90.), losing precission.
This doesn't happen when the numeral is replaced with a non-const variable.
So we define the variable to work around the GCC problem.
Fix bug 687420.</pre>
<p>[src/gsmisc.c 1.16]</p>
</blockquote>

<p><strong><a name="2004-05-11_2026"></a>
2004-05-11 20:26 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Ignore 0-length tables that occur in PDF files generated by Crystal.
Fix bug 687457.</pre>
<p>[lib/gs_ttf.ps 1.38]</p>
</blockquote>

<p><strong><a name="2004-05-11_1113"></a>
2004-05-11 11:13 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 70.

DETAILS :

Fixing a bug in fill_wedge_from_list_rec :
wedge vertices can't identify by their coordinates,
because dividing a short bar could get same coordinates as one of its end.
wedge_vertex_list_elem_t::level now works for the identification.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade4.h 1.31, src/gxshade6.c 1.66]</p>
</blockquote>

<p><strong><a name="2004-05-11_1041"></a>
2004-05-11 10:41 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 69.

DETAILS :

Implementing radial shading with tensor shadings.

The new code is disabled with NEW_RADIAL_SHADINGS in gxshade4.h .
The new code works but it discovered a problem in fill_wedge_from_list_rec :
wedge vertices can't identify by their coordinates.
The problem appears an important bug to be fixed separately.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gspath.h 1.7, src/gspath1.c 1.9, src/gxshade1.c 1.29, src/gxshade4.h 1.30]</p>
</blockquote>

<p><strong><a name="2004-05-06_1906"></a>
2004-05-06 19:06 Dan Coby</strong></p>
<blockquote>
<pre>
Correct a problem in the fix for 687418 detected by Russell Lang.  Also
make the routine check_device_separable public for use by the display
device.  The prototype is in gxdevice.h.</pre>
<p>[src/gdevdflt.c 1.22, src/gxdevice.h 1.17]</p>
</blockquote>

<p><strong><a name="2004-05-06_1719"></a>
2004-05-06 17:19 Dan Coby</strong></p>
<blockquote>
<pre>
Disable the fix for 687418.  This is causing many errors in the regression
tests.  These need to be investigated.</pre>
<p>[src/gdevdflt.c 1.21]</p>
</blockquote>

<p><strong><a name="2004-05-06_1626"></a>
2004-05-06 16:26 Jack Moffitt</strong></p>
<blockquote>
<pre>
Repress the full report except on Mondays.</pre>
<p>[toolbin/tests/run_nightly 1.25]</p>
</blockquote>

<p><strong><a name="2004-05-06_1401"></a>
2004-05-06 14:01 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 68.
Switching linear color device fucntions on.

EXPECTED DIFFERENCES :

"442-01.ps"
"446-01.ps"
"464-01.ps"
"478-01.ps"
"483-01.ps"
"483-05-fixed.ps"
"483-05.ps"
"BEST8-99-Path.fh7.pdf"
"chilis_black.pdf"
"chilis_red.pdf"
"Clarke Tate Manns Chinese.ai"
"gradmesh.ai"
"Openhuis_pdf_zw.pdf"
"self-intersect2.ps"
"SmoothShading.pdf"
"STEUER-RollingMesh 1(linear).ai"
"STEUER-RollingMesh 3(Final).ai"
"Testform.v1.0.2.pdf"</pre>
<p>[src/gxshade4.h 1.29]</p>
</blockquote>

<p><strong><a name="2004-05-06_1325"></a>
2004-05-06 13:25 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 67.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
Provided a consistency of 'unlenear' to 'is_color_linear'

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.65]</p>
</blockquote>

<p><strong><a name="2004-05-06_1303"></a>
2004-05-06 13:03 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 66.

DETAILS :

Improving the recognition of linear devices with a hack for a halftone check.
The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
Debugged with pkmraw.
This to be rivised by the color team.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.64]</p>
</blockquote>

<p><strong><a name="2004-05-06_1234"></a>
2004-05-06 12:34 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 65.

DETAILS :

A bug in LAZY_WEDGES :
color was desynchronized with vertices when filling a wedge.

The bug was not detected because
the color difference appears small due to small wedges.
It appears big with USE_LINEAR_COLOR_PROCS 1 with -r300 483-01.ps.

EXPECTED DIFFERENCES :

300dpi :

"442-01.ps"
"446-01.ps"
"464-01.ps"
"483-01.ps"
"483-05-fixed.ps"
"483-05.ps"
"gradmesh.ai"
"SmoothShading.pdf"
"STEUER-RollingMesh 3(Final).ai"
"442-01.ps"

72dpi:

"442-01.ps"
"446-01.ps"
"483-01.ps"
"483-05-fixed.ps"
"483-05.ps"
"gradmesh.ai"
"SmoothShading.pdf"
"STEUER-RollingMesh 3(Final).ai"</pre>
<p>[src/gxshade6.c 1.63, src/gxshade4.h 1.28]</p>
</blockquote>

<p><strong><a name="2004-05-06_0841"></a>
2004-05-06 08:41 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 64.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .

Fixing various problems with linear color :
1. Clipping didn't work with linear color.
2. gx_default_fill_linear_color_scanline missed some clipping by X.
3. Zero smoothness caused an infinite recursion.
4. The number of device color components was wrong.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevdsha.c 1.9, src/gxclip.c 1.14, src/gxshade6.c 1.62]</p>
</blockquote>

<p><strong><a name="2004-05-06_0746"></a>
2004-05-06 07:46 Ralph Giles</strong></p>
<blockquote>
<pre>
Limit the number of timing runs we're willing to do to detect the cache
size, preventing an infinite loop if the os timing calls never measure
appreciable elapsed time. After a patch from Patrick TJ McPhee. Bug 687095.

DETAILS:

It looks like there's a bug in some versions of FreeBSD which cause
time_clear() to always return 0, even though the loop is being run.
This is clearly incorrect behaviour of clock() on these systems,
or the user is mistaken in debugging the problem, since we've been
unable to reproduce. But in either case our code is arguably wrong.

The later measurements will obviously not detect a nonlinearity if
the timing loop continues to return 0. However, they will terminate
at MAX_BLOCK (4MB) and so the misdetection isn't egregious. It was
only the estimation of the measurement error that could loop forever.</pre>
<p>[src/genarch.c 1.9]</p>
</blockquote>

<p><strong><a name="2004-05-06_0620"></a>
2004-05-06 06:20 Dan Coby</strong></p>
<blockquote>
<pre>
Make check_device_separable private to avoid a warning from gcc.</pre>
<p>[src/gdevdflt.c 1.20]</p>
</blockquote>

<p><strong><a name="2004-05-06_0549"></a>
2004-05-06 05:49 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687455.  The overprint logic creates a temporary device which is
used to initialize a set of procedures.  This temp device is only paritally
initialized.  The partially initialized device is being set up as a
forwarding device but the target device is not yet present.  This created
a problem when check_device_separable executed.  This change sets the temp
device to 'not separable' so check_device_separable does not try to do
anything.</pre>
<p>[src/gsovrc.c 1.5]</p>
</blockquote>

<p><strong><a name="2004-05-06_0519"></a>
2004-05-06 05:19 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 63.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .

Fixing various problems with linear color :
1. Applyed compiler independent data types int32_t.
2. Implemented ends_from_fa with X-independent gradients,
   because the decomposiotion by color linearity breaks
   at coordinates which are not trapezoid corners.
   Added a comment to gxdevcli.h to document it.
3. X-gradient denominator was wrong.
4. X-gradient numerator left wrong from the step 58.
5. gx_default_fill_linear_color_scanline ignored the clipping by X.
6. A_fill_region missed the path bbox.
7. Implemented is_color_linear for a proper subdivision by color.
8. decompose_linear_color now applies a linear color
   instead fill_triangle_wedge. See a comment in fill_triangle_wedge.
   Also for mesh_padding.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevddrw.c 1.24, src/gdevdsha.c 1.8, src/gdevnfwd.c 1.22, src/gxdevcli.h 1.31, src/gxdtfill.h 1.25, src/gxshade1.c 1.28, src/gxshade6.c 1.61]</p>
</blockquote>

<p><strong><a name="2004-05-06_0517"></a>
2004-05-06 05:17 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing is_monotonic for cubic interpolation functions (continued 2).

DETAILS :

Some monotonic functions were not recognized.
1. Fix : A bug (identifier conflict) in clamp_poles, dimension_monotonity.
2. Fix : Allow the reversed order of boundaries (gsfunc0.c ln 980-983).

EXPECTED DIFFERENCES :

464-01.ps</pre>
<p>[src/gsfunc0.c 1.20]</p>
</blockquote>

<p><strong><a name="2004-05-05_2355"></a>
2004-05-05 23:55 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687418 WTS does not work with bitcmyk driver.  This fix
is applicable to most devices.

DETAILS:

WTS screening, overprinting, halftoning for more than five colorants
and the fast halftoning logic need to be able to create gx_color_index
values without using the encode_color routine.  This only works if a
device is 'separable'.  However, by default, most devices indicate
'unknown'.  This change implements a heuristic for checking if a
device is separable.  If so then it also determines the various
related parameter values (comp_shift, comp_bits, comp_mask).</pre>
<p>[src/gdevdflt.c 1.19]</p>
</blockquote>

<p><strong><a name="2004-05-05_2252"></a>
2004-05-05 22:52 Ralph Giles</strong></p>
<blockquote>
<pre>
Document that we no longer support loading truetype CJK fonts directly from
/Resources/CIDFont as worked in 7.0x for Japanese fonts. This has been replaced
by the more general, if less convenience, cidfmap mechanism. Closes bug 686949.</pre>
<p>[doc/Fonts.htm 1.40, doc/Use.htm 1.108]</p>
</blockquote>

<p><strong><a name="2004-05-05_0945"></a>
2004-05-05 09:45 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 62.

DETAILS :

1. Implemented gx_cspace_is_linear_in_line and applied it for
checking the stripe transversal color lnearity.
2. Generalized 'is_halftoned' to 'unlinear'.
3. is_color_span_v_linear must not apply when 'unlinear'.

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gscspace.c 1.15, src/gxshade4.h 1.27, src/gxshade6.c 1.60]</p>
</blockquote>

<p><strong><a name="2004-05-05_0902"></a>
2004-05-05 09:02 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 61.

DETAILS :

1. is_color_span_v_linear allows wider stripes.
2. quadrangle_color_change doesn't yield color_change_gradient with USE_LINEAR_COLOR_PROCS.
   Thus it prefers color_change_linear, allowing bigger quadrangles.
Both changes improve the performance.

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
In the enabled code removed redundant computations from quadrangle_color_change.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.59]</p>
</blockquote>

<p><strong><a name="2004-05-05_0901"></a>
2004-05-05 09:01 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing is_monotonic for cubic interpolation functions (continued 1).

DETAILS :

1. Fix : subcurve expression applied wrong signs to t01, t11.
2. Suppress small noize while computing a subcurve.
Both changes recognize more monotonic curves.

EXPECTED DIFFERENCES :

464-01.ps</pre>
<p>[src/gsfunc0.c 1.19]</p>
</blockquote>

<p><strong><a name="2004-05-05_0635"></a>
2004-05-05 06:35 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 60.

DETAILS :

Define frac31 with int32_t to minimize compiler dependence.

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxdevcli.h 1.30, src/lib.mak 1.181]</p>
</blockquote>

<p><strong><a name="2004-05-04_2131"></a>
2004-05-04 21:31 Ralph Giles</strong></p>
<blockquote>
<pre>
Replace locally-defined (u)int32 typedefs with the stdint_.h types now
that they're universally available. This avoids conflict with typedefs
that are pulled in from sys/types.h on some systems. Bug 687404.</pre>
<p>[src/gdevupd.c 1.14]</p>
</blockquote>

<p><strong><a name="2004-05-04_1814"></a>
2004-05-04 18:14 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 59.

DETAILS :

Moved the device pointer from gs_fill_attributes to a separate argument
in order to simplify the implementation of forwarding devices.
A farwarding device 'clipper' works for almost all shadings.

Also fixed a bug in middle_frac31_color from the previous patch.
It was not detected because normally this function isn't called.

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevddrw.c 1.23, src/gdevdsha.c 1.7, src/gdevnfwd.c 1.21, src/gxdevcli.h 1.29, src/gxdtfill.h 1.24, src/gxshade6.c 1.58]</p>
</blockquote>

<p><strong><a name="2004-05-04_1753"></a>
2004-05-04 17:53 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 58.

DETAILS :

Replaced frac32 with frac31 to represent negative color difference.
We could do with frac32 and with additional arguments about the
ending color, but we don't want the performance flaw.
31 bits should be enough precise.
Also removed hacks about fitting negative differences into int32_t.

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevddrw.c 1.22, src/gdevdsha.c 1.6, src/gdevnfwd.c 1.20, src/gxdevcli.h 1.28, src/gxdtfill.h 1.23, src/gxshade6.c 1.57]</p>
</blockquote>

<p><strong><a name="2004-05-02_2124"></a>
2004-05-02 21:24 Ralph Giles</strong></p>
<blockquote>
<pre>
Add recent new files to the listing in the developer documentation.</pre>
<p>[doc/Develop.htm 1.132]</p>
</blockquote>

<p><strong><a name="2004-05-02_2030"></a>
2004-05-02 20:30 Ralph Giles</strong></p>
<blockquote>
<pre>
Add the JPXDecode implementation to the list of files in the documentation.</pre>
<p>[doc/Develop.htm 1.131]</p>
</blockquote>

<p><strong><a name="2004-05-02_1937"></a>
2004-05-02 19:37 Ralph Giles</strong></p>
<blockquote>
<pre>
Add a missing file to the testsuite documentation.</pre>
<p>[doc/Testing.htm 1.24]</p>
</blockquote>

<p><strong><a name="2004-05-02_1926"></a>
2004-05-02 19:26 Ralph Giles</strong></p>
<blockquote>
<pre>
Return the number of failures on exit so an external program can take action on the results. Previously, our tests always returned 0.
----------------------------------------------------------------------</pre>
<p>[toolbin/tests/gstestutils.py 1.12]</p>
</blockquote>

<p><strong><a name="2004-05-02_1923"></a>
2004-05-02 19:23 Ray Johnston</strong></p>
<blockquote>
<pre>
Remove dependency on python2.2. Tested with python 2.3.3. Primary problem
was that calendar module no longer has a localtime member, used time instead.</pre>
<p>[toolbin/tests/check_all.py 1.6, toolbin/tests/check_comments.py 1.4, toolbin/tests/check_dirs.py 1.9, toolbin/tests/check_docrefs.py 1.10, toolbin/tests/check_source.py 1.10, toolbin/tests/dump_testdb 1.6, toolbin/tests/get_baselines 1.3, toolbin/tests/gscheck_all.py 1.6, toolbin/tests/gscheck_fuzzypdf.py 1.8, toolbin/tests/gscheck_pdfwrite.py 1.20, toolbin/tests/gscheck_raster.py 1.10, toolbin/tests/make_testdb 1.12, toolbin/tests/make_two_pdfversions 1.8, toolbin/tests/make_two_versions 1.13, toolbin/tests/revert_baseline 1.12, toolbin/tests/revert_pdfbaseline 1.10, toolbin/tests/run_nightly 1.24, toolbin/tests/run_regression 1.13, toolbin/tests/testdiff 1.5, toolbin/tests/update_baseline 1.13, toolbin/tests/update_pdfbaseline 1.9]</p>
</blockquote>

<p><strong><a name="2004-05-02_1900"></a>
2004-05-02 19:00 Ralph Giles</strong></p>
<blockquote>
<pre>
Avoid failing when testing.cfg isn't available. This allows check_all.py to be run on a fresh checkout just by passing --gsroot=. on the commandline. Previously this option could only be used to override a required version in testing.cfg</pre>
<p>[toolbin/tests/gstestutils.py 1.11]</p>
</blockquote>

<p><strong><a name="2004-04-30_2231"></a>
2004-04-30 22:31 Ralph Giles</strong></p>
<blockquote>
<pre>
Provide a dummy 'make check' target in the autoconf build. Some users have requested this,
and it's available on the GPL 7.0x releases.</pre>
<p>[src/Makefile.in 1.35]</p>
</blockquote>

<p><strong><a name="2004-04-29_1851"></a>
2004-04-29 18:51 Dan Coby</strong></p>
<blockquote>
<pre>
Remove some more compiler warnings.  Found by Igor.  687441.</pre>
<p>[src/gdevpsd.c 1.10]</p>
</blockquote>

<p><strong><a name="2004-04-29_1618"></a>
2004-04-29 16:18 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 57.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
1. Likely QUADRANGLES 1 appears unusefil. Documenting that.
2. Implementing mesh_padding with linear color.
3. Minor improvements to conmments.
4. Stronger conditions against color stairs in triangle_by_4, color_change_small.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxdevcli.h 1.27, src/gxshade4.h 1.26, src/gxshade6.c 1.56]</p>
</blockquote>

<p><strong><a name="2004-04-29_1347"></a>
2004-04-29 13:47 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 56.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
The previous patch appears incomplete. Now fixed.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade4.h 1.25]</p>
</blockquote>

<p><strong><a name="2004-04-29_1340"></a>
2004-04-29 13:40 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 55.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
Implemented a check whether the device halftones.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.55]</p>
</blockquote>

<p><strong><a name="2004-04-29_1238"></a>
2004-04-29 12:38 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 54.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .

1. Color computations were wrong.
2. clist didn't implement linear color functions.
   This patch stubs them, but fill_linear_color_trapesoid should write
   into clist.
3. The clipping rectangle was missed for shading Type 0, 5.

It still has problems with clipping with 446-01.ps .
Also likely we should replace frac32 with frac31 to provide signed values.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevddrw.c 1.21, src/gdevdsha.c 1.5, src/gdevnfwd.c 1.19, src/gxclist.c 1.13, src/gxdevcli.h 1.26, src/gxdtfill.h 1.22, src/gxshade1.c 1.27, src/gxshade4.c 1.26]</p>
</blockquote>

<p><strong><a name="2004-04-29_0614"></a>
2004-04-29 06:14 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 53.

DETAILS :

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
This patch implements wedges with a linear color.
USE_LINEAR_COLOR_PROCS 1 passed a simple test with ppmraw.
Other devices are not yet supported due to problems with
checking for a halftoning.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevddrw.c 1.20, src/gxdtfill.h 1.21, src/gxshade6.c 1.54]</p>
</blockquote>

<p><strong><a name="2004-04-29_0437"></a>
2004-04-29 04:37 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 52.

DETAILS :

Linear color passed a simple test with ppmraw, except wedges.
The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
This patch fixes numerows errors in the desabled code.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevddrw.c 1.19, src/gdevdsha.c 1.4, src/gscspace.c 1.14, src/gxdtfill.h 1.20, src/gxshade6.c 1.53, src/lib.mak 1.180]</p>
</blockquote>

<p><strong><a name="2004-04-28_1641"></a>
2004-04-28 16:41 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687441 New: MSVC warnings.  Correct some warning messages from
MSVC.</pre>
<p>[src/devs.mak 1.110, src/gdevpsd.c 1.9, src/gdevdevn.c 1.16, src/gdevdevn.h 1.4]</p>
</blockquote>

<p><strong><a name="2004-04-28_1524"></a>
2004-04-28 15:24 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 51.

DETAILS :
Colors were wrongly converted to frac32. Should do through device color.

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
The new code is not debugged yet.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.52]</p>
</blockquote>

<p><strong><a name="2004-04-28_0939"></a>
2004-04-28 09:39 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 50.

DETAILS :

1. gx_default_fill_linear_color_triangle wrongly checked for a large color span.
2. fill_linear_color_* procs were not set for clip devices.
3. cs_is_linear were defined with a wrong argument list.
4. Optimized the prototype of cs_proc_is_linear.
5. Gradient buffers were not allocated in gxdtfill.h .
6. Attaching fill_linear_color_triangle to triangle_by_4 in shadings.

The new code is disabled with USE_LINEAR_COLOR_PROCS in gxshade4.h .
The new code is not debugged yet.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevddrw.c 1.18, src/gdevrops.c 1.10, src/gscspace.c 1.13, src/gxclip.c 1.13, src/gxclip2.c 1.10, src/gxclipm.c 1.12, src/gxcspace.h 1.12, src/gxdtfill.h 1.19, src/gxshade4.h 1.24, src/gxshade6.c 1.51]</p>
</blockquote>

<p><strong><a name="2004-04-28_0539"></a>
2004-04-28 05:39 Dan Coby</strong></p>
<blockquote>
<pre>
Implement 687423  Implement SeparationOrder for psdcmyk device.

DETAILS:

The following changes are for implementing the SeparationOrder
parameter for the psdcmyk device.

The change consists of the following:

1.  Several routines which were duplicated in the spotcmyk
and psdcmyk devices were restructured to allow the use of
common subroutines.  As part of this effort the various
common DeviceN related parameters were separated into a
substructure (call devn_params).  This allows the use of
common routines even though the devices do not have the
same overall device description structure.

2.  Changes to the src/gdevpsd.c module for actually collecting
the SeparationOrder parameter data and then using it.  Note:
The treatment of separations is different for the process
color model colorants versus the spot colors.  The colorants for
the process color model do not have their order changed.  The
output file always starts with information for the CMYK channels.
If one of these colorants is not specified in the SeparationOrder,
then the output channel data in the file will simply be 'blank'.
Spot colors follow CMYK data.  They are rearranged.  Only the
spot colors specified are output.

3.  Several checks in src/gdevdflt.c and src/gxcmap.c had to
be removed or modified.  These checks were assuming that a
device with a single component uses a gray process color
model and a device with three components used RGB.</pre>
<p>[src/gdevdevn.c 1.15, src/gdevdevn.h 1.3, src/gdevdflt.c 1.18, src/gdevpsd.c 1.8, src/gsdparam.c 1.13]</p>
</blockquote>

<p><strong><a name="2004-04-28_0406"></a>
2004-04-28 04:06 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 49.

DETAILS :

1. gx_default_fill_linear_color_trapezoid wrongly subdivided big areas :
   the edge height was not reduced. It could cause an infinite loop.

2. Removed c_prec, x_prec.

The new code is never called and never tested.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevddrw.c 1.17, src/gxdtfill.h 1.18]</p>
</blockquote>

<p><strong><a name="2004-04-28_0235"></a>
2004-04-28 02:35 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 48a.

DETAILS :

Removing the unused gdevdsha.h .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevdsha.h 1.2]</p>
</blockquote>

<p><strong><a name="2004-04-28_0226"></a>
2004-04-28 02:26 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 48.

DETAILS :

Removing a code of dead development branches.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade4.h 1.23, src/gxshade6.c 1.50]</p>
</blockquote>

<p><strong><a name="2004-04-27_0826"></a>
2004-04-27 08:26 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 47.

DETAILS :

Implementing gx_default_fill_linear_color_triangle, step 2 :
fixing interface problems.
The new code is never called and never tested.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevddrw.c 1.16, src/gxdevcli.h 1.25]</p>
</blockquote>

<p><strong><a name="2004-04-27_0812"></a>
2004-04-27 08:12 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 46.

DETAILS :

Implementing gx_default_fill_linear_color_triangle.
The new code is never called and never tested.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevddrw.c 1.15, src/gxdevcli.h 1.24]</p>
</blockquote>

<p><strong><a name="2004-04-27_0604"></a>
2004-04-27 06:04 Ralph Giles</strong></p>
<blockquote>
<pre>
Add makefile support for compiling in the jasper JPEG 2000 library,
needed to support the JPXDecode filter in PDF 1.5. Currently only
enabled in the autoconf build, but porting the changes to other top-level
makefiles should now work.</pre>
<p>[src/Makefile.in 1.34, src/configure.ac 1.45, src/gs.mak 1.26, src/jasper.mak 1.1, src/lib.mak 1.179]</p>
</blockquote>

<p><strong><a name="2004-04-27_0601"></a>
2004-04-27 06:01 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct two typos in the jasper local source directory detection. It was
erroneously resetting the jbig2dec local source directory and not reporting
the found location correctly.</pre>
<p>[src/configure.ac 1.44]</p>
</blockquote>

<p><strong><a name="2004-04-27_0543"></a>
2004-04-27 05:43 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 45.

DETAILS :

Implementing a linear color for filling a trapezoid.
This patch provides necessary data exchange.
The new code is never called and never tested.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevddrw.c 1.14, src/gdevdsha.c 1.3, src/gdevnfwd.c 1.18, src/gxdevcli.h 1.23, src/gxdtfill.h 1.17, src/lib.mak 1.178]</p>
</blockquote>

<p><strong><a name="2004-04-23_1230"></a>
2004-04-23 12:30 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Keep calculation in signed types to avoid conversion of the negative
int to the big positive long, which caused infinite loop on Alpha in
t1_hinter__adjust_matrix_precision() inline function.
Fix bug 687417.</pre>
<p>[src/gxhintn.c 1.48]</p>
</blockquote>

<p><strong><a name="2004-04-22_0638"></a>
2004-04-22 06:38 Ralph Giles</strong></p>
<blockquote>
<pre>
Document the use of .setpdfwrite and the relation of vmthreshold to the
accumulation of shared object data in the pdfwrite device. Closes bug
687409.</pre>
<p>[doc/Language.htm 1.84, doc/Ps2pdf.htm 1.67, doc/Use.htm 1.107]</p>
</blockquote>

<p><strong><a name="2004-04-17_1830"></a>
2004-04-17 18:30 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 44.

DETAILS :

The function fill_pixel appears unuseful.
Now it is replaced with fill_linear_color_scanline.
This patch also defines a default implementation.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevdflt.c 1.17, src/gdevdsha.c 1.2, src/gdevnfwd.c 1.17, src/gxdevcli.h 1.22, src/gxdevice.h 1.16, src/lib.mak 1.177]</p>
</blockquote>

<p><strong><a name="2004-04-15_2250"></a>
2004-04-15 22:50 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing color mapping linearity checks, step 2.

DETAILS :

Fix the color index decomposition in gx_cspace_is_linear_in_triangle.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gscspace.c 1.12]</p>
</blockquote>

<p><strong><a name="2004-04-15_1726"></a>
2004-04-15 17:26 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix to make sure that both stroke (CA) and non-stroke (ca) opacity is set.
Support for customer #32 that wants to create transparent effects in PDF
from PostScript input.

DETAILS:

Previously the opacity was set for one or the other (whichever was first)
and only updated when the value changed. Since the 'state' only retained
a single value, the following PS snippet would not set the CA value as it
should to 0.5. Since we never use the 'b/B' fill + stroke painting methods
(our graphics library currently has no device function for this), a PDF
that contains a 'b' method will be decomposed into a 'f' followed by 's'
operation, setting the opacity from the PDF interpreter's retained ca/CA
between the operations.

PostScript snippet to test this:

&lt;&lt; /CompatibilityLevel 1.4 &gt;&gt; setpagedevice
	% work around rectfill mapping directly to device fill_rectangle
/rectfill { gsave 4 2 roll moveto 1 index 0 rlineto
  0 exch rlineto neg 0 rlineto closepath fill grestore
} bind def
	% Do some background -- not transparent painting mode
0 0 0 setrgbcolor 0 0 600 700 rectfill
.7 .7 .7 setrgbcolor 200 0 400 700 rectfill
1 1 1 setrgbcolor 400 0 200 700 rectfill
	% Go to a transparent painting mode
/Normal .setblendmode .5 .setshapealpha
	% paint some shapes transparently
.9 .8 .1 setrgbcolor 100 100 450 450 rectfill
	% The next stroke is non-transparent w/o the patch
.2 .2 .9 setrgbcolor 50 setlinewidth 50 700 moveto 450 -650 rlineto stroke
.7 .setshapealpha
.9 .3 .3 setrgbcolor 50 setlinewidth 50 50 moveto 450 650 rlineto stroke
showpage quit</pre>
<p>[src/gdevpdfg.c 1.49]</p>
</blockquote>

<p><strong><a name="2004-04-15_1647"></a>
2004-04-15 16:47 Ray Johnston</strong></p>
<blockquote>
<pre>
Correction to previous commit that caused Subtype value to be consumed
if it was not a null name. Valid files would fail.</pre>
<p>[lib/pdf_font.ps 1.65]</p>
</blockquote>

<p><strong><a name="2004-04-14_0002"></a>
2004-04-14 00:02 Dan Coby</strong></p>
<blockquote>
<pre>
Fix 687189 for bbox_forward_add_rect infinite recursion.
This problem caused segment faults or apparent hangs with
the x11alpha device.  This fix also works for 656414
segfault when using x11alpha

DETAILS:

The problem was due to the bounding box device creating
more and more bounding box devices in the device chain
when the overprint compositor was being used.  The x11alpha
device uses the bounding box device.  The overprint logic
uses the 'create compositor' logic when a change is made
in the status of the overprint or overprint mode parameters.
However a new compositor is not created each time.  Instead
the overprint device simply updates its parameters.  The
bounding box device has its own create compositor.  This
routine would call its target device's create compositor
routine and then wraps a new bounding box device around the
target's compositor.  The combination of many create
compositor calls from the overprint logic and the fact that
the bounding box device adds a new bounding box device
could result in hundreds of bounding devices in the chain.

The fix consists of checking if the bounding box's target
device actually created a new compositor device.  Only when
a new compositor was added is a new bounding box also added
to the chain.</pre>
<p>[src/gdevbbox.c 1.16]</p>
</blockquote>

<p><strong><a name="2004-04-13_2325"></a>
2004-04-13 23:25 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687402 Missing color on annots.pdf.  This is actually
not an error.  Instead it is due to some confusion about the
displaying of link annotations.

DETAILS:

To prevent confusion, the following two paragraphs of explanation
were added to the first page of the examples/annots.pdf example file.

"IMPORTANT NOTE ABOUT THIS PAGE: This page was created for the testing
 the display of link annotation parameters. The file was created using
 Adobe Acrobat 5.0 (and modified using Acrobat 6.0). The displaying of
 each annotation is specified in the annotation. By default, Acrobat sets
 link annotations so that they are normally displayed by 'viewer'
 applications. They are not normally displayed in printed output. That is
 the case with these annotations.

 Ghostscript checks the display specifications for each annotation. By
 default, Ghostscript assumes that the output is 'printed' if the
 'OutputFile' parameter is defined. Adding '-dPrinted=false' to the command
 line will force Ghostscript to display 'viewer' annotations in all output.
 Adding '-dPrinted=true' will disable the displaying of these annotations."</pre>
<p>[examples/annots.pdf 1.2]</p>
</blockquote>

<p><strong><a name="2004-04-13_1632"></a>
2004-04-13 16:32 Ray Johnston</strong></p>
<blockquote>
<pre>
Handle (yet another) invalid PDF that Adobe Acrobat can open. If the
Font /Subtype is / then assume Type1. Also issue a **** WARNING message.
Bug #687422 for Artifex customer #670.

DETAILS:

This is a simple patch, with known limitations if the actual font type
cannot be handled by the buildType1 procedure. Only Type1 and MMfonts
will work correctly. Since the PDF is invalid, we will leave more vigorous
handling until another different PDF file surfaces.</pre>
<p>[lib/pdf_font.ps 1.64]</p>
</blockquote>

<p><strong><a name="2004-04-10_1714"></a>
2004-04-10 17:14 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use ld_length instead of length because RMap is a long dictionary.
Fix bug 687363.</pre>
<p>[toolbin/pdfinflt.ps 1.5]</p>
</blockquote>

<p><strong><a name="2004-04-09_0620"></a>
2004-04-09 06:20 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 44.

DETAILS :

Propagate return codes frpom patch_color_to_device_color.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.49]</p>
</blockquote>

<p><strong><a name="2004-04-08_1618"></a>
2004-04-08 16:18 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct DOS line endings accidentally committed to the repository.
Bug 687415.</pre>
<p>[lib/dumphint.ps 1.2, src/dwdll.c 1.7, src/dwimg.c 1.10, src/dwnodll.c 1.6, src/errors.h 1.10, src/gp_dosfs.c 1.17, src/gp_vms.c 1.38, src/gscolor.c 1.13, src/gscolor1.c 1.10, src/math_.h 1.7, src/windows_.h 1.6, src/zfont42.c 1.19, toolbin/tests/fuzzy.c 1.14]</p>
</blockquote>

<p><strong><a name="2004-04-08_0759"></a>
2004-04-08 07:59 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing color mapping linearity checks, step 1.

DETAILS :

Color mapping linearity check rutines will be used to improve
the performance and quality of shadings. They check
whether a color mapping is quazi-linear within a subdomain.
The subdomain is specified as a convex hull of a set of colors.

This patch defines prototypes and the default implemetation.
They are not called and not debugged.
The purpose of this commit is a codebase synchronization before a project switch.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gscdevn.c 1.16, src/gscolor2.c 1.20, src/gscpixel.c 1.11, src/gscscie.c 1.11, src/gscsepr.c 1.23, src/gscspace.c 1.11, src/gsicc.c 1.13, src/gspcolor.c 1.13, src/gxcspace.h 1.11]</p>
</blockquote>

<p><strong><a name="2004-04-07_1510"></a>
2004-04-07 15:10 Raph Levien</strong></p>
<blockquote>
<pre>
Fix: Disables platfonts when antialiasing is in effect. Improves rendering
quality, and fixes bug 687368.</pre>
<p>[src/gxchar.c 1.42]</p>
</blockquote>

<p><strong><a name="2004-04-02_1421"></a>
2004-04-02 14:21 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : /XObject &lt;&lt;-1 0 R&gt;&gt; was written to a pattern dictionary.

DETAILS :

Bug 687396 "PDF Conversion of PS doc fails with large image"
happened to a delayed object ID assignment.
Delay adding the resource until an ID is assigned.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfj.c 1.30]</p>
</blockquote>

<p><strong><a name="2004-04-02_0706"></a>
2004-04-02 07:06 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Restoring the non-cache-device constraint in setcolor.

DETAILS :

It was removed by a recent patch, but PLRM3 page 215 requires it.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gscolor2.c 1.19]</p>
</blockquote>

<p><strong><a name="2004-04-02_0219"></a>
2004-04-02 02:19 Ray Johnston</strong></p>
<blockquote>
<pre>
Dump output from 'attrib -H dosdefault' to the bit bucket (nul:) to
eliminate a potentially confusing warning.</pre>
<p>[src/msvccmd.mak 1.18]</p>
</blockquote>

<p><strong><a name="2004-04-01_2039"></a>
2004-04-01 20:39 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (Type 1 hinter) : Skip empty hint ranges, improved.

DETAILS :

The previous patch caused a regression with 86554321.pdf .
This one fixes that.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxhintn.c 1.47]</p>
</blockquote>

<p><strong><a name="2004-04-01_1958"></a>
2004-04-01 19:58 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (Type 1 hinter) : Skip empty hint ranges.

DETAILS :

Bug 687393 "Hang with 8.14 from command line".
The test document embeds a font with a hint mask,
which defines a stem range with 'closepath' only.
t1_hinter__skip_stem couldn't handle this case,
because we exclude 'closepath' from the pole list.
We believe that the font is buggy, but provide a tolerance.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxhintn.c 1.46]</p>
</blockquote>

<p><strong><a name="2004-04-01_1335"></a>
2004-04-01 13:35 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc compiler warnings.

DETAILS :

./src/gstext.c:83: warning: suggest explicit braces to avoid ambiguous `else'

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gstext.c 1.17]</p>
</blockquote>

<p><strong><a name="2004-04-01_1323"></a>
2004-04-01 13:23 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : MSVC6 compiler warnings.

DETAILS :

An "initialized data" warning appeared when MSVC6 performs a release build
with inline optimizations on (The inline optimization inlines small function bodies,
being not marked with the inline keyword).

1. The "uninitialized data" warning in alloc_name_index_is_since_save
in isave.c was a real bug with an indeterministic behavior :
nref.tas.rsize was accessed by names_index_inline from names_string_inline
from alloc_name_is_since_save from alloc_name_index_is_since_save
with no advance initialization.
This bug was not detected because this function is only
invoked when a 'save' unwinds glyph names added to an incremental font,
but doesn't unwind the font - we have no such examples.
IMO existing PS drivers never cvreate such documents.

2. The "uninitialized data" warning in cos_array_add_object appears due to
cos_copy_element_value copies entire 'value' when another variant of an union
has a bigger size and was uninitialized.
The copying of the uninitialized data looks not harmful due to the 'int' type,
but generally it could cause an interrupt on platforms with a tagged memory.
We prefer to suppress the warning with an unuseful initialization,
because the processor time consumption is pretty small and happens not frequently.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfo.c 1.29, src/isave.c 1.10]</p>
</blockquote>

<p><strong><a name="2004-04-01_1143"></a>
2004-04-01 11:43 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 43.

DETAILS :

Defining new device virtual functions for filling with a linear color.
This only defines but never uses them.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevdflt.c 1.16, src/gdevdsha.c 1.1, src/gdevdsha.h 1.1, src/gdevnfwd.c 1.16, src/gxdevcli.h 1.21, src/gxdevice.h 1.15, src/lib.mak 1.176]</p>
</blockquote>

<p><strong><a name="2004-04-01_1130"></a>
2004-04-01 11:30 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : setcachedevice must not depend on a BuildChar color and on gx_show_text_retry.

DETAILS :

1. The bug 687391 "assert src/gxccman.c:557 again" happened
   because BuildChar changed the current color before
   setcachedevice calls compute_glyph_raster_params,
   and the raster params computed differently than
   during the advance glyph raster cache lookup.

2. Removed
     if (pgs-&gt;in_cachedevice)
 	return_error(gs_error_undefined);
   from gs_setcolor,
   because I can't guess it's reason/purpose.
   It looks as a rudiment from a pre-repository versions.

3. The assertion also failed with
   "-dTextAlphaBits=4 -dLastPage=1 comparefiles\xgfddg.pdf".
   In gx_add_cached_char added the case "cc-&gt;pair == NULL" :
	    /* gx_show_text_retry could reset it when bbox_draw
	       discovered an insufficient FontBBox and enlarged it.
	       Glyph raster params could change then. */

4. gx_show_text_retry must reset penum-&gt;pair due to possible FontBBox change,
   see (3).

5. The cc_set_pair macro to be applied for changing cc-&gt;pair
   to provide consistent data for font_dir_reloc_ptrs.

EXPECTED DIFFERENCES :

None with regular regression test.

Normal with -r72 -dTextAlphaBits=4 -dAlignToPixels=0 :

"213-01.ps"
"214-01.ps"
"244-01.ps"
"245-07.ps"
"245-13.ps"
"245-17.ps"
"258-01.ps"
"270-01.ps"

Normal with -r300 -dTextAlphaBits=4 -dAlignToPixels=0 :

"245-07.ps"
"270-01.ps"

-dTextAlphaBits=2 : not tested.
-dAlignToPixels=1 : not tested.</pre>
<p>[src/gscolor2.c 1.18, src/gxccache.c 1.30, src/gxccman.c 1.25, src/gxchar.c 1.41, src/gxtext.h 1.15]</p>
</blockquote>

<p><strong><a name="2004-04-01_0646"></a>
2004-04-01 06:46 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for premature freeing of a 'image' device (makeimagedevice or the
similar makewordimagedevice). Bug #687227. Thanks to Alex Cherepanov for
the patch.</pre>
<p>[src/gsdevmem.c 1.6]</p>
</blockquote>

<p><strong><a name="2004-04-01_0614"></a>
2004-04-01 06:14 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for inherited MediaBox for the page Group dictionary (transparency).
Bug #687293. Thanks to Felix Pahl for the analysis and fix.</pre>
<p>[lib/pdf_main.ps 1.86]</p>
</blockquote>

<p><strong><a name="2004-04-01_0451"></a>
2004-04-01 04:51 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687390 GhostScript 8.11 inserts rendering artifacts
with GIFs as source.  The actual problem is an error which
resulted in a pale yellow being shown as a pale pink.  This
occurs when dithering on devices which use a 256 color palette.

DETAILS

The halftoning logic assumes that there are the same number
of shades of each color.  However the 256 color palette
devices were using a 7x7x5 color cube.  I.e. there were 7
shades of red and green, however there were only 5 shades of
blue.  The data in the device's color_info (max_color, max_gray,
dither_colors, and dither_grays) indicated that there were
7 shades.  The halftoning logic, using this information, was
attempting to display the given pale yellow color by dithering
between 6/7ths and 7/7ths of each component.  However the
encode_color routine returned colors which include solid blue
for all cases.  This biased the resulting halftoned color
toward blue.

The fix involves changing the 256 color palette devices to
use a 6x6x6 color cube.  The same routine pc_8bit_map_rgb_color
is used for all of the 256 color palette devices.  Thus the
change consists of modifying this routine and the associated
pc_8bit_map_color_rgb routine.  The specification of each of
the devices has to be changed to represent the change in the
cube size.</pre>
<p>[src/gdevbmp.c 1.9, src/gdevcgm.c 1.10, src/gdevp2up.c 1.5, src/gdevpccm.c 1.6, src/gdevpccm.h 1.7, src/gdevpcx.c 1.6, src/gdevpng.c 1.10, src/gdevsvga.c 1.6]</p>
</blockquote>

<p><strong><a name="2004-03-25_1735"></a>
2004-03-25 17:35 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : Stack balance was broken when a CID font is not embedded.

DETAILS :

It was broken since pdf_font.ps rev.1.59.
Bug 687384 "/invalid font in -dict-".

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/pdf_font.ps 1.63]</p>
</blockquote>

<p><strong><a name="2004-03-25_1446"></a>
2004-03-25 14:46 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (Type 1 hinter) : Use a weaker condition for horizontal stem recognition.

DETAILS :

Alignment zones were not applied due to a quazy horizontal segment
was not considered as a hiorizontal one. We think that the font
has an inaccurate glyph design, but we provide more tolerance.
Likely Adobe does the same.

Bug 687385 "fonts different heights with 75 dpi".

EXPECTED DIFFERENCES :

72 dpi :

251-01.ps
289-01.ps
455690.pdf
86554321.pdf
alphabet.ps
dave.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
prob.pdf"
RealCities.pdf
S2_Digitalproof-Forum_x3k.pdf
Svd.pdf
test.pdf
test2.pdf
test2a.pdf

300 dpi :

033-52-5873.pdf
289-01.ps
455690.pdf
86554321.pdf
alphabet.ps
bulletin.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
pdfopt_bug.pdf
prob.pdf
S2_Digitalproof-Forum_x3k.pdf
Svd.pdf
test.pdf
test2.pdf
test2a.pdf</pre>
<p>[src/gxhintn.c 1.45]</p>
</blockquote>

<p><strong><a name="2004-03-24_2346"></a>
2004-03-24 23:46 Ralph Giles</strong></p>
<blockquote>
<pre>
Remove an empty '#' line. Closes bug 687377.</pre>
<p>[src/stdint_.h 1.3]</p>
</blockquote>

<p><strong><a name="2004-03-24_0856"></a>
2004-03-24 08:56 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for unnecessary re-link when building on Windows. Bug #687059.

DETAILS:

Since 'dosdefault' was not being made, make always did the link. Create
a dummy "result" being a file named dosdefault and make works as Igor
wants.</pre>
<p>[src/msvccmd.mak 1.17]</p>
</blockquote>

<p><strong><a name="2004-03-24_0730"></a>
2004-03-24 07:30 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : TK was written into a charproc.

DETAILS :

Bug 687382 "fonts not printed with pdf 1.4".

EXPECTED DIFFERENCES :

None.
Ghostscript PDF interpreter appears insensible to it. Adobe does.</pre>
<p>[src/gdevpdfg.c 1.48]</p>
</blockquote>

<p><strong><a name="2004-03-24_0729"></a>
2004-03-24 07:29 Ralph Giles</strong></p>
<blockquote>
<pre>
Make use of the SYS_TYPES_HAS_STDINT_TYPES define we set in the configure script. After a patch
from Alex Cherepanov. Bug 687377.

Also, adopt elif, since we've been using it elsewhere to no ill effect.</pre>
<p>[src/stdint_.h 1.2]</p>
</blockquote>

<p><strong><a name="2004-03-24_0638"></a>
2004-03-24 06:38 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for incorrect Annotation scaling when an Appearance (/AP) had
scaling that was not unity (1) and the Subtype was not /Stamp.
Fixes Bug #687288 for customer #32.

DETAILS:

The scaling difference in the annotation (object 14 0) was due to
Ghostscript not recognizing the bsiTextStamp annotation Subtype.

Careful reading of the Adobe PDF specification says that if there
is an Appearace stream (/AP dict), then the Form XObject should be
scaled using the method that we perviously only used for /Stamp
Subtype annotations (calcstampscale). The section of the PDF 1.5
Reference Manual is 8.4.4.

The patch is fairly simple, but testing of the regression suite
showed one file, foo.pdf, that was missing the require /Rect entry
in the Annot dict. The patch includes a check and warning for this
problem.

EXPECTED DIFFERENCES:

With this patch, some of the regression files will have slightly
different scaling for some of the annotations, but the differences
are all too small to compare to Adobe. The largest variations are
seen with annots.pdf (our test file) where the scaling ranges from
a low of 0.979191 to a high of 1.01636. The files are:

filename                        scaling range (was 1)
01_001.PDF                      1.0
SyscoCorrugatedprintcard.pdf    1.0 .. 1.00268
annots.pdf                      0.979191 .. 1.01636
rf1025.PDF                      0.998471

IMO, these are all close enough to be considered progressions.</pre>
<p>[lib/pdf_draw.ps 1.80]</p>
</blockquote>

<p><strong><a name="2004-03-24_0620"></a>
2004-03-24 06:20 Ralph Giles</strong></p>
<blockquote>
<pre>
Adobe no longer provides a public link to DistillerParameters.pdf. Link to a hopefully somewhat
stable directory from which the inspired user can register and download the documentation.</pre>
<p>[doc/Ps2pdf.htm 1.66]</p>
</blockquote>

<p><strong><a name="2004-03-24_0612"></a>
2004-03-24 06:12 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687364 rangecheck in buildshading2 from Quark XPress PS file.
This fix involves the creation of the findcmykcustomcolor and
setcustomcolor functions.

DETAILS:

Ray found that the error message was due to an invalid shading
dictionary being given to shfill.  The dictionary has a function
which has a single input and a single output.  The numbers are
determined from the sizes of the Domain and Range arrays.  Since
the shading dictionary is using a DeviceCMYK color space, Ghostscript
is generating a rangecheck since the function does not have four
outputs.

The file is generating an invalid shading dictionary.  Specifically
it generates:

sh:  &lt;&lt; /Coords [0 0 0 1] /ColorSpace [/DeviceCMYK] /Function &lt;&lt;
/BitsPerSample 8 /Ra
nge [0 1] /FunctionType 0 /Domain [0 1] /DataSource
(\200\200\200\201\201\202\202\203
\203\204\204\205\205\206\206\207\207\210\210\211\211\212\212\213\213\214\214
\215\215\
216\216\217\217\220\220\221\221\222\222\223\223\224\224\225\225\226\226\227\
227\230\2
30\231\231\232\232\233\233\234\234\235\235\236\236\237\237\240\240\241\241\2
42\242\24
3\243\244\244\245\245\246\246\247\247\250\250\251\251\252\252\253\253\254\25
4\255\255
\256\256\257\257\260\260\261\261\262\262\263\263\264\264\265\265\266\266\267
\267\270\
270\271\271\272\272\273\273\274\274\275\275\276\276\277\277\300\300\301\301\
302\302\3
03\303\304\304\305\305\306\306\307\307\310\310\311\311\312\312\313\313\314\3
14\315\31
5\316\316\317\317\320\320\321\321\322\322\323\323\324\324\325\325\326\326\32
7\327\330
\330\331\331\332\332\333\333\334\334\335\335\336\336\337\337\340\340\341\341
\342\342\
343\343\344\344\345\345\346\346\347\347\350\350\351\351\352\352\353\353\354\
354\355\3
55\356\356\357\357\360\360\361\361\362\362\363\363\364\364\365\365\366\366\3
67\367\37
0\370\371\371\372\372\373\373\374\374\375\375\376\376\377) /Order 1 /Size
[256] &gt;&gt; /S
hadingType 2 &gt;&gt;

The file was sent into Adobe Distiller 6.0.  Inside the resulting
PDF file there is a very different shading dictionary:  Specifically:

/sh: &lt;&lt; /ColorSpace [/Separation /MEZZO__1 /DeviceCMYK -array-] /Coords [0 0
0 1] /Function &lt;&lt; /Decode [0 1] /FilePosition 460412 /Range [0 1] /Filter
/FlateDecode /BitsPerSample 8 /Encode [0 255] /Length 255 /FunctionType 0
/File -file- /Domain [0 1] /DataSource
(\200\200\200\201\201\202\202\203\203\204\204\205\205\206\206\207\207\210\21
0\211\211\212\212\213\213\214\214\215\215\216\216\217\217\220\220\221\221\22
2\222\223\223\224\224\225\225\226\226\227\227\230\230\231\231\232\232\233\23
3\234\234\235\235\236\236\237\237\240\240\241\241\242\242\243\243\244\244\24
5\245\246\246\247\247\250\250\251\251\252\252\253\253\254\254\255\255\256\25
6\257\257\260\260\261\261\262\262\263\263\264\264\265\265\266\266\267\267\27
0\270\271\271\272\272\273\273\274\274\275\275\276\276\277\277\300\300\301\30
1\302\302\303\303\304\304\305\305\306\306\307\307\310\310\311\311\312\312\31
3\313\314\314\315\315\316\316\317\317\320\320\321\321\322\322\323\323\324\32
4\325\325\326\326\327\327\330\330\331\331\332\332\333\333\334\334\335\335\33
6\336\337\337\340\340\341\341\342\342\343\343\344\344\345\345\346\346\347\34
7\350\350\351\351\352\352\353\353\354\354\355\355\356\356\357\357\360\360\36
1\361\362\362\363\363\364\364\365\365\366\366\367\367\370\370\371\371\372\37
2\373\373\374\374\375\375\376\376\377) /Size [256] &gt;&gt; /ShadingType 2 &gt;&gt;

This dictionary has a Separation color space.  The given function
is a reasonable function to use with the Separation color space.
As Ray mentioned, it is not correct for a DeviceCMYK color space.

The file is generating a different dictionary for the two interpreters.
In the case of Ghostscript, the dictionary is invalid,

Backtracking through the various procsets inside of the given file
shows that is a mess of function definitions, followed by replacement
of the functions with new definitions.  Some of it may be Quarks.
Some of it is labeled:

%%BeginResource: file Jaws_custom_colour_blend_level3_emulation 2.1 0

The results of the search are:

1.  Ghostscript does not define 'setcustomcolor' but Adobe Distiller
6.0 does define it.

2.  The procsets in the file do provide a definition for
setcustomcolor.  Actually the file provides about 16 versions of
setcustomcolor.  However the versions provided in the file do
not work.

The PLRM does not mention setcustomcolor.  However it is
described in Adobe's "Technical Note #5044 Color Separation
Conventions for PostScript Language Programs".  TN 5044 says:

"The following "operators" are not defined in the PostScript
Language Reference Manual, but should be used as pseudo-operators
in your PostScript language output. Separation applications from
Adobe Systems and other vendors will redefine these convention
operators to separate your documents.  Your application should
conditionally define procedures with these special names, as shown
later in this document."

The fix to the problem is to provide the functions:
findcmykcustomcolor and setcustomcolor.  These are placed at the
end of the lib/gs_lev2.ps.  They are placed there because the
implementation requires Separation color spaces which is a level
2 feature.</pre>
<p>[lib/gs_lev2.ps 1.31]</p>
</blockquote>

<p><strong><a name="2004-03-23_1230"></a>
2004-03-23 12:30 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : GenericResourceDir was not listed in PermitFileReading.

DETAILS :

Problems happened when gs/lib is specified with -I, and gs/Resource is not.
Bug 687381 "pdfwrite can't start with -dSAFER -Id:/path/lib".

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/gs_init.ps 1.106]</p>
</blockquote>

<p><strong><a name="2004-03-23_0659"></a>
2004-03-23 06:59 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a number of warnings.

DETAILS:

Apply const appropriately so gcc doesn't warn about assignment of string
literals.

Remove an inappropriate const in a function argument.

ifdef out the debug printout function since it's not called without
JPX_DEBUG.</pre>
<p>[src/sjpx.c 1.8]</p>
</blockquote>

<p><strong><a name="2004-03-22_0123"></a>
2004-03-22 01:23 Ralph Giles</strong></p>
<blockquote>
<pre>
SunOS 5.9 does not properly replace files with ln -sf. Unlink the
existing files instead. Closes bug 687378.</pre>
<p>[autogen.sh 1.4]</p>
</blockquote>

<p><strong><a name="2004-03-21_2235"></a>
2004-03-21 22:35 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for a long standing problem that could cause characters to be dropped
when reading a file with the 'read' operator. Bug #687374 for customer #310.

DETAILS:

This was caused by the zread function reading the character (sgetc)
prior to invoking the 'push' macro which could return with
e_stackoverflow (discarding the character). The stackoverflow can
happen more frequently than at MaxOpStack level since the stack
is allocated as blocks, using the e_stackoverflow to signal the
need to add more stack blocks, then retrying the operation.
Fix for characters dropped from a file when using the 'read' operator.
Bug #687374 for customer #310.

DETAILS:

This was caused by the zread function reading the character (sgetc)
prior to invoking the 'push' macro which could return with
e_stackoverflow (discarding the character). The stackoverflow can
happen more frequently than at MaxOpStack level since the stack
is allocated as blocks, using the e_stackoverflow to signal the
need to add more stack blocks, then retrying the operation.</pre>
<p>[src/zfileio.c 1.16]</p>
</blockquote>

<p><strong><a name="2004-03-19_1008"></a>
2004-03-19 10:08 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT interpreter) : Subglyphs could be placed to wrong coordinates.

DETAILS :

1. When a subglyph position is specified with a reference to an outline point,
the index of the point was interpreted wrongly and could use an
undefined data with an indeterministic result.

Bug 687366 "Font missing umlaut".

2. Shifting a subglyph, matrices like [xx 0 0 1 0 0] were misinterpreted as identity.

EXPECTED DIFFERENCES :

Testform.v1.0.2.pdf - a progression with umlaut over 'u' in the word 
"Drummer".</pre>
<p>[src/ttfmain.c 1.27]</p>
</blockquote>

<p><strong><a name="2004-03-19_0952"></a>
2004-03-19 09:52 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Zero text length caused an access to an uninitialized data.

DETAILS :

Detected by Dan with MSVC .NET 2003.
Rather the result did not depend on the data,
the access could cause a floating point interrupt.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdte.c 1.55]</p>
</blockquote>

<p><strong><a name="2004-03-19_0830"></a>
2004-03-19 08:30 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix to implement PDF specification for '/' as a valid name as opposed to
the PS token scanning. Previously //name would be incorrectly scanned as
an immediately evaluated name rather than two names '/' and '/name' which
is correct. Fixes Bug #687277 for customer #440.

DETAILS:

Care is taken to reset the scanner behaviour after a PDF file is finished
and also after an invalid number is scanned. Note that to reset the flag,
the parameter must be set to 'null', not 'false' due to the implementation
in the ztoken.c. Caveat impelementor.

Previously the PDFScanRules was set when an invalid number was found and
was never reset, so this may result is *LOTS* of pdfformaterror messages
for files that have lots of invalid format numbers, but that's what they
get. If this is ever a problem, reseting the PDFScanInvNum can be moved
to pdf_main.ps where PDFScanRules is set to null.

No expected differences.</pre>
<p>[lib/pdf_base.ps 1.42, lib/pdf_main.ps 1.85, src/iscan.c 1.17, src/iscan.h 1.9, src/iscannum.c 1.8, src/ztoken.c 1.13]</p>
</blockquote>

<p><strong><a name="2004-03-19_0537"></a>
2004-03-19 05:37 Ralph Giles</strong></p>
<blockquote>
<pre>
Rename the DEBUG_JPX symbol to JPX_DEBUG to match the others we've
defined for the JPXDecode source.</pre>
<p>[src/sjpx.c 1.7]</p>
</blockquote>

<p><strong><a name="2004-03-19_0536"></a>
2004-03-19 05:36 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct our YCrCb to RGB conversion code. Subtract the proper bias to
center the chromaticity channels around zero if they are returned
unsigned. Move the clamp routines to after the conversion to RGB where
it does some good. Thanks to Raph Levien for his help with this code.

We now use our conversion code by default, since there are some problems
with the jasper library's conversion on big-endian platforms. The jasper
conversion can be reenabled by defining JPX_USE_JASPER_CM in the
preprocessor.</pre>
<p>[src/sjpx.c 1.6]</p>
</blockquote>

<p><strong><a name="2004-03-18_1756"></a>
2004-03-18 17:56 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix name of file in raster directory so that update_pdfbaseline will be
run when needed (when new files are added).</pre>
<p>[toolbin/tests/gscheck_pdfwrite.py 1.19]</p>
</blockquote>

<p><strong><a name="2004-03-18_1659"></a>
2004-03-18 16:59 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 43.

DETAILS :

1. An optimization :

If an area has a monotonic color,
each subarea has a monotonic color as well,
so the color monotonity doesn't need to recompute.
Doing so because the color monotonity function is not fast
when appied to a ShadingType 1 with a bicubic color interpolation.

2. Bug: is_color_monotonic returned 'true' when the intrval
has zero width by the 1st coordinate.
This is wrong for with ShadingType 1, which uses a 2-argument function.
( The check was a rudiment from a 1 month old implementation of fn_Sd_is_monotonic,
  which returned 'false' when the low boundary is at the end of some cell,
  and the upper boundary is at the beginning of the next cell.
  Actually this case is a zero width interval and the function must return true.
)

EXPECTED DIFFERENCES :

A minor difference in colors :

442-01.ps
464-01.ps
Clarke Tate Manns Chinese.ai
STEUER-RollingMesh 1(linear).ai</pre>
<p>[src/gxshade4.h 1.22, src/gxshade6.c 1.48]</p>
</blockquote>

<p><strong><a name="2004-03-18_1233"></a>
2004-03-18 12:33 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing is_monotonic for cubic interpolation functions.

DETAILS :

The old code ignores extremes of a cubic interpolation function
(except ones at a cell boundary).
It could cause a wrong rendering of shadings with replacing a
randomly big part of the shading near an extremum with a constant color.
The new code fixes that.

The new code caches the interpolation coefficients.
This may cause problems if the function data stream is
modified after the function is build. Likely this must not cause
problems due to gs/lib caches the stream with ReusableStreamDecode.
Also we don't know practical cases.
POLE_CACHE_IGNORE 1 avoids this problem with some slowdown,
(the slowdown exponentially grows with &gt;=3 arguments,
but again we don't know practical examples with &gt;=3 arguments).

The configuration flag POLE_CACHE allows to revert to the old code.

Bug 687352 "is_monotonic isn't implemented for 3d order sampled function".

EXPECTED DIFFERENCES :

464-01.ps - A minor difference in color.</pre>
<p>[src/gsfunc0.c 1.18, src/gsfunc0.h 1.6]</p>
</blockquote>

<p><strong><a name="2004-03-17_2306"></a>
2004-03-17 23:06 Ralph Giles</strong></p>
<blockquote>
<pre>
Clamp and origin shift the chromaticity values in our JPXDecode filter's
YUV to RGB conversion code. This still does not produce correct output
with libjasper's output, but is an improvement. This change affects
disabled code only.</pre>
<p>[src/sjpx.c 1.5]</p>
</blockquote>

<p><strong><a name="2004-03-16_1139"></a>
2004-03-16 11:39 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A floating point interrupt.

DETAILS :

MSVC7 applies a floating point (FP) operations to copy FP data.
This may cause interrupts if the data is not initialized and represent an invalid FP number.

gdev_vector_dopath_segment passed an unitialized data as an argument.
Rather the callee never use them, an interrupt happens while building the argument list.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevvec.c 1.21]</p>
</blockquote>

<p><strong><a name="2004-03-16_0300"></a>
2004-03-16 03:00 Ralph Giles</strong></p>
<blockquote>
<pre>
Use the jasper library's internal color conversion function to convert
non-rgb multicomponent images to sRGB.

DETAILS:

As of jasper 1.701.0 this function does not work correctly on powerpc.
However, it's better than our own routine, which I've had trouble
getting working with the Y(')CbCr samples returned from the library.</pre>
<p>[src/sjpx.c 1.4]</p>
</blockquote>

<p><strong><a name="2004-03-16_0216"></a>
2004-03-16 02:16 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687337 Zerodivide in cie_cache_mult.  Note:  There
was a typo in the previous fix.

DETAILS:

The direct cause of the problem, and also the reason that we
have not seen this problem in real world files is that the
050-01.ps test file contains the following color rendering
dictionary.

/RenderDict2
12 dict begin
  /BlackPoint [ 0 0 0 ] def
  /ColorRenderingType 1 def
  /EncodeABC [ {} {} {} ] def
  /EncodeLMN [ {} {} {} ] def
  /MatrixABC [ 0 0 0  0 0 0  0 0 0 ] def
  /MatrixLMN [ 0 0 0  0 0 0  0 0 0 ] def
  /RangeABC [ 0 1  0 1  0 1 ] def
  /RangeLMN [ 0 1  0 1  0 1 ] def
  /RangePQR [ 0 1  0 1  0 1 ] def
  /TransformPQR [ {} {} {} ] def
  /WhitePoint [ 1 1 1 ] def

Note:  The matrices full of zeroes do not represent real
world data.  The zero matrices will result in all output
component values being zero no matter what the inputs.

Using this data, Ghostscript uses the given ranges and
matrices to calculate values for DomainABC and DomainLMN.
The results are [0, 0] for each domain.  The domain values
are later used to calculate a scaling factors which is
also 0.  Calculations, which use one of these values as
a divisor, then generate a divide by zero exception.

One option to fix this problem would be to check for zero
before doing any calculations with the scaling factors.
However another and simpler option is to check for the zero
factors when they are crated and set the value to a value
which will not cause the divide problem.  Note:  Even though
we are using a dummy factor (1.0), the zero matrices still
result in zero output values from the calculations.</pre>
<p>[src/gscie.c 1.16]</p>
</blockquote>

<p><strong><a name="2004-03-16_0207"></a>
2004-03-16 02:07 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687337 Zerodivide in cie_cache_mult.

DETAILS:

The direct cause of the problem, and also the reason that we
have not seen this problem in real world files is that the
050-01.ps test file contains the following color rendering
dictionary.

/RenderDict2
12 dict begin
  /BlackPoint [ 0 0 0 ] def
  /ColorRenderingType 1 def
  /EncodeABC [ {} {} {} ] def
  /EncodeLMN [ {} {} {} ] def
  /MatrixABC [ 0 0 0  0 0 0  0 0 0 ] def
  /MatrixLMN [ 0 0 0  0 0 0  0 0 0 ] def
  /RangeABC [ 0 1  0 1  0 1 ] def
  /RangeLMN [ 0 1  0 1  0 1 ] def
  /RangePQR [ 0 1  0 1  0 1 ] def
  /TransformPQR [ {} {} {} ] def
  /WhitePoint [ 1 1 1 ] def

Note:  The matrices full of zeroes do not represent real
world data.  The zero matrices will result in all output
component values being zero no matter what the inputs.

Using this data, Ghostscript uses the given ranges and
matrices to calculate values for DomainABC and DomainLMN.
The results are [0, 0] for each domain.  The domain values
are later used to calculate a scaling factors which is
also 0.  Calculations, which use one of these values as
a divisor, then generate a divide by zero exception.

One option to fix this problem would be to check for zero
before doing any calculations with the scaling factors.
However another and simpler option is to check for the zero
factors when they are crated and set the value to a value
which will not cause the divide problem.  Note:  Even though
we are using a dummy factor (1.0), the zero matrices still
result in zero output values from the calculations.</pre>
<p>[src/gscie.c 1.15]</p>
</blockquote>

<p><strong><a name="2004-03-16_0125"></a>
2004-03-16 01:25 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687349 A wrong comment for gx_device_color_s.  This change
modifies the comment on ccolor and the related variable ccolor_valid.</pre>
<p>[src/gsdcolor.h 1.14]</p>
</blockquote>

<p><strong><a name="2004-03-15_2047"></a>
2004-03-15 20:47 Ralph Giles</strong></p>
<blockquote>
<pre>
Correctly calculate row offsets for copying JPXDecode filter results so
multi-component images are indexed correctly. Also split the jpxd
process code into several helper functions for readability.

Support subsampled YUV images properly. Subsampled pixels are
replicated, not interpolated. Colorspace conversion from YCrCb to RGB is
still incorrect.</pre>
<p>[src/sjpx.c 1.3, src/sjpx.h 1.2]</p>
</blockquote>

<p><strong><a name="2004-03-15_0954"></a>
2004-03-15 09:54 Igor Melichev</strong></p>
<blockquote>
<pre>
MSVC compiler: allowing Precompiled Headers, Incremental Compilation, Edit &amp; Continue.

DETAILS :

These options are applied to debug build only.
They dramatically improve the development technology.

Automated Precompiled Header speeds up the compilation slightly.
For best results should reorganize gs header files.

Incremental Compilation speeds up the rebuilding after editing source code.

Edit&amp;Continue is a powerful tool for debugging. Together with incremental compilation
it allows to regenerate the object code during a debug session,
and continue the debugging with the new code without restarting the program.
Press F10 after you changes source code and enjoy.
F7 resets the session - forget it.
Another related tool is the "Set instruction pointer" debugger command,
which is available only from Tools/Customize/Commands/Debug.
It looks as an yellow arrow with a blue thin curved arrow.
Move it to your toolbar and enjoy.

Also enabled the incremental linking.

YOU NEED TO REBUILD ALL AT ONCE to activate these tools.

Tested with MSVC 6, should also work wirth MSVC 7.
Had no chance to test MSVC 5. A help wanted.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/msvccmd.mak 1.16]</p>
</blockquote>

<p><strong><a name="2004-03-14_2210"></a>
2004-03-14 22:10 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : A Cygwin/gcc warning.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/zpcolor.c 1.14]</p>
</blockquote>

<p><strong><a name="2004-03-14_2202"></a>
2004-03-14 22:02 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : CIDMap was wrongly created from CIDToGIDMap.

DETAILS :

CIDMap size was equal to CIDCount, which gs_ttf.ps sets to the number of glyphs.
With a non-Identity CIDToGIDMap it appears wrong,
causing some valid CIDs to be out of range and to print as a notdef character.

Bug 687351 "Embedded TTF font in PDF incorrectly displayed.".

EXPECTED DIFFERENCES :

Bug687351.pdf</pre>
<p>[lib/gs_ttf.ps 1.37, lib/pdf_font.ps 1.62]</p>
</blockquote>

<p><strong><a name="2004-03-14_2201"></a>
2004-03-14 22:01 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Crash after adding a glyph over a preallocated limit of a CIDFontType 2.

DETAILS :

Working on bug 687351 with CAIB_highres_page4.pdf, we detected a set of old bugs.
They caused a heap corruption and crash.
To reproduce the crash apply the patch of the bug 687351 to lib/pdf_font.ps
(that patch will be committed AFTER this one).

1. pdf_resize_resource_arrays was called with a wrong array size (gdevpdtc.c).
2. pdf_resize_resource_arrays did not expand CIDToGIDMap (gdevpdtf.c).
3. gs_type42_glyph_info accepted a wrong type of the return value of get_glyph_index.
4. Copying a CIDFontType 2, CIDCount was wrong (gxfcopy.c).
5. pdf_obtain_cidfont_resource wrongly processed the case of shared font descendents :
   font compatibility was not checked, rather they may have different Metrics,
   Metrics2, CDevProc, CIDMap (gdevpdtt.c).
6. Implemented a dynamic expansion of CIDMap for copied fonts.
7. In font copies CIDMap used the code 0xFFFF for representing unmapped glyphs.
8. Inserted the comment into gdevpdtf.c :
    /* fixme : Likely pdfont-&gt;u.cidfont.CIDToGIDMap duplicates
       pdfont-&gt;FontDescriptor-&gt;base_font-&gt;copied-&gt;client_data-&gt;CIDMap.
       Only difference is 0xFFFF designates unmapped CIDs.
     */
9. same_cid0_hinting must not check FDBytes (gxfcopy.c).

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtc.c 1.35, src/gdevpdtf.c 1.35, src/gdevpdtt.c 1.77, src/gstype42.c 1.44, src/gxfcopy.c 1.42]</p>
</blockquote>

<p><strong><a name="2004-03-14_1126"></a>
2004-03-14 11:26 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : XObject's resources were placed wrongly.

DETAILS :

Bug 687350 "Wrong placement for Form XObjects' resources"

For Form XObjects created using /BP pdfmarks, the resources dictionary entries
are placed into the dict part of the XObject itself, instead of being placed
into a dictionary referenced by the /Resources key.

Patch from SaGS (See the bug report).
Thanks to SaGS (Sorry, never got his/her name.).

EXPECTED DIFFERENCES :

Bug687350.ps</pre>
<p>[src/gdevpdfm.c 1.36]</p>
</blockquote>

<p><strong><a name="2004-03-13_2231"></a>
2004-03-13 22:31 Ray Johnston</strong></p>
<blockquote>
<pre>
Add support for 16 bit deep images that is part of PDF 1.5.

Expected Differences:

None.</pre>
<p>[src/gxi16bit.c 1.1, src/gximage.h 1.7, src/gxino16b.c 1.1, src/gxipixel.c 1.10, src/int.mak 1.125, src/lib.mak 1.175, src/spdiff.c 1.6, src/spdiffx.h 1.5, src/zfdecode.c 1.6, src/zimage.c 1.13]</p>
</blockquote>

<p><strong><a name="2004-03-13_1828"></a>
2004-03-13 18:28 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing current point with double precision.

DETAILS :

The old code stores the current point in pgs-&gt;ppath-&gt;position
with the 'fixed' representation in the device space coordinates.
This appears insufficiently precise if a document constructs a path
with multiple 'rlineto' or 'rcurveto'. A significant to error accumulation happens.

We implement the current point with 'double', duplicating pgs-&gt;ppath-&gt;position
with the new field gs_imager_state::current_point.
We can't replace pgs-&gt;ppath-&gt;position with the new one due to several reasons :

- Sometimes (in the text processing, in arc processing and in reversepath)
  a new current point is computed when imager state is not accessible.
- Don't want to spend processor time for conversion double to fixed,
  whenever a fixed is needed.
- Don't want to modify many of low level modules;

Text operation always round the current point to 'fixed'.
Note that the convertion from fixed to double is always precise,
therefore we widely use it with text operations.

Thus this improves the precision of moveto, lineto, curveto,
rmoveto, rlineto, rcurveto, but the precision of other operators
left as it was. Likely there is no strong need to improve text operations
due to pixel rounding, but it would be useful to improve arc, arcn, arct, arcto.
However an improvement of arc operations isn't a high priority,
and after this patch becomes a local change.

We removed ppath-&gt;outside_position, because
pgs-&gt;current_point now effectively handles this feature.
Due to that the rounded pgs-&gt;current_point may be unequal to pgs-&gt;ppath-&gt;position
when the current point is outside the range.

The configuration flag PRECISE_CURRENTPOINT defined in gxstate.h
helps to debug the new code with raster comparizon with the old code.
PRECISE_CURRENTPOINT 0 works same as the old code except the
coordinate clamping. Therefore once tested with the comparison,
the further validation reduced to a validation of the code
swtched by the flag - this part pof code is pretty small.

The mode (PRECISE_CURRENTPOINT 0) **MUST**NOT** go to production
due to the dropped clamping. PRECISE_CURRENTPOINT 1 handles the clamping.

Bug 687359 "Current point is inprecise".

EXPECTED DIFFERENCES :

Almost all comparefiles render differently.</pre>
<p>[src/gdevpdtc.c 1.34, src/gdevpdte.c 1.54, src/gdevpdtt.h 1.22, src/gscoord.c 1.9, src/gspaint.c 1.9, src/gspath.c 1.9, src/gspath.h 1.6, src/gspath1.c 1.8, src/gstype1.c 1.31, src/gstype2.c 1.35, src/gstype42.c 1.43, src/gxchar.c 1.40, src/gxistate.h 1.21, src/gxmatrix.h 1.8, src/gxpath.c 1.10, src/gxpath.h 1.13, src/gxstate.h 1.10, src/gzpath.h 1.37, src/gzstate.h 1.10, src/lib.mak 1.174, src/zupath.c 1.9]</p>
</blockquote>

<p><strong><a name="2004-03-13_0033"></a>
2004-03-13 00:33 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT grid fitting) : Hints could be lost.

DETAILS :

When passing hints from the stem recognizer to the hinter,
glyph origin was not properly initialized, causing an occasional shift of hints.
This bug appeared with gxttfb.c revision 1.32.

EXPECTED DIFFERENCES :

72dpi:
01_001.pdf
159.pdf
adesso2.pdf
adesso7.pdf
adesso8.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
budget2.pdf
budget2_ai87.pdf
bugsample.pdf
CAIB_highres_page4.pdf
Faktura.pdf
fonts.pdf
ICPconcept.pdf
japan.ps
keyboard.pdf
korea.ps
MagicEye.pdf
S2_Digitalproof-Forum_x3k.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
Type11CDevProc.ps
type42_glyph_index.ps
fonts.pdf
01_001.pdf
159.pdf
adesso2.pdf
adesso7.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
budget2.pdf
bugsample.pdf
CAIB_highres_page4.pdf
Faktura.pdf
japan.ps

300dpi:
01_001.pdf
159.pdf
adesso2.pdf
adesso7.pdf
adesso8.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
budget2.pdf
budget2_ai87.pdf
bugsample.pdf
CAIB_highres_page4.pdf
Faktura.pdf
fonts.pdf
ICPconcept.pdf
Jahr2000.pdf
japan-.ps
japan.ps
01_001.pdf
keyboard.pdf
korea.ps
MagicEye.pdf
S2_Digitalproof-Forum_x3k.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
Type11CDevProc.ps
type42_glyph_index.ps</pre>
<p>[src/gxttfb.c 1.33]</p>
</blockquote>

<p><strong><a name="2004-03-12_0653"></a>
2004-03-12 06:53 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Fall back to the default implementation when the output document can't handle current color.

DETAILS :

This case is important when the output PDF uses a low PDF level.
Particularly if the source file is a PDF 1.4 with a transparency,
and the output is PDF 1.3, which can't represent a transparency.

Bug 687338 "/rangecheck in --fill--".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfd.c 1.38, src/gdevpdtt.c 1.76]</p>
</blockquote>

<p><strong><a name="2004-03-12_0158"></a>
2004-03-12 01:58 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687349 A wrong comment for gx_device_color_s.  This change
modifies the comment on ccolor and the related variable ccolor_valid.</pre>
<p>[src/gsdcolor.h 1.13]</p>
</blockquote>

<p><strong><a name="2004-03-12_0155"></a>
2004-03-12 01:55 Dan Coby</strong></p>
<blockquote>
<pre>
Log message:

Implement 687347: Implementation of the PDF encryption feature:
EncryptMetadata.  Past versions of the PDF encryption have always
encrypted metadata.  With this feature it is possible to NOT encrypt
metadata streams.  I.e. By adding '/EncryptMetadata false' to the
encryption dictionary.

DETAILS:

There are two pieces to the implementation:

1.  The calculation of the user password key includes an additional
step of feeding 0xffffffff to the md5 input if EncryptMetadata is
false.  (Ask Adobe, not me.)  The PDF 1.5 spec. says that
EncryptMetadata is an undocumented feature of PDF 1.4.  This
implies that this action needs to be done for values of R in the
Encrypt dictionary of 3 or higher.  However testing with Acrobat
5.0 and Acrobat 6.0 shows that this is not done for R = 3.  Thus
we check for R &gt;= 4.

2.  Testing with Acrobat 5.0 and 6.0 has verified that the encryption
of metadata streams is controlled by EncryptMetadata in both versions.
Thus we check for PDF 1.4 and higher (R &gt;= 3) and if so then we check
the stream type and the EncryptMetadata flag to determine if a stream
needs to be decrypted.</pre>
<p>[lib/pdf_sec.ps 1.15]</p>
</blockquote>

<p><strong><a name="2004-03-11_1458"></a>
2004-03-11 14:58 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Some Cygwin/gcc warnings.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/devs.mak 1.109, src/gdevpdfi.c 1.52]</p>
</blockquote>

<p><strong><a name="2004-03-11_1450"></a>
2004-03-11 14:50 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Some Sun ONE Studio 7 compiler warnings (Solaris 8).

DETAILS :

Bug 687355 "warnings on Solaris (ghostscript-8.14)".

This fixes all warnings which I understande, except
"implicit function declaration", which probably require
a Solaris-dependent fix to "memory_.h".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevdevn.c 1.14, src/gdevijs.c 1.8, src/gdevnfwd.c 1.15, src/gdevpdfx.h 1.87, src/gdevpng.c 1.9, src/gdevpsd.c 1.7, src/gdevpsdu.c 1.21, src/gdevpsu.c 1.17, src/gdevxcf.c 1.6, src/gscpixel.c 1.10, src/gsdfilt.c 1.9, src/gximag3x.c 1.15, src/szlibd.c 1.7, src/ttfmain.c 1.26]</p>
</blockquote>

<p><strong><a name="2004-03-11_0701"></a>
2004-03-11 07:01 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Changing the default value of AlignToPixels to 0.
THIS IS INCOMPATIBLE CHANGE.

DETAILS :

AlignToPixels=0 produces a better results with antialiased text.
This is especially important after the True Type grid fitting is on.

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Use.htm 1.106, src/gsfont.c 1.32]</p>
</blockquote>

<p><strong><a name="2004-03-11_0536"></a>
2004-03-11 05:36 Ralph Giles</strong></p>
<blockquote>
<pre>
Some systems require a longer link line with the default static jasper.</pre>
<p>[toolbin/jpxtopdf.c 1.2]</p>
</blockquote>

<p><strong><a name="2004-03-11_0522"></a>
2004-03-11 05:22 Ralph Giles</strong></p>
<blockquote>
<pre>
Add a simple C program that uses the jasper library to parse JPX (jpeg2k) image files and embed
them in a PDF 1.5 document. Useful for testing as there are few producers available at the moment.

DETAILS:

We make no attempt to parse the required metadata (resolution and so on) ourselves. It would be
simple to add this so that the program can stand alone. On the other hand, jasper is capable of
opening a number of other image formats and encoding them to jpx streams. We don't do that either,
but it would also be easy to add support for so that JPXDecode versions of arbitrary images could
be embedded.

Because of this, it's possible to embed e.g. baseline jpeg data instead of a jpx stream if you
feed the program the wrong file. Caveat executor.

Based on the jpegtopdf program by Tor Andersson.</pre>
<p>[toolbin/jpxtopdf.c 1.1]</p>
</blockquote>

<p><strong><a name="2004-03-10_1906"></a>
2004-03-10 19:06 Ralph Giles</strong></p>
<blockquote>
<pre>
Revert documentation change. Apparenlty the problem was that the user
specified an ICC colorspace and it does have an effect with pswrite if
one uses the usual RGB, etc. colorspaces. Bug 687357.</pre>
<p>[doc/Use.htm 1.105]</p>
</blockquote>

<p><strong><a name="2004-03-10_1901"></a>
2004-03-10 19:01 Ralph Giles</strong></p>
<blockquote>
<pre>
Clarify that -dNOSUBSTDEVICECOLORS has no effect on the pswrite device.
Bug 687357.</pre>
<p>[doc/Use.htm 1.104]</p>
</blockquote>

<p><strong><a name="2004-03-10_0549"></a>
2004-03-10 05:49 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct yet another typo that was preventing the regression from
running.</pre>
<p>[toolbin/tests/run_nightly 1.23]</p>
</blockquote>

<p><strong><a name="2004-03-10_0452"></a>
2004-03-10 04:52 Raph Levien</strong></p>
<blockquote>
<pre>
Fix problem with dci.max_components introduced with DeviceN changes.
Closes bug #677383.</pre>
<p>[src/gdevijs.c 1.7]</p>
</blockquote>

<p><strong><a name="2004-03-09_2131"></a>
2004-03-09 21:31 Ralph Giles</strong></p>
<blockquote>
<pre>
Check for jpeg, zlib, and libpng headers as well as libraries before
using the shared versions. Bug 687261.</pre>
<p>[src/configure.ac 1.43]</p>
</blockquote>

<p><strong><a name="2004-03-09_1330"></a>
2004-03-09 13:30 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : Wrong metrics when 2 font resources for same embeded font.

DETAILS :

Bug 687308 "Text in PDF Form field renders incorrectly".

The document contains 2 font resources for same embedded font.
PDF interpreter first creates a copy of the font, replacing the metrics with Widths.
Then it creates another copy of the with no replaced metrics. But
it used the first copy (through findfont) instead the original font,
and the Metrics in the second copy appears wrong.

This patch applies pdfcachefont for embedded fonts,
to allow retrieving original fonts for subsequeent font resources.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/pdf_font.ps 1.61]</p>
</blockquote>

<p><strong><a name="2004-03-09_1038"></a>
2004-03-09 10:38 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Annotations encrypted with a wrong object id.

DETAILS :

Bug 687333 "pdfwrite: A wrong encryption of bookmarks".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfm.c 1.35]</p>
</blockquote>

<p><strong><a name="2004-03-09_0931"></a>
2004-03-09 09:31 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (Type 2 charstrings) : More tolerance and conformity.

DETAILS :

1. Some Type 2 charstrings omit the vstemhm operator before rmoveto,
   even though this is only allowed before hintmask and cntrmask.
   Bug 687311 "could make more sense of invalid stem hints".

2. Subglyph offset was not crrect.

3. Removing an outdated comment.

Thanks to Felix Pahl for these improvements.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gstype2.c 1.34]</p>
</blockquote>

<p><strong><a name="2004-03-09_0542"></a>
2004-03-09 05:42 Dan Coby</strong></p>
<blockquote>
<pre>
Remove some extra carriage returns (^M) at the ends of lines.  These
keep sneaking into the sources.  Presumably the cause has to do with
copying files from unix to windows or vice versa.</pre>
<p>[lib/pdf_base.ps 1.41]</p>
</blockquote>

<p><strong><a name="2004-03-08_1645"></a>
2004-03-08 16:45 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a typo in the whitelist keyword changes.</pre>
<p>[toolbin/tests/run_nightly 1.22]</p>
</blockquote>

<p><strong><a name="2004-03-07_1226"></a>
2004-03-07 12:26 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : gs_function_is_monotonic computed an unused auxiliary result (continued 3).

DETAILS :

Remove unused variables.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gsfunc3.c 1.21]</p>
</blockquote>

<p><strong><a name="2004-03-07_1206"></a>
2004-03-07 12:06 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : gs_function_is_monotonic computed an unused auxiliary result (continued 2).

DETAILS :

1. Remove gs_function_effort_t because it is not longer useful.
2. Update the documentation in comments.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gsfunc.c 1.10, src/gsfunc.h 1.11, src/gsfunc0.c 1.17, src/gsfunc3.c 1.20, src/gsfunc4.c 1.15, src/gxfunc.h 1.9, src/gxshade1.c 1.26, src/gxshade6.c 1.47]</p>
</blockquote>

<p><strong><a name="2004-03-07_1204"></a>
2004-03-07 12:04 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : gs_function_is_monotonic computed an unused auxiliary result (continued).

DETAILS :

Bug 687328 fn_is_monotonic_proc_t slows down ShadingType 1 in 3 times

Actually the result appears used while checking the monotonity of
a stiching function. But we believe that it doesn't worth
the processor time expence. I simpler way is to
consider the stitches as a monotonity breaks.

EXPECTED DIFFERENCES :

None</pre>
<p>[src/gsfunc3.c 1.19]</p>
</blockquote>

<p><strong><a name="2004-03-07_0002"></a>
2004-03-07 00:02 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (dropout prevention) : extra pixels at small serifs.

DETAILS :

It appears a long standing bug. It caused a section was not cleaned before reusage.
The reason was an interval to clean was added to the list of a another margin_set.
This bug frequently caused a missed serif suppression (i.e. extra pixels at small serifs).

EXPECTED DIFFERENCES :

A massive rendering difference at small resolutions :

72dpi :

"000040cf.000_60.pdf"
"001-01.ps"
"001-13.ps"
"001-25.ps"
"002-09.ps"
"002-21.ps"
"002-33.ps"
"003-01.ps"
"012-01.ps"
"012-05.ps"
"013-01.ps"
"013-05.ps"
"014-01.ps"
"014-05.ps"
"015-01.ps"
"015-05.ps"
"018-01.ps"
"01_001.pdf"
"021-01.ps"
"023-01.ps"
"027-01.ps"
"027-05.ps"
"027-09.ps"
"032-01.ps"
"033-01.ps"
"034-01.ps"
"036-01.ps"
"040-01.ps"
"045-01.ps"
"046-01.ps"
"050-01.ps"
"055-01.ps"
"061-01.ps"
"070-01.ps"
"076-01.ps"
"083-01.ps"
"083-05.ps"
"084-01.ps"
"091-01.ps"
"093-01.ps"
"094-01.ps"
"096-01.ps"
"103-01.ps"
"104-01.ps"
"109-01.ps"
"110-01.ps"
"113-01.ps"
"118-01.ps"
"119-01.ps"
"119-10.ps"
"119-16.ps"
"119-47.ps"
"120-01.ps"
"123-01.ps"
"123-05.ps"
"124-01.ps"
"129-01.ps"
"141-01.ps"
"148-05.ps"
"148-11.ps"
"149-01.ps"
"154-01.ps"
"158-01.ps"
"159.pdf"
"162-01.ps"
"166-01.ps"
"169-01.ps"
"169-05.ps"
"170-01.ps"
"176-01.ps"
"177-01.ps"
"181-01.ps"
"184-01.ps"
"192-01.ps"
"200-01.ps"
"205-01.ps"
"205-05.ps"
"206-01.ps"
"212-01.ps"
"213-01.ps"
"214-01.ps"
"215-01.ps"
"219-01.ps"
"220-01.ps"
"220-07.ps"
"222-01.ps"
"222-05.ps"
"226-01.ps"
"227-01.ps"
"231-01.ps"
"233-01.ps"
"244-01.ps"
"245-01.ps"
"245-07.ps"
"245-13.ps"
"245-17.ps"
"246-01.ps"
"250-01.ps"
"251-01.ps"
"255-01.ps"
"257-01.ps"
"258-01.ps"
"260-01.ps"
"263-01.ps"
"269-01.ps"
"270-01.ps"
"272-01.ps"
"276-01.ps"
"282-01.ps"
"297-01.ps"
"298-01.ps"
"298-05.ps"
"299-01.ps"
"303-01.ps"
"304-01.ps"
"307-01.ps"
"308-04.ps"
"311-03.ps"
"313-01.ps"
"316-07.ps"
"321-01.ps"
"321-05.ps"
"322-01.ps"
"327-01.ps"
"328-01.ps"
"330-01.ps"
"334-01.ps"
"335-01.ps"
"336-01.ps"
"401-01.ps"
"405-01.ps"
"409-01.ps"
"415-01.ps"
"421-01.ps"
"430-01.ps"
"438-01.ps"
"450-01.ps"
"455690.pdf"
"460-01.ps"
"463-01.ps"
"477-01.ps"
"477-03.ps"
"477-04.ps"
"477-05.ps"
"478-01.ps"
"483-05-fixed.ps"
"483-05.ps"
"86554321.pdf"
"a.pdf"
"aaon97_p7.pdf"
"acrobat.pdf"
"adesso1.pdf"
"adesso5.pdf"
"adesso7.pdf"
"adesso8.pdf"
"AdobeLic.pdf"
"alphabet.ps"
"besttest.pdf"
"brochurep1.pdf"
"bulletin.pdf"
"CAIB_highres_page4.pdf"
"chess.ps"
"CIDembedded.pdf"
"Faktura.pdf"
"Fixed_Original.pdf"
"HeiseiMinStd.pdf"
"japan.ps"
"korea.ps"
"KozukaB-ILEmbed.pdf"
"loremIpsum.pdf"
"mbb-with-space.ps"
"ngnews1.pdf"
"Original.pdf"
"pdftops.pdf"
"prfmm.pdf"
"prob.pdf"
"RealCities.pdf"
"rf1025.pdf"
"RodinCIDEmbed.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"Svd.pdf"
"textsavematrix.pdf"
"tpc2.ps"
"type1-ce1_setcurrentpoint.ps"
"type42_glyph_index.ps"
"waterfal.ps"
"womanface.pdf"

300 dpi :
"000040cf.000_60.pdf"
"001-01.ps"
"093-01.ps"
"a.pdf"
"aaon97_p7.pdf"
"alphabet.ps"
"bug-gstest.pdf"
"chess.ps"
"Fixed_Original.pdf"
"fonttest.pdf"
"HeiseiMinStd.pdf"
"japan-.ps"
"japan.ps"
"KozukaB-ILEmbed.pdf"
"mbb-with-space.ps"
"Original.pdf"
"RodinCIDEmbed.pdf"
"S2_Digitalproof-Forum_x3k.pdf"
"tpc2.ps"
"Type11CDevProc.ps"</pre>
<p>[src/gxfdrop.c 1.14]</p>
</blockquote>

<p><strong><a name="2004-03-06_1515"></a>
2004-03-06 15:15 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Immediately return the success for 0-length read from a string array.
Don't seek to the offset because it may be invalid in some broken fonts.
Fix bug 687340</pre>
<p>[src/zfont42.c 1.18]</p>
</blockquote>

<p><strong><a name="2004-03-05_2325"></a>
2004-03-05 23:25 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc warnings.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/devs.mak 1.108, src/gdevpdfv.c 1.35, src/gdevpdtt.c 1.75, src/gsfunc0.c 1.16, src/gsfunc3.c 1.18, src/ttfmain.c 1.25]</p>
</blockquote>

<p><strong><a name="2004-03-05_2226"></a>
2004-03-05 22:26 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Raster depended on bands, step 4, final.

DETAILS :

This change is algorithmically equivalent.

1. Removed the old code BAND_INDEPENDENT 0.
2. Simplified fill_slant_adjust with removing low useful variables.
3. Optimized the gxfilltr.h template with excluding some branches from the scope of le, re.
4. Renamed function templates with a (new) regular convention.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.117, src/gxfillsl.h 1.4, src/gxfilltr.h 1.6, src/gxfillts.h 1.3]</p>
</blockquote>

<p><strong><a name="2004-03-05_1535"></a>
2004-03-05 15:35 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Raster depended on bands, step 3.

DETAILS :

Bug 687222 "Raster depends on bands".

Switching to the new code.
Now trapezoid sides are independent on bands, clipping and scans.
Any trapesoid side is equal to some flattened piece of an outline segment.

A massive difference happens due to the old code recognized low trapezoids as rectangles.
The new code does not because it checks the verticality with longer bars.

EXPECTED DIFFERENCES :

Almost all comparefiles render differently.,
but mist differences are single pixels.
A dozen of files give dual pixel differences.</pre>
<p>[src/gxfill.c 1.116]</p>
</blockquote>

<p><strong><a name="2004-03-05_1439"></a>
2004-03-05 14:39 Ralph Giles</strong></p>
<blockquote>
<pre>
correct a typo in the recent comment revision</pre>
<p>[doc/Make.htm 1.74]</p>
</blockquote>

<p><strong><a name="2004-03-05_1436"></a>
2004-03-05 14:36 Ralph Giles</strong></p>
<blockquote>
<pre>
add a missing '.' to a comment</pre>
<p>[src/msvc32.mak 1.55]</p>
</blockquote>

<p><strong><a name="2004-03-05_1416"></a>
2004-03-05 14:16 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Raster depended on bands, step 2.

DETAILS :

Bug 687222 "Raster depends on bands".

For the enabled code this change is algorithmically equivalent.
It fixes rectangle coordinates in the disabled code.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfilltr.h 1.5]</p>
</blockquote>

<p><strong><a name="2004-03-05_1317"></a>
2004-03-05 13:17 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Raster depended on bands, step 1.

DETAILS :

Bug 687222 "Raster depends on bands".
This is a continuation for
http://www.ghostscript.com/pipermail/gs-cvs/2004-January/003986.html

This patch defines a configuration flag BAND_INDEPENDENT.
The enabled code should be equivalent to the old one.
The disabled code passes band-independent data for low level functions.
The disabled code is not debugged yet.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.115, src/gxfilltr.h 1.4, src/gxfillts.h 1.2]</p>
</blockquote>

<p><strong><a name="2004-03-05_0537"></a>
2004-03-05 05:37 Ralph Giles</strong></p>
<blockquote>
<pre>
Remove a debug tracing message.</pre>
<p>[src/sjpx.c 1.2]</p>
</blockquote>

<p><strong><a name="2004-03-04_2250"></a>
2004-03-04 22:50 Ralph Giles</strong></p>
<blockquote>
<pre>
Add support for our whitelist keyword filter to the regression run.</pre>
<p>[toolbin/tests/run_nightly 1.21]</p>
</blockquote>

<p><strong><a name="2004-03-04_2234"></a>
2004-03-04 22:34 Ralph Giles</strong></p>
<blockquote>
<pre>
Improve wording in the MSVC debug flag descriptions.</pre>
<p>[doc/Make.htm 1.73]</p>
</blockquote>

<p><strong><a name="2004-03-04_2228"></a>
2004-03-04 22:28 Ralph Giles</strong></p>
<blockquote>
<pre>
Improve wording in a comment.</pre>
<p>[src/msvc32.mak 1.54]</p>
</blockquote>

<p><strong><a name="2004-03-04_1641"></a>
2004-03-04 16:41 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : gs_function_is_monotonic computed an unused auxiliary result.

DETAILS :

Bug 687328 fn_is_monotonic_proc_t slows down ShadingType 1 in 3 times

The function fn_is_monotonic_proc_t computes a result consisting of 2 things :
(1) whether the function is monotonic, (2) if so, whether it is encreesing or
decreesing. The part (2) consumes a huge time and never used. Intending to
cancel it. On necessity clients can compute (2) by calling 'evaluate'.

EXPECTED DIFFERENCES :

Clarke Tate Manns Chinese.ai
STEUER-RollingMesh 1(linear).ai</pre>
<p>[src/gsfunc.h 1.10, src/gsfunc0.c 1.15, src/gsfunc3.c 1.17]</p>
</blockquote>

<p><strong><a name="2004-03-04_1627"></a>
2004-03-04 16:27 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Reject encryption options if no password is specified, improved.

DETAILS :

Bug 687334 "pdfwrite: Encryption with no password".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.92]</p>
</blockquote>

<p><strong><a name="2004-03-04_1613"></a>
2004-03-04 16:13 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : "KeyLength" option name was misspelled in the documentation.

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Ps2pdf.htm 1.65]</p>
</blockquote>

<p><strong><a name="2004-03-04_1613"></a>
2004-03-04 16:13 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Reject encryption options if no password is specified.

DETAILS :

Bug 687334 "pdfwrite: Encryption with no password".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.91]</p>
</blockquote>

<p><strong><a name="2004-03-04_1550"></a>
2004-03-04 15:50 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Floating point aritmetic applied to uninitialized data.

DETAILS :

Rather the result was not used, the oprtation could cause floating point interrupts.
Debugged with test-setweightvector.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdte.c 1.53, src/gdevpdtt.c 1.74]</p>
</blockquote>

<p><strong><a name="2004-03-04_1434"></a>
2004-03-04 14:34 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT grid fitting) : The glyph trailing moveto got wrong coordinates.

DETAILS :

Advance width was scaled wrongly.

EXPECTED DIFFERENCES :

japan.ps
S2_Digitalproof-Forum_x3k.pdf
Testform.v1.0.2.pdf</pre>
<p>[src/gxttfb.c 1.32, src/ttfmain.c 1.24]</p>
</blockquote>

<p><strong><a name="2004-03-04_0506"></a>
2004-03-04 05:06 Dan Coby</strong></p>
<blockquote>
<pre>
Implementation of 687326 Enhancement: Handling of PDF 1.5encryption.

DETAILS:

The PDF 1.5 specification has added several some features for
encryption of PDF documents.

1.  The new encryption changes are indicated by a /R value of
4 in the Encryption dictionary.  Note:  The encryption algorithm
is the same as /R = 3.

2.  The encryption handling for strings and streams may now be
specified independently.  Current possibilities are 'Identity'
and the standard handler.

Note:  There are more encryption features in the PDF 1.5 specification.
HowevertThe only means that I have for generating test files for these
new encryption features is Acrobat 6.0.  This patch will decode files
which are encrypted using Acrobat 6.0.  There is one more feature
(EncryptMetaData) which will be the subject of a separate patch.
Between the features covered by the current patch and the EncryptMetaData
patch, this includes all of the capabilities that are available to a user
of Acrobat 6.0.  Since Acrobat 6.0 is the major producer of files with
these new encryption features, Ghostscript will have the ability to
decrypt files which we are likely to see in the near future.</pre>
<p>[lib/pdf_sec.ps 1.14]</p>
</blockquote>

<p><strong><a name="2004-03-03_1353"></a>
2004-03-03 13:53 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Shading could cause a floating point exception.

DETAILS :

It caused an a floating point interrupts if they are unmasked.
The problem in gxshade6.c apeared with NEW_SHADINGS with ppmraw -r72 050-01.ps .
The problem in gxshade1.c ln 638 apeared with NEW_SHADINGS with ppmraw -r72 "STEUER-RollingMesh 2*.ai" .
Another one looks as a long standing bug with ppmraw -r72 442-01.ps

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade1.c 1.25, src/gxshade6.c 1.46]</p>
</blockquote>

<p><strong><a name="2004-03-03_1010"></a>
2004-03-03 10:10 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT grid fitting) : AlignToPixels=0 aligned to pixels.

DETAILS :

Bug 687318 'A poor TT grid fitting with TextAlphaBits&gt;1".
This patch doesn't close the bug.
An StdHW, StdVW reconstruction is necesseary for perfect result.
AlignToPixels=0 still gives a varying stem width.

EXPECTED DIFFERENCES :
None.</pre>
<p>[src/gxttfb.c 1.31]</p>
</blockquote>

<p><strong><a name="2004-03-03_0816"></a>
2004-03-03 08:16 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (type 1 hinter) : small resolutions caused a rangecheck.

DETAILS :

Bug 687301 "/limitcheck in --.type42execchar-- at 13 dpi".
When CTM is too small, its rational representation
appears degenerate, and we pass the character with no hinting.

EXPECTED DIFFERENCES :
None.</pre>
<p>[src/gxhintn.c 1.44]</p>
</blockquote>

<p><strong><a name="2004-03-03_0514"></a>
2004-03-03 05:14 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687274 White areas appear shaded.

DETAILS:

This 'problem' is caused by a 'feature'.  The high resolution transfer
function  deliberately has a piece of logic that forces any shade of gray
that is not pure white (i.e. greater than 0.998) to halftone with at
least one pixel being set in the output.  This keeps nearly white shades
from being washed out.

We have seen several instances in which this 'feature' causes a problem.
The fax output format tiffg4 has been bitten by this problem since it is
commonly used at 204 dpi.

This change removes this feature.</pre>
<p>[lib/gs_init.ps 1.105]</p>
</blockquote>

<p><strong><a name="2004-03-02_1147"></a>
2004-03-02 11:47 Igor Melichev</strong></p>
<blockquote>
<pre>
Improving the MSVC debug build options.

DETAILS :

1. The implementation of switches DEBUG and TDEBUG
   in msvc32.mak did not comply to their explanation in comments.
   Bug 687276 "mscv32.mak : DEBUG and TDEBUG don't comply to documentation"

2. Defined a new switch DEBUGSYM :
+ # Setting DEBUGSYM=1 is only useful with TDEBUG=0 for advanced developers.
+ # It includes symbol table information for the debugger to the release build.

3. Updated doc\Make.htm about that.

EXPECTED DIFFERENCES :
None.</pre>
<p>[src/msvc32.mak 1.53, src/msvccmd.mak 1.15, doc/Make.htm 1.72]</p>
</blockquote>

<p><strong><a name="2004-03-02_1014"></a>
2004-03-02 10:14 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Errors were missed processing a shading data stream.

DETAILS :

Bug 687307 "A ShadingType 7 differs from Adobe."
shade_next_flag interpreted a wrong data as End-Of-Data,
so that some wrong documents were passed with no error.

Now pdfwrite handles the bad shading data exception separately from
other errors:  the shading is fully written and the error is signaled
to the PS interpreter after that. Note that other errors terminate immediately
with inconsistent data written to the PDF output. We did the special
processing to provide a better conformity to some buggy Genoa tests,
which paint a shading with a wrong data in a stopped context.

Besides that, we cancelled the default implementation fallback
when pdf_setfillcolor fails. The old implementation caused
shadings to convert into a huge set of rectangles written to PDF.
We believe that signalling an error is the right reaction for this case.

EXPECTED DIFFERENCES :

pdfwrite :
446-01.ps now prints error message to the raster. This is a progression.
483-05.ps now prints error message to stdout. This is a progression.</pre>
<p>[src/gdevpdfd.c 1.37, src/gdevpdfg.c 1.47, src/gdevpdfv.c 1.34]</p>
</blockquote>

<p><strong><a name="2004-03-02_0834"></a>
2004-03-02 08:34 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Errors were missed processing a shading data stream.

DETAILS :

Bug 687307 "A ShadingType 7 differs from Adobe."
shade_next_flag interpreted a wrong data as End-Of-Data,
so that some wrong documents were passed with no error.

With pdfwrite the logic is different, and we didn't fix it.

EXPECTED DIFFERENCES :

446-01.ps now prints error message to the raster. This is a progression.
483-05.ps now prints error message to stdout. This is a progression.</pre>
<p>[src/gxshade.c 1.21, src/gxshade4.c 1.25, src/gxshade6.c 1.45, src/gxshade.h 1.11]</p>
</blockquote>

<p><strong><a name="2004-03-01_2359"></a>
2004-03-01 23:59 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 42.

DETAILS :

Big triangle meshes could overflow wedge_vertex_list_elem_buffer.
See comment in code.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.44]</p>
</blockquote>

<p><strong><a name="2004-03-01_1239"></a>
2004-03-01 12:39 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 41, release candidate 2.

DETAILS :

Implemented intersection_of_small_bars with int64_t,
and improved the documentation about it.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.43]</p>
</blockquote>

<p><strong><a name="2004-03-01_1044"></a>
2004-03-01 10:44 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 40.

DETAILS :

1. Improved various constraints for patch size,
   which are caused by the arithmetic precision.
   Now all them are collected in curve_samples.

2. Improved the documentation about secondary branches.

3. Fixed minor bugs in secondary branches.

3. Improved the formatting with easier distinguishing
   a multiplication " * x" from dereferencing " *x".
   It was important for finding arithmetic constraints.

EXPECTED DIFFERENCES :

SmoothShading.pdf at 300dpi.</pre>
<p>[src/gxshade4.h 1.21, src/gxshade6.c 1.42]</p>
</blockquote>

<p><strong><a name="2004-02-29_1659"></a>
2004-02-29 16:59 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 39.

DETAILS :

The previous patch appears wrong. This one replaces it.

Fixed the order of painting pixels : U and V were exchanged.
Debugged with examples attached to the bug 687307.

Besides that, the smoothness condition is changed :
the case with strong equality must not decompose.
A special test for this is 478-01.ps -
now it is decomposed with monotonic intervals only.

EXPECTED DIFFERENCES :

Since the previous patch appears wrong,
here is a difference from a revision before it :

446-01.ps
478-01.ps
483-05.ps
gradmesh.ai
SmoothShading.pdf
STEUER-RollingMesh 3(Final).ai</pre>
<p>[src/gxshade1.c 1.24, src/gxshade6.c 1.41]</p>
</blockquote>

<p><strong><a name="2004-02-29_1447"></a>
2004-02-29 14:47 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 38.

DETAILS :

Fixed the order of painting pixels : U and V were exchanged.
Debugged with examples attached to the bug 687307.

EXPECTED DIFFERENCES :

72dpi :

442-01.ps
446-01.ps
464-01.ps
478-01.ps
483-01.ps
483-05.ps
BEST8-99-Path.fh7.pdf
chilis_black.pdf
chilis_red.pdf
Clarke Tate Manns Chinese.ai
gradmesh.ai
SmoothShading.pdf
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf

300dpi:

289-01.ps
442-01.ps
446-01.ps
464-01.ps
478-01.ps
483-01.ps
483-05.ps
BEST8-99-Path.fh7.pdf
chilis_black.pdf
chilis_red.pdf
Clarke Tate Manns Chinese.ai
gradmesh.ai
Openhuis_pdf_zw.pdf
SmoothShading.pdf
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf</pre>
<p>[src/gxshade6.c 1.40]</p>
</blockquote>

<p><strong><a name="2004-02-29_1303"></a>
2004-02-29 13:03 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 37.

DETAILS :

Fixed a bug in LAZY_WEDGES 1 :
fill_wedge_from_list_rec missed non-leaf triangles.

Also defined dbg_wedge_triangle_cnt for debug purpose.

EXPECTED DIFFERENCES :

72dpi :

446-01.ps
483-05.ps
BEST8-99-Path.fh7.pdf
chilis_black.pdf
Clarke Tate Manns Chinese.ai
gradmesh.ai
SmoothShading.pdf
STEUER-RollingMesh 3(Final).ai

300dpi:

442-01.ps
446-01.ps
464-01.ps
478-01.ps
483-01.ps
483-05.ps
BEST8-99-Path.fh7.pdf
Clarke Tate Manns Chinese.ai
gradmesh.ai
SmoothShading.pdf
STEUER-RollingMesh 1(linear).ai</pre>
<p>[src/gxshade6.c 1.39]</p>
</blockquote>

<p><strong><a name="2004-02-28_1230"></a>
2004-02-28 12:30 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 36.

DETAILS :

Implemented lazy wedges : do not create a wedge,
if both neighbours of a line were divided at same point.
It reduces the number of constant color triangles to fill.

Since this algorithm consumes an exponential RAM of the wedge nesting,
we restrict the wedge nesting with 9. For doing that we enforce
subdivision of large patches into chunks with &lt;=512 pixels length sides
- see LAZY_WEDGES_MAX_LEVEL.

EXPECTED DIFFERENCES :

72dpi :
289-01.ps
442-01.ps
446-01.ps
464-01.ps
483-01.ps
483-05.ps
BEST8-99-Path.fh7.pdf
chilis_black.pdf
Clarke Tate Manns Chinese.ai
gradmesh.ai
SmoothShading.pdf
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 3(Final).ai

300dpi:
442-01.ps
446-01.ps
464-01.ps
478-01.ps
483-01.ps
483-05.ps
BEST8-99-Path.fh7.pdf
chilis_black.pdf
Clarke Tate Manns Chinese.ai
gradmesh.ai
SmoothShading.pdf
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf</pre>
<p>[src/gxshade1.c 1.23, src/gxshade4.c 1.24, src/gxshade6.c 1.38, src/gxshade4.h 1.20]</p>
</blockquote>

<p><strong><a name="2004-02-27_0924"></a>
2004-02-27 09:24 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 35.

DETAILS :

1. Improving the filling order for self-overlapping patches.
The old code filled them wrongly (a bug).
This patches fixes that.
With self-overlapping patches the new code is slower.

2. Improved the numeric error processing in intersection_of_big_bars.
With negative bars the old code could give a bias in fixed_1,
rather negative bars probably never come here.

EXPECTED DIFFERENCES :

442-01.ps
446-01.ps
464-01.ps
478-01.ps
483-01.ps
483-05.ps
BEST8-99-Path.fh7.pdf
chilis_black.pdf
chilis_red.pdf
Clarke Tate Manns Chinese.ai
gradmesh.ai
SmoothShading.pdf
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf</pre>
<p>[src/gxshade6.c 1.37]</p>
</blockquote>

<p><strong><a name="2004-02-26_2055"></a>
2004-02-26 20:55 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 34.

DETAILS :

Improving the ShadingType 1 with applying the generic algorithm.
The generic algorithm is extended for 2-argument functions.

Also fixing the configuration switch DIVIDE_BY_PARALLELS,
which was unintentionally set to 1 by the previous patch.

EXPECTED DIFFERENCES :

289-01.ps
442-01.ps
446-01.ps
464-01.ps
478-01.ps
483-01.ps
483-05.ps
gradmesh.ai</pre>
<p>[src/gxshade.c 1.20, src/gxshade1.c 1.22, src/gxshade4.c 1.23, src/gxshade4.h 1.19, src/gxshade6.c 1.36, src/lib.mak 1.173]</p>
</blockquote>

<p><strong><a name="2004-02-26_2010"></a>
2004-02-26 20:10 Ray Johnston</strong></p>
<blockquote>
<pre>
Revert to the correct version of gs_setpd.ps and Use.htm.

DETAILS:

A local CVS problem resulted in an update from a directory that did not
have the changes, causing me to think that the files needed to be
updated, but instead removed the previous update. What a mess!</pre>
<p>[doc/Use.htm 1.103, lib/gs_setpd.ps 1.23]</p>
</blockquote>

<p><strong><a name="2004-02-26_1955"></a>
2004-02-26 19:55 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : A bug in fn_Sd_is_monotonic.

DETAILS :

Monotonic intervals were computed wrongly due to
a wrong cell boundary condition. With no Encode
it overestimated the number of cells in 1.

This patch also extends fn_Sd_is_monotonic for multi-argument functions.
Actually it checks whether both points are within same cell.
This is fine with linear functions,
but for 3d order we would like to check for zero derivatives
within the interval specified by 2 vectors.

EXPECTED DIFFERENCES :

300dpi:

442-01.ps
483-01.ps</pre>
<p>[src/gsfunc0.c 1.14]</p>
</blockquote>

<p><strong><a name="2004-02-26_0718"></a>
2004-02-26 07:18 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 33.

DETAILS :

Improves the performance of radial shadings :

For a faster painting, we apply fill adjustment to outer annula only.
Inner annula are painted with no fill adjustment.
It can't cause a dropout, because the outer side of an annulus
gets same flattening as the inner side of the neighbour outer annulus.

For other shadings this chande is algorithmically equivalent.

EXPECTED DIFFERENCES :

A minor difference with axial shadings :
442-01.ps
446-01.ps
483-01.ps
483-05.ps
Altona-Testsuite_p2_S_x3.pdf
Clarke Tate Manns Chinese.ai
gradmesh.ai
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
SmoothShading.pdf
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 2(radial).ai
STEUER-RollingMesh 3(Final).ai</pre>
<p>[src/gxshade.c 1.19, src/gxshade.h 1.10, src/gxshade1.c 1.21, src/gxshade4.c 1.22, src/gxshade4.h 1.18]</p>
</blockquote>

<p><strong><a name="2004-02-25_2038"></a>
2004-02-25 20:38 Russell Lang</strong></p>
<blockquote>
<pre>
Fixes bug 687317.
Fix pdfwrite allowable Permissions for EncryptionR=2.
Fix default Permissions.

DETAILS:
The code was assuming that the extra permissions should be 0's,
when in fact they should be 1's.  The fixed code is a bit more
conservative and requires that all reserved bits match the PDF
specification. Set the default permissions to -4 which allows
everything.</pre>
<p>[src/gdevpdf.c 1.90]</p>
</blockquote>

<p><strong><a name="2004-02-25_2037"></a>
2004-02-25 20:37 Ray Johnston</strong></p>
<blockquote>
<pre>
Clean up dict stack after loading an embedded Type1 font from a PDF file.
While the font is buggy, Adobe doesn't complain. Bug #687315.</pre>
<p>[lib/pdf_font.ps 1.60]</p>
</blockquote>

<p><strong><a name="2004-02-25_2035"></a>
2004-02-25 20:35 Ray Johnston</strong></p>
<blockquote>
<pre>
Add an option to prevent the 'range' type PageSize from being added to the
InputAttribute dictionary. This option is useful for printers that want the
requested pages to be rotated to fit one of the available page sizes.
Option is -dNORANGEPAGESIZE. Fix for bug #629335.</pre>
<p>[lib/gs_setpd.ps 1.22, doc/Use.htm 1.102]</p>
</blockquote>

<p><strong><a name="2004-02-25_1621"></a>
2004-02-25 16:21 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 32.

DETAILS :

1. Implemented axial shading with a Coons patch.
   It gives more regularity with area decomposition and trapping.

2. Optimized tensor shadings for the case when the gradient is
   parallel to the quadrangle sides.

Note that the old code applies 1/2 pixels fill adjustment when
painting stripes of the shading, generating overlapped stripes.
Instead that the new code generates non-overlapping stripes,
and applies a trapping emulation at the shading boundaries with 1/8 pixels.

EXPECTED DIFFERENCES :

A minor difference with axial shadings :
442-01.ps
446-01.ps
464-01.ps
483-01.ps
483-05.ps
BEST8-99-Path.fh7.pdf
chilis_black.pdf
chilis_red.pdf
gradmesh.ai
Openhuis_pdf_zw.pdf
SmoothShading.pdf
STEUER-RollingMesh 1(linear).ai
STEUER-RollingMesh 3(Final).ai
Testform.v1.0.2.pdf

An area shift in Testform.v1.0.2.pdf at 72dpi appears due to
the fill adjustment is replaced with the trapping emulation.</pre>
<p>[src/gxshade1.c 1.20, src/gxshade4.h 1.17, src/gxshade6.c 1.35, src/lib.mak 1.172]</p>
</blockquote>

<p><strong><a name="2004-02-24_2227"></a>
2004-02-24 22:27 Jack Moffitt</strong></p>
<blockquote>
<pre>
Add support for specifying CVS repository location, which requires a
new configuration key, 'gsconf.repodir'.</pre>
<p>[toolbin/tests/testing.cfg.example 1.5, toolbin/tests/update_specific 1.2]</p>
</blockquote>

<p><strong><a name="2004-02-24_2220"></a>
2004-02-24 22:20 Jack Moffitt</strong></p>
<blockquote>
<pre>
Script to update baselines for a specific CVS version of Ghostscript.

The script requires a new configuration key, 'gsconf.fontdir'.</pre>
<p>[toolbin/tests/testing.cfg.example 1.4, toolbin/tests/update_specific 1.1]</p>
</blockquote>

<p><strong><a name="2004-02-24_1907"></a>
2004-02-24 19:07 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 31.

DETAILS :

1. Removed an undefined macro call (a portability bug).

2. Disabled some unused functions.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade4.c 1.21, src/gxshade4.h 1.16]</p>
</blockquote>

<p><strong><a name="2004-02-24_1857"></a>
2004-02-24 18:57 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 30.

DETAILS :

1. Triangle meshes were passed to the rasterizer with no color resolved.
   It is assumed to be resolved in advance (a bug).

2. Improved external names with adding a scope prefix.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade4.c 1.20, src/gxshade4.h 1.15, src/gxshade6.c 1.34]</p>
</blockquote>

<p><strong><a name="2004-02-24_1212"></a>
2004-02-24 12:12 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 29 - release candidate 1.

DETAILS :

Switching to the new implementation.
It fixes a number of bugs, works 2.5 times faster and produces a better view.
Also documented secondary development branches.

Bug 687291 "problems in patch_fill".
Bug 687310 "Wrong color interpolation with ShadingType 4,5.".

EXPECTED DIFFERENCES :

446-01.ps
483-05.ps</pre>
<p>[src/gxshade4.h 1.14]</p>
</blockquote>

<p><strong><a name="2004-02-24_1157"></a>
2004-02-24 11:57 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 28.

DETAILS :

Removing debug helpers.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade4.c 1.19, src/gxshade4.h 1.13, src/gxshade6.c 1.33]</p>
</blockquote>

<p><strong><a name="2004-02-24_1150"></a>
2004-02-24 11:50 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 27.

DETAILS :

It simplifies visual trace commands with the new macros.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade4.c 1.18, src/gxshade6.c 1.32]</p>
</blockquote>

<p><strong><a name="2004-02-24_1143"></a>
2004-02-24 11:43 Igor Melichev</strong></p>
<blockquote>
<pre>
Improving the visual trace macros.

DETAILS :

It defines a raugh implementation for a temporary trace disabling.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/vdtrace.h 1.12]</p>
</blockquote>

<p><strong><a name="2004-02-24_1108"></a>
2004-02-24 11:08 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 26.

DETAILS :

This patch changes a disabled code only.
It fixes a bug computing ku[3], which missed some wedges,
and improves some visual trace commands.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.31]</p>
</blockquote>

<p><strong><a name="2004-02-24_0957"></a>
2004-02-24 09:57 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 25.

DETAILS :

This patch changes a disabled code only.
This change is algorithmically equivalent.
During a trianglulation it avoids redundant computation
of the color span and the triangle size.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.30]</p>
</blockquote>

<p><strong><a name="2004-02-24_0928"></a>
2004-02-24 09:28 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 24.

DETAILS :

The patch
http://www.ghostscript.com/pipermail/gs-cvs/2004-February/004243.html
unintentionally switched on the new code.
Now switching it back to the old one.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade4.h 1.12]</p>
</blockquote>

<p><strong><a name="2004-02-24_0908"></a>
2004-02-24 09:08 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 23.

DETAILS :

This patch changes a disabled code only.

1. Wedges were missed in triangle_by_4.
2. Improved a debug mode in gxshade4.c .
3. Fixed cygwin/gcc warnings.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade4.c 1.17, src/gxshade6.c 1.29]</p>
</blockquote>

<p><strong><a name="2004-02-24_0814"></a>
2004-02-24 08:14 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 22.

DETAILS :

This patch changes a disabled code only.
It implements a division of a quadrangle into 4 triangles,
like the old code does. It doesn't change the performance
and the view appears slightly better. This mode is useful with
DIVIDE_BY_PARALLELS 0.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.28]</p>
</blockquote>

<p><strong><a name="2004-02-24_0758"></a>
2004-02-24 07:58 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 21.

DETAILS :

This patch changes a disabled code only.
It implements a division of a triangle into 4 triangles,
like the old code does. This appears some slower, but
gives a better view when the smooothness is smaller
than the color resolution.

Minor changes :

- Implemented VD_TRACE_DOWN to gxshade6.c;
- Changed some visual trace commands;
- COLOR_CONTIGUITY specifies a coefficient for divide_triangle_by_parallels.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade4.h 1.11, src/gxshade6.c 1.27]</p>
</blockquote>

<p><strong><a name="2004-02-23_2041"></a>
2004-02-23 20:41 Ralph Giles</strong></p>
<blockquote>
<pre>
Check for local jpeg library source by looking for the jpeglib.h header
rather than just the jpeg directory. Also try looking for jpeg-6b if the
jpeg fails; this lets us find the source as it unpacks from the upstream
tarball. Patch from ESP Ghostscript.</pre>
<p>[src/configure.ac 1.42]</p>
</blockquote>

<p><strong><a name="2004-02-23_0307"></a>
2004-02-23 03:07 Ray Johnston</strong></p>
<blockquote>
<pre>
Add a parameter which prevents the non-standard four element PageSize
entry in the InputAttributes from being included. This prevents problems
with PostScript programs that examine the InputAttributes entries in an
attempt to pick the 'best fit' rather than relying on the setpagedevice
logic. Also most 'real' printer devices don't support arbitrary page
sizes, so automatic rotation is defeated if the range type page size
in included. The option is -dNORANGEPAGESIZE. Bug #629335.</pre>
<p>[doc/Use.htm 1.101, lib/gs_setpd.ps 1.21]</p>
</blockquote>

<p><strong><a name="2004-02-23_0144"></a>
2004-02-23 01:44 Ray Johnston</strong></p>
<blockquote>
<pre>
Add the path to the code directory (gsconf.codedir) for invocation of the
update_baseline/update_pdfbaseline.</pre>
<p>[toolbin/tests/gscheck_pdfwrite.py 1.18, toolbin/tests/gscheck_raster.py 1.9]</p>
</blockquote>

<p><strong><a name="2004-02-22_2354"></a>
2004-02-22 23:54 Ralph Giles</strong></p>
<blockquote>
<pre>
Initial implementation of the JPXDecode filter using the JasPer library
for decoding the JPEG 2000 data. This version only implements a
postscript-level filter; PDF support will follow in another commit.

DETAILS:

A new FEATURE_DEV, 'jpx.dev', is added to the makefile to enable
support. The jasper library must be available to link with in this case.
The library is autodetected in the autoconf build, but not yet enabled
on other platforms.

The implementation leaves a little to be desired. While JasPer is
robust, it provides no way to connect its internal stream architecture
to ours, so we end up buffering all the data. This seems to be the best
we can do without modifying the library.

We try to handle data from a number of colorspaces, but the spec is a
little vague on what is required. We convert YUV to RGB internally, but
do not handle sub-sampled planes.</pre>
<p>[src/Makefile.in 1.33, src/configure.ac 1.41, src/int.mak 1.124, src/lib.mak 1.171, src/sjpx.c 1.1, src/sjpx.h 1.1, src/zfjpx.c 1.1]</p>
</blockquote>

<p><strong><a name="2004-02-22_1511"></a>
2004-02-22 15:11 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 20.

DETAILS :

This fixes an unintentional regression in gxshade4.c,
which appeared from a recent patch.
Also it optimises the access to pis-&gt;smoothness.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade4.c 1.16, src/gxshade6.c 1.26]</p>
</blockquote>

<p><strong><a name="2004-02-22_1414"></a>
2004-02-22 14:14 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 19.

DETAILS :

This change is algorithmically equivalent.
It simplifies internal interfaces with the new type quadrangle_patch.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.25]</p>
</blockquote>

<p><strong><a name="2004-02-22_1306"></a>
2004-02-22 13:06 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 18.

DETAILS :

This change is algorithmically equivalent.
It simplifies the interface of fill_triangle_wedge.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.24]</p>
</blockquote>

<p><strong><a name="2004-02-22_1059"></a>
2004-02-22 10:59 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 17.

DETAILS :

This change is algorithmically equivalent.
It simplifies intermodule interfaces with using
shading_vertex_t instead a pair of a point and a color.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade4.c 1.15, src/gxshade4.h 1.10, src/gxshade6.c 1.23]</p>
</blockquote>

<p><strong><a name="2004-02-22_0943"></a>
2004-02-22 09:43 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 16.

DETAILS :

This patch changes a disabled code only.
In the disabled code it fixes the bug 687310
"Wrong color interpolation with ShadingType 4,5.".
In the old code the interpolation is still done in the color space rather than
in the function domain.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade.c 1.18, src/gxshade.h 1.9, src/gxshade4.c 1.14, src/gxshade4.h 1.9, src/gxshade6.c 1.22, src/lib.mak 1.170]</p>
</blockquote>

<p><strong><a name="2004-02-21_1825"></a>
2004-02-21 18:25 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 15.

DETAILS :

This patch changes a disabled code only.
Optimized the patch decomposition.

1. Triangles are divided along the color gradient.
   Since the color gradient is vector, actually we divide
   along the gradient of the Manhattan"s color norm.

2. Rectangles are divided into 2 triangles by the diagonal
   with smaller color difference.

3. Improved conditions for compiling wedge_buf.

4. Implemented VD_TRACE_TRIANGLE_PATCH.

This revision appears faster than the old code NEW_SHADINGS 0
in about 1.4 times.

A code optimization is wanted. See "fixme" comments.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade4.c 1.13, src/gxshade4.h 1.8, src/gxshade6.c 1.21]</p>
</blockquote>

<p><strong><a name="2004-02-20_1504"></a>
2004-02-20 15:04 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 14.

DETAILS :

This patch changes a disabled code only.
Optimized the trapping emulation.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade4.c 1.12, src/gxshade4.h 1.7, src/gxshade6.c 1.20]</p>
</blockquote>

<p><strong><a name="2004-02-20_1358"></a>
2004-02-20 13:58 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 13.

DETAILS :

1. Aplied the new triangulation to triangle meshes.
2. Enhanced the scope of configuration flags and some structures.
3. Improved visual trace commands.

The trapping emulation appears too slow and should be optimized.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade4.c 1.11, src/gxshade4.h 1.6, src/gxshade6.c 1.19, src/lib.mak 1.169]</p>
</blockquote>

<p><strong><a name="2004-02-20_1053"></a>
2004-02-20 10:53 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc warnings.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.114]</p>
</blockquote>

<p><strong><a name="2004-02-20_1051"></a>
2004-02-20 10:51 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 12.

DETAILS :

1. Emulated an interpatch trapping for poorly designed documents -
   see 'padding', 'interpatch_padding', 'inpatch_wedge'.
2. Improved some debug helpers (TENSOR_SHADING_DEBUG 1).
3. Removed some unused variables.
4. Improved some comments and C-style.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.18]</p>
</blockquote>

<p><strong><a name="2004-02-20_0646"></a>
2004-02-20 06:46 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687279 Linker warnings with Visual Studio 6 and .NET 2003.
The changes consist of removing the keyword INITINSTANCE from the def
files.  The DESCRIPTION lines are changed to a comment and put at the
beginning of the files.</pre>
<p>[src/dw32c.def 1.4, src/dwmain16.def 1.2, src/dwmain32.def 1.4, src/dwsetup.def 1.5, src/dwuninst.def 1.5, src/gsdll32.def 1.5]</p>
</blockquote>

<p><strong><a name="2004-02-20_0004"></a>
2004-02-20 00:04 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 11.

DETAILS :

Simplified wedges with wedge_by_triangles.
It makes a big part of the code to be unused with
NEW_TENSOR_SHADING 1 QUADRANGLES 0 POLYGON_WEDGES 0.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.17]</p>
</blockquote>

<p><strong><a name="2004-02-19_2005"></a>
2004-02-19 20:05 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 10.

DETAILS :

1. Implemented a decomposition by triangles.
2. Applied restrict_color to colors, to avoid lots of pieces
   then basic color values are significantly out of range.
   The 483-07 box of 483-05.ps contains such shadings.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.16]</p>
</blockquote>

<p><strong><a name="2004-02-19_1132"></a>
2004-02-19 11:32 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 9.

DETAILS :

1. Inserted some visual trace instructions in the old algorithm.
2. Moved configurations macro definitions upper, to use them in the old code.
3. Remaned NEW_TENSOR_SHADING_DEBUG with TENSOR_SHADING_DEBUG.
4. In the new code fixed the wedge color.
5. Improved the decomposition of bended patches.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.15]</p>
</blockquote>

<p><strong><a name="2004-02-19_1121"></a>
2004-02-19 11:21 Igor Melichev</strong></p>
<blockquote>
<pre>
Improving visual trace macros.

DETAILS :

This patch implements a nesting of trace allowing conditions
specified in different modules, and applies it to the filling algorithm.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.113, src/vdtrace.h 1.11]</p>
</blockquote>

<p><strong><a name="2004-02-19_0744"></a>
2004-02-19 07:44 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C22.

DETAILS :

The patch
http://www.ghostscript.com/pipermail/gs-cvs/2004-February/004127.html
appears incomplete. This one fixes that.

Bug 687306 "CVS head crashes with pkmraw, 300 dpi, with recent changes."

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.112]</p>
</blockquote>

<p><strong><a name="2004-02-18_1505"></a>
2004-02-18 15:05 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 8.

DETAILS :

This patch changes a disabled code only.

1. is_curve_small uses a better thresholds.
2. is_xy_monotonic_by_v was wrong. Replaced with is_bended.
3. Optimized wedge_trap_decompose.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.14]</p>
</blockquote>

<p><strong><a name="2004-02-18_1500"></a>
2004-02-18 15:00 Igor Melichev</strong></p>
<blockquote>
<pre>
Improving the filling algorithm, step D8.

DETAILS :

Removed floating point arithmetics, which recently appeared by a hack.
A rounding is now done slightly different.

EXPECTED DIFFERENCES :

Normal, 72 dpi :

LD.pdf

Normal, 300 dpi :

012-01.ps
012-05.ps
013-05.ps
032-01.ps
123-01.ps
123-05.ps
205-01.ps

pdfwrite, 72 dpi :

LD.pdf

pdfwrite, 300 dpi :

123-01.ps
123-05.ps
169-13.ps</pre>
<p>[src/gxfill.c 1.111, src/lib.mak 1.168]</p>
</blockquote>

<p><strong><a name="2004-02-18_1441"></a>
2004-02-18 14:41 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix: Documented rounding formulas in the character processing.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/fapiufst.c 1.24, src/gxhintn.c 1.43, src/ttfmain.c 1.23]</p>
</blockquote>

<p><strong><a name="2004-02-18_0954"></a>
2004-02-18 09:54 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Converting an image type 4 into imagemask, a wrong color was written.

DETAILS :

This problem was discovered with ghostpcl and owlfoo.pcl from Stefan.
Thanks to Stefan for detecting it.

This fix is kinda hacky. Let it live for a while, because we want to
study its consequences before applying more efforts.
A right fix should not modify the interpreter graphic state,
but we have no a 'const' copy function for gs_state,
because gx_gstate_clone shares imager state parts.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfi.c 1.51]</p>
</blockquote>

<p><strong><a name="2004-02-18_0535"></a>
2004-02-18 05:35 Dan Coby</strong></p>
<blockquote>
<pre>
Add '!ifndef'/'endif' around varaious parameters in the makefile for the
Borland compiler (bcwin32.mak).  This allows the parameters to be specified
on the command line without editting the makefile.</pre>
<p>[src/bcwin32.mak 1.32]</p>
</blockquote>

<p><strong><a name="2004-02-17_1512"></a>
2004-02-17 15:12 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : MSVC7 wrongly optimizes zpcolor.c .

DETAILS :

It's an aliasing problem in the optimizer.
See comment in code.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/int.mak 1.123, src/zpcolor.c 1.13]</p>
</blockquote>

<p><strong><a name="2004-02-16_1629"></a>
2004-02-16 16:29 Igor Melichev</strong></p>
<blockquote>
<pre>
Improving the filling algorithm, step D7.

DETAILS :

When filling an individual trapezoid, a shortcut
for parallelograms could miss some pixels.

When the left boundary rounds to a vertical line
and the right one does not, for the right boundary it
wrongly applied same zero sampling as for the left one,
in spite of the right boundary can cross pixel centers.

We realize that the shortcut could improve a view
of some parallelograms. But in same time we detected that
in alphabet.ps with 72dpi a parallelogram was replaced
with a wider one, causing a worse view of the character '#'.
So its usefullness is arguable.

Both features can't provide simultaneousely
due to the device interface can't pass a flag whether
an exact coverage is required.
Therefore we drop the shortcut.

EXPECTED DIFFERENCES :

normal 72dpi :

020-01.ps
175-01.ps
1_2001.pdf
289-01.ps
446-01.ps
483-05.ps
86554321.pdf
acrobat.pdf
ADOBE1-4.pdf
alphabet.ps
Altona.Page_3.2002-09-27.pdf
chess.ps
dina3_watermark.pdf
kazmir.pdf
PixelisAd.pdf
RealCities.pdf
spec_gs.pdf
spec_gv.pdf
test.pdf
vsem0093.pdf
xes2ps-problem.pdf
xgfddg.pdf

normal 300dpi :

001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
01_001.pdf
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_pct_50_bang.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-03.ps
268-04.ps
268-05.ps
268-06.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541_623.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
adesso3.pdf
adesso5.pdf
adesso7.pdf
AdobeLic.pdf
alphabet.ps
Altona.Page_3.2002-09-27.pdf
besttest.pdf
brochurep1.pdf
bugsample.pdf
ca.pdf
CAIB_highres_page4.pdf
chess.ps
dave.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
file.pdf
gslandscape.pdf
H00216q.pdf
HeiseiMinStd.pdf
ICPconcept.pdf
japan.ps
kazmir.pdf
keyboard.pdf
korea.ps
KozukaB-ILEmbed.pdf
kshow_with_grestore.ps
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
ngnews.pdf
ngnews1.pdf
Openhuis_pdf_zw.pdf
pdftops.pdf
prfmm.pdf
prob.pdf
pstopdfO3.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
sports.pdf
test.pdf
test2.pdf
test2a.pdf
textsavematrix.pdf
type42_glyph_index.ps
waterfal.ps
xgfddg.pdf
xngnews.pdf

pdfwrite 72 dpi :

020-01.ps
175-01.ps
1_2001.pdf
446-01.ps
483-05.ps
86554321.pdf
acrobat.pdf
ADOBE1-4.pdf
alphabet.ps
Altona.Page_3.2002-09-27.pdf
chess.ps
kazmir.pdf
PixelisAd.pdf
RealCities.pdf
spec_gs.pdf
spec_gv.pdf
test.pdf
vsem0093.pdf
xes2ps-problem.pdf
xgfddg.pdf

pdfwrite 300 dpi :

001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
01_001.pdf
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_pct_50_bang.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-03.ps
268-04.ps
268-05.ps
268-06.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541_623.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
adesso3.pdf
adesso5.pdf
adesso7.pdf
AdobeLic.pdf
alphabet.ps
Altona.Page_3.2002-09-27.pdf
besttest.pdf
brochurep1.pdf
bugsample.pdf
ca.pdf
CAIB_highres_page4.pdf
chess.ps
dave.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
file.pdf
gslandscape.pdf
H00216q.pdf
HeiseiMinStd.pdf
ICPconcept.pdf
japan-.ps
japan.ps
kazmir.pdf
keyboard.pdf
korea.ps
KozukaB-ILEmbed.pdf
kshow_with_grestore.ps
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
ngnews.pdf
ngnews1.pdf
Openhuis_pdf_zw.pdf
pdftops.pdf
prfmm.pdf
prob.pdf
pstopdfO3.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
sports.pdf
test.pdf
test2.pdf
test2a.pdf
textsavematrix.pdf
tpc2.ps
type42_glyph_index.ps
waterfal.ps
xgfddg.pdf
xngnews.pdf</pre>
<p>[src/gxdtfill.h 1.16]</p>
</blockquote>

<p><strong><a name="2004-02-16_1526"></a>
2004-02-16 15:26 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 7.

DETAILS :

Documenting the current state of the development,
because we need to delay the project.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.13]</p>
</blockquote>

<p><strong><a name="2004-02-16_1506"></a>
2004-02-16 15:06 Ralph Giles</strong></p>
<blockquote>
<pre>
Adapt makefile support for compiling in zlib to support v1.2.x rather
than 1.1.x. Linking to a shared version is unaffected.

DETAILS:

The zlib source was re-arranged from the 1.1.4 to the 1.2.x releases.
While binary compatibility was maintained, and we link just fine to a
separately build dynamic zlib, our custom makefile support for compiling
in the library source no longer works.

Rather than add a 'ZLIB_VERSION' makefile variable and the attendent
configuration costs, we've simply migrated completely to the new (much
faster) 1.2.x series. 1.2.1 is now the minimum version to be used if you
wish to compile zlib as part of Ghostscript.</pre>
<p>[doc/Make.htm 1.71, src/zlib.mak 1.8]</p>
</blockquote>

<p><strong><a name="2004-02-16_1351"></a>
2004-02-16 13:51 Igor Melichev</strong></p>
<blockquote>
<pre>
Improving the filling algorithm, step D6.

DETAILS :

The algorithm for for filling an individual trapezoid
used a wrong formula when rounding a coordinate to pixel index.

An intersection of a trapezoid boundary with a scanline
is represented as a rational value, in which the fraction
represent a part of an unit of 'fixed'.
Computing a pixel index, the fraction was ignored.
Due to that the spot sides were biased into about 1/256 pixels.

The bias appears important when some trapezoids are fixed with
swapped coordinate axes, because the bias appears in an opposite
direction to one with unswapped axes. Therefore a decomposition
of a shading missed pixels, which fall exactly into the biased
boundary, causing a dropout.

Here is the analyzis of the old rounding :

We must paint pixels with index i such that

    Xl &lt;= i + 0.5 &lt; Xr

The condition is is equivalent to

    Xl - 0.5 &lt;= i &lt; Xr - 0.5

which is equivalent to

    (is_integer(Xl - 0.5) ? Xl - 0.5 : ceil(Xl - 0.5)) &lt;= i &lt;
    (is_integer(Xr - 0.5) ? Xr - 0.5 : floor(Xr - 0.5) + 1)

(the last '+1" happens due to the strong comparizon '&lt;')
which is equivalent to

    ceil(Xl - 0.5) &lt;= i &lt; ceil(Xr - 0.5)

trap_line represents the intersectiion coordinate as a rational value :

    Xl = xl + e - fl
    Xr = xr + e - fr

gxdtfill.c computes l.x = x0l + (fixed_half - fixed_epsilon).
In our notation it is equal to :

    xl' := xl + 0.5 - e
    xr' := xr + 0.5 - e

Then

    xl = xl' - 0.5 + e
    xr = xr' - 0.5 + e

    Xl = xl' - 0.5 + 2e - fl
    Xr = xr' - 0.5 + 2e - fr

    ceil(xl' - 0.5 + 2e - fl - 0.5) &lt;= i &lt; ceil(xr' - 0.5 + 2e - fr - 0.5)

which is equivalent to

    ceil(xl' + 2e - fl) - 1 &lt;= i &lt; ceil(xr' + 2e - fr) - 1

We have :

    ceil(xl' + 2e - fl) - 1 ==

    (is_integer(xl' + 2e - fl) ? xl' + 2e - fl - 1 : ceil(xl' + 2e - fl) - 1) ==

    (is_integer(xl' + 2e - fl) ? xl' + 2e - fl - 1 : floor(xl' + 2e - fl))

Since -e &lt;= fl &lt; 0, it is equal to

    (is_integer(xl' + e) &amp;&amp; e == fl ? xl' + 2e - fl - 1 : floor(xl' + 2e - fl)) ==

    (is_integer(xl' + e) &amp;&amp; e == fl ? xl' + e - 1 :
     is_integer(xl' + e) &amp;&amp; e != fl ? floor(xl' + 2e - fl)
    !is_integer(xl' + e) &amp;&amp; e != fl ? floor(xl' + 2e - fl)
    !is_integer(xl' + e) &amp;&amp; e == fl ? floor(xl' + 2e - fl))  ==

    (is_integer(xl' + e) &amp;&amp; e == fl ? xl' + e - 1 :
     is_integer(xl' + e) &amp;&amp; e != fl ? xl' + e :
    !is_integer(xl' + e) &amp;&amp; e != fl ? floor(xl' + e)
    !is_integer(xl' + e) &amp;&amp; e == fl ? floor(xl' + e))  ==

    (is_integer(xl' + e) &amp;&amp; e == fl ? xl' + e - 1 : floor(xl'))

And the condition is equivalent to

    (is_integer(xl' + e) &amp;&amp; e == fl ? xl' + e - 1 : floor(xl')) &lt;= i &lt;
    (is_integer(xr' + e) &amp;&amp; e == fr ? xl' + e - 1 : floor(xr'))

But the old code computes

    floor(xl') &lt;= i &lt; floor(xr'))

Thus when is_integer(xl' + e) &amp;&amp; e == fl,
it wrongly shifts the rounded boundary in 1 pixel to the left.

EXPECTED DIFFERENCES :

Almost all tests render differently.

Normal 72 dpi :

0.pdf
000040cf.000_60.pdf
001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
01_001.pdf
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
033-52-5873.pdf
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_2001.pdf
1_pct_50_bang.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-03.ps
268-04.ps
268-05.ps
268-06.ps
268-10.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
290.pdf
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541.pdf
541_623.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso5.pdf
adesso6.pdf
adesso7.pdf
adesso8.pdf
ADOBE1-4.pdf
AdobeLic.pdf
ai2.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
ats-3-5-99.pdf
bc_02a01_cal.pdf
BEST8-99-Path.fh7.pdf
besttest.pdf
brochurep1.pdf
budget2.pdf
budget2_ai87.pdf
bug-gstest.pdf
Bug687044.ps
Bug687207.ps
bugsample.pdf
bulletin.pdf
BW0696FOLD1FRONT.pdf
ca.pdf
CAIB_highres_page4.pdf
CAT_LOGO.ps
ccc.pdf
chess.ps
chilis_black.pdf
chilis_red.pdf
chstudy.pdf
CIDembedded.pdf
colorcir.ps
dave.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
doretree.ps
Es001-01.pdf
escher.ps
Faktura.pdf
file.pdf
file2.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
font_issue.pdf
frosch.pdf
golfer.eps
gs5.98-dragon.pdf
gs6.0-dragon.pdf
gslandscape.pdf
H00216q.pdf
HeiseiMinStd.pdf
ICPconcept.pdf
Jahr2000.pdf
japan.ps
john_clippedimage.pdf
js.pdf
kazmir.pdf
keyboard.pdf
knight.pdf
KozukaB-ILEmbed.pdf
kshow_with_grestore.ps
laballade.pdf
LD.pdf
LMG-40-7161-RU-DUC-01.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
motor.pdf
mspro.pdf
muur.eps
new_rect_nr.pdf
ngnews.pdf
ngnews1.pdf
Openhuis_pdf_zw.pdf
Original.pdf
p2b-100.pdf
Page01.pdf
pdfopt_bug.pdf
PixelisAd.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
rf1025.pdf
RodinCIDEmbed.pdf
rotate0.pdf
rotate270.pdf
S2_Digitalproof-Forum_circles.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
si_tg_brochure.pdf
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
sports.pdf
Svd.pdf
test.pdf
test2.pdf
test2a.pdf
Testform.v1.0.2.pdf
TextRize.pdf
textsavematrix.pdf
tiger.eps
time1.pdf
two_encodings.ps
type2accent.pdf
type3xshow.eps
type42_glyph_index.ps
unihaken-color.pdf
vasarely.ps
vsem0093.pdf
waterfal.ps
womanface.pdf
xgfddg.pdf
xngnews.pdf

normal, 300dpi :

0.pdf
000040cf.000_60.pdf
001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
01_001.pdf
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
033-52-5873.pdf
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_2001.pdf
1_pct_50_bang.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-02.ps
268-03.ps
268-04.ps
268-05.ps
268-06.ps
268-10.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
290.pdf
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541.pdf
541_623.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso5.pdf
adesso6.pdf
adesso7.pdf
adesso8.pdf
ADOBE1-4.pdf
AdobeLic.pdf
ai2.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
ats-3-5-99.pdf
bc_02a01_cal.pdf
BEST8-99-Path.fh7.pdf
besttest.pdf
brochurep1.pdf
budget2.pdf
budget2_ai87.pdf
bug-gstest.pdf
Bug687044.ps
Bug687156.ps
Bug687207.ps
bugsample.pdf
bulletin.pdf
BW0696FOLD1FRONT.pdf
ca.pdf
CAIB_highres_page4.pdf
ccc.pdf
chess.ps
chilis_black.pdf
chilis_red.pdf
chstudy.pdf
CIDembedded.pdf
colorcir.ps
dave.pdf
Dave_Barry.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
doretree.ps
Encoding.ps
Es001-01.pdf
escher.ps
Faktura.pdf
file.pdf
file2.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
font_issue.pdf
foo.pdf
frosch.pdf
golfer.eps
gs.anotherfailure.pdf
gs5.98-dragon.pdf
gs6.0-dragon.pdf
gslandscape.pdf
GS_Stroke_error.pdf
H00216q.pdf
HeiseiMinStd.pdf
ICPconcept.pdf
InstandardBuildChar.ps
Jahr2000.pdf
japan.ps
john_clippedimage.pdf
js.pdf
kazmir.pdf
keyboard.pdf
knight.pdf
korea.ps
KozukaB-ILEmbed.pdf
kshow_with_grestore.ps
laballade.pdf
LD.pdf
LMG-40-7161-RU-DUC-01.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
motor.pdf
muur.eps
NECPNTD.pdf
new_rect.pdf
new_rect_nr.pdf
ngnews.pdf
ngnews1.pdf
NIL_0003.pdf
non-sepqxd2distiller.pdf
Openhuis_pdf_zw.pdf
Original.pdf
p2b-100.pdf
Page01.pdf
pdfopt_bug.pdf
pdftops.pdf
PixelisAd.pdf
prfmm.pdf
prob.pdf
probe3.pdf
pstopdf.pdf
pstopdfO3.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
rf1025.pdf
ridt91.eps
RodinCIDEmbed.pdf
rotate0.pdf
rotate180.pdf
rotate270.pdf
rotate90.pdf
S2_Digitalproof-Forum_circles.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
si_tg_brochure.pdf
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
sports.pdf
Svd.pdf
test-hyperref.pdf
test.pdf
test2.pdf
test2a.pdf
test3.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
TextRize.pdf
textsavematrix.pdf
tiger.eps
time1.pdf
tpc2.ps
two_encodings.ps
type2accent.pdf
type3xshow.eps
type42_glyph_index.ps
unihaken-color.pdf
UnusualFontMatrix.ps
vasarely.ps
vsem0093.pdf
Vu989qfj.pdf
waterfal.ps
womanface.pdf
xgfddg.pdf
xngnews.pdf

pdfwrite 72dpi :

0.pdf
000040cf.000_60.pdf
001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
01_001.pdf
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
033-52-5873.pdf
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_2001.pdf
1_pct_50_bang.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-03.ps
268-04.ps
268-05.ps
268-06.ps
268-10.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
290.pdf
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541.pdf
541_623.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso5.pdf
adesso6.pdf
adesso7.pdf
adesso8.pdf
ADOBE1-4.pdf
AdobeLic.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
ats-3-5-99.pdf
bc_02a01_cal.pdf
BEST8-99-Path.fh7.pdf
besttest.pdf
brochurep1.pdf
budget2.pdf
budget2_ai87.pdf
bug-gstest.pdf
Bug687044.ps
Bug687207.ps
bugsample.pdf
bulletin.pdf
BW0696FOLD1FRONT.pdf
ca.pdf
CAIB_highres_page4.pdf
CAT_LOGO.ps
ccc.pdf
chess.ps
chilis_black.pdf
chilis_red.pdf
chstudy.pdf
CIDembedded.pdf
colorcir.ps
dave.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
doretree.ps
Es001-01.pdf
escher.ps
Faktura.pdf
file.pdf
file2.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
font_issue.pdf
frosch.pdf
golfer.eps
gs5.98-dragon.pdf
gs6.0-dragon.pdf
gslandscape.pdf
H00216q.pdf
HeiseiMinStd.pdf
ICPconcept.pdf
Jahr2000.pdf
japan.ps
john_clippedimage.pdf
js.pdf
kazmir.pdf
keyboard.pdf
knight.pdf
KozukaB-ILEmbed.pdf
kshow_with_grestore.ps
laballade.pdf
LD.pdf
LMG-40-7161-RU-DUC-01.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
motor.pdf
mspro.pdf
muur.eps
new_rect_nr.pdf
ngnews.pdf
ngnews1.pdf
Openhuis_pdf_zw.pdf
Original.pdf
p2b-100.pdf
Page01.pdf
PixelisAd.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
rf1025.pdf
ridt91.eps
RodinCIDEmbed.pdf
rotate0.pdf
S2_Digitalproof-Forum_circles.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
si_tg_brochure.pdf
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
sports.pdf
Svd.pdf
test.pdf
test2.pdf
test2a.pdf
Testform.v1.0.2.pdf
TextRize.pdf
textsavematrix.pdf
tiger.eps
time1.pdf
tpc2.ps
two_encodings.ps
type2accent.pdf
type3xshow.eps
type42_glyph_index.ps
unihaken-color.pdf
vasarely.ps
vsem0093.pdf
waterfal.ps
womanface.pdf
xgfddg.pdf
xngnews.pdf

pdfwrite, 300 dpi :

0.pdf
000040cf.000_60.pdf
001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
01_001.pdf
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
033-52-5873.pdf
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_2001.pdf
1_pct_50_bang.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-02.ps
268-03.ps
268-04.ps
268-05.ps
268-06.ps
268-10.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
290.pdf
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541.pdf
541_623.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso5.pdf
adesso6.pdf
adesso7.pdf
adesso8.pdf
ADOBE1-4.pdf
AdobeLic.pdf
ai2.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
ats-3-5-99.pdf
bc_02a01_cal.pdf
BEST8-99-Path.fh7.pdf
besttest.pdf
brochurep1.pdf
budget2.pdf
budget2_ai87.pdf
bug-gstest.pdf
Bug687044.ps
Bug687156.ps
Bug687207.ps
bugsample.pdf
bulletin.pdf
BW0696FOLD1FRONT.pdf
ca.pdf
CAIB_highres_page4.pdf
CAT_LOGO.ps
ccc.pdf
chess.ps
chilis_black.pdf
chilis_red.pdf
chstudy.pdf
CIDembedded.pdf
colorcir.ps
dave.pdf
Dave_Barry.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
doretree.ps
Encoding.ps
Es001-01.pdf
escher.ps
Faktura.pdf
file.pdf
file2.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
font_issue.pdf
foo.pdf
frosch.pdf
golfer.eps
gs.anotherfailure.pdf
gs5.98-dragon.pdf
gs6.0-dragon.pdf
gslandscape.pdf
GS_Stroke_error.pdf
H00216q.pdf
HeiseiMinStd.pdf
ICPconcept.pdf
InstandardBuildChar.ps
Jahr2000.pdf
japan.ps
john_clippedimage.pdf
js.pdf
kazmir.pdf
keyboard.pdf
knight.pdf
korea.ps
KozukaB-ILEmbed.pdf
kshow_with_grestore.ps
laballade.pdf
LD.pdf
LMG-40-7161-RU-DUC-01.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
motor.pdf
mspro.pdf
muur.eps
NECPNTD.pdf
new_rect.pdf
new_rect_nr.pdf
ngnews.pdf
ngnews1.pdf
NIL_0003.pdf
non-sepqxd2distiller.pdf
Openhuis_pdf_zw.pdf
Original.pdf
p2b-100.pdf
Page01.pdf
pdfopt_bug.pdf
pdftops.pdf
PixelisAd.pdf
prfmm.pdf
prob.pdf
probe3.pdf
pstopdf.pdf
pstopdfO3.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
rf1025.pdf
ridt91.eps
RodinCIDEmbed.pdf
rotate0.pdf
rotate180.pdf
rotate270.pdf
rotate90.pdf
S2_Digitalproof-Forum_circles.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
si_tg_brochure.pdf
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
sports.pdf
Svd.pdf
test-hyperref.pdf
test.pdf
test2.pdf
test2a.pdf
test3.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
TextRize.pdf
textsavematrix.pdf
tiger.eps
time1.pdf
tpc2.ps
two_encodings.ps
type2accent.pdf
type3xshow.eps
type42_glyph_index.ps
unihaken-color.pdf
UnusualFontMatrix.ps
vasarely.ps
vsem0093.pdf
Vu989qfj.pdf
waterfal.ps
womanface.pdf
xgfddg.pdf
xngnews.pdf</pre>
<p>[src/gxdtfill.h 1.15]</p>
</blockquote>

<p><strong><a name="2004-02-16_0947"></a>
2004-02-16 09:47 Igor Melichev</strong></p>
<blockquote>
<pre>
Improving the filling algorithm, step D5.

DETAILS :

It's a preparation for fixing a problem while filling a single trapezoid.
This change improved a debug drawing.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxdtfill.h 1.14]</p>
</blockquote>

<p><strong><a name="2004-02-16_0913"></a>
2004-02-16 09:13 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 6.

DETAILS :

The new code is disabled with NEW_TENSOR_SHADING 0.

1. Implemented a debug drawer draw_wedge.
2. dbg_nofill was not properly initialized.
3. Removed a debuging hack.
4. removed unused variables.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.12]</p>
</blockquote>

<p><strong><a name="2004-02-16_0910"></a>
2004-02-16 09:10 Igor Melichev</strong></p>
<blockquote>
<pre>
Improving the filling algorithm, step D4.

DETAILS :

It's a preparation for fixing a problem while filling a single trapezoid.
This change is algorithmicaly equivalent.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxdtfill.h 1.13]</p>
</blockquote>

<p><strong><a name="2004-02-16_0821"></a>
2004-02-16 08:21 Igor Melichev</strong></p>
<blockquote>
<pre>
Improving the filling algorithm, step D2.

DETAILS :

It's a preparation for fixing a problem while filling a single trapezoid.
This change is algorithmicaly equivalent.
It branches out the rectangle case and simplifies it.
Some macros are moved by necessity.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxdtfill.h 1.12]</p>
</blockquote>

<p><strong><a name="2004-02-16_0601"></a>
2004-02-16 06:01 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687294 psdcmyk device does not write resolution correctly to PSD
files.  This change adds a 'ResolutionInfo structure' into the 'Image
Resources' section of the output file.  This structure specifies the
horizontal and vertical resolution of the image.  (Note:  Adobe's support
of asymetric resolutions is poor.)</pre>
<p>[src/gdevpsd.c 1.6]</p>
</blockquote>

<p><strong><a name="2004-02-15_1451"></a>
2004-02-15 14:51 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix: Improving the documentation (comments) about the filling algorithm, improved.

DETAILS :

The prevoius change to the comment appears wrong,
i.e. the old expression "x + xf/h + 1"
appears correct due to compute_ldx subtracts h from
the remainder but doesn't add 1 to the integer part,
which is x.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevddrw.c 1.13]</p>
</blockquote>

<p><strong><a name="2004-02-15_1131"></a>
2004-02-15 11:31 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 5.

DETAILS :

The new code is disabled with NEW_TENSOR_SHADING 0.
It fixes some dropouts.

1. Improved the documentation (comments).
2. Improved the debug painting with NEW_TENSOR_SHADING_DEBUG.
3. Fixed bugs in the linear equation solver.
4. Improved the wedge generation.
5. Reduced the usage of transpozed coordinates.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.11]</p>
</blockquote>

<p><strong><a name="2004-02-15_1128"></a>
2004-02-15 11:28 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix: Improving the documentation (comments) about the filling algorithm.

DETAILS :

We believe that the comment about "x, xf" was wrong.
Note tha the old expression was "x + xf/h + 1",
and we changed it to "x + xf/h". We believe that
the new one corresponds to the code.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevddrw.c 1.12, src/gxdtfill.h 1.11]</p>
</blockquote>

<p><strong><a name="2004-02-14_1157"></a>
2004-02-14 11:57 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 4.

DETAILS :

The new code is disabled with NEW_TENSOR_SHADING 0.
In the new code wedges were wrong.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.10]</p>
</blockquote>

<p><strong><a name="2004-02-14_0904"></a>
2004-02-14 09:04 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 3.

DETAILS :

The new code is disabled with NEW_TENSOR_SHADING 0.
In the new code fixed internal wegdes.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.9, src/lib.mak 1.167]</p>
</blockquote>

<p><strong><a name="2004-02-14_0844"></a>
2004-02-14 08:44 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Visual trace could miss the current color when reinitialized.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/dwtrace.c 1.6]</p>
</blockquote>

<p><strong><a name="2004-02-13_1751"></a>
2004-02-13 17:51 Ralph Giles</strong></p>
<blockquote>
<pre>
Propagate a change from the GS_8_1X branch. AC_CHECK_TYPES takes a
comma-sparated list.</pre>
<p>[src/configure.ac 1.40]</p>
</blockquote>

<p><strong><a name="2004-02-13_1643"></a>
2004-02-13 16:43 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 2.

DETAILS :

The new code is disabled with NEW_TENSOR_SHADING 0.
In the new code fixed the decomposition except wegdes.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.8, src/lib.mak 1.166]</p>
</blockquote>

<p><strong><a name="2004-02-13_0815"></a>
2004-02-13 08:15 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : NoEncrypt option by a special customer request, improved.

DETAILS :

Improving the condition for empty keys.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfo.c 1.28]</p>
</blockquote>

<p><strong><a name="2004-02-13_0808"></a>
2004-02-13 08:08 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : NoEncrypt option by a special customer request.

DETAILS :

The implementation isn't fool proof : an inaccurate specification
may generate an inconforming document.

The specified key is not encrypted in any dictionary.
The specification must use an external representation :
a name to be prepended with slash, a string to be bracketed, and so on.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.89, src/gdevpdfo.c 1.27, src/gdevpdfp.c 1.37, src/gdevpdfu.c 1.51, src/gdevpdfx.h 1.86]</p>
</blockquote>

<p><strong><a name="2004-02-12_1629"></a>
2004-02-12 16:29 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Intel C and Cygwin/gcc compiler warnings.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtc.c 1.33, src/gxcht.c 1.12, src/gxdhtserial.c 1.4, src/gxht.c 1.15, src/gxttfb.c 1.30]</p>
</blockquote>

<p><strong><a name="2004-02-12_1519"></a>
2004-02-12 15:19 Igor Melichev</strong></p>
<blockquote>
<pre>
Improving the filling algorithm, step D1.

DETAILS :

1. The 'peak' condition was too weak.
   Caused minor differences in rasters with dropout prevention.

2. Expanded loop_fill_trap_np in the inner trapezoid loop.
   This change is algorithmically equivalent.

3. Cleaned the inner loop with moving out the computations if ybot, ytop.
   This change is algorithmically equivalent.

4. Moved the (ybot &lt; ytop) check outside the trapezoid loop.
   This change is algorithmically equivalent.

5. Inserted 'const' into loop_fill_trap_np.

6. Inserted the section "Reserved to improve the banding"
   to simplify experiments with it.

EXPECTED DIFFERENCES :

72dpi :

86554321.pdf
adesso1.pdf
Altona.Page_3.2002-09-27.pdf
besttest.pdf
CAIB_highres_page4.pdf
pstopdf.pdf
smdf.90441.102.pdf
sports.pdf
waterfal.ps

300dpi :

Altona.Page_3.2002-09-27.pdf</pre>
<p>[src/gxfill.c 1.110, src/gxfilltr.h 1.3]</p>
</blockquote>

<p><strong><a name="2004-02-12_1205"></a>
2004-02-12 12:05 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Some Intel C compiler warnings.

DETAILS :

Bug 687292 "General bugs in ghostscript source".

"double wxy[2]" was a real bug, but this code fragment
never executes with current Ghostscript and GhostPCL interpreters.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfcopy.c 1.41]</p>
</blockquote>

<p><strong><a name="2004-02-12_1028"></a>
2004-02-12 10:28 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Charproc can change scale before calling setcachedevice.

DETAILS :

Bug 687290 "pdfwrite generate too large glyphs".

To know that CTM changed by a charproc before setcachedevice or setcharwidth,
we set identity CTM before entering the charproc.
If setcachedevice or setcharwidth decides to fall back to
the default implementation, we restore the CTM in there.

The condition in gdevpdtt.c 1931 is changed,
causing minor differences with Bug687044.ps and muur.eps .

We found that a further improvement would be useful for
a better handling of a composite font with a Type 3 descendent.
Opened the new bug 687298 about this issue.
Differences with Bug687044.ps and muur.eps may be related to it.

EXPECTED DIFFERENCES :

A minor shift of glyphs with pdfwrite :

Bug687044.ps
muur.eps</pre>
<p>[src/gdevpdf.c 1.88, src/gdevpdfx.h 1.85, src/gdevpdtt.c 1.73]</p>
</blockquote>

<p><strong><a name="2004-02-11_1120"></a>
2004-02-11 11:20 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : GS_LIB_DEFAULT was wrong on OpenVMS.

DETAILS :

Bug 687258 "(VMS) Illustrator 10 eps with spot color crashes ghostscript".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/openvms.mak 1.35]</p>
</blockquote>

<p><strong><a name="2004-02-11_1100"></a>
2004-02-11 11:00 Igor Melichev</strong></p>
<blockquote>
<pre>
A new implementation of shadings, step 1.

DETAILS :

The new code is disabled with NEW_TENSOR_SHADING 0.
The new code compiles but never tested.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxshade6.c 1.7, src/lib.mak 1.165]</p>
</blockquote>

<p><strong><a name="2004-02-10_2231"></a>
2004-02-10 22:31 Ralph Giles</strong></p>
<blockquote>
<pre>
Update our copy of the ijs source to the latest cvs source, which
includes libtool support for building a shared library version. Closes
bug 687278.</pre>
<p>[ijs/Makefile.am 1.1, ijs/Makefile.in 1.3, ijs/README 1.2, ijs/autogen.sh 1.1, ijs/configure.ac 1.1, ijs/configure.in 1.2, ijs/ijs.c 1.2, ijs/ijs.h 1.2, ijs/ijs.pc.in 1.1, ijs/ijs_client.c 1.2, ijs/ijs_client.h 1.2, ijs/ijs_client_example.c 1.2, ijs/ijs_exec_unix.c 1.2, ijs/ijs_exec_win.c 1.2, ijs/ijs_server.c 1.2, ijs/ijs_server.h 1.2, ijs/ijs_server_example.c 1.2, ijs/ijs_spec.sgml 1.2, ijs/install-sh 1.2, ijs/unistd_.h 1.2]</p>
</blockquote>

<p><strong><a name="2004-02-08_1735"></a>
2004-02-08 17:35 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix: Improving the decision whether the dropout prevention to be applied.

DETAILS :

1. The old code applied the dropout prevention
if gx_fill_params::adjust = 0.
It worked since the latter was set to 0 only for characters.

Now we intend to discontinue the fill adjustment with shadings,
so the old condition won't be applicable in further revisions.
Therefore we reserve the value -1 of gx_fill_params::adjust
especially for designating characters with a dropout prevention,
and percept it in the filling algorithm (We tried to use
new special flag for designeting characters,
but it requires an enhancement to the clist language.).

2. The old code has a problem with PaintType 2 fonts :
it applied the dropout prevention to strokes.
This patch fixes that with checking PaintType in gxtype1.c .

EXPECTED DIFFERENCES :

A progression with CAT_LOGO.ps due to (2).</pre>
<p>[src/gxfill.c 1.109, src/gxistate.h 1.20, src/gxtype1.c 1.36, src/zchar42.c 1.15]</p>
</blockquote>

<p><strong><a name="2004-02-08_1129"></a>
2004-02-08 11:29 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C21.

DETAILS :

Removing the old code DONT_FILTER_SMALL_SEGMENTS 0.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gx.h 1.42, src/gxfill.c 1.108, src/gxfill.h 1.22, src/gxpflat.c 1.40, src/gzpath.h 1.36]</p>
</blockquote>

<p><strong><a name="2004-02-08_1023"></a>
2004-02-08 10:23 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C20.

DETAILS :

Removing the old code SCANLINE_USES_ITERATOR 0.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gx.h 1.41, src/gxfill.c 1.107, src/gxfill.h 1.21, src/gxfillsl.h 1.3, src/gxpcopy.c 1.22, src/gzpath.h 1.35]</p>
</blockquote>

<p><strong><a name="2004-02-08_0146"></a>
2004-02-08 01:46 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C19a.

DETAILS :

Fixing a comment.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxdtfill.h 1.10]</p>
</blockquote>

<p><strong><a name="2004-02-08_0141"></a>
2004-02-08 01:41 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C19.

DETAILS :

This is an optimization of the trapezoid algorithm :

1. gx_fill_trapezoid_narrow derives a specialization from
   fill_loop_by_trapezoids__pr.

2. Simplified the GX_FILL_TRAPEZOID template with moving the
   fill_direct check outside the template.

3. Renamed gx_default_fill_trapezoid_as, gx_default_fill_trapezoid_ns,
   gx_fill_trapezoid_narrow.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevddrw.c 1.11, src/gdevddrw.h 1.4, src/gxdtfill.h 1.9, src/gxfilltr.h 1.2]</p>
</blockquote>

<p><strong><a name="2004-02-06_1105"></a>
2004-02-06 11:05 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C18.

DETAILS :

This is an optimization of the new scanline algorithm.
merge_ranges doesnt need to enumerate flattened pieces of monotonic curves.
Minor change : renamed "monotonic" into "monotonic_y".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.106, src/gxfill.h 1.20]</p>
</blockquote>

<p><strong><a name="2004-02-05_1759"></a>
2004-02-05 17:59 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C17.

DETAILS :

Do not filter out short flattened segments.

We believe that the old code was not conforming to PLRM due to filtering small
segments after flatteingng a curve.

We believe that the filtering has 2 purposes :

1. Prevent the filling algorythms from zero length segments;
2. Speed up the filling with reducing the number of vertices in a polygon.

The new filling algorithm handles zero length segments with no problem,
and the speeding up appears within 1% except for shadings.
We believe that the rendering quality is more important.

The performance of shadings to be fixed separately.

EXPECTED DIFFERENCES :

This patch causes rendering differences with almost all of comparefiles :

Normal, 72 dpi :

0.pdf
000040cf.000_60.pdf
001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
01_001.pdf
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
033-52-5873.pdf
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_2001.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-03.ps
268-04.ps
268-05.ps
268-06.ps
268-10.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
290.pdf
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541.pdf
541_623.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso5.pdf
adesso6.pdf
adesso7.pdf
adesso8.pdf
ADOBE1-4.pdf
AdobeLic.pdf
ai2.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
ats-3-5-99.pdf
bc_02a01_cal.pdf
besttest.pdf
brochurep1.pdf
budget2.pdf
budget2_ai87.pdf
bug-gstest.pdf
Bug687044.ps
Bug687156.ps
bugsample.pdf
bulletin.pdf
ca.pdf
CAIB_highres_page4.pdf
ccc.pdf
chess.ps
chilis_black.pdf
chstudy.pdf
CIDembedded.pdf
colorcir.ps
dave.pdf
Dave_Barry.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
Encoding.ps
Faktura.pdf
file.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
frosch.pdf
golfer.eps
gslandscape.pdf
H00216q.pdf
HeiseiMinStd.pdf
ICPconcept.pdf
Jahr2000.pdf
japan-.ps
japan.ps
js.pdf
kazmir.pdf
keyboard.pdf
knight.pdf
korea.ps
KozukaB-ILEmbed.pdf
laballade.pdf
LD.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
mspro.pdf
NECPNTD.pdf
new_rect.pdf
new_rect_nr.pdf
ngnews.pdf
ngnews1.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
Original.pdf
p2b-100.pdf
pdfopt_bug.pdf
pdftops.pdf
PixelisAd.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
pstopdfO3.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
rf1025.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
sports.pdf
Svd.pdf
test-setweightvector.ps
test.pdf
test2.pdf
test2a.pdf
test3.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
textsavematrix.pdf
tiger.eps
time1.pdf
tpc2.ps
Type11CDevProc.ps
Type3stringwidth.ps
type42_glyph_index.ps
vsem0093.pdf
Vu989qfj.pdf
waterfal.ps
xgfddg.pdf
xngnews.pdf

Normal, 300dpi :

0.pdf
000040cf.000_60.pdf
001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
01_001.pdf
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
033-52-5873.pdf
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_2001.pdf
1_pct_50_bang.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-02.ps
268-04.ps
268-05.ps
268-06.ps
268-10.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
290.pdf
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541.pdf
541_623.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso5.pdf
adesso6.pdf
adesso7.pdf
adesso8.pdf
ADOBE1-4.pdf
AdobeLic.pdf
ai2.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
ats-3-5-99.pdf
bc_02a01_cal.pdf
besttest.pdf
brochurep1.pdf
budget2.pdf
budget2_ai87.pdf
bug-gstest.pdf
Bug687044.ps
bugsample.pdf
bulletin.pdf
BW0696FOLD1FRONT.pdf
ca.pdf
CAIB_highres_page4.pdf
CAT_LOGO.ps
ccc.pdf
chess.ps
chilis_black.pdf
chstudy.pdf
CIDembedded.pdf
colorcir.ps
dave.pdf
Dave_Barry.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
Encoding.ps
Faktura.pdf
file.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
foo.pdf
frosch.pdf
golfer.eps
gs5.98-dragon.pdf
gs6.0-dragon.pdf
gslandscape.pdf
GS_Stroke_error.pdf
H00216q.pdf
HeiseiMinStd.pdf
ICPconcept.pdf
Jahr2000.pdf
japan.ps
js.pdf
kazmir.pdf
keyboard.pdf
knight.pdf
korea.ps
KozukaB-ILEmbed.pdf
laballade.pdf
LD.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
mspro.pdf
NECPNTD.pdf
new_rect.pdf
new_rect_nr.pdf
ngnews.pdf
ngnews1.pdf
NIL_0003.pdf
non-sepqxd2distiller.pdf
Openhuis_pdf_zw.pdf
Original.pdf
p2b-100.pdf
pdfopt_bug.pdf
pdftops.pdf
PixelisAd.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
pstopdfO3.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
rf1025.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
sports.pdf
Svd.pdf
test-hyperref.pdf
test.pdf
test3.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
TextRize.pdf
textsavematrix.pdf
tiger.eps
time1.pdf
tpc2.ps
two_encodings.ps
type1-ce1_setcurrentpoint.ps
Type3stringwidth.ps
type42_glyph_index.ps
vsem0093.pdf
Vu989qfj.pdf
waterfal.ps
womanface.pdf
xgfddg.pdf
xngnews.pdf

pdfwrite, 72dpi :

0.pdf
000040cf.000_60.pdf
001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
01_001.pdf
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
033-52-5873.pdf
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_2001.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-03.ps
268-04.ps
268-05.ps
268-06.ps
268-10.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
290.pdf
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541.pdf
541_623.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso5.pdf
adesso6.pdf
adesso7.pdf
adesso8.pdf
ADOBE1-4.pdf
AdobeLic.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
ats-3-5-99.pdf
bc_02a01_cal.pdf
besttest.pdf
brochurep1.pdf
budget2.pdf
budget2_ai87.pdf
bug-gstest.pdf
Bug687044.ps
Bug687156.ps
bugsample.pdf
bulletin.pdf
ca.pdf
CAIB_highres_page4.pdf
ccc.pdf
chess.ps
chilis_black.pdf
chstudy.pdf
CIDembedded.pdf
colorcir.ps
dave.pdf
Dave_Barry.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
Encoding.ps
Faktura.pdf
file.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
frosch.pdf
golfer.eps
gslandscape.pdf
H00216q.pdf
HeiseiMinStd.pdf
ICPconcept.pdf
Jahr2000.pdf
japan.ps
js.pdf
kazmir.pdf
keyboard.pdf
knight.pdf
korea.ps
KozukaB-ILEmbed.pdf
laballade.pdf
LD.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
mspro.pdf
NECPNTD.pdf
new_rect.pdf
new_rect_nr.pdf
ngnews.pdf
ngnews1.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
Original.pdf
p2b-100.pdf
pdftops.pdf
PixelisAd.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
pstopdfO3.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
rf1025.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
sports.pdf
Svd.pdf
test-setweightvector.ps
test.pdf
test2.pdf
test2a.pdf
test3.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
textsavematrix.pdf
tiger.eps
time1.pdf
tpc2.ps
Type11CDevProc.ps
Type3stringwidth.ps
type42_glyph_index.ps
vsem0093.pdf
Vu989qfj.pdf
waterfal.ps
xgfddg.pdf
xngnews.pdf

pdfwrite, 300dpi :

0.pdf
000040cf.000_60.pdf
001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
01_001.pdf
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
033-52-5873.pdf
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_2001.pdf
1_pct_50_bang.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-02.ps
268-04.ps
268-05.ps
268-06.ps
268-10.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
290.pdf
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541.pdf
541_623.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso5.pdf
adesso6.pdf
adesso7.pdf
adesso8.pdf
ADOBE1-4.pdf
AdobeLic.pdf
ai2.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
ats-3-5-99.pdf
bc_02a01_cal.pdf
besttest.pdf
brochurep1.pdf
budget2.pdf
budget2_ai87.pdf
bug-gstest.pdf
Bug687044.ps
bugsample.pdf
bulletin.pdf
BW0696FOLD1FRONT.pdf
ca.pdf
CAIB_highres_page4.pdf
ccc.pdf
chess.ps
chilis_black.pdf
chstudy.pdf
CIDembedded.pdf
colorcir.ps
dave.pdf
Dave_Barry.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
Encoding.ps
Faktura.pdf
file.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
foo.pdf
frosch.pdf
gs5.98-dragon.pdf
gs6.0-dragon.pdf
gslandscape.pdf
GS_Stroke_error.pdf
H00216q.pdf
HeiseiMinStd.pdf
ICPconcept.pdf
Jahr2000.pdf
japan-.ps
japan.ps
js.pdf
kazmir.pdf
keyboard.pdf
knight.pdf
korea.ps
KozukaB-ILEmbed.pdf
laballade.pdf
LD.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
mspro.pdf
NECPNTD.pdf
new_rect.pdf
new_rect_nr.pdf
ngnews.pdf
ngnews1.pdf
NIL_0003.pdf
non-sepqxd2distiller.pdf
Openhuis_pdf_zw.pdf
Original.pdf
p2b-100.pdf
pdfopt_bug.pdf
pdftops.pdf
PixelisAd.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
pstopdfO3.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
rf1025.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
sports.pdf
Svd.pdf
test-hyperref.pdf
test-setweightvector.ps
test.pdf
test3.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
TextRize.pdf
textsavematrix.pdf
tiger.eps
time1.pdf
tpc2.ps
two_encodings.ps
type42_glyph_index.ps
vsem0093.pdf
Vu989qfj.pdf
waterfal.ps
womanface.pdf
xgfddg.pdf
xngnews.pdf</pre>
<p>[src/gx.h 1.40]</p>
</blockquote>

<p><strong><a name="2004-02-05_1608"></a>
2004-02-05 16:08 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C16.

DETAILS :

Switching to the new scanline algorithm based on the flattened iterator.
Now both the trapezoid and the scanline algorithm use same flattened path.

Differences in rasters appears due to 2 reasons :

1. An inprecise expressions used in the old algorithm in gx_curve_x_at_y :
the iteration of midpoint_fast accumulates a big rounding error.
The new algorithm have smaller error due to 3*log2(N) fraction bits
while the coordinate accumulation, where N is the number of flattened segments.

2. The old algorithm used inprecise expressions in pco_monotonize.
The new algorithm applies a flattening instead the monotonization.

EXPECTED DIFFERENCES :

Normal, 72 dpi :

012-09.ps
013-09.ps
020-01.ps
027-05.ps
027-13.ps
045-01.ps
093-01.ps
103-01.ps
118-01.ps
165-01.ps
231-01.ps
233-01.ps
251-01.ps
281-01.ps
289-01.ps
308-04.ps
311-03.ps
442-01.ps
483-01.ps
a.pdf
ai2.pdf
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
Bug687207.ps
bugsample.pdf
chilis_black.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps

Normal, 300dpi :

012-09.ps
013-09.ps
020-01.ps
027-13.ps
045-01.ps
093-01.ps
103-01.ps
118-01.ps
136-01.ps
165-01.ps
231-01.ps
233-01.ps
251-01.ps
281-01.ps
289-01.ps
442-01.ps
483-01.ps
a.pdf
ai2.pdf
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
Bug687207.ps
bugsample.pdf
chilis_black.pdf
chilis_red.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
xgfddg.pdf

pdfwrite, 72dpi :

012-09.ps
013-09.ps
020-01.ps
027-05.ps
027-13.ps
045-01.ps
093-01.ps
103-01.ps
231-01.ps
233-01.ps
251-01.ps
281-01.ps
308-04.ps
311-03.ps
442-01.ps
483-01.ps
483-05.ps
a.pdf
ai2.pdf
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
bugsample.pdf
chilis_black.pdf
chilis_red.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps

pdfwrite, 300dpi :

012-09.ps
013-09.ps
020-01.ps
027-13.ps
045-01.ps
093-01.ps
103-01.ps
118-01.ps
136-01.ps
165-01.ps
231-01.ps
233-01.ps
251-01.ps
281-01.ps
442-01.ps
483-01.ps
483-05.ps
a.pdf
ai2.pdf
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
Bug687207.ps
bugsample.pdf
chilis_black.pdf
chilis_red.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
xgfddg.pdf</pre>
<p>[src/gx.h 1.39]</p>
</blockquote>

<p><strong><a name="2004-02-05_1439"></a>
2004-02-05 14:39 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C15.

DETAILS :

This patch changes a disabled code only.
The new scanline algorithm performed extra scans within a sampling band.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.105, src/gxfillsl.h 1.2]</p>
</blockquote>

<p><strong><a name="2004-02-04_1142"></a>
2004-02-04 11:42 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C14.

DETAILS :

Fixing Cygwin/gcc warnings of the previous patch.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevddrw.c 1.10, src/gxdtfill.h 1.8]</p>
</blockquote>

<p><strong><a name="2004-02-04_1133"></a>
2004-02-04 11:33 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C13.

DETAILS :

This is a code optimization.
It applies templates for generating specialized variants
of generic algorithms used for filling a path.
Also removed 'assret' which are not longer needed.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevddrw.c 1.9, src/gdevpdtc.c 1.32, src/gxdtfill.h 1.7, src/gxfdrop.c 1.13, src/gxfill.c 1.104, src/gxfill.h 1.19, src/gxfillsl.h 1.1, src/gxfilltr.h 1.1, src/gxfillts.h 1.1, src/lib.mak 1.164]</p>
</blockquote>

<p><strong><a name="2004-02-04_1009"></a>
2004-02-04 10:09 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : provide a compatibility of TEXT_FROM_CHARS to GhostPCL.

DETAILS :

This is a port of a patch from ghostpcl by Henry Stiles.
This btanch never executes with Ghostscript.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtt.c 1.72]</p>
</blockquote>

<p><strong><a name="2004-02-02_2117"></a>
2004-02-02 21:17 Igor Melichev</strong></p>
<blockquote>
<pre>
Allow auto-inline optimization with MSVC.

DETAILS :

MSVC doesn't assume /Ob2 when /O2 is specified.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/msvccmd.mak 1.14]</p>
</blockquote>

<p><strong><a name="2004-02-02_2024"></a>
2004-02-02 20:24 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Perform sign extension on 64-bit platforms.
Partial fix for bug 687029.

DETAILS:
Genoa test suite considers 64-bit integers to be an error. If we decide to
use 32-bit integer arithmetic on any platform this patch should be undone.</pre>
<p>[lib/gs_ttf.ps 1.36]</p>
</blockquote>

<p><strong><a name="2004-02-02_2014"></a>
2004-02-02 20:14 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C12.

DETAILS :

This is a code optimization.
Some functions are expanded inline.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.103]</p>
</blockquote>

<p><strong><a name="2004-02-02_1625"></a>
2004-02-02 16:25 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C11.

DETAILS :

This is a code optimization.
It reduces the data copying with removing arguments and local variables
xlbot, xbot, xltop, xtop, y, y1.
Also add_y_line is made inline.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.102]</p>
</blockquote>

<p><strong><a name="2004-02-02_1409"></a>
2004-02-02 14:09 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C10.

DETAILS :

1. Scanline algorithm must not apply to spotan device;
2. Removed low useful macro DOUBLE_WRITE_OK.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.101]</p>
</blockquote>

<p><strong><a name="2004-02-02_1353"></a>
2004-02-02 13:53 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C9.

DETAILS :

This is a code optimization.
Removed unuseful computations of a trapeziod widths.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.100]</p>
</blockquote>

<p><strong><a name="2004-02-02_1229"></a>
2004-02-02 12:29 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C8.

DETAILS :

Reduced outlines for both the trapezoid and the scanline algorithms
should be same. This patch fixes that with dropping few rare cases,
which never appear with our testbase.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.99]</p>
</blockquote>

<p><strong><a name="2004-02-02_1148"></a>
2004-02-02 11:48 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C7.

DETAILS :

This is a preparation for removing the coord_near filter
from the flattening algorithm.

We believe that the the coord_near filter was implemented for
two purposes : (1) prevent the filling algorithm from
zero-height segments, and (2) speed up the filling with
reducing the number of vertices in the polygon.

Now the filling algorithms can handle zero length segments
due to conformity to gx_flattened_iterator.
Thus the reason (1) is not longer important.

The skipping of some vertices speeds up in 3% at 600dpi
rendering with ppmraw to null file.
But sometimes it produces raster distortions,
such as an asymmetric raster for symmetric outlines.
When we fixed the distortions,
the speeding up appears within 0.5%.

We decided to remove the coord_near filter, because so small
echonony of processor time is less important than the distortions.

This patch introduces a new swicth DONT_FILTER_SMALL_SEGMENTS,
and make the compilation of coord_near filter to depend on it.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gx.h 1.38, src/gxfill.c 1.98, src/gxfill.h 1.18, src/gxpflat.c 1.39, src/gzpath.h 1.34]</p>
</blockquote>

<p><strong><a name="2004-02-02_0844"></a>
2004-02-02 08:44 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing the PDF 1.4 encryption, step 14.

DETAILS :

Elements of pdfmark elements were not encryptrd.

Since gs/lib/gs_pdfwr.ps serializes pdfmark elements,
we would like to encrypt them before the serialization.
However it would require to implement a new PS operator to pass the
encription keys from the device to the PDF interpreter.
Since this way appears cumbersome, we decided to
unserialize data in the device. For doing that we implement
a simple parser in pdf_put_composite.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfu.c 1.50]</p>
</blockquote>

<p><strong><a name="2004-01-31_0048"></a>
2004-01-31 00:48 Ralph Giles</strong></p>
<blockquote>
<pre>
[no log message]</pre>
<p>[doc/Release.htm 1.84]</p>
</blockquote>

<p><strong><a name="2004-01-30_2312"></a>
2004-01-30 23:12 Ralph Giles</strong></p>
<blockquote>
<pre>
Replace the license header of some of the test scripts with the generic version.</pre>
<p>[toolbin/tests/check_all.py 1.5, toolbin/tests/check_comments.py 1.3, toolbin/tests/check_dirs.py 1.8, toolbin/tests/check_docrefs.py 1.9, toolbin/tests/check_source.py 1.9, toolbin/tests/gscheck_all.py 1.5, toolbin/tests/gscheck_fuzzypdf.py 1.7, toolbin/tests/gscheck_pdfwrite.py 1.17, toolbin/tests/gscheck_raster.py 1.8, toolbin/tests/gsconf.py 1.10, toolbin/tests/gssum.py 1.6, toolbin/tests/gstestgs.py 1.22, toolbin/tests/gstestutils.py 1.10]</p>
</blockquote>

<p><strong><a name="2004-01-30_0851"></a>
2004-01-30 08:51 Russell Lang</strong></p>
<blockquote>
<pre>
Document that the copyright year needs to be updated in some
Windows files for each release.</pre>
<p>[doc/Release.htm 1.83]</p>
</blockquote>

<p><strong><a name="2004-01-30_0840"></a>
2004-01-30 08:40 Russell Lang</strong></p>
<blockquote>
<pre>
Update copyright date for Windows release to 2004.</pre>
<p>[src/dwsetup.rc 1.11, src/winint.mak 1.21]</p>
</blockquote>

<p><strong><a name="2004-01-30_0732"></a>
2004-01-30 07:32 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct the link to History8.htm.</pre>
<p>[doc/Readme.htm 1.54]</p>
</blockquote>

<p><strong><a name="2004-01-30_0405"></a>
2004-01-30 04:05 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix typo.</pre>
<p>[doc/Use.htm 1.100]</p>
</blockquote>

<p><strong><a name="2004-01-29_1840"></a>
2004-01-29 18:40 Ray Johnston</strong></p>
<blockquote>
<pre>
Change notice in some headers that had been missed during original update
to the unified notice.</pre>
<p>[src/gdevdljm.h 1.8]</p>
</blockquote>

<p><strong><a name="2004-01-29_1819"></a>
2004-01-29 18:19 Ray Johnston</strong></p>
<blockquote>
<pre>
Change notice in some headers that had been missed during original update
to the unified notice.</pre>
<p>[src/gdevatx.c 1.9, src/gdevdjet.c 1.11, src/gdevdljm.c 1.11, src/gsovrc.c 1.4, src/gsovrc.h 1.3, src/gxoprect.c 1.5, src/gxoprect.h 1.2]</p>
</blockquote>

<p><strong><a name="2004-01-29_0934"></a>
2004-01-29 09:34 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing the PDF 1.4 encryption, step 13.

DETAILS :

1. Disable Encryption version 2 revision 2 with KeyLength &gt; 40
   due to an incompatibility to many viewers.
2. Improves the error message format.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.87]</p>
</blockquote>

<p><strong><a name="2004-01-28_1654"></a>
2004-01-28 16:54 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C6.

DETAILS :

This is a code optimization.
It factors out internal constants.
The change is algorithmically equivalent.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfdrop.c 1.12, src/gxfill.c 1.97, src/gxfill.h 1.17]</p>
</blockquote>

<p><strong><a name="2004-01-28_1508"></a>
2004-01-28 15:08 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C5.

DETAILS :

This is a code optimization.
It simplifies argument lists.
The change is algorithmically equivalent.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfdrop.c 1.11, src/gxfill.c 1.96, src/gxfill.h 1.16]</p>
</blockquote>

<p><strong><a name="2004-01-28_0905"></a>
2004-01-28 09:05 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (the new TT interpreter) : A bad pointer enumerated relocating gx_ttfReader.

DETAILS :

gx_ttfReader::pfont from a global to a local memory.
Now we set it to a non-NULL value only during a TT data
access, when the garbager is not invoked.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gstype42.c 1.42, src/gxccman.c 1.24, src/gxttfb.c 1.29, src/gxttfb.h 1.10]</p>
</blockquote>

<p><strong><a name="2004-01-27_1607"></a>
2004-01-27 16:07 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (TT grid fitting) : A garbager descriptor was wrong.

DETAILS :

It caused a crash running all comparefiles with ppmraw in a single job.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gzspotan.h 1.6]</p>
</blockquote>

<p><strong><a name="2004-01-27_1605"></a>
2004-01-27 16:05 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Partially restoring the old behavior of the filling algorithm.

DETAILS :

When we dropped the compatibility with the patch
http://www.ghostscript.com/pipermail/gs-cvs/2004-January/004061.html,
one case of the flattening condition was not perfect.
Sorry for detecting this late.
Now we put another condition, which differs from both the old and the last one,
but the new one is symmetric and provides lesser distortions.

EXPECTED DIFFERENCES :

This change causes a massive difference,
which may partially undo the difference of the patch mentioned above.
Here is a list of expected differences agains the current CVS HEAD :

normal, 72dpi :

000040cf.000_60.pdf
001-01.ps
01_001.pdf
020-01.ps
027-09.ps
045-01.ps
093-01.ps
109-01.ps
159.pdf
175-01.ps
251-01.ps
281-01.ps
289-01.ps
335-01.ps
336-01.ps
455690.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso7.pdf
adesso8.pdf
AdobeLic.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
bc_02a01_cal.pdf
besttest.pdf
budget2.pdf
budget2_ai87.pdf
Bug687044.ps
bulletin.pdf
ccc.pdf
dave.pdf
Dave_Barry.pdf
Faktura.pdf
file.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
H00216q.pdf
HeiseiMinStd.pdf
Jahr2000.pdf
japan.ps
js.pdf
keyboard.pdf
korea.ps
KozukaB-ILEmbed.pdf
LD.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
Original.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
QuickNews_Nov22.pdf
RealCities.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
sports.pdf
Svd.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
tpc2.ps
two_encodings.ps
type42_glyph_index.ps
waterfal.ps
xgfddg.pdf

normal, 300dpi :

289-01.ps
a.pdf
adesso6.pdf
Altona-Testsuite_p2_S_x3.pdf
besttest.pdf
Bug687044.ps
bulletin.pdf
BW0696FOLD1FRONT.pdf
fonts.pdf
HeiseiMinStd.pdf
japan.ps
js.pdf
keyboard.pdf
mbb-with-space.ps
NIL_0003.pdf
pdftops.pdf
prob.pdf
pstopdfO3.pdf
S2_Digitalproof-Forum_x3k.pdf
sports.pdf
test_multipage_prob.pdf
waterfal.ps
womanface.pdf

pdfwrite 72 dpi :
000040cf.000_60.pdf
001-01.ps
01_001.pdf
020-01.ps
045-01.ps
093-01.ps
109-01.ps
159.pdf
175-01.ps
251-01.ps
281-01.ps
335-01.ps
336-01.ps
455690.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso7.pdf
adesso8.pdf
AdobeLic.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
bc_02a01_cal.pdf
besttest.pdf
budget2.pdf
budget2_ai87.pdf
Bug687044.ps
bulletin.pdf
ccc.pdf
dave.pdf
Dave_Barry.pdf
Faktura.pdf
file.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
H00216q.pdf
HeiseiMinStd.pdf
Jahr2000.pdf
japan.ps
js.pdf
keyboard.pdf
korea.ps
KozukaB-ILEmbed.pdf
LD.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
Original.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
QuickNews_Nov22.pdf
RealCities.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
sports.pdf
Svd.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
tpc2.ps
two_encodings.ps
type42_glyph_index.ps
waterfal.ps
xgfddg.pdf

pdfwrite, 300 dpi :

a.pdf
adesso6.pdf
Altona-Testsuite_p2_S_x3.pdf
besttest.pdf
Bug687044.ps
bulletin.pdf
BW0696FOLD1FRONT.pdf
fonts.pdf
HeiseiMinStd.pdf
japan.ps
js.pdf
keyboard.pdf
mbb-with-space.ps
NIL_0003.pdf
pdftops.pdf
prob.pdf
pstopdfO3.pdf
S2_Digitalproof-Forum_x3k.pdf
sports.pdf
test_multipage_prob.pdf
waterfal.ps
womanface.pdf</pre>
<p>[src/gxpflat.c 1.38]</p>
</blockquote>

<p><strong><a name="2004-01-27_0510"></a>
2004-01-27 05:10 Ralph Giles</strong></p>
<blockquote>
<pre>
Pass on the CPPFLAGS settings from the configure script into GCFLAGS. Some users expect to be able
to add include paths through the environment this way. Suggestion from Len Makin.</pre>
<p>[src/Makefile.in 1.32]</p>
</blockquote>

<p><strong><a name="2004-01-26_2351"></a>
2004-01-26 23:51 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C4.

DETAILS :

In the enabled code this change is algorithmically equivalent.
In the disabled code it provides a variable threshold
for the 'coord_near' predicate.
Doing so because the old scanline algorithm uses a zero threshold.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.95, src/gxfill.h 1.15, src/gxpflat.c 1.37, src/gzpath.h 1.33]</p>
</blockquote>

<p><strong><a name="2004-01-26_2235"></a>
2004-01-26 22:35 Igor Melichev</strong></p>
<blockquote>
<pre>
Updating the ps2pdf documentation.</pre>
<p>[doc/Ps2pdf.htm 1.64]</p>
</blockquote>

<p><strong><a name="2004-01-26_2216"></a>
2004-01-26 22:16 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C3.

DETAILS :

The enabled variant of the scanline algorithm was unintentionally
modified by a recent patch. Rather the change was equivalent,
we prefer to clean it.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.94]</p>
</blockquote>

<p><strong><a name="2004-01-26_2054"></a>
2004-01-26 20:54 Ray Johnston</strong></p>
<blockquote>
<pre>
Correct typo -- position of " in example command. Thanks to Ulf-Dietrich
Braumann of Leipzig University for this.</pre>
<p>[doc/Ps2pdf.htm 1.63]</p>
</blockquote>

<p><strong><a name="2004-01-26_1527"></a>
2004-01-26 15:27 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C2.

DETAILS :

This change modifies a disabled code only.
It fixes a bug discovered with chilis_black.pdf .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.93]</p>
</blockquote>

<p><strong><a name="2004-01-26_1320"></a>
2004-01-26 13:20 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step C1.

DETAILS :

This starts a neqw series about the scanline algorithm.
The purpose is to use same numeric method as in the trapezoid algorithm.

This change modifies a disabled code only.

1. Defines new switch SCANLINE_USES_ITERATOR in gx.h .
2. Replaces curve_cursor with gx_flattened_iterator in the scanline algorithm.
3. Provides same Y-list contents as for the trapezoid algorithm.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gx.h 1.37, src/gxfill.c 1.92, src/gxfill.h 1.14, src/gxpcopy.c 1.21, src/gzpath.h 1.32]</p>
</blockquote>

<p><strong><a name="2004-01-26_1313"></a>
2004-01-26 13:13 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : gx_flattened_iterator::last_filtered1_i could left uninitialized.

DETAILS :

It was a bug, which our testbase did not detect.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.91, src/gxpflat.c 1.36, src/gzpath.h 1.31]</p>
</blockquote>

<p><strong><a name="2004-01-26_1115"></a>
2004-01-26 11:15 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step B10, final in this series.

DETAILS :

Oops, the previous patch appears not final in B series.
This one is. It removes an obsolete code from gxpcopy.c .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxpcopy.c 1.20]</p>
</blockquote>

<p><strong><a name="2004-01-25_1423"></a>
2004-01-25 14:23 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step B9, final in this series.

DETAILS :

It finally removes macros, which are not longer useful.
It doesn't change the algorithm.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxpflat.c 1.35]</p>
</blockquote>

<p><strong><a name="2004-01-25_1355"></a>
2004-01-25 13:55 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step B8.

DETAILS :

It finally drops the compatibility to the old code,
making the result to get the maximal regularity.

Minor change : improved a comment.

EXPECTED DIFFERENCES :

Normal, 72 dpi :

000040cf.000_60.pdf
001-01.ps
01_001.pdf
020-01.ps
027-09.ps
045-01.ps
093-01.ps
109-01.ps
159.pdf
175-01.ps
251-01.ps
281-01.ps
289-01.ps
335-01.ps
336-01.ps
455690.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso7.pdf
adesso8.pdf
AdobeLic.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
bc_02a01_cal.pdf
besttest.pdf
budget2.pdf
budget2_ai87.pdf
Bug687044.ps
bulletin.pdf
ccc.pdf
dave.pdf
Dave_Barry.pdf
Faktura.pdf
file.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
H00216q.pdf
HeiseiMinStd.pdf
Jahr2000.pdf
japan.ps
js.pdf
keyboard.pdf
korea.ps
KozukaB-ILEmbed.pdf
LD.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
Original.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
QuickNews_Nov22.pdf
RealCities.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
sports.pdf
Svd.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
tpc2.ps
two_encodings.ps
type42_glyph_index.ps
waterfal.ps
xgfddg.pdf

pdfwrite, 72dpi :

000040cf.000_60.pdf
001-01.ps
01_001.pdf
020-01.ps
045-01.ps
093-01.ps
109-01.ps
159.pdf
175-01.ps
251-01.ps
281-01.ps
335-01.ps
336-01.ps
455690.pdf
86554321.pdf
a.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso7.pdf
adesso8.pdf
AdobeLic.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
bc_02a01_cal.pdf
besttest.pdf
budget2.pdf
budget2_ai87.pdf
Bug687044.ps
bulletin.pdf
ccc.pdf
dave.pdf
Dave_Barry.pdf
Faktura.pdf
file.pdf
Fixed_Original.pdf
fonts.pdf
fonttest.pdf
H00216q.pdf
HeiseiMinStd.pdf
Jahr2000.pdf
japan.ps
js.pdf
keyboard.pdf
korea.ps
KozukaB-ILEmbed.pdf
LD.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
Original.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
QuickNews_Nov22.pdf
RealCities.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
sports.pdf
Svd.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
tpc2.ps
two_encodings.ps
type42_glyph_index.ps
waterfal.ps
xgfddg.pdf

normal, 300 dpi :

289-01.ps
a.pdf
adesso6.pdf
Altona-Testsuite_p2_S_x3.pdf
besttest.pdf
Bug687044.ps
bulletin.pdf
BW0696FOLD1FRONT.pdf
fonts.pdf
HeiseiMinStd.pdf
japan.ps
js.pdf
keyboard.pdf
mbb-with-space.ps
NIL_0003.pdf
pdftops.pdf
prob.pdf
pstopdfO3.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
sports.pdf
test_multipage_prob.pdf
waterfal.ps
womanface.pdf

pdfwrite, 300 dpi :

a.pdf
adesso6.pdf
Altona-Testsuite_p2_S_x3.pdf
besttest.pdf
Bug687044.ps
bulletin.pdf
BW0696FOLD1FRONT.pdf
fonts.pdf
HeiseiMinStd.pdf
japan.ps
js.pdf
keyboard.pdf
mbb-with-space.ps
NIL_0003.pdf
pdftops.pdf
prob.pdf
pstopdfO3.pdf
S2_Digitalproof-Forum_x3k.pdf
sports.pdf
test_multipage_prob.pdf
waterfal.ps
womanface.pdf</pre>
<p>[src/gxpflat.c 1.34]</p>
</blockquote>

<p><strong><a name="2004-01-25_1149"></a>
2004-01-25 11:49 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step B7.

DETAILS :

1. Removed FLATTENED_ITERATOR_HEAVY_SELFTEST 0 because it is unuseful.
2. Simplified gx_flattened_iterator__next_filtered.
   This change is algorithmically equivalent.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxpflat.c 1.33]</p>
</blockquote>

<p><strong><a name="2004-01-25_1121"></a>
2004-01-25 11:21 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step B6.

DETAILS :

The previous patch left some rudinents, removing them now :

1. Switch off the self-testing.
2. Remove gx_check_nearly_collinear.
3. Removed the CURVED_TRAPEZOID_FILL0_COMPATIBLE 0 section from
   gx_flattened_iterator__prev_filtered because it
   can't provide the backscan consistency.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxpflat.c 1.32]</p>
</blockquote>

<p><strong><a name="2004-01-24_2349"></a>
2004-01-24 23:49 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for Bug 687255  pcl output shifted to bottom of page.  Correct
the order of the PCL commands at the start of page for the ljet devices.

DETAILS:

This problem surfaced when a previous fix 686815 was made.  That fix
corrected  a line of code which was setting the page seize in the output
file.

With the correct page size being specified in the output file, there were
some side effects.  Setting the page size resets several other items,
including the starting page X and Y offsets.

The fix for this problem consists of simply moving the setting of the page
size three lines earlier in the file.  Now the page size is set prior to
the page X and Y offsets, which are set as part of this line:

       fputs(page_init, prn_stream);</pre>
<p>[src/gdevdljm.c 1.10]</p>
</blockquote>

<p><strong><a name="2004-01-24_1045"></a>
2004-01-24 10:45 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step B5.

DETAILS :

1. Removed the 'filtered2' subclass of gx_flattened_iterator;
2. Renamed the 'filtered1' subclass to 'filtered'.
3. Removed CURVED_TRAPEZOID_FILL_HEAVY_TEST.
4. Removed the CURVED_TRAPEZOID_FILL0_COMPATIBLE 0 section from
   gx_flattened_iterator__prev_filtered because it
   can't provide the backscan consistency.
5. Made other configuration flags to be local for gxpflat.c .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gx.h 1.36, src/gxfill.c 1.90, src/gxpflat.c 1.31, src/gzpath.h 1.30]</p>
</blockquote>

<p><strong><a name="2004-01-23_1735"></a>
2004-01-23 17:35 Ray Johnston</strong></p>
<blockquote>
<pre>
Add check for missing raster image before getting the date of the raster.
If raster is missing, run update_***baseline script to generate it since
the file must be new since the last regression run. Bug 687245.</pre>
<p>[toolbin/tests/gscheck_pdfwrite.py 1.16, toolbin/tests/gscheck_raster.py 1.7]</p>
</blockquote>

<p><strong><a name="2004-01-23_1646"></a>
2004-01-23 16:46 Igor Melichev</strong></p>
<blockquote>
<pre>
Removed the obsolete configuration switches NEW_TT_INTERPRETER and TT_GRID_FITTING.

DETAILS :

It doesn't change the algorithm.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gsfont.c 1.31, src/gsfont.h 1.10, src/gstext.c 1.16, src/gstype42.c 1.41, src/gx.h 1.35, src/gxccache.c 1.29, src/gxccman.c 1.23, src/gxchar.c 1.39, src/gxfcache.h 1.25, src/gxfont42.h 1.19, src/gxtext.h 1.14, src/gxttfb.c 1.28, src/zchar42.c 1.14, src/zusparam.c 1.12]</p>
</blockquote>

<p><strong><a name="2004-01-23_1641"></a>
2004-01-23 16:41 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (the new TT interpreter) : st_gs_text_enum_max_ptrs was wrong.

DETAILS :

This doesn't change the algorithm because this constant is never used.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxtext.h 1.13]</p>
</blockquote>

<p><strong><a name="2004-01-23_1635"></a>
2004-01-23 16:35 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (the new TT interpreter) : A bad pointer enumerated relocating gs_text_enum_s.

DETAILS :

gs_text_enum_s::pair pointed to an array element, rather than to
to an object start. Improving text_enum_enum_ptrs and text_enum_reloc_ptrs
with a special processing of this pointer, being similat to one used in
font_dir_enum_ptrs.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gstext.c 1.15, src/gxfcache.h 1.24, src/lib.mak 1.163]</p>
</blockquote>

<p><strong><a name="2004-01-23_1405"></a>
2004-01-23 14:05 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step B4.

DETAILS :

Removed old configuration flags from gxfill.c .
It doesn't change the algorithm.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.89]</p>
</blockquote>

<p><strong><a name="2004-01-23_1325"></a>
2004-01-23 13:25 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step B3.

DETAILS :

1. Removed the disabled code MERGE_COLLINEAR_SEGMENTS 0
2. Removed the disabled code CURVED_TRAPEZOID_FILL 0
3. Removed the dependence on TT_GRID_FITTING from gxfill.c .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gx.h 1.34, src/gxfdrop.c 1.10, src/gxfill.c 1.88, src/gxfill.h 1.13, src/gxpath.h 1.12, src/gxpcopy.c 1.19, src/gxpflat.c 1.30, src/gzpath.h 1.29]</p>
</blockquote>

<p><strong><a name="2004-01-23_1235"></a>
2004-01-23 12:35 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step B2.

DETAILS :

This patch disables the MERGE_COLLINEAR_SEGMENTS section.
It was an old unuseful optimization, which we decided to cancel.
For more information see the log message of the previous patch.

EXPECTED DIFFERENCES :

Normal, 72dpi :

014-13.ps
027-09.ps
036-01.ps
045-01.ps
083-13.ps
175-01.ps
1_2001.pdf
245-01.ps
255-01.ps
268-04.ps
268-05.ps
281-01.ps
298-09.ps
321-09.ps
477-03.ps
86554321.pdf
a.pdf
acrobat.pdf
adesso5.pdf
alphabet.ps
Altona.Page_3.2002-09-27.pdf
ats-3-5-99.pdf
besttest.pdf
brochurep1.pdf
bugsample.pdf
ca.pdf
CAIB_highres_page4.pdf
chess.ps
chilis_black.pdf
chilis_red.pdf
chstudy.pdf
dave.pdf
fonttest.pdf
H00216q.pdf
HeiseiMinStd.pdf
japan.ps
js.pdf
kazmir.pdf
keyboard.pdf
korea.ps
KozukaB-ILEmbed.pdf
LD.pdf
mbb-with-space.ps
messenger16.pdf
NECPNTD.pdf
prob.pdf
RealCities.pdf
rf1025.pdf
RodinCIDEmbed.pdf
shading_prob_800.ps
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
Svd.pdf
tiger.eps
time1.pdf
vasarely.ps
waterfal.ps
womanface.pdf
xgfddg.pdf

Normal, 300dpi :

Almost ALL FILES RENDER DIFFERENTLY.
001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
033-52-5873.pdf
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_2001.pdf
1_pct_50_bang.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-06.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541.pdf
541_623.pdf
86554321.pdf
a.pdf
acrobat.pdf
adesso1.pdf
adesso3.pdf
adesso5.pdf
adesso7.pdf
ADOBE1-4.pdf
AdobeLic.pdf
ai2.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
besttest.pdf
brochurep1.pdf
budget2.pdf
bug-gstest.pdf
bugsample.pdf
bulletin.pdf
CAIB_highres_page4.pdf
CAT_LOGO.ps
chess.ps
chilis_black.pdf
chstudy.pdf
dave.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
Faktura.pdf
file.pdf
fonts.pdf
fonttest.pdf
gslandscape.pdf
H00216q.pdf
HeiseiMinStd.pdf
japan.ps
js.pdf
kazmir.pdf
keyboard.pdf
korea.ps
KozukaB-ILEmbed.pdf
laballade.pdf
LD.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
mspro.pdf
ngnews.pdf
ngnews1.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
p2b-100.pdf
pdfopt_bug.pdf
pdftops.pdf
PixelisAd.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
pstopdfO3.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
RodinCIDEmbed.pdf
rotate90.pdf
S2_Digitalproof-Forum_x3k.pdf
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
sports.pdf
Svd.pdf
test.pdf
test2.pdf
test2a.pdf
TextRize.pdf
textsavematrix.pdf
tiger.eps
type2accent.pdf
waterfal.ps
wrapper-gs7.pdf
xgfddg.pdf
xngnews.pdf

pdfwrite, 72dpi :

012-09.ps
013-09.ps
014-13.ps
027-09.ps
036-01.ps
045-01.ps
083-09.ps
083-13.ps
175-01.ps
1_2001.pdf
205-05.ps
205-09.ps
245-01.ps
255-01.ps
268-04.ps
268-05.ps
281-01.ps
477-03.ps
86554321.pdf
a.pdf
acrobat.pdf
adesso5.pdf
alphabet.ps
Altona.Page_3.2002-09-27.pdf
ats-3-5-99.pdf
besttest.pdf
brochurep1.pdf
Bug687044.ps
bugsample.pdf
ca.pdf
CAIB_highres_page4.pdf
chess.ps
chilis_black.pdf
chilis_red.pdf
chstudy.pdf
dave.pdf
fonttest.pdf
golfer.eps
H00216q.pdf
HeiseiMinStd.pdf
japan.ps
js.pdf
kazmir.pdf
keyboard.pdf
korea.ps
KozukaB-ILEmbed.pdf
LD.pdf
mbb-with-space.ps
messenger16.pdf
NECPNTD.pdf
prob.pdf
RealCities.pdf
rf1025.pdf
RodinCIDEmbed.pdf
shading_prob_800.ps
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
Svd.pdf
tiger.eps
time1.pdf
tpc2.ps
waterfal.ps
womanface.pdf
xgfddg.pdf

pdfwrite, 300dpi :

Almost ALL FILES RENDER DIFFERENTLY.
001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
033-52-5873.pdf
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_2001.pdf
1_pct_50_bang.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-06.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
455690.pdf
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541.pdf
541_623.pdf
86554321.pdf
a.pdf
acrobat.pdf
adesso1.pdf
adesso3.pdf
adesso5.pdf
adesso7.pdf
ADOBE1-4.pdf
AdobeLic.pdf
ai2.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
besttest.pdf
brochurep1.pdf
budget2.pdf
bug-gstest.pdf
Bug687044.ps
bugsample.pdf
bulletin.pdf
CAIB_highres_page4.pdf
chess.ps
chilis_black.pdf
chstudy.pdf
dave.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
Faktura.pdf
file.pdf
fonts.pdf
fonttest.pdf
golfer.eps
gslandscape.pdf
H00216q.pdf
HeiseiMinStd.pdf
japan.ps
js.pdf
kazmir.pdf
keyboard.pdf
korea.ps
KozukaB-ILEmbed.pdf
laballade.pdf
LD.pdf
loremIpsum.pdf
MagicEye.pdf
mbb-with-space.ps
messenger.pdf
messenger16.pdf
ngnews.pdf
ngnews1.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
p2b-100.pdf
pdftops.pdf
PixelisAd.pdf
prfmm.pdf
prob.pdf
pstopdf.pdf
pstopdfO3.pdf
QA_Inv.pdf
QuickNews_Nov22.pdf
RealCities.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
smdf.90441.102.pdf
spec_gs.pdf
spec_gv.pdf
sports.pdf
Svd.pdf
test.pdf
test2.pdf
test2a.pdf
TextRize.pdf
textsavematrix.pdf
tiger.eps
time1.pdf
tpc2.ps
type2accent.pdf
waterfal.ps
wrapper-gs7.pdf
xgfddg.pdf
xngnews.pdf</pre>
<p>[src/gx.h 1.33]</p>
</blockquote>

<p><strong><a name="2004-01-23_1005"></a>
2004-01-23 10:05 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplifying the filling algorithm, step B1.

DETAILS :

This starts a new sequence of patches to the filling algorithm.
It's goal is a further simplification.

We deetected that MERGE_COLLINEAR_SEGMENTS 1 section is an old optimization,
which speeds up in 1.3% and complicates the code in 30%.
Besides that, it causes inprecise results with the dropout prevention.
At last, the name "MERGE_COLLINEAR_SEGMENTS" doesn't reflect
its effect : actually it merges segments nearly parallwel to coordinate axis,
which may be unlimitedly long and have an unlimited angle.
Therefore we believe that this optimization is not well defined,
appears unuseful, and to be cancelled.

This patch is a preparation for removing the MERGE_COLLINEAR_SEGMENTS
section. We made this switch global and we bracketed more code sections,
which appear unuseful without MERGE_COLLINEAR_SEGMENTS.

This patch almost is a change to a disabled code.
But the change to gxfill.c ln 1238,1241 goes to the enabled code
and appears algorithmically equivalent :
with MERGE_COLLINEAR_SEGMENTS 1 this branch is equivalent to noop.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gx.h 1.32, src/gxfill.c 1.87, src/gxpflat.c 1.29]</p>
</blockquote>

<p><strong><a name="2004-01-22_1136"></a>
2004-01-22 11:36 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : A bug in ttfmain.c caused a heap damage.

DETAILS :

Bug 687254 "writing pcl segfaults".

EXPECTED DIFFERENCES :

None with comparefiles.</pre>
<p>[src/ttfmain.c 1.22]</p>
</blockquote>

<p><strong><a name="2004-01-22_0922"></a>
2004-01-22 09:22 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : pco_accurate didn't work for curves with zero derivative.

DETAILS :

Bug 687266 "Accurate curves may be inaccurate.".

EXPECTED DIFFERENCES :

None, because normally PS doesn't use "true .setaccuratecurves".

Testing with "true .setaccuratecurves", got no difference with -r72.
Thus our testbase doesn't contain interesting curves.</pre>
<p>[src/gxpcopy.c 1.18]</p>
</blockquote>

<p><strong><a name="2004-01-22_0916"></a>
2004-01-22 09:16 Ralph Giles</strong></p>
<blockquote>
<pre>
Create a new dynamic header 'gconfigd.h' for non-platform-specific defines. Variables like
GS_LIB_DEFAULT which were previously tacked onto the end of gconfig.h have been moved to the new
header. This change is necessary to pass the default path for the persistent cache from the
makefile.

DETAILS:

The persistent cache is implemented in the gp layer, but previously it was illegal to access
gconfig.h from code inside the graphics library, it the sense that the build would fail. This is
because of the crazy way operator definitions are collected in dev files before they are
consolidated in gconfig.h.

We don't want to use gconfigv.h because that header is platform-specific is generated by different
code on every platform. Therefore, while this isn't a real fix for gconfig.h circular inclusion
issue, a new header is reasonably motivated.</pre>
<p>[src/gp_unix_cache.c 1.2, src/gs.mak 1.25, src/gscdef.c 1.42, src/iconf.c 1.7, src/int.mak 1.122, src/lib.mak 1.162, src/unix-aux.mak 1.12]</p>
</blockquote>

<p><strong><a name="2004-01-21_1355"></a>
2004-01-21 13:55 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Don't apply pco_accurate when filling a path.

DETAILS :

When a path is is being stroked, it first converts to the stroke
outline, and pco_accurate is being applied. When the stroke outline
is being filled, pco_accurate was applied at second time with no
useful reason. When it fills a character, pco_accurate disturbs the
hinted outline. Thus it must not apply with 'fill' in any case.

EXPECTED DIFFERENCES :

None, because normally PS doesn't use "true .setaccuratecurves".

Testing with "true .setaccuratecurves", almost all tests
render differently due to characters, and we believe it's a progression.</pre>
<p>[src/gxfill.c 1.86]</p>
</blockquote>

<p><strong><a name="2004-01-21_1338"></a>
2004-01-21 13:38 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : The dropout prevetion did not work with "true .setaccuratecurves".

DETAILS :

Bug 687265 "adjust_point_to_tangent goes out the bbox".

EXPECTED DIFFERENCES :

None, because normally PS doesn't use "true .setaccuratecurves".</pre>
<p>[src/gxpcopy.c 1.17]</p>
</blockquote>

<p><strong><a name="2004-01-21_1017"></a>
2004-01-21 10:17 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Type 3 characters were missed in the Widths array.

DETAILS :

Bug 687242 "ghostscript generates incorrect pdf file".
A wrong character index was used passing characters to adjust_first_last_char,
causing the domain of the Widths array be smaller than necessary.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdte.c 1.52]</p>
</blockquote>

<p><strong><a name="2004-01-20_1911"></a>
2004-01-20 19:11 Ralph Giles</strong></p>
<blockquote>
<pre>
Replace a fixed-filename tempfile fopen with gp_open_scratch_file() for improved robustness in the
pnga device. Part of the fix for bug 687243.

DETAILS:

This is an experimental device to preserve pdf transparency into a png rasterization and is
distinct from the pngalpha device. I doesn't actually work for me and so may be suffering
from bit rot; however the change compiles and should be correct.</pre>
<p>[src/gdevpnga.c 1.8]</p>
</blockquote>

<p><strong><a name="2004-01-20_1905"></a>
2004-01-20 19:05 Ralph Giles</strong></p>
<blockquote>
<pre>
Some additional clarification on the new pdfwrite encryption user parameters.</pre>
<p>[doc/Ps2pdf.htm 1.62]</p>
</blockquote>

<p><strong><a name="2004-01-20_1900"></a>
2004-01-20 19:00 Ralph Giles</strong></p>
<blockquote>
<pre>
Improve wording and html formatting of recent documentation additions.</pre>
<p>[doc/News.htm 1.142, doc/Ps2pdf.htm 1.61]</p>
</blockquote>

<p><strong><a name="2004-01-20_1508"></a>
2004-01-20 15:08 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : The PCL interpreter doesn't provide pattern streams (continued).

DETAILS :

1. Restored the PATTERN_STREAM_ACCUMULATION 0 code from gdevpdfv.c revision 1.27.
   It provides a conversion of a pattern tile into a PDF pattern object.

2. Passed have_pattern_streams to corresponding parts of pdfwrite.

3. Added a check for have_pattern_streams into zpcolor.c .
   It is useful for debugging PS interpreter
   with passing have_pattern_streams=false to gs_state_set_client.

With PS interpreter the new code never executes (unless one changes
the call to gs_state_set_client).

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfg.c 1.46, src/gdevpdfg.h 1.29, src/gdevpdfv.c 1.33, src/int.mak 1.121, src/zpcolor.c 1.12]</p>
</blockquote>

<p><strong><a name="2004-01-20_0139"></a>
2004-01-20 01:39 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a typo in the previous commit.</pre>
<p>[src/gp_unifs.c 1.17]</p>
</blockquote>

<p><strong><a name="2004-01-20_0124"></a>
2004-01-20 01:24 Ralph Giles</strong></p>
<blockquote>
<pre>
Save the original filename template for use in the error message when mkstemp() fails. According
to the man page mkstemp() can clobber the contents of fname if it does not succeed. Part of the
fix for bug 687243.</pre>
<p>[src/gp_unifs.c 1.16]</p>
</blockquote>

<p><strong><a name="2004-01-19_2319"></a>
2004-01-19 23:19 Ralph Giles</strong></p>
<blockquote>
<pre>
Remove some very old scripts which contain /tmp races, a security risk should
someone actually try to use them. Part of the fix for bug 687243.</pre>
<p>[lib/pj-gs.sh 1.4, lib/sysvlp.sh 1.4]</p>
</blockquote>

<p><strong><a name="2004-01-19_2015"></a>
2004-01-19 20:15 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing the PDF 1.4 encryption, step 12.

DETAILS :

With no encryption strings in the Info dictionary got excessive brackets.
Bug 687263 "Invalid producer / author / creator fields in PDF".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfu.c 1.49]</p>
</blockquote>

<p><strong><a name="2004-01-19_1652"></a>
2004-01-19 16:52 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : CropBox computed wrongly.

DETAILS :

Bug 687244 "wrong interpretation of negative mediabox coordinates".
The bug title appears incorrect. Actually the problem is caused by
negative CropBox coordinates.

.pdfshowpage_Install translates the coordinate system
to provide positive coordinates, but pdfshowpage_finish did not
account the translation when writing the CropBox.
Therefore it the resulting CropBox was inconsistent with the painting
when the source CropBox uses negative coordinates.

EXPECTED DIFFERENCES :

A progression with vtm2k.pdf .</pre>
<p>[lib/pdf_main.ps 1.84]</p>
</blockquote>

<p><strong><a name="2004-01-19_1232"></a>
2004-01-19 12:32 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Merge redundant images (continued).

DETAILS :

Bug 687224 "large pdf file size".

The patch
http://www.ghostscript.com/pipermail/gs-cvs/2004-January/003988.html
appears incomplete, because it works only with

	&lt;&lt; /EncodeColorImages false &gt;&gt; setdistillerparams

The problem happens due to Decode arrays considered always unequal.
This patch :
1. Implemets cos_array_equal.
2. Applies it properly to subobjects (particularly to Decode).
3. Fixes the function cos_dict_equal - it was asymmetric.
4. Improves the error processing while object comparizon.

EXPECTED DIFFERENCES :

None in rasters, some PDFs become shorter.</pre>
<p>[src/gdevpdfo.c 1.26]</p>
</blockquote>

<p><strong><a name="2004-01-19_0941"></a>
2004-01-19 09:41 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : The PCL interpreter doesn't provide pattern streams.

DETAILS :

gx_pattern_cache_lookup falied when called by the PCL interpreter
because the PCL interpreter doesn't provide high level pattern streams.
Actially the compatibility of the graphics library to the PCL interpreter
was broken since gsptype1.c revision 1.16.

This patch introdices a new argument for the function gs_state_set_client.
Using the argument, a client tells to the graphics library
whether the client provides pattern streams. If not,
the graphics librery emulates the old behavior based
on raster parretns only.

The new flag gs_imager_state::have_pattern_streams stores the
compatibility mode. We would prefer it to be a member of the
graphics library instance, but the instance is not implemented yet.
Storing it to gs_imager_state may cause some undeserable effects,
especially when a device creates a temporary graphic state for
an internal use (the clist device is an example).
We assume that none of devices provides pattern streams,
and this assumption should be reasonable for current applications.

The mechanizm for generating patters streams is still
coded specifically to the PS interpreter in pattern_paint_prepare
in zpcolor.c . This solution to be considered as a temporary one.
We should refactor it into 2 parts : one specific for the PS interpreter,
and another one being common for all applications,
which should be a part of the graphics library.

This patch had passed the regression test with the PS interpreter,
but it was not tested with the PCL interpreter.
Debugging it with PCL to be a next step.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gsistate.c 1.9, src/gsptype1.c 1.18, src/gsstate.c 1.23, src/gxistate.h 1.19, src/gxstate.h 1.9, src/zgstate.c 1.9]</p>
</blockquote>

<p><strong><a name="2004-01-17_2046"></a>
2004-01-17 20:46 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for "687252 subfiledecode errors on includes greater than the
size of a uint".  In spite of the bug name, the problem is not
related to the actual size of the subfile or to the size of a uint.
The actual problem is a missing required parameter:  EODCount.
However Adobe once again ignores the missing parameter and what is
specified in the PRLM-3rd.

DETAILS:

The given test file has a SubFileDecode filter without the required
EODCount parameter.

Ghostscript is rejecting the test file because the parameter is not
defined.  The RangeCheck error message is the result of the following
piece of code in zfilter.c:

  if ((code = dict_int_param(op, "EODCount", 0, max_int, -1, &amp;count)) &lt; 0)
	 return code;

This sets a default value of -1 for EODCount and then checks it
against the range 0 to max_int.  Thus when EODCount is not found
we get the rangecheck since -1 is outside the allowed range.

In spite of the fact that the EODCount is a required parameter,
Adobe Distiller 6.0, my CP1700PS printer, and CPSI 3010.105 print
this file without complaint.

This fix changes the default value to 0 to match Adobe and adds a
comment explaining why the code differs from the spec.</pre>
<p>[src/zfilter.c 1.10]</p>
</blockquote>

<p><strong><a name="2004-01-16_1236"></a>
2004-01-16 12:36 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (type 1 hinter) : Wrong outline with a huge scale.

DETAILS :

An arithmetic error happened when scaling a glyph to a huge size
(about 100000 pixels), causing a wrong outline.
Actually some coordinate values were replaced with zeros.
Thanks to Jeong Kim for detecting that.

The bug was detected with -r1500 with the test file of
the bug 686975 "Black box when converting to tiff".

Note that the bug report is wrong :
it says that the document with -r150 is bad and -r1500 is good.
Comparing rasters with Adobe we concluded exactly vise versa :
-r150 was compatible and -r1500 was incompatible.
After this patch both resolutions are compatible to Adobe.
Probably the user won't like them due to a bug in the document :
it paints a huge glyph, which is a hundred times bigger than the page size.
The document needs a fix.

EXPECTED DIFFERENCES :

None with comparefiles.</pre>
<p>[src/gxhintn.c 1.42]</p>
</blockquote>

<p><strong><a name="2004-01-16_0947"></a>
2004-01-16 09:47 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing the PDF 1.4 encryption, step 11.

DETAILS :

Improving a PDF 1.3 parameter conformity check.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.86]</p>
</blockquote>

<p><strong><a name="2004-01-16_0924"></a>
2004-01-16 09:24 Igor Melichev</strong></p>
<blockquote>
<pre>
Documenting new features of gs8.30 .

DETAILS :

This inserts some new reference points in the documentation.
Maybe someone will like to restructurize it.</pre>
<p>[doc/Language.htm 1.83, doc/News.htm 1.141, doc/Ps2pdf.htm 1.60, doc/Use.htm 1.99]</p>
</blockquote>

<p><strong><a name="2004-01-16_0636"></a>
2004-01-16 06:36 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687247 x11 device fails with CMYK on 8bit display.

DETAILS:

Inside gxcmap.c, the handling of color mapping for most devices is either
halftoned or direct.  However the x11 device when in 8 bit mode, and
possibly other 256 color devices, use a slightly different path.  First
the color is processed in direct mode.  If a color is not in the palatte
and halftoning is required, then gx_no_color_index is returned as a
color value.  Then the color is processed as being halftoned.  However
this last path was dropped from CMYK colors with revision 8.0.</pre>
<p>[src/gxcmap.c 1.18]</p>
</blockquote>

<p><strong><a name="2004-01-16_0231"></a>
2004-01-16 02:31 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing the PDF 1.4 encryption, step 10 - beta release.

DETAILS :

This provides the related documentation.

EXPECTED DIFFERENCES :

None.</pre>
<p>[doc/Ps2pdf.htm 1.59]</p>
</blockquote>

<p><strong><a name="2004-01-16_0211"></a>
2004-01-16 02:11 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing the PDF 1.4 encryption, step 9.

DETAILS :

This fixes the key length problem with &lt;&lt; /V 2 /R 3 &gt;&gt; .

With &lt;&lt; /V 2 /R 2 &gt;&gt; the patched version is still incompatible to Adobe
when Length is not 40, but it appears compatible to XPDF.

This revision can go to beta.
Use &lt;&lt; /V 2 /R 2 /Length 40 &gt;&gt; or &lt;&lt; /V 2 /R 3 /Length not40 &gt;&gt;
- they both should work.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.85]</p>
</blockquote>

<p><strong><a name="2004-01-16_0202"></a>
2004-01-16 02:02 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) Bug in encryption revision 3.

DETAILS :

It wrongly generated the encryption key with &lt;&lt; /V 2 /R 3 &gt;&gt; .

With &lt;&lt; /V 2 /R 3 &gt;&gt; the patched version is compatible to Adobe.
With &lt;&lt; /V 2 /R 2 &gt;&gt; the patched version is still incompatible to Adobe
when Length is not 40, but it appears compatible to XPDF.

EXPECTED DIFFERENCES :

None.</pre>
<p>[lib/pdf_sec.ps 1.13]</p>
</blockquote>

<p><strong><a name="2004-01-15_2144"></a>
2004-01-15 21:44 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing the PDF 1.4 encryption, step 8.

DETAILS :

This fixes minor problems with parameter consistency.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.84]</p>
</blockquote>

<p><strong><a name="2004-01-15_1745"></a>
2004-01-15 17:45 Ralph Giles</strong></p>
<blockquote>
<pre>
Add an RCS Id line to the documentation stylesheet. There's no reason to exempt it.</pre>
<p>[doc/gs.css 1.3, toolbin/tests/check_source.py 1.8]</p>
</blockquote>

<p><strong><a name="2004-01-15_1741"></a>
2004-01-15 17:41 Ralph Giles</strong></p>
<blockquote>
<pre>
Add the Freetype Licence text to the exemptions list for RCS Id lines.</pre>
<p>[toolbin/tests/check_source.py 1.7]</p>
</blockquote>

<p><strong><a name="2004-01-15_1735"></a>
2004-01-15 17:35 Ralph Giles</strong></p>
<blockquote>
<pre>
Add gp_unix_cache.c to the developer documentation's file listing.</pre>
<p>[doc/Develop.htm 1.130]</p>
</blockquote>

<p><strong><a name="2004-01-15_1608"></a>
2004-01-15 16:08 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing the PDF 1.4 encryption, step 7.

DETAILS :

The previous patch wrote a dubugging stub. Removing it now.
Also improving the log messages because this revision appears better than was explained.

It works fine with 40 bits keys and with 128 bits keys.
With other key lengthes it creates PDFs that GS can open with either user or owner password,
but Adobe Reader 6 doesn't open them, reporting a wrong password.
That's a problem though.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.83]</p>
</blockquote>

<p><strong><a name="2004-01-15_1502"></a>
2004-01-15 15:02 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing the PDF 1.4 encryption, step 6.

DETAILS :

1. Provide pdfwrite device parameters for encryption revision 3 (PDF 1.5).
2. Check them for consistency and provide reasonable defaults.
3. Provide the encryption version 2 revision 3 (i.e. 48-128 bits keys).

It works fine with 40 bits keys.
With longer keys it creates PDFs that GS can open with either user or owner password,
but Adobe Reader 6 doesn't open them, reporting a wrong password.
That's a problem though.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdf.c 1.82, src/gdevpdfp.c 1.36, src/gdevpdfx.h 1.84]</p>
</blockquote>

<p><strong><a name="2004-01-15_1009"></a>
2004-01-15 10:09 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing the PDF 1.4 encryption, step 5.

DETAILS :

1. Encrypt strings in CIDSystemInfo.
2. Provide a parent object id writing a cos object.
3. Encrypt strings serializing a cos object.

All comparefiles are now passed.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/devs.mak 1.107, src/gdevpdf.c 1.81, src/gdevpdfc.c 1.46, src/gdevpdfo.c 1.25, src/gdevpdfo.h 1.18, src/gdevpdfu.c 1.48, src/gdevpdfx.h 1.83, src/gdevpdtf.c 1.34, src/gdevpdti.c 1.27, src/gdevpdtw.c 1.27, src/gdevpdtw.h 1.4]</p>
</blockquote>

<p><strong><a name="2004-01-15_0927"></a>
2004-01-15 09:27 Ralph Giles</strong></p>
<blockquote>
<pre>
Initial commit of the persistent cache implementation. This version supports only the *nix
platform and does not include any eviction logic. Also currently the cache directory and
empty 'gs_cache' index file must be created manually.

DETAILS:

Two new calls have been added to the gp layer: gp_cache_insert() and gp_cache_query(). These
take a byte buffer as a key under which another buffer can be stored or recalled. In addition to
the key, buffers are filed by 'type' which provides a separate namespace for each kind of
data. These types should be one of the GP_CACHE_TYPE_* defines in gp.h.

The query call takes a callback for allocating the buffer to be filled. Thus, all memory
management for the key and value buffers is handled by the client and the query returns
the data (if any) within a single call.

A pair of postscript test operators, .pcacheinsert and .pcachequery are provided in zmisc.c,
however they are disabled by default to prevent access to the cache by malicious postscript
programs. They operate only with the 'test' type, so a denial-of-service attack is the only
real risk; however we anticipate all access will be from C code. Compile with the DEBUG_CACHE
preprocessor symbol to enable these.

Improvements and implementations for other platforms are to follow.</pre>
<p>[src/Makefile.in 1.31, src/gp.h 1.27, src/gp_dvx.c 1.11, src/gp_iwatc.c 1.17, src/gp_mac.c 1.15, src/gp_mswin.c 1.23, src/gp_os2.c 1.30, src/gp_os9.c 1.12, src/gp_unix.c 1.13, src/gp_unix_cache.c 1.1, src/gp_vms.c 1.37, src/gs.mak 1.24, src/unix-aux.mak 1.11, src/zmisc.c 1.6]</p>
</blockquote>

<p><strong><a name="2004-01-14_1805"></a>
2004-01-14 18:05 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing the PDF 1.4 encryption, step 4.

DETAILS :

It fixes problems with encrypting strings in Indexed color spaces.
Strings are not encrypted yet.
All comparefiles are now passed except korea.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/devs.mak 1.106, src/gdevpdfc.c 1.45]</p>
</blockquote>

<p><strong><a name="2004-01-14_1604"></a>
2004-01-14 16:04 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing the PDF 1.4 encryption, step 3.

DETAILS :

It fixes problems with encryption of streams.
Strings are not encrypted yet (this may affect some color spaces).
Most of Genoa tests now passed.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfj.c 1.29, src/gdevpdfu.c 1.47, src/gdevpdfx.h 1.82, src/gdevpdtb.c 1.23, src/gdevpdti.c 1.26, src/gdevpdtw.c 1.26]</p>
</blockquote>

<p><strong><a name="2004-01-14_1407"></a>
2004-01-14 14:07 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Check for hypot() availability on the configure step, fix the hypot()
replacement macro, and deal with MSVC specially.
Fix bug 687238.</pre>
<p>[src/Makefile.in 1.30, src/configure.ac 1.39, src/math_.h 1.6]</p>
</blockquote>

<p><strong><a name="2004-01-14_1345"></a>
2004-01-14 13:45 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing the PDF 1.4 encryption, step 2.

DETAILS :

It implements the encryption of most PDF streams.
Strings are not done yet.
It can process 001-01.ps, but there are problems with other files.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/devs.mak 1.105, src/gdevpdf.c 1.80, src/gdevpdfo.c 1.24, src/gdevpdfu.c 1.46, src/gdevpdfx.h 1.81, src/gdevpdti.c 1.25, src/sarc4.c 1.10, src/sarc4.h 1.6]</p>
</blockquote>

<p><strong><a name="2004-01-14_0750"></a>
2004-01-14 07:50 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing the PDF 1.4 encryption, step 1.

DETAILS :

This defines new pdfwrite device parameters OwnerPassword, UserPassword, KeyLength, Permissions,
and outputs the Encrypt dictionary if OwnerPassword is specified.
PDF data are not encrypted yet.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/devs.mak 1.104, src/gdevpdf.c 1.79, src/gdevpdfp.c 1.35, src/gdevpdfx.h 1.80, src/sarc4.c 1.9, src/sarc4.h 1.5]</p>
</blockquote>

<p><strong><a name="2004-01-14_0638"></a>
2004-01-14 06:38 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix to prevent setdistillerparams from erasing the page device or reset
the page device parameters. Fixes bugs 563287 and 607425.

DETAILS:

The .putdeviceparamsonly function defined in gs_setpd.ps is designed to
set device properties without clearing or resetting the pagedevice.

Both code snippets execute as expected with this change.

While the 563287 bug report mentions an attached file, it does not
appear to exist anywhere (any more) unless it refers to the little
code snippet.

Expected Differences:

none.

Only one of the regression test files, PT.ps, invokes setdistillerparams
and this invocation doesn't trip over the problem since distiller params
are set before painting anything.</pre>
<p>[lib/gs_pdfwr.ps 1.37]</p>
</blockquote>

<p><strong><a name="2004-01-13_1403"></a>
2004-01-13 14:03 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing the file ID.

DETAILS :

File ID will be used in PDF encryption.
See comment in pdf_compute_fileID.

A new function s_MD5E_make_stream is defined
to simplify internal interfaces.

I'm not sure about the trick "s-&gt;strm = s" in s_MD5E_make_stream.
Want an approval.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/devs.mak 1.103, src/gdevpdf.c 1.78, src/gdevpdfx.h 1.79, src/lib.mak 1.161, src/smd5.c 1.6, src/smd5.h 1.5]</p>
</blockquote>

<p><strong><a name="2004-01-13_0728"></a>
2004-01-13 07:28 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Cygwin/gcc compiler warnings.</pre>
<p>[src/gdevpdfd.c 1.36, src/gdevpdfo.c 1.23]</p>
</blockquote>

<p><strong><a name="2004-01-13_0728"></a>
2004-01-13 07:28 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Adobe glitches with a small FontMatrix.

DETAILS :

Bug 687207 "PS file incorrectly converted to PDF".
Actually the PDF was fine but Adobe has a precision problem with small FontMatrix.
This patch adjusts the FontMatrix of a Type 3 font to a reasonable interval.

EXPECTED DIFFERENCES :

None with old comparefiles.</pre>
<p>[src/gdevpdte.c 1.51, src/gdevpdtt.c 1.71, src/gdevpdtt.h 1.21]</p>
</blockquote>

<p><strong><a name="2004-01-13_0532"></a>
2004-01-13 05:32 Igor Melichev</strong></p>
<blockquote>
<pre>
Fixing a punctuation inaccuracy in documentation.</pre>
<p>[doc/Language.htm 1.82, doc/Use.htm 1.98]</p>
</blockquote>

<p><strong><a name="2004-01-13_0206"></a>
2004-01-13 02:06 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix problems with the "image" device when the palette is an 8-bit gray
palette (uses the image8 device with num_components == 1). Since the
DeviceN changes, changing num_components requires also setting the
gray_index value appropriately. Also the rgb to color mapping function
did not allow for num_components == 1 and used uninitialized values for
the green and blue comonents. Fixes bugs 458261, 686909 and 687204.

DETAILS:

The gray_index value was being left at GX_CINFO_COMP_NO_INDEX, so the
gx_device_has_color macro indicated a color device. This means that
when the gs_initialize_wordimagedevice function changed the num_components
value to 1, the gray_index was incorrect (should be 0 for a gray shade
device).

Also the mem_mapped_map_rgb_color function didn't check for num_components
== 1, thus using uninitialized cv[1] and cv[2] values and getting incorrect
palette selections. Also I optimized the single component case a bit as
well as an "early out" for both color and monochrome when diff == 0 (can't
get any better than a perfect match).

I guess 8-bit monochrome image devices haven't been used much.

Expected Differences:

none. (we don't test ps2epsi in the regression suite).</pre>
<p>[src/gdevmem.c 1.7, src/gsdevmem.c 1.5]</p>
</blockquote>

<p><strong><a name="2004-01-12_2316"></a>
2004-01-12 23:16 Ralph Giles</strong></p>
<blockquote>
<pre>
Clarify wording in the updated GridFitTT documentation.</pre>
<p>[doc/Language.htm 1.81, doc/Use.htm 1.97]</p>
</blockquote>

<p><strong><a name="2004-01-12_2304"></a>
2004-01-12 23:04 Ralph Giles</strong></p>
<blockquote>
<pre>
Clarify wording and correct some spelling errors in a recent documentation change.</pre>
<p>[doc/Ps2pdf.htm 1.58]</p>
</blockquote>

<p><strong><a name="2004-01-12_1435"></a>
2004-01-12 14:35 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A misprint in the previous patch.

DETAILS :

Don't use the previous revision of gdevpdf.c - it's wrong.</pre>
<p>[src/gdevpdf.c 1.77]</p>
</blockquote>

<p><strong><a name="2004-01-12_1428"></a>
2004-01-12 14:28 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Merge redundant images.

DETAILS :

Bug 687224 "large pdf file size".

With this change pdfwrite compares images for equality
and merges same images into a single XObject, except for inline images.

A new pdfwrite device parameter MaxInlineImageSize controls
inline images. See gs\doc\Ps2pdf.htm . Use it to disable
inline images if the source document contains multiple redundant
small images.

A new vitrtual function cos_object_t::cos_procs-&gt;equal is implemented
for object comparizon. But the current implementation is restricted
with current needs. Particularly it doesn't implement cos arrays,
and assumes equal stream segmentation for equal streams.
To be improved someday.

Note that an image is copied to temporary file before a comparizon.
If the image appears redundant, the current implementation sometimes doesn't
release the space consumed in the temporary file. Therefore the disk must
have enough space for storing all copies. We could improve this using
a smarter method than cos_stream_release_pieces, because an image can interlive
only with same image of an alternative compression.
To be improved someday.

EXPECTED DIFFERENCES :

None in rasters, some PDFs become shorter.</pre>
<p>[doc/Ps2pdf.htm 1.57, src/gdevpdf.c 1.76, src/gdevpdfb.c 1.21, src/gdevpdfg.h 1.28, src/gdevpdfi.c 1.50, src/gdevpdfj.c 1.28, src/gdevpdfo.c 1.22, src/gdevpdfo.h 1.17, src/gdevpdfp.c 1.34, src/gdevpdfu.c 1.45, src/gdevpdfx.h 1.78]</p>
</blockquote>

<p><strong><a name="2004-01-11_1353"></a>
2004-01-11 13:53 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A mangled CFF was written when an Encoding uses 256 glyphs.

DETAILS :

Bug 687217 "pdfwrite erases a certain type1 font when I used 'space' character"
Thanks to Inoue Koich and to Mr. Hirata for the useful information
in the Comment #4 of 687217.

The reason was an old "NYI" :
 	/*
 	 * The count of encoded characters is only a single byte, so we
 	 * have to use a supplement for the last character.
 	 */
 	/****** NYI ******/

This patch implements that.

EXPECTED DIFFERENCES :

None with old compartefiles.
mbb-with-space.ps to be added to comparefiles.</pre>
<p>[src/gdevpsf2.c 1.30]</p>
</blockquote>

<p><strong><a name="2004-01-11_1121"></a>
2004-01-11 11:21 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : removed dependence on bands in the filling algorithm.

DETAILS :

Bug 687222 "Raster depends on bands".
This patch fixes a known dependence, but doesn't include
an attempt to find or fix all possible dependences.
It copmutes a next evaluation point over the top band boundary
as it would be without a banding, store it into line_list::y_break,
and use in proper places of fill_loop_by_trapezoids and fill_loop_by_scan_lines.

EXPECTED DIFFERENCES :

normal, 72dpi -dMaxBitmap=10000 :

None.

normal, 72dpi -dMaxBitmap=30000000 :

None.

normal, 300dpi -dMaxBitmap=10000 :

012-09.ps
036-01.ps
123-05.ps
175-01.ps
226-01.ps
231-01.ps
motor.pdf
Openhuis_pdf_zw.pdf

normal, 300dpi -dMaxBitmap=30000000 :

Openhuis_pdf_zw.pdf

pdfwrite was not tested.</pre>
<p>[src/gxfill.c 1.85, src/gxfill.h 1.12]</p>
</blockquote>

<p><strong><a name="2004-01-10_1800"></a>
2004-01-10 18:00 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Mark copied font's glyph names when reclaiming memory.

DETAILS :

Bug 687187 "pdfwrite can duplicate glyphs embedding a font".
If a font is freed and then reloaded, the glyph names could get different name indices,
if the garbager freed the names before the second loading of the font.
As the result, the copied font could embed duplicated charstrings.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfcopy.c 1.40]</p>
</blockquote>

<p><strong><a name="2004-01-10_1224"></a>
2004-01-10 12:24 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Improving heuristics in the compression chooser.

DETAILS :

Gradients' area was wrongly computed.
Fixing it and adjust thresholds to comply with the new computation.
Bug 687169 "(pdfwrite) : An imperfect compression choice with dina3_watermark.pdf".

Processing comparefiles, with this patch pdfwrite chooses a compression
closer to the original document.
I noticed 3 tests differing from source :

Fixed_Original.pdf
loremIpsum.pdf
S2_Digitalproof-Forum_x3k.pdf

In all 3 tests the images are like a photo,
so DCT is the right choice rather than the original Flate or LZW.

EXPECTED DIFFERENCES :

After pdfwrite the following tests generate a different raster
due to DCT/Flate changes :

adesso2.pdf
adesso5.pdf
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
BEST8-99-Path.fh7.pdf
besttest.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
Faktura.pdf
Fixed_Original.pdf
foo.pdf
H00216q.pdf
kazmir.pdf
loremIpsum.pdf
MagicEye.pdf
Original.pdf
S2_Digitalproof-Forum_x3k.pdf
si_tg_brochure.pdf
test.pdf

All them generate a shorter PDF.</pre>
<p>[src/gdevpdfj.c 1.27, src/gdevpsds.c 1.10]</p>
</blockquote>

<p><strong><a name="2004-01-10_1212"></a>
2004-01-10 12:12 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A big stack consumption writing a CFF with many glyphs.

DETAILS :

This is a continuation of the patch
http://www.ghostscript.com/pipermail/gs-cvs/2003-December/003887.html .
The test file of the Bug 686875 contains a Type 1 font with 1280 glyphs,
which overflowed tables in the CFF writer.
Now we provide a dynamic allocation of the tables.
Bugs 687212, 687233, 687212.

The table size for CID fonts are still hardcoded.
We believe that they must not be big because
with CID fonts glyph names are not used.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpsf.h 1.26, src/gdevpsf2.c 1.29]</p>
</blockquote>

<p><strong><a name="2004-01-09_1427"></a>
2004-01-09 14:27 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Improving vdtrace macros.

DETAILS :

This fixes the bug 687216 "syntactical problems with vd_* macros",
and implements a reading of the view parameters from an ini file.
It allows to adjust the view without editing GS sources.
The ini file is intentionally made global for all GS installations
to simplify their comparizon.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/dwtrace.c 1.5, src/vdtrace.h 1.10]</p>
</blockquote>

<p><strong><a name="2004-01-09_1340"></a>
2004-01-09 13:40 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Some of Sun ONE Studio 7 and Cygwin/gcc compiler warnings.

DETAILS :

Bug 687234 "warnings on Solaris (ghostscript-8.13)"

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/devs.mak 1.102, src/gdevpdtc.c 1.31, src/gdevpdtt.c 1.70, src/gxpcopy.c 1.16, src/zfapi.c 1.51]</p>
</blockquote>

<p><strong><a name="2004-01-09_1302"></a>
2004-01-09 13:02 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Empty clip was written into a charproc.

DETAILS :

See comment in gdevpdtt.c .
Bug 687239 "tiling bug in pdfwrite".

This patch also improves a comment in gdevpdti.c .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdti.c 1.24, src/gdevpdtt.c 1.69]</p>
</blockquote>

<p><strong><a name="2004-01-08_1402"></a>
2004-01-08 14:02 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a True Type grid fitting, step 12, final.

DETAILS :

This patch switches on the new grid fitter,
and provides related changes to the documentation.

Minor change : fixed Cygwin/gcc compiler warnings in gzspotan.c .

EXPECTED DIFFERENCES :

All True type fonts render differently.
They present in the following tests :

01_001.pdf
159.pdf
adesso2.pdf
adesso7.pdf
adesso8.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
budget2.pdf
budget2_ai87.pdf
bugsample.pdf
Faktura.pdf
fonts.pdf
ICPconcept.pdf
keyboard.pdf
MagicEye.pdf
ngnews.pdf
ngnews1.pdf
S2_Digitalproof-Forum_x3k.pdf
test_multipage_prob.pdf
Testform.v1.0.2.pdf
xngnews.pdf
japan.ps
japan-.ps
korea.ps
MyTest5.ps
MyTest6.ps
Type11CDevProc.ps
type42_glyph_index.ps</pre>
<p>[src/gx.h 1.31, src/gzspotan.c 1.8, doc/Language.htm 1.80, doc/Use.htm 1.96]</p>
</blockquote>

<p><strong><a name="2004-01-07_1950"></a>
2004-01-07 19:50 Ralph Giles</strong></p>
<blockquote>
<pre>
Unequivocally include stdlib.h in echogs.c to avoid a warning on the Sun ONE Studio 7 compiler as
reported in bug 687234.

DETAILS:

The code in echogs.c calls exit() which is defined in stdlib.h. However it was not including that
header (except) on VMS because of portability concerns, resulting in the reported 'implicit
function definition' warning. The echogs program must be available before genarch runs and the
std.h-based portability headers are available, so wide build support for this code is important.

However, such platforms are now very old and comments elsewhere in the code suggest that any
compiler supporting ANSI prototypes as we now require will also have a stdlib.h that defines
exit(). If this change causes a problem, #ifdef code similar to what was used in gp_unix.c can be
used instead.</pre>
<p>[src/echogs.c 1.7]</p>
</blockquote>

<p><strong><a name="2004-01-07_1112"></a>
2004-01-07 11:12 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a True Type grid fitting, step 11.

DETAILS :

This patch changes a disabled code only.
It's a furter improvement if the hint generator and the hinter.

1. Improved comments about "overall" hints.

2. Implemented the "autohinting" flag,
   which tells that alignment zones to be guessed from the hint orientation.

3. Implemented a hint orientation for horizontal stems.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxhintn.c 1.41, src/gxhintn.h 1.19, src/gxttfb.c 1.27]</p>
</blockquote>

<p><strong><a name="2004-01-06_2036"></a>
2004-01-06 20:36 Ralph Giles</strong></p>
<blockquote>
<pre>
Fix a typo in the 64-bit type selection logic. Bug 687237.</pre>
<p>[src/configure.ac 1.38]</p>
</blockquote>

<p><strong><a name="2004-01-06_1332"></a>
2004-01-06 13:32 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a True Type grid fitting, step 10.

DETAILS :

This patch changes a disabled code only.
It fixes minor problems with hint generation :

1. Implemented an "overall" hint, which
designates an outer side of a glyph,
being nearly parallel to a coordinate axis.
It aligns a stem end rather than stem sides, and
simulates top/bottom alignment zones.
This branch appears low useful and was not enabled.
Maybe will remove it later.

2. Change to gxhintn.c is algorithmically equivalent.

3. The default value of GritFitTT is changed to 2,
because we can't to provide a compatibility
of the autohinted glyph size to the TT interpreter.

4. Improved hint_by_tangent : some slower but a better choice.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gsfont.c 1.30, src/gxhintn.c 1.40, src/gxhintn.h 1.18, src/gxttfb.c 1.26, src/gzspotan.c 1.7, src/gzspotan.h 1.5]</p>
</blockquote>

<p><strong><a name="2004-01-05_2334"></a>
2004-01-05 23:34 Ralph Giles</strong></p>
<blockquote>
<pre>
Fix some warnings reported by the Sun One Studio 7 compiler (and others). Bug 687228.</pre>
<p>[src/devs.mak 1.101, src/gdevdevn.c 1.13, src/gdevpdfc.c 1.44, src/gdevpdtb.c 1.22, src/gdevpsu.c 1.16, src/gp_unifn.c 1.16, src/gsht.c 1.18, src/gxcmap.c 1.17, src/int.mak 1.120, src/lib.mak 1.160, src/zfapi.c 1.50, src/zfile.c 1.40]</p>
</blockquote>

<p><strong><a name="2004-01-05_2306"></a>
2004-01-05 23:06 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a typo in the checks for stdint fixed-size types. This did not materially affect the
behavior of the configure script. Bug 687235.</pre>
<p>[src/configure.ac 1.37]</p>
</blockquote>

<p><strong><a name="2004-01-05_2213"></a>
2004-01-05 22:13 Ralph Giles</strong></p>
<blockquote>
<pre>
Bump the development branch version to 8.30 now that the stable branch has been released as 8.13
and update the date stamp.</pre>
<p>[doc/News.htm 1.140, lib/gs_init.ps 1.104, src/gscdef.c 1.41, src/version.mak 1.69]</p>
</blockquote>

<p><strong><a name="2004-01-05_1915"></a>
2004-01-05 19:15 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Transliterate '\0' character in PDF names to "BnZr" instead of
'?' to reduce the chance of name collision.

DETAILS:
TeX generates Type 3 fonts with single character glyph names equal to the
character codes, i.e. /Encoding [(\000) cvn (\001) cvn ... /? ...] . PDF
writer used to transliterate '\0' to '?' because #00 escape is invalid.
This conflicts with /? glyph name, which also occurs in the same font.
Fix bug 687232.</pre>
<p>[src/gdevpdfu.c 1.44]</p>
</blockquote>

<p><strong><a name="2004-01-05_1511"></a>
2004-01-05 15:11 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a True Type grid fitting, step 9.

DETAILS :

This patch changes a disabled code only.
It fixes minor problems with hing generation.

Now the TT grid fitting is working with TextAlphaBits=1,
but some improvements still would be useful.
TextAlphaBits=1 is not tested yet.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxttfb.c 1.25]</p>
</blockquote>

<p><strong><a name="2004-01-05_1305"></a>
2004-01-05 13:05 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Removed gx_curve_split due to inprecise implementation.

DETAILS :

The implemetation of gx_curve_split w3as inprecise.
Bug 687177 "gx_curve_split disturbs the bounding box".
Removing it because it is not longer in use.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxpcopy.c 1.15, src/gzpath.h 1.28]</p>
</blockquote>

<p><strong><a name="2004-01-05_1252"></a>
2004-01-05 12:52 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a True Type grid fitting, step 8.

DETAILS :

1. Renamed monotonize_internal to gx_curve_monotonize.

2. Allowed the curved trapezoid algorithm for non-characters.
   2 fragments changed for this purpose : passed all_bands to intersect_al
   and removed the restriction in gxfill.c ln 482.
   This causes minor differences in rasters listed below.

3. Introduced false_stub for better readability.
   This change is algorithmically equivalent.

4. Improved 2 cases in scan_contour with p.monotonic check.
   The old code was wrong, but our testbase doesn't have
   such cases in characters. Discovered with (2).

5. In gxttfb.c applied a curve monotonization after
   decoding a True Type glyph. It allows to
   apply Type 1 hints to non-monotonic stems.
   This change currently is disabled.

6. Added some initializations to quiet the compiler warnings.

EXPECTED DIFFERENCES :

normal 72dpi :

tiger.eps

normal 300dpi

Es001-01.pdf
shading_prob_800.ps
type3xshow.eps

pdfwrite 72dpi :

027-09.ps

pdfwrite 300dpi :

123-05.ps
Es001-01.pdf
type3xshow.eps

None.</pre>
<p>[src/gxfill.c 1.84, src/gxpcopy.c 1.14, src/gxttfb.c 1.24, src/gzpath.h 1.27]</p>
</blockquote>

<p><strong><a name="2004-01-05_0611"></a>
2004-01-05 06:11 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix for fonts being displayed using .notdef character (empty boxes or other
appearance). While the test file doesn't follow the PDF 1.3 or later manual
recommendations for providing a [1,0] cmap for an embedded symbolic TT font,
Adobe Acrobat Reader can display these characters. When the 'post' table
doesn't provide the glyphs required by the /Differences list, try another
cmap [3,0] to get the correct glyph (names and glyph #'s). Bug #686959 for
customer #1060.

DETAILS:

The Adobe PDF 1.4 Reference Manual has some "hints" for producing portable
PDF's, but as far as reading PDF's that don't follow these hints, all that
is said (in section 5.5.5, p.333) is:

    Note: Some popular TrueType font programs contain incorrect encoding
    information.  Implementations of TrueType font interpreters have
    evolved heuristics for dealing with such problems; those heuristics
    are not described here.  For maximum portability, only well-formed
    TrueType font programs should be used in PDF files.

The approach of trusting the 'post' table unless the glyphs given do not
include glyphs that are mentioned in the 'prebuilt_encoding' (Differences),
is a heuristic that works for this file and doesn't interfere with any
other PDF's in the regression test. The thing about heuristics is that
the 'intelligence' they embody is no better than the understanding of the
best solution, so this may crop up again later (but we hope not).

Note that simply using the 00030000 cmap [3,0] format causes the regression
file 'test_multipage_prob.pdf' to fail with some .notdef characters.</pre>
<p>[lib/gs_ttf.ps 1.35]</p>
</blockquote>

<p><strong><a name="2004-01-04_1959"></a>
2004-01-04 19:59 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : monotonize_internal didn't work properly.

DETAILS :

We believe that the new code ever gives monotonic segments,
rather than the old one does not - see
Bug 687210 "a bug in monotonize_internal".

The new code sometimes gives slightly different segments,
because the old code applies an incorrect rounding.
This causes minor differences in rasters.

EXPECTED DIFFERENCES :

normal, 72dpi

a.pdf
ai2.pdf
bugsample.pdf
chilis_black.pdf
chilis_red.pdf

normal, 300dpi

093-01.ps
a.pdf
ai2.pdf
Altona.Page_3.2002-09-27.pdf
bugsample.pdf
chilis_black.pdf
chilis_red.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf

pdfwrite, 72dpi :

a.pdf
ai2.pdf
bugsample.pdf
chilis_black.pdf
chilis_red.pdf
dina3_watermark.pdf

pdfwrite, 300dpi :

093-01.ps
483-05.ps
a.pdf
ai2.pdf
Altona.Page_3.2002-09-27.pdf
bugsample.pdf
chilis_black.pdf
chilis_red.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf

289-01.ps was not tested because it fails.</pre>
<p>[src/gxpcopy.c 1.13]</p>
</blockquote>

<p><strong><a name="2004-01-04_0612"></a>
2004-01-04 06:12 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Trapezoid algorithm could cause topology distortions (continued 2).

DETAILS :

This is a continuation of the recent patch.
This one provides more stability to numeric errors.

This patch brings 3 improvements :

1. the error proportion formula is now applied in all cases
(one of them was missed by the previous patch).

2. since the intersection point isn't equal to AL_X_AT_Y value,
a special care is taken in the dropout prevention code.

3. To provide (2), moved the assignments to x_current, x_next.

EXPECTED DIFFERENCES :

mormal, 72dpi :

169-13.ps
244-01.ps
86554321.pdf

mormal, 300dpi :

012-01.ps
013-01.ps
014-13.ps
032-01.ps
034-01.ps
123-01.ps
123-05.ps
169-13.ps

pdfwrite, 72dpi :

102-01.ps
205-13.ps
244-01.ps
86554321.pdf
waterfal.ps

pdfwrite, 300dpi :

032-01.ps
123-01.ps
123-05.ps
169-13.ps
205-01.ps
205-13.ps
222-13.ps
307-13.ps

289-01.ps was not tested because it fails.</pre>
<p>[src/gxfdrop.c 1.9, src/gxfill.c 1.83]</p>
</blockquote>

<p><strong><a name="2004-01-04_0537"></a>
2004-01-04 05:37 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Remove spurious stack adjustment that caused /unmatchedmark
when the font was loaded from Resource/Fonts/ .
Fix bug 687220.</pre>
<p>[lib/gs_fonts.ps 1.46]</p>
</blockquote>

<p><strong><a name="2004-01-03_1814"></a>
2004-01-03 18:14 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a line ending problem.</pre>
<p>[src/gp_macio.c 1.33]</p>
</blockquote>

<p><strong><a name="2004-01-03_1750"></a>
2004-01-03 17:50 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Trapezoid algorithm could cause topology distortions (continued).

DETAILS :

This is a continuation of the recent patch.
This one provides a better stability to numeric errors :
the point bias is inversedly poroportional to the line slope.

EXPECTED DIFFERENCES :

mormal, 72dpi :

None.

mormal, 300dpi :

123-05.ps
205-05.ps

pdfwrite, 72dpi :

None.

pdfwrite, 300dpi :

None.

289-01.ps was not tested because it fails.</pre>
<p>[src/gxfill.c 1.82]</p>
</blockquote>

<p><strong><a name="2004-01-03_1234"></a>
2004-01-03 12:34 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a True Type grid fitting, step 7.

DETAILS :

This patch changes a disabled code only.
It implements the enhanced logics for the user parameter GridFitTT,
and provides TT grid fitting by both coordinates.

GridFitTT is documented in gxttfb.c :
+     /*	gs_currentgridfittt values (binary) :
+ 	00 - no grid fitting;
+ 	01 - Grid fit with TT interpreter; On failure warn and render unhinted.
+ 	10 - Interpret in the design grid and then autohint.
+ 	11 - Grid fit with TT interpreter; On failure render autohinted.
+     */

Changes to gs/doc to be done after the new code is enabled.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gsfont.c 1.29, src/gxfcache.h 1.23, src/gxttfb.c 1.23, src/zusparam.c 1.11]</p>
</blockquote>

<p><strong><a name="2004-01-03_1038"></a>
2004-01-03 10:38 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Trapezoid algorithm could cause topology distortions.

DETAILS :

There were 2 types of possible distortions : inversed or self-intersecting trapezoids,
and overlapping trapezoids. Rather they are pretty rare (and a consequtive
pixel miscoverage are extremily rare), they break the topology analyzis with
the spotan device.

The distortion happen due to inprecize computations of line intersections.
The coordinate of the intersection is represented in 'fixed', which can't be
precise in most cases. Therefore the intersection point appear slightly shifted.
The harmful thing was a different shift of the same point for each of
the intersecting lines.

This patch brings 2 improvements :

1. Intersecting 2 lines, assign same X to both.
A special care is taken about vertical lines.

2. After intersections are computed, we check whether the coordinates
appear in a wrong order by X. If so, we fix it with computing the average coordinate
and assigning it to all lines. This must give a correct topology with
a small processor time expense.

Monor change : fixed some Cygwin/gcc warnings.

EXPECTED DIFFERENCES :

mormal, 72dpi :

123-01.ps
222-01.ps
281-01.ps
327-01.ps

mormal, 300dpi :

012-01.ps
013-01.ps
014-13.ps
032-01.ps
083-01.ps
083-05.ps
103-01.ps
118-01.ps
123-01.ps
169-13.ps
205-01.ps
205-05.ps
289-01.ps
298-01.ps
307-13.ps
321-01.ps
adesso1.pdf
motor.pdf

pdfwrite, 72dpi :

102-01.ps
169-13.ps
205-13.ps
222-13.ps
244-01.ps
281-01.ps
298-01.ps
308-04.ps
321-01.ps
321-05.ps
327-01.ps
waterfal.ps
205-13.ps

pdfwrite, 300dpi :

012-01.ps
012-05.ps
013-01.ps
014-13.ps
027-09.ps
083-13.ps
102-01.ps
123-01.ps
123-05.ps
169-13.ps
205-01.ps
205-13.ps
222-13.ps
307-01.ps
307-07.ps
307-13.ps

289-01.ps was not tested because it fails.</pre>
<p>[src/gxfill.c 1.81]</p>
</blockquote>

<p><strong><a name="2004-01-02_2105"></a>
2004-01-02 21:05 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix: The (more or less undocumented) superexec operator is supposed to
allow "readonly" directories to be amended. Bug #674421.</pre>
<p>[src/zgeneric.c 1.7]</p>
</blockquote>

<p><strong><a name="2004-01-02_2053"></a>
2004-01-02 20:53 Ray Johnston</strong></p>
<blockquote>
<pre>
Remove spurious ^M (ctrl-M == &lt;cr&gt;) characters from the source -- probably
caused by a Windows user performing an update from a file that was not
correctly recognized as DOS vs. UNIX line endings by cvs.</pre>
<p>[src/idict.c 1.10]</p>
</blockquote>

<p><strong><a name="2004-01-02_1802"></a>
2004-01-02 18:02 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a True Type grid fitting, step 6.

DETAILS :

In the enabled code this change is algorithmically equivalent :
generalized an argument of gx_path__check_curves,
and fixed a design box, wich was not used.

In the disabled code it computes a reasonable flattness for the stem recognition
and exclused an unuseful (and harmful) path copying.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.80, src/gxpath.h 1.11, src/gxpcopy.c 1.12, src/gxttfb.c 1.22, src/ttfmain.c 1.21]</p>
</blockquote>

<p><strong><a name="2004-01-02_1315"></a>
2004-01-02 13:15 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : A GCC compiler error.</pre>
<p>[src/gxfont42.h 1.18]</p>
</blockquote>

<p><strong><a name="2004-01-02_1302"></a>
2004-01-02 13:02 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a True Type grid fitting, step 5.

DETAILS :

In the enabled code this change is algorithmically equivalent :
just moved some TT outliner data definitions and refactored ttfOutliner__Outline.

In the disabled code it fixes numerous problems in the TT grid fitting (by the X axis only).
Now it looks working for small characters.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.79, src/gxhintn.c 1.39, src/gxttfb.c 1.21, src/gzspotan.c 1.6, src/gzspotan.h 1.4, src/ttfmain.c 1.20, src/ttfoutl.h 1.13]</p>
</blockquote>

<p><strong><a name="2004-01-01_1701"></a>
2004-01-01 17:01 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a True Type grid fitting, step 4.

DETAILS :

This patch changes a disabled code only.
It's a trial implementation of a TT grid fitting (by the X axis only).

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxhintn.c 1.38, src/gxhintn.h 1.17, src/gxttfb.c 1.20, src/gzspotan.c 1.5, src/gzspotan.h 1.3, src/lib.mak 1.159]</p>
</blockquote>

<p><strong><a name="2003-12-31_1807"></a>
2003-12-31 18:07 Ralph Giles</strong></p>
<blockquote>
<pre>
Add a paragraph to the license statement listing the additional requirements of
the Freetype License.</pre>
<p>[LICENSE 1.3]</p>
</blockquote>

<p><strong><a name="2003-12-31_1753"></a>
2003-12-31 17:53 Ralph Giles</strong></p>
<blockquote>
<pre>
Add the text of the Freetype license and references to the freetype project to clarify our
compilance. The new truetype bytecode interpreter is based in part of code made available as part
of Freetype 1.</pre>
<p>[doc/Develop.htm 1.129, doc/FTL.txt 1.2, doc/Language.htm 1.79]</p>
</blockquote>

<p><strong><a name="2003-12-31_1112"></a>
2003-12-31 11:12 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : The character oversampling condition was wrong.

DETAILS :

I can't guess why it was done depending on path. It looks wrong
and gives a different result when recomputed from type1execchar
when the path is reset.
Also penum-&gt;current_font to be used rather that pgs-&gt;font due to composite fonts.
Bug 687209 "assertion failure when open postscript file".

EXPECTED DIFFERENCES :

None with TextAlphaBits=1.</pre>
<p>[src/gxchar.c 1.38]</p>
</blockquote>

<p><strong><a name="2003-12-31_0613"></a>
2003-12-31 06:13 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Write a smaller Widths array.

DETAILS :

Bug 687186 "(pdfwrite) Embedding a Type 3 font FirstChar is always 0".

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdtf.c 1.33, src/gdevpdti.c 1.23]</p>
</blockquote>

<p><strong><a name="2003-12-31_0520"></a>
2003-12-31 05:20 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Pattern resource was not added to Resources of a pattern object.

DETAILS :

This is a partial fix for the bug 687196 "Incorrect PDF produced from Adobe test file pattyp1.ps".
A pattern resource was referred in a pattern procedure (of another pattern) but was not
listed in Resources of the pattern object.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfg.c 1.45]</p>
</blockquote>

<p><strong><a name="2003-12-30_1755"></a>
2003-12-30 17:55 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Color space resource was not added to Resources of a pattern object.

DETAILS :

Bug 687206 "Could not find colorspace".
A color space resource was referred in a pattern procedure but was not
listed in Resources of the pattern object.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdfc.c 1.43]</p>
</blockquote>

<p><strong><a name="2003-12-30_1753"></a>
2003-12-30 17:53 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Wrote an invalid text matrix.

DETAILS :

While fixing the bug 687206 "Could not find colorspace",
we discovered a problem with comparefiles/tpc2.ps :
"1 0 0 1 0 1.#INF Tm" was written.
The effect was indeterministic due to an access outside an array.
This patch fixes that.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpdte.c 1.50]</p>
</blockquote>

<p><strong><a name="2003-12-30_1150"></a>
2003-12-30 11:50 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid filling algorithm for curves, step 24, final.

DETAILS :

This patch switches on the new algorithm.

With comparefiles on Zeon 3.06 the curved algorithm appears in 0.6% slower.
Will be fixed with upgrading the scanline algorithm with gx_flattened_iterator.

EXPECTED DIFFERENCES :

-r300 chilis_black.pdf has a minor difference in raster.</pre>
<p>[src/gx.h 1.30]</p>
</blockquote>

<p><strong><a name="2003-12-30_0825"></a>
2003-12-30 08:25 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid filling algorithm for curves, step 23.

DETAILS :

This patch is a code optimization.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gx.h 1.29, src/gxfill.c 1.78, src/gxpflat.c 1.28, src/gzpath.h 1.26]</p>
</blockquote>

<p><strong><a name="2003-12-29_1556"></a>
2003-12-29 15:56 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid filling algorithm for curves, step 22.

DETAILS :

This patch changes a disabled code only.
It optimizes the contour scanner with reducing a data copying.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.77]</p>
</blockquote>

<p><strong><a name="2003-12-29_0435"></a>
2003-12-29 04:35 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid filling algorithm for curves, step 21.

DETAILS :

This patch changes a disabled code only.
It fixes some problems discovered with -r300 and
switches off the self-testing.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gx.h 1.28, src/gxfill.c 1.76]</p>
</blockquote>

<p><strong><a name="2003-12-29_0418"></a>
2003-12-29 04:18 Igor Melichev</strong></p>
<blockquote>
<pre>
Raster depended on the band size (a partial fix).

DETAILS :

The old code used the Y coordinate of a top boundary of a band
as a basis for computing a sampling factor of sloped lines.
Therefore sloped lines generated "stairs" with a dependence of
the phase on the band coordinate.

This patch removes that dependence. Therefore the new banded
raster appears closer to the unbanded raster.
But the banded raster still can be different.
We don't intend to fix it now. We did only a simplest part, which
is neccessary for the current development needs.

This patch also causes some differences, which are not related to the banding.
This happens due to bands and clip boxes come to the filling algorithm
in same data field. The dependence on the clip box is dropped as well.
Particularly it affects shadings, especially radial ones.

EXPECTED DIFFERENCES :

ppmraw -r72 -dMaxBitmap=30000000 :

1_2001.pdf

ppmraw -r72 -dMaxBitmap=10000 :

1_2001.pdf
test.pdf

ppmraw -r300 -dMaxBitmap=10000 :

012-05.ps
013-05.ps
014-05.ps
015-05.ps
027-13.ps
032-01.ps
034-01.ps
036-01.ps
083-05.ps
123-05.ps
123-09.ps
150-01.ps
169-05.ps
175-01.ps
1_2001.pdf
205-05.ps
205-09.ps
220-01.ps
226-01.ps
231-01.ps
245-07.ps
307-07.ps
86554321.pdf
adesso8.pdf
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
BEST8-99-Path.fh7.pdf
Bug687044.ps
BW0696FOLD1FRONT.pdf
ca.pdf
colorcir.ps
DisplayedGood.pdf
DisplayedWrong.pdf
doretree.ps
file2.pdf
gs5.98-dragon.pdf
gs6.0-dragon.pdf
gslandscape.pdf
knight.pdf
messenger.pdf
messenger16.pdf
Openhuis_pdf_zw.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
test.pdf

ppmraw -r300 -dMaxBitmap=30000000 :

1_2001.pdf
205-05.ps
86554321.pdf
adesso8.pdf
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
BEST8-99-Path.fh7.pdf
Bug687044.ps
BW0696FOLD1FRONT.pdf
gs6.0-dragon.pdf
Openhuis_pdf_zw.pdf
S2_Digitalproof-Forum_x3k.pdf
shading_prob_800.ps
test.pdf

Other modes were not tested.
pdfwrite may have a slightly different differences due to the page size rounding.
289-01.ps was not tested because it fails.</pre>
<p>[src/gxfill.c 1.75]</p>
</blockquote>

<p><strong><a name="2003-12-28_1337"></a>
2003-12-28 13:37 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid filling algorithm for curves, step 20.

DETAILS :

This patch changes a disabled code only.
It removes a roudiment of a temporary solution with a late computation of the bounding box.
Debugged with -r300 165-01.ps .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.74]</p>
</blockquote>

<p><strong><a name="2003-12-28_1257"></a>
2003-12-28 12:57 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid filling algorithm for curves, step 19.

DETAILS :

This patch changes a disabled code only.
It fixes an unitialized variable.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.73]</p>
</blockquote>

<p><strong><a name="2003-12-28_1223"></a>
2003-12-28 12:23 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : The dropout prevention code could render an occasional raster.

DETAILS :

We discovered that the old filling algorithm has a non-well-defined behavior
when painting a group of contacting vertical stems with dropout prevention.
The result of the old code appears depending on the order of lines in the X list.
However when vertical lines have same X coordinate,
their order was occasional, and the resulting raster appears
deterministically occasional.
A new section in gxfill.c near line 1629 fixes that, see comment in there.

Another included change to a disabled code brings the curved trapezoid algorithm closer
to the uncurved one. It fixes 2 minor problems with horizontal lines.

EXPECTED DIFFERENCES :

This patch causes a minor difference in some rasters,
which we consider as progressions due to lesser dropouts.

(Well, it is arguable whether the old feature is a dropout at all,
but we'd like to have a well defined raster with no dependence
on unimportant things such as which contour point is choosen for the starting point).

Nornal, 72dpi :

	bulletin.pdf
	waterfal.ps
	womanface.pdf

Nornal, 300dpi :

	None.

pdfwrite, 72dpi :

	bulletin.pdf
	womanface.pdf

pdfwrite, 300dpi :

	Not tested.</pre>
<p>[src/gxfill.c 1.72]</p>
</blockquote>

<p><strong><a name="2003-12-28_0815"></a>
2003-12-28 08:15 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid filling algorithm for curves, step 17.

DETAILS :

This patch changes a disabled code only.
It implements the banding to the curved trapezoid algorithm.

With this patch with ppmraw with 72 dpi only 3 rasters left
different from the old code :

KozukaB-ILEmbed.pdf  (1 pixel differs)
RodinCIDEmbed.pdf    (3 pixels differ)
womanface.pdf        (9 pixels differ)

So now the new algorithm is almost working.

An useful improvement would be to divide big curves on-fly
(it should be pretty simple with subclassing the gx_flattened_iterator
and regenerating the next curve part from entire curve by
the part index), and to replace curve_cursor with gx_flattened_iterator
in the scanline algorithm.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.71]</p>
</blockquote>

<p><strong><a name="2003-12-27_1658"></a>
2003-12-27 16:58 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid filling algorithm for curves, step 16.

DETAILS :

In the enabled code this patch fixes the vd_get_dc syntax,
which was unintentionally broken by the previous patch.
This change is algorithmically equivalent.

In the disabled code it fixes dropout problems with the curved trapezoid algorithm.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.70]</p>
</blockquote>

<p><strong><a name="2003-12-27_1524"></a>
2003-12-27 15:24 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix missing semicolons inserted by previous commit that prevented
compilation.

EXPECTED DIFFERENCES:

Now it will compile, but since the previous commit was untested, there
may be other algorithmic problems that result in differences.</pre>
<p>[src/gxfill.c 1.69]</p>
</blockquote>

<p><strong><a name="2003-12-27_0914"></a>
2003-12-27 09:14 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid filling algorithm for curves, step 15.

DETAILS :

In the enabled code this patch :

1. Refactors add_y_line into 3 functions.
2. Restructurizes end_x_line.
3. Changes the prototype of add_y_list.
4. Implements a new visual trace switch 'F'.
5. Removes 'notes' from gx_flattened_iterator.

This change is algorithmically equivalent.

In the disabled code it allows non-monotonic curves in the trapezoid algorithm.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gx.h 1.27, src/gxfill.c 1.68, src/gxpflat.c 1.27, src/gxfill.h 1.11, src/gzpath.h 1.25]</p>
</blockquote>

<p><strong><a name="2003-12-24_0332"></a>
2003-12-24 03:32 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a typo in the maintainer-clean target in the legacy unix makefiles.
Thanks to William Bader for catching this.</pre>
<p>[src/unix-gcc.mak 1.44, src/unixansi.mak 1.35]</p>
</blockquote>

<p><strong><a name="2003-12-23_1536"></a>
2003-12-23 15:36 Ray Johnston</strong></p>
<blockquote>
<pre>
Move the documentation on handling Unicode high level text into Drivers.htm
which is a developer document instead of Devices.htm which is intended for
users.</pre>
<p>[doc/Devices.htm 1.73, doc/Drivers.htm 1.44]</p>
</blockquote>

<p><strong><a name="2003-12-22_2005"></a>
2003-12-22 20:05 Ray Johnston</strong></p>
<blockquote>
<pre>
Still more regressions that produced incorrect (different than 8.12)
rotations. Regressions include 541_623.pdf and others that had Rotate != 0.

DETAILS:

Previous patch detected automatic rotation cases, but missed rotation
cases when Orientation == 1 or == 3.</pre>
<p>[src/zmedia2.c 1.15]</p>
</blockquote>

<p><strong><a name="2003-12-21_2056"></a>
2003-12-21 20:56 Ray Johnston</strong></p>
<blockquote>
<pre>
Resolve regression differences caused by rotated page sizes being picked
instead of non-rotated in some cases. Seen with 1_pct_50_bang.pdf and
others.

DETAILS:

The 'rotate' variable was input to the 'make_adjustment_matrix' function,
but the matrix could be rotated even when rotate==0. Instead bias the
best_mismatch value when the matrix is rotated (pmat-&gt;xx == 0).</pre>
<p>[src/zmedia2.c 1.14]</p>
</blockquote>

<p><strong><a name="2003-12-20_1709"></a>
2003-12-20 17:09 Ralph Giles</strong></p>
<blockquote>
<pre>
Add a newline at the end of a file. Remove a duplicate semicolon at the end of statement.</pre>
<p>[src/gxistate.h 1.18, src/zchar1.c 1.35]</p>
</blockquote>

<p><strong><a name="2003-12-20_0928"></a>
2003-12-20 09:28 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix yet another long standing bug in 'match_page_size' logic that could
result in the wrong (too small) media being selected due to comparison
of signed difference versus absolute difference.</pre>
<p>[src/zmedia2.c 1.13]</p>
</blockquote>

<p><strong><a name="2003-12-19_0834"></a>
2003-12-19 08:34 Dan Coby</strong></p>
<blockquote>
<pre>
A pair of fixes to the PDF rebuild logic.  The fix in pdf_main.ps corrects
a problem that ws creatd with the PDF 1.5 parser changes.  The fix in
pdf_rbld.ps corrects an unbalanced stack.  This was not fatal but did
leave the string (trailer) on the stack after rebuilding some PDF files.</pre>
<p>[lib/pdf_main.ps 1.83, lib/pdf_rbld.ps 1.6]</p>
</blockquote>

<p><strong><a name="2003-12-19_0542"></a>
2003-12-19 05:42 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix setpagedevice problems introduced with previous commit detected by the
regression tests, including 070-01.ps and many others. Also give priority
to lower value slots (match_key.value.intval)

DETAILS:

If there was a match that didn't set a new value in 'best_mismatch' (less
than the original 'LARGE' value), the match_key would be left at 'null',
causing PolicyReport to be executed. The Genoa tests use PolicyReport to
leave a value on the stack that eventually signals 'FAIL' since the count
is greater than expected.

This latest change makes sure that a valid key gets set even when the
best_mismatch value is not relevant.

The lower number slot (%MediaSource) is given priority in the case of a
tie between best_mismatch and mbest.</pre>
<p>[src/zmedia2.c 1.12]</p>
</blockquote>

<p><strong><a name="2003-12-18_1458"></a>
2003-12-18 14:58 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A temporary workaround for limitcheck writing a CFF with many glyphs.

DETAILS :

The test file of the Bug 686875 contains a Type 1 font with 1280 glyphs,
which overflowed tables in the CFF writer. This patch increases the limitation,
but a limitation still presents. Will improve it someday.
Issued a new bug 687212 about that.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gdevpsf.h 1.25, src/gdevpsf2.c 1.28]</p>
</blockquote>

<p><strong><a name="2003-12-18_1323"></a>
2003-12-18 13:23 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid filling algorithm for curves, step 14.

DETAILS :

This patch changes a disabled code only.

Before this patch the backward iterator works fine, but we are
unhappy of its complexity. Rather it passed the full testing
with comparefiles, a theoretical proof of its correctness is too hard.
Also it highly depends on the old code in MERGE_COLLINEAR_SEGMENTS section,
which doesnt look as a well defined code.

Therefore we went back to the implementation based on a bitmask.
It represents which points were filtered out while the forward iteration.
It consumes some bigger memory (488 bytes per active line),
but we believe that the C stack consupmtion
is still lesser than one in the Type 1 hinter.

Now we bring both implementations into a single revision,
and define a configuration macro FLATTENED_ITERATOR_BACKSCAN
for switching between them.

The KISS principle strongly votes for the bitmask implementation.

This patch also renamed CHECK_BACKSCAN_CONSISTENCY with FLATTENED_ITERATOR_SELFTEST
for a better structurization, and removed some low useful comments.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gx.h 1.26, src/gxfill.c 1.67, src/gxpflat.c 1.26, src/gzpath.h 1.24]</p>
</blockquote>

<p><strong><a name="2003-12-17_1536"></a>
2003-12-17 15:36 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Fixed a comment syntax and removed unused variables.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxpflat.c 1.25]</p>
</blockquote>

<p><strong><a name="2003-12-17_1527"></a>
2003-12-17 15:27 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid filling algorithm for curves, step 13.

DETAILS :

This patch changes a disabled code only.
It allows gx_flattened_iterator__prev_filtered2 to run from any segment
riched by gx_flattened_iterator__next_filtered2. The old code could
only from the last curve segment. Also implemented a testing procedure for it.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxpflat.c 1.24, src/gzpath.h 1.23]</p>
</blockquote>

<p><strong><a name="2003-12-17_0945"></a>
2003-12-17 09:45 Ray Johnston</strong></p>
<blockquote>
<pre>
Add "pa4" page size requested by a user. This is the intersection of
a4 and letter page size, i.e., a4 width and letter length. Bug #553187.</pre>
<p>[lib/gs_statd.ps 1.14]</p>
</blockquote>

<p><strong><a name="2003-12-17_0919"></a>
2003-12-17 09:19 Ray Johnston</strong></p>
<blockquote>
<pre>
Remove warnings and reversion to 'int' which could cause wrong decision
for PageSize match.</pre>
<p>[src/zmedia2.c 1.11]</p>
</blockquote>

<p><strong><a name="2003-12-17_0912"></a>
2003-12-17 09:12 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix InputAttributes initialization to have the default page size in slot
0, and all page sizes known in statusdict/.pagetypenames included with
the 'fit any' pagesize range last. Fixes bug #617077 and other files
that expect slot 0 to be a valid 2 element PageSize corresponding to the
default.

DETAILS:

As noted, "real" printer devices such as laserjets, and inkjets should
set up their own InputAttributes dictionaries that do not include the
'range' type page size.

If the page size is not an exact match (off by less than 5 points), then
the page size range will take priority. This is in a non-standard area
of Ghostscript, but must be preserved for those that want exact PageSize
such as for generating raster images of a specific dimension. If the
range page size is present, then automatic rotation will not be used.

If a PageSize is present in both orientations, such as [612 792] and
[792 612], then priorty will be given to the slot that matches without
automatic rotation.

EXPECTED DIFFERENCES:

Hopefully, none.</pre>
<p>[lib/gs_setpd.ps 1.20, lib/gs_statd.ps 1.13, src/zmedia2.c 1.10]</p>
</blockquote>

<p><strong><a name="2003-12-17_0229"></a>
2003-12-17 02:29 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid filling algorithm for curves, step 12.

DETAILS :

This patch changes a disabled code only.
It provide a tolerance to a bug in monotonize_internal.
See comment in code.

There is an error in the log message of the previous patch.
It should read :
"The compilation mode CURVED_TRAPEZOID_FILL0_COMPATIBLE 0 is not completed."

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.66]</p>
</blockquote>

<p><strong><a name="2003-12-16_2229"></a>
2003-12-16 22:29 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid filling algorithm for curves, step 11.

DETAILS :

This patch contains a minor change to the enabled code, and
a big change to the disabled code.

The change to the enabled code only inserts some new fields
into gx_flattened_iterator, actually defining a subclass.
The enabled code doesn't use them, but provides some initialization.

The change to disabled code defines a backward iterator for
filtered flattened curve segments. Actually we define two ones :

	gx_flattened_iterator__prev_filtered1 - filters points with 'coords_near'
	gx_flattened_iterator__prev_filtered2 - filters points with 'coords_near' and
						'gx_check_nearly_collinear'.

The forward and the backward iterators are made to enumerate same points,
which the old does while flatteining a curve. The old code has
a lot of anomalies, therefore the backward iterators appear
very coplicated. We're planning to drop the compatibility and
simplify the iterators after the curved trapezoid algorithm passes
the compatibility test.

The compilation mode CURVED_TRAPEZOID_FILL0_COMPATIBLE 1 is not completed.
Do not use it with this revision.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gx.h 1.25, src/gxfill.c 1.65, src/gxfill.h 1.10, src/gxpflat.c 1.23, src/gzpath.h 1.22]</p>
</blockquote>

<p><strong><a name="2003-12-14_2232"></a>
2003-12-14 22:32 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid filling algorithm for curves, step 10.

DETAILS :

This patch changes a disabled code only.
It removes CURVED_TRAPEZOID_FILL_SCANS_BACK because we decided to make
this feature permanent.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gx.h 1.24, src/gxfill.c 1.64, src/gxfill.h 1.9, src/gxpflat.c 1.22, src/gzpath.h 1.21]</p>
</blockquote>

<p><strong><a name="2003-12-14_0451"></a>
2003-12-14 04:51 Dan Coby</strong></p>
<blockquote>
<pre>
This is the first pass at the changes to support the PDF 1.5 revisions
to the PDF format.

DETAILS:

The PDF 1.5 revision to the PDF specification contains two major
additions to the format of a PDF document.  Objects can be encoded
in compressed data streams called and object streams.  Xref tables
were also changed to allow the identification of objects in
object streams and also to allow the compression of xref tables.
Together these changes reduced the size of the PDF 1.5 specification
from 13.5 MB (PDF 1.4 version) to 8.7 MB (PDF 1.5 version).

pdf_main.ps and pdf_rbld.ps - The changes in these modules were for
    the support of compressed XRef tables.  The major part of these
    changes consist of the refactoring of readxref into pieces.  One
    piece identifies the old format versus compressed XRef tables.
    A second piece supports the reading of old format XRef tables.
    The procedure readpdf15xref was added to read compressed XRef
    tables.  A new larray called ObjectStream was added for
    identifying the location of objects which are inside a compressed
    object stream.  The changes for the addition of ObjectStream
    also affect pdf_base.ps.

pdf_base.ps - The procedures resolveR and resolved? had to be extended
    to support the presence of the objectstream type.  A new procedure
    called resolveobjectstream was added for resolving objects inside
    of object streams.

    The code listing below has two versions of the resolveobjectstream
    procedure.  I want to keep a record of both versions of this
    procedure in CVS.  The first version is theoretically more robust
    than the second.  It unpacks and processes objects from an object
    stream one at a time.  To insure that this occurs, it creates a
    string of the exact size of an object and then unpacks and processes
    the object.  However it is also very slow.  Processing of a test
    document (PDF 1.5 spec.) with this routine is 4 times slower
    than processing a version of the PDF 1.5 spec. which does not use
    object streams.  The second version of the procedure unpacks the
    entire object stream and then processes each object.  Thus any
    problem which occurs with one object could, in theory, affect another
    object.  The second version is much faster.  There is about a 4%
    penalty for processing the compressed version of the PDF 1.5 spec.

    After the initial check in, the first version of resolveobjecstream
    will be removed unless some need is found for its robustness.</pre>
<p>[lib/pdf_rbld.ps 1.5]</p>
</blockquote>

<p><strong><a name="2003-12-14_0441"></a>
2003-12-14 04:41 Dan Coby</strong></p>
<blockquote>
<pre>
This is the first pass at the changes to support the PDF 1.5 revisions
to the PDF format.

DETAILS:

The PDF 1.5 revision to the PDF specification contains two major
additions to the format of a PDF document.  Objects can be encoded
in compressed data streams called and object streams.  Xref tables
were also changed to allow the identification of objects in
object streams and also to allow the compression of xref tables.
Together these changes reduced the size of the PDF 1.5 specification
from 13.5 MB (PDF 1.4 version) to 8.7 MB (PDF 1.5 version).

pdf_main.ps and pdf_rbld.ps - The changes in these modules were for
    the support of compressed XRef tables.  The major part of these
    changes consist of the refactoring of readxref into pieces.  One
    piece identifies the old format versus compressed XRef tables.
    A second piece supports the reading of old format XRef tables.
    The procedure readpdf15xref was added to read compressed XRef
    tables.  A new larray called ObjectStream was added for
    identifying the location of objects which are inside a compressed
    object stream.  The changes for the addition of ObjectStream
    also affect pdf_base.ps.

pdf_base.ps - The procedures resolveR and resolved? had to be extended
    to support the presence of the objectstream type.  A new procedure
    called resolveobjectstream was added for resolving objects inside
    of object streams.

    The code listing below has two versions of the resolveobjectstream
    procedure.  I want to keep a record of both versions of this
    procedure in CVS.  The first version is theoretically more robust
    than the second.  It unpacks and processes objects from an object
    stream one at a time.  To insure that this occurs.  It creates a
    string of the exact size of an object and then unpacks and processes
    the object.  However it is also very slow.  Processing of a test
    document (PDF 1.5 spec.) with this routine is 4 times slower
    than processing a version of the PDF 1.5 spec. which does not use
    object streams.  The second version of the procedure unpacks the
    entire object stream and then processes each object.  Thus any
    problem which occurs with one object could, in theory, affect another
    object.  The second version is much faster.  There is about a 4%
    penalty for processing the compressed version of the PDF 1.5 spec.

    After the initial check in, the first version of resolveobjecstream
    will be removed unless some need is found for its robustness.</pre>
<p>[lib/pdf_base.ps 1.40, lib/pdf_main.ps 1.82]</p>
</blockquote>

<p><strong><a name="2003-12-14_0107"></a>
2003-12-14 01:07 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix MSVC debug targets: add explicit makefile specification.
Fix bug 687205.

DETAILS:
Debug targets have always been broken on Windows because nmake by
default looks for "MAKEFILE" and fails. Until recently, the default
target was built without the -O2 flag and could be used for debugging.
This patch adds the correct filename explicitly to the debug target
so it can be used instead.</pre>
<p>[src/msvc32.mak 1.52]</p>
</blockquote>

<p><strong><a name="2003-12-13_1807"></a>
2003-12-13 18:07 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix a premature closedevice leading to a SEGV when a setpagedevice follows
a setdevice with the only reference to the device in the graphics state.
Bug #687204 detected with ps2epsi.ps.

DETAILS:

the ps2epsi.ps sets an image device, then does a .setsafe which uses
setpagedevice to set .LockSafetyParams. Eventually setpagedevice results
in a call to gs_setdevice_no_init, but the reference count to the current
device is 1 so even though the device is not being changed, the device
was being closed (which freed the buffer and line pointers). Usually
the currentdevice reference count is &gt; 1 since there is more than one
gstate containing a pointer to the device.

This has been broken since 8.10 when version 1.19 was released with
some changes to device finalization.

Note that ps2epsi.ps is extremely fragile and still doesn't work with
examples/alphabet.ps after the patch (due to the "clear cleardictstack
alphabetsave restore" logic at the end. This patch is ONLY for the SEGV.
IMO, ps2epsi really is a mess and needs to be scrapped and designed
properly.</pre>
<p>[src/gsdevice.c 1.20]</p>
</blockquote>

<p><strong><a name="2003-12-12_1803"></a>
2003-12-12 18:03 Ralph Giles</strong></p>
<blockquote>
<pre>
Link to History8.htm in the list of history files. Patch from Alexei Podtelez.</pre>
<p>[doc/Readme.htm 1.53]</p>
</blockquote>

<p><strong><a name="2003-12-12_0216"></a>
2003-12-12 02:16 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Split an expression in two because MSVC 6.00.8168.0 cannot compile it
in -O2 mode, enabled in GS 8.12 by default. MSVC 6 with
Service Pack 3 doesn't require this work around.</pre>
<p>[src/idict.c 1.9]</p>
</blockquote>

<p><strong><a name="2003-12-12_0144"></a>
2003-12-12 01:44 Ralph Giles</strong></p>
<blockquote>
<pre>
Properly remove jbig2.dev from the FEATURE_DEVS list in the autoconf build when
stdint_h is not available. Works around bug 687007.</pre>
<p>[src/configure.ac 1.36]</p>
</blockquote>

<p><strong><a name="2003-12-11_1944"></a>
2003-12-11 19:44 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix .gethalftone to prevent /undefinedresource or other error from being
left in the &#36;error dict. Seen with UnusualFontMatrix.ps when running under
startjob encapsulation.

DETAILS:

Internal procedures like .gethalftone that want to use stopped but don't
propagate the error up should use .internalstopped since this doesn't
set /newerror in &#36;error.

The file mentioned has a 'quit' following the showpage which when running
under job encapsulation (false 0 startjob) is redefined to do 'stop'.
This means that the /newerror flag in &#36;error was being seen when the
'stop' after the showpage was executed.</pre>
<p>[lib/gs_init.ps 1.103]</p>
</blockquote>

<p><strong><a name="2003-12-11_1815"></a>
2003-12-11 18:15 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid filling algorithm for curves, step 9.

DETAILS :

This change is algorithmically equivalent.
It implements an iterator of filtered flattened curve segments with
gx_flattened_iterator__next_filtered2, and the old behavior
is now implemented with it.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxpflat.c 1.21, src/gzpath.h 1.20]</p>
</blockquote>

<p><strong><a name="2003-12-11_1348"></a>
2003-12-11 13:48 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid filling algorithm for curves, step 8.

DETAILS :

Renamed FLATTENED_CURVE_ITERATOR0_COMPATIBLE,
because it doesn't longer reflect its semantics.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.63, src/gx.h 1.23, src/gxfill.h 1.8, src/gxpflat.c 1.20, src/gzpath.h 1.19]</p>
</blockquote>

<p><strong><a name="2003-12-11_1333"></a>
2003-12-11 13:33 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : The flattening algorithm inaccurately filtered points.
Bug 687154 "Bugs in gx_flatten_sample".

DETAILS :

The old algorithm has 2 problems, which persist since March 20, 2000 or later :

1. When points buffer overflows, it doesn't filter
the next point with MERGE_COLLINEAR_SEGMENTS.

2. With sn_not_first the first point was duplicated,
and the last one was missed.

This patch fixes both problems.

EXPECTED DIFFERENCES :

This patch causes differences flattening long curves.
311-03.ps and 205-13.ps at 300dpi demonstrate a strong progression.
Other differences should be progressions as well.

normal, 72dpi:

012-09.ps
013-09.ps
093-01.ps
289-01.ps
CIDembedded.pdf

300dpi :

012-09.ps
013-09.ps
014-09.ps
015-09.ps
032-07.ps
035-07.ps
083-05.ps
083-09.ps
093-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
289-01.ps
298-09.ps
311-03.ps
321-09.ps
KozukaB-ILEmbed.pdf
RodinCIDEmbed.pdf
shading_prob_800.ps
Svd.pdf

pdfwrite, 72dpi :

083-09.ps
083-13.ps
093-01.ps
205-13.ps
308-04.ps
CIDembedded.pdf

pdfwrite, 300dpi :

012-09.ps
013-09.ps
014-09.ps
015-09.ps
032-07.ps
035-07.ps
083-05.ps
083-09.ps
083-13.ps
093-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
308-04.ps
311-03.ps
acrobat.pdf
alphabet.ps
Bug687044.ps
KozukaB-ILEmbed.pdf
RodinCIDEmbed.pdf
shading_prob_800.ps
Svd.pdf

UnusualFontMatrix.ps was not tested because the current HEAD fails with it.</pre>
<p>[src/gxpflat.c 1.19]</p>
</blockquote>

<p><strong><a name="2003-12-11_0953"></a>
2003-12-11 09:53 Igor Melichev</strong></p>
<blockquote>
<pre>
Removed an obsolete code FLATTENED_CURVE_ITERATOR 0.

DETAILS :

The FLATTENED_CURVE_ITERATOR 0 code is not longer in use.
It was disabled since November 25 2003.
This patch completely removes it.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gx.h 1.22, src/gxpflat.c 1.18, src/gzpath.h 1.18]</p>
</blockquote>

<p><strong><a name="2003-12-11_0259"></a>
2003-12-11 02:59 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix setpagedevice so that the Default Halftone is used. Fixes bug #687199.

DETAILS:
Use .setdefaulthalftone rather than .setdefaultscreen so that setpagedevice
picks up the correct Halftone setting. This was detected when trying to
use 'stocht.ps' to set a Default Halftone that is the stochastic threshold
array, which worked only if page size didn't change or other setpagedevice
setting was made.</pre>
<p>[lib/gs_setpd.ps 1.19]</p>
</blockquote>

<p><strong><a name="2003-12-11_0222"></a>
2003-12-11 02:22 Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the CC_LEAF alternate compiler definition. This basically exists to pass
-fomit-frame-pointer (or equivalent) on a few (two) files where it's unequivocably safe. This
strikes us as premature optimization.

It was also causing problems with the profile build under gcc because of a quoting problems with
the argument list the makefile passes to itself through this define. Closes bug 687182.</pre>
<p>[src/Makefile.in 1.29, src/bcwin32.mak 1.31, src/dvx-gcc.mak 1.25, src/gs.mak 1.23, src/int.mak 1.119, src/lib.mak 1.158, src/macos-mcp.mak 1.24, src/macosx.mak 1.22, src/msvccmd.mak 1.13, src/openvms.mak 1.34, src/openvms.mmk 1.28, src/os2.mak 1.36, src/ugcclib.mak 1.27, src/unix-end.mak 1.6, src/unix-gcc.mak 1.43, src/unixansi.mak 1.34, src/watcw32.mak 1.28, src/wccommon.mak 1.8]</p>
</blockquote>

<p><strong><a name="2003-12-10_2342"></a>
2003-12-10 23:42 Ralph Giles</strong></p>
<blockquote>
<pre>
In the autoconf build, only pass -O2 if the compiler is detected to be gcc. Fall back to trying
the POSIX -O in other cases. The trial compile was not detecting that this option does not work
correctly on the Solaris compilers. Problem report from Nelson Beebe, closes bug 687198.</pre>
<p>[src/configure.ac 1.35]</p>
</blockquote>

<p><strong><a name="2003-12-10_2307"></a>
2003-12-10 23:07 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix incorrect handling of the '\' escape character in the filenameforall
implementation on Windwows. Fixes bug #687151. Also fix logic in the
.scanfontdir that relied on the incorrect filenameforall implementation.

DETAILS:
The previous NT filenameforall implementation did not translate the
template string to be used by the FindFirstFile Windows call. This
meant that the template was being passed the '\' escape characters
which were not correctly handled by the OS call.

Also testing -sFONTPATH=\Winnt\Fonts showed that this was also broken
in gs_fonts.ps since it didn't duplicate the '\' characters for the
template to filenameforall.

Note that other gp_* implementations of file enumeration don't
seem to handle escapes such as gp_unifs.c. The gp_macio.c doesn't
do anything, and the gp_dosfe.c (deprecated) seems totally broken.
The gp_os2.c appears to be a clone of the gp_ntfs.c, so should be
fixed. About the only version that seems to be handling the '\'
character according to the PLRM is gp_vms.c (can you believe that?).

Thanks to Alex Cherepanov and Igor Melichev for contributing.</pre>
<p>[lib/gs_fonts.ps 1.45, src/gp_ntfs.c 1.22]</p>
</blockquote>

<p><strong><a name="2003-12-10_1427"></a>
2003-12-10 14:27 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid filling algorithm for curves, step 7.

DETAILS :

This change is syntactically equivalent.
It replaces gx_flattened_curve_iterator to a shorter identifier,
because we intend to define a subclass with a name suffix.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.62, src/gxpflat.c 1.17, src/gzpath.h 1.17]</p>
</blockquote>

<p><strong><a name="2003-12-10_1423"></a>
2003-12-10 14:23 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix: A prototype for memcpy was missed.

DETAILS :

It was inserted into lib.mak but did not into gxpflat.c .

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxpflat.c 1.16]</p>
</blockquote>

<p><strong><a name="2003-12-10_1341"></a>
2003-12-10 13:41 Igor Melichev</strong></p>
<blockquote>
<pre>
Simplify the filtering of points while flattening a curve.

DETAILS :

This change is algorithmically equivalent due to algebraic laws.

Thesis : (coord_near(x2, x0) &amp;&amp; coords_in_order(x0, x1, x2)) implies
coord_near(x2, x1).

Proof:

case 1:
	x0 &gt;= x1 &gt;= x2 ==&gt; abs(x2 - x1) &lt;= abs(x2 - x0);
case 2:
	x0 &gt;= x1 &gt;= x2 ==&gt; abs(x2 - x1) &lt;= abs(x2 - x0);

Therefore coord_near(x2, x1) doesn't need to check and has been removed.
Same for Y.
Then merged 2 branches with '||' because they appear same.
The performance slightly increases, and the behavior is easier to understand.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxpflat.c 1.15]</p>
</blockquote>

<p><strong><a name="2003-12-09_2118"></a>
2003-12-09 21:18 Ralph Giles</strong></p>
<blockquote>
<pre>
Add the new stdint_.h compatibitily header to the file roadmap.</pre>
<p>[doc/Develop.htm 1.128]</p>
</blockquote>

<p><strong><a name="2003-12-09_2117"></a>
2003-12-09 21:17 Ralph Giles</strong></p>
<blockquote>
<pre>
Add a new compatibility header, stdint_.h. All the code previously in std.h and stdpre.h that
tried to make these types universally available has been moved to the new compatibility header
as per policy.</pre>
<p>[src/lib.mak 1.157, src/sjbig2.c 1.5, src/sjbig2.h 1.4, src/std.h 1.11, src/stdint_.h 1.1, src/stdpre.h 1.22, src/ttfsfnt.h 1.6]</p>
</blockquote>

<p><strong><a name="2003-12-09_2111"></a>
2003-12-09 21:11 Ralph Giles</strong></p>
<blockquote>
<pre>
Bump version numbers after the 8.12 release.</pre>
<p>[doc/News.htm 1.139, lib/gs_init.ps 1.102, src/gscdef.c 1.40, src/version.mak 1.68]</p>
</blockquote>

<p><strong><a name="2003-12-09_1725"></a>
2003-12-09 17:25 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid filling algorithm for curves, step 6.

DETAILS :

This change modifies a disabled code,
and includes a minor change to the enabled code,
which should be algorithmically equivalent.

In the enabled code factored out the new function add_y_line_aux.

This patch fixes the dropout problem in CURVED_TRAPEZOID_FILL 1.
The problem was unprocessed horizontal segments of curves.
Now we create a new temporary horizontal line for
each horizontal segment of a curve, and add it to the Y list.
Then it immediately goes to H list, and then processed and freed.

Due to the modification of the Y list during the main
trapezoid loop (which did not happen before) the cycle
commented with
/* Move newly active lines from y to x list. */
is improved with providing a consistency of local copies
of the Y list pointers.

Good tests for this stuff present in a.pdf .
With this patch with ppmraw 72dpi it renders equal to
with CURVED_TRAPEZOID_FILL 0 code.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gxfill.c 1.61, src/gxpflat.c 1.14, src/gzpath.h 1.16]</p>
</blockquote>

<p><strong><a name="2003-12-09_1723"></a>
2003-12-09 17:23 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid filling algorithm for curves, step 5.

DETAILS :

This change modifies a disabled code only.

This patch provides more compatibility of the
CURVED_TRAPEZOID_FILL &amp; FLATTENED_CURVE_ITERATOR0_COMPATIBLE build
to the old code. Doing it with implementing the new function
gx_flattened_curve_iterator__prev.

We're not planning to pass this function to production
because it slows down. Only reason is to simplify testing with
exact comparison of results of the old and the new code.
The macro CURVED_TRAPEZOID_FILL_SCANS_BACK helps to remove it later.

A new field skip_points is inserted into active_line_s for same purpose.
While enumerating curve segments in a backward order,
it helps to skip same division points as the old code
does in the forward order. This thing consumes too much RAM.
It won't go to production.

One problem is left unsolved. While flattening a curve,
it can generate a horizontal segment. It must be passed to h-list
for dropout prevention. It is not done yet.
This problem causes a dropout in a Chinese glyph in a.pdf
with ppmraw 72 dpi.

For a while we don't apply CURVED_TRAPEZOID_FILL for non-characters.
The reason is that pco_monotonize works imprecisely.
Will improve someday. Most characters are free of non-monotonic curves,
but we notices a number of such in Genoa tests
and in other files.

The fragment INTERTRAP_STEM_BUG is an attempt to improve a
serif suppression while dropout prevention. The coded condition
isn't perfect. It is disabled. A better way would be to depend on
Y projection contiguity, checking sect-&gt;y0, sect-&gt;y1.
Keeping it to simplify further experimenting.

EXPECTED DIFFERENCES :

None.</pre>
<p>[src/gx.h 1.21, src/gxfdrop.c 1.8, src/gxfill.c 1.60, src/gxfill.h 1.7, src/gxpflat.c 1.13, src/gzpath.h 1.15, src/lib.mak 1.156]</p>
</blockquote>

<p><strong><a name="2003-12-09_1721"></a>
2003-12-09 17:21 Igor Melichev</strong></p>
<blockquote>
<pre>
Unwinding the last patch because it was committed with a wrong log message.</pre>
<p>[src/gx.h 1.20, src/gxfdrop.c 1.7, src/gxfill.c 1.59, src/gxfill.h 1.6, src/gxpflat.c 1.12, src/gzpath.h 1.14]</p>
</blockquote>

<p><strong><a name="2003-12-09_1648"></a>
2003-12-09 16:48 Igor Melichev</strong></p>
<blockquote>
<pre>
ERRONEUS COMMITMENT - do not use this revision.</pre>
<p>[src/lib.mak 1.155]</p>
</blockquote>

<p><strong><a name="2003-12-09_1642"></a>
2003-12-09 16:42 Igor Melichev</strong></p>
<blockquote>
<pre>
ERRONEUS COMMITMENT - do not use this revision.</pre>
<p>[src/lib.mak 1.154]</p>
</blockquote>

<p><strong><a name="2003-12-09_1612"></a>
2003-12-09 16:12 Igor Melichev</strong></p>
<blockquote>
<pre>
ERRONEUS COMMITMENT - do not use this revision.</pre>
<p>[src/gx.h 1.19, src/gxfdrop.c 1.6, src/gxfill.c 1.58, src/gxfill.h 1.5, src/gxpflat.c 1.11, src/gzpath.h 1.13, src/lib.mak 1.153]</p>
</blockquote>

<p><strong><a name="2003-12-09_1559"></a>
2003-12-09 15:59 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Type 1,2 composite glyphs could point to wrong subglyphs.

DETAILS :

This is a continuation of the recent patch for
Bug 687172 "Jaggies appearing for some characters".

The old code converted subglyph names to char codes with the font's Encoding.
However arguments of 'seac' command always encode glyphs by StandardEncoding.
If the fon't Encoding specifies different codes, the result was wrong.

Since the font copying routine uses gs_glyph values taken from the global
interpreter's space (see gsccode.h), which are PS name indices,
it needs to convert a glyph name string to a name index.
Before now we had no support for this.
To provide it we add a new graphics library callback
gs_font_dir::global_glyph_code.

A recommendation for PCL interpreter :
if it is called with pdfwrite, zfont_global_glyph_code to be implemented.
Maybe an implementation with gs_c_known_encode helps.

There exists a connected minor problem (PS interpreter only),
which this patch doesn't fix.
If a font is freed and then reloaded, the glyph names can get
different name indices, if a garbager is invoked and freed
the names before the second loading. As the result, the copied font
can embed duplicated glyph definitions (charstrings).
It can't give an invalid PDF, but it's size may increase. Hopely this case is rare.
Opening a new bug 687187 about this.

EXPECTED DIFFERENCES :

None with comparefiles.</pre>
<p>[src/gsfont.c 1.28, src/gxfcache.h 1.22, src/gxfcopy.c 1.39, src/lib.mak 1.152, src/zfont.c 1.10]</p>
</blockquote>


<hr>

<h2><a name="Version8.12"></a>Version 8.12 (2003-12-08)</h2>

<p>
This is the second stable release in the 8.1x series. It contains numerous bug 
fixes; other highlights include improved font rendering and colorspace handling,
and unicode text support for high-level devices.

<p>
The following <a href="http://bugs.ghostscript.com/">bug</a> numbers were open at
the time of the last release:
<blockquote>
405501,
414947,
430175,
446344,
456692,
458261,
458780,
463688,
465936,
487460,
487953,
493348,
509829,
526099,
526491,
530011,
535366,
535932,
542629,
553187,
555072,
558151,
563287,
572865,
578865,
592160,
592837,
601336,
602263,
603934,
604722,
605830,
607425,
607850,
610478,
611898,
614298,
617077,
617523,
626295,
628110,
629335,
634036,
634358,
645316,
651644,
656414,
667301,
669654,
674241,
674417,
674418,
677324,
677383,
677430,
680301,
681469,
685335,
686747,
686750,
686752,
686778,
686816,
686819,
686824,
686833,
686834,
686841,
686842,
686843,
686850,
686852,
686853,
686860,
686863,
686865,
686867,
686873,
686877,
686889,
686892,
686896,
686897,
686902,
686904,
686909,
686919,
686930,
686933,
686936,
686937,
686938,
686944,
686946,
686949,
686951,
686954,
686956,
686957,
686958,
686959,
686963,
686975,
686980,
686996,
686999,
687007,
687011,
687012,
687013,
687014,
687020,
687021,
687029,
687038,
687039,
687050,
687059,
687063,
687066,
687072,
687079,
687084,
687085,
687086,
687088,
687090,
687093,
687095,
687102,
687105,
687108,
687110,
687114,
687120,
687123,
687125,
687137,
687142,
687145,
687146,
687151,
687154,
687157,
687163,
687168,
687169,
687171,
687172,
687173,
687174,
687177,
687181,
687182,
687184,
687185,
687186,
687187,
687189,
687190,
687191.
</blockquote>

<h3><a name="8.12_Incompatible_changes"></a>Incompatible changes</h3>

<p>Type 1 font hints are no longer applied to charpaths. This is generally an improvement,
but will generate a different outline from previously.

<p>A new virtual functions <tt>can_handle_hl_color()</tt> is required for high-level 
devices derived from <tt>gx_device_vector</tt>.

<p>The library client api now propagates <tt>device_close</tt> errors to the return 
value of <tt>gsapi_exit()</tt>.

<h3><a name="8.12_changelog"></a>Changelog</h3>

<!-- generated by split_changelog.py from the output of cvs2cl.pl -->

<p><strong><a name="2003-12-09_0637"></a>
2003-12-09 06:37 Ray Johnston</strong></p>
<blockquote>
<pre>
Correct a long standing problem that caused non-optimized builds with
MSVC on Windows. The default TDEBUG was 1, which circumvented a change
made to msvccmd.mak to enable /O2 for MSVC_VERSION != 5. Note that
with MSVC 6 Service Pack 3 is required to avoid an INTERNAL COMPILER
ERROR when compiling src/idict.c.
</pre>
<p>[src/msvc32.mak 1.51]</p>
</blockquote>

<p><strong><a name="2003-12-09_0404"></a>
2003-12-09 04:04 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct some inconsistent line endings.
</pre>
<p>[src/stdio_.h 1.10, src/ttfsfnt.h 1.5]</p>
</blockquote>

<p><strong><a name="2003-12-09_0305"></a>
2003-12-09 03:05 Ralph Giles</strong></p>
<blockquote>
<pre>
Updated release notes and change history for the 8.12 release.
</pre>
<p>[doc/Changes.htm 1.49, doc/Details.htm 1.8, doc/Details8.htm 1.4, doc/History8.htm 1.8, doc/News.htm 1.138]</p>
</blockquote>

<p><strong><a name="2003-12-08_2317"></a>
2003-12-08 23:17 Ralph Giles</strong></p>
<blockquote>
<pre>
Update documentation with release version and date.
</pre>
<p>[doc/API.htm 1.41, doc/Bug-form.htm 1.39, doc/Bug-info.htm 1.38, doc/C-style.htm 1.45, doc/Commprod.htm 1.30, doc/Copying.htm 1.29, doc/DLL.htm 1.33, doc/Deprecated.htm 1.10, doc/Details8.htm 1.3, doc/Develop.htm 1.127, doc/Devices.htm 1.72, doc/Drivers.htm 1.43, doc/Fonts.htm 1.39, doc/Helpers.htm 1.33, doc/History1.htm 1.29, doc/History2.htm 1.29, doc/History3.htm 1.29, doc/History4.htm 1.29, doc/History5.htm 1.31, doc/History6.htm 1.46, doc/History7.htm 1.34, doc/History8.htm 1.7, doc/Htmstyle.htm 1.34, doc/Install.htm 1.44, doc/Issues.htm 1.39, doc/Language.htm 1.78, doc/Lib.htm 1.32, doc/Maintain.htm 1.40, doc/Make.htm 1.70, doc/New-user.htm 1.49, doc/Projects.htm 1.56, doc/Ps-style.htm 1.27, doc/Ps2epsi.htm 1.31, doc/Ps2pdf.htm 1.56, doc/Psfiles.htm 1.50, doc/Readme.htm 1.52, doc/Release.htm 1.82, doc/Source.htm 1.29, doc/Tester.htm 1.29, doc/Testing.htm 1.23, doc/Unix-lpr.htm 1.29, doc/Use.htm 1.95, doc/Xfonts.htm 1.29, doc/gs-vms.hlp 1.28, man/dvipdf.1 1.27, man/font2c.1 1.27, man/gs.1 1.28, man/gslp.1 1.27, man/gsnd.1 1.27, man/pdf2dsc.1 1.26, man/pdf2ps.1 1.28, man/pdfopt.1 1.26, man/pf2afm.1 1.27, man/pfbtopfa.1 1.28, man/printafm.1 1.27, man/ps2ascii.1 1.26, man/ps2epsi.1 1.25, man/ps2pdf.1 1.32, man/ps2pdfwr.1 1.31, man/ps2ps.1 1.34, man/wftopfa.1 1.27]</p>
</blockquote>

<p><strong><a name="2003-12-08_2304"></a>
2003-12-08 23:04 Ralph Giles</strong></p>
<blockquote>
<pre>
Update date, product name and open bug list for release.
</pre>
<p>[doc/News.htm 1.137, src/gscdef.c 1.39, src/version.mak 1.67]</p>
</blockquote>

<p><strong><a name="2003-12-07_1756"></a>
2003-12-07 17:56 Ralph Giles</strong></p>
<blockquote>
<pre>
Add the experimental spot analysis source files to the developer file roadmap.
</pre>
<p>[doc/Develop.htm 1.126]</p>
</blockquote>

<p><strong><a name="2003-12-07_1617"></a>
2003-12-07 16:17 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid fillling algorithm for curves, step 4.

DETAILS :

This change modifies a disabled code only.
The comment /* Likely a bug in the !CURVED_TRAPEZOID_FILL code. */
is now removed because it is wrong. The function process_h_list
performs that check perfectly.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfdrop.c 1.5]</p>
</blockquote>

<p><strong><a name="2003-12-06_0338"></a>
2003-12-06 03:38 Ralph Giles</strong></p>
<blockquote>
<pre>
Respect the new regression differences section header when writing out the
split changelogs. The previous change only added the header to the detection
section.
</pre>
<p>[toolbin/split_changelog.py 1.7]</p>
</blockquote>

<p><strong><a name="2003-12-06_0328"></a>
2003-12-06 03:28 Ralph Giles</strong></p>
<blockquote>
<pre>
Also split changelog entries on the new "EXPECTED DIFFERENCES:" header.
</pre>
<p>[toolbin/split_changelog.py 1.6]</p>
</blockquote>

<p><strong><a name="2003-12-06_0148"></a>
2003-12-06 01:48 Ralph Giles</strong></p>
<blockquote>
<pre>
In the autoconf build, add the general cflags generated by the configure script to the definition
the the definition of CCAUX. This works around a problem building on cygwin.

DETAILS:

Older versions of cygwin do not provide stdint.h but do define some of the types in sys/types.h.
More recent versions do provide the header but also define them by inclusion in sys/types.h. This
caused a problem with the 'fixup' code we added in response to bug 687162 which defined the
missing half of the types if stdint.h was not detected by the configure script. In versions of
cygwin that do provide stdint.h, most files compile as expected, but genconf.c is compiled with
the alternate CCAUX compiler definition and was not receiving the -DHAVE_STDINT_H argument from
configure, causing a type conflict between the complete set of stdint types pulled in by
sys/types.h and the platform-specific fixup set included when stdint.h is supposedly not
available. Adding the GCFLAGS line to the definition of CCAUX works around the problem and has
little potential to confuse the build in the future.

A similar change made to unix-gcc.mak would need to document the -DHAVE_STDINT_H option for
cygwin. I felt this was unecessarily excessive; we already recommend the autoconf build on systems
that can support it.
</pre>
<p>[src/Makefile.in 1.28]</p>
</blockquote>

<p><strong><a name="2003-12-04_1657"></a>
2003-12-04 16:57 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : (type 1 hinter) Invalid contours with &lt;=2 segments caused an infinite loop.

DETAILS :

Provided a workaround.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxhintn.c 1.37]</p>
</blockquote>

<p><strong><a name="2003-12-04_1619"></a>
2003-12-04 16:19 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid fillling algorithm for curves, step 3.

DETAILS :

Improved the CURVED_TRAPEZOID_FILL &amp; FLATTENED_CURVE_ITERATOR0_COMPATIBLE build.
This change modifies a disabled code only.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfill.c 1.57, src/gxpflat.c 1.10, src/gzpath.h 1.12]</p>
</blockquote>

<p><strong><a name="2003-12-04_1453"></a>
2003-12-04 14:53 Ralph Giles</strong></p>
<blockquote>
<pre>
Minor spelling and grammar corrections.
</pre>
<p>[doc/Devices.htm 1.71]</p>
</blockquote>

<p><strong><a name="2003-12-04_1352"></a>
2003-12-04 13:52 Igor Melichev</strong></p>
<blockquote>
<pre>
Document the new feature "Unicode support for high level devices".
</pre>
<p>[doc/Devices.htm 1.70]</p>
</blockquote>

<p><strong><a name="2003-12-04_1235"></a>
2003-12-04 12:35 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc compiler claimed possibly uninitialized variables.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevdevn.c 1.12, src/gdevp14.c 1.20, src/gdevpdfm.c 1.34, src/gdevpdtc.c 1.30, src/gdevpdtf.c 1.32, src/gdevpdtt.c 1.68, src/gdevplnx.c 1.7, src/gdevprn.c 1.14, src/gdevps.c 1.38, src/gpmisc.c 1.22, src/gsalloc.c 1.20, src/gscie.c 1.14, src/gsfont.c 1.27, src/gxclpath.c 1.19, src/gxclrast.c 1.27, src/gxfcopy.c 1.38, src/gxfill.c 1.56, src/gximono.c 1.11, src/gxstroke.c 1.10, src/iscan.c 1.16, src/ttfmain.c 1.19, src/ttinterp.c 1.11, src/zdscpars.c 1.16, src/zht2.c 1.11]</p>
</blockquote>

<p><strong><a name="2003-12-04_1109"></a>
2003-12-04 11:09 Igor Melichev</strong></p>
<blockquote>
<pre>
Generalize the trapezoid fillling algorithm for curves, step 2.

DETAILS :

1. Factored out the function gx_check_nearly_collinear_inline.
   This change is algorithmically equivalent.

2. Improved the FLATTENED_CURVE_ITERATOR0_COMPATIBLE build.
   This change modifies a disabled code only.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gx.h 1.18, src/gxfdrop.c 1.4, src/gxfill.c 1.55, src/gxfill.h 1.4, src/gxpflat.c 1.9, src/gzpath.h 1.11]</p>
</blockquote>

<p><strong><a name="2003-12-04_1010"></a>
2003-12-04 10:10 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : misprints in lib.mak .

DETAILS :

Some dependencies were missed.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/lib.mak 1.151]</p>
</blockquote>

<p><strong><a name="2003-12-04_1007"></a>
2003-12-04 10:07 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : an access to uninitialized data in zbfont.c .

DETAILS :

Type 11 fonts got an occasional indeterministic data to pdata-&gt;Encoding,
which were inaccurately checked for r_size() &lt;= 256.

We're keeping the check "r_size(pfe) &lt;= 256" for backward compatibility,
rather we're unclear about it's purpose. It shouldn't be harmful.

EXPECTED DIFFERENCES :

I did not detected any on Windows, but I believe that the old code was indeterministic.
</pre>
<p>[src/zbfont.c 1.26]</p>
</blockquote>

<p><strong><a name="2003-12-04_1001"></a>
2003-12-04 10:01 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : an access to uninitialized data in gxcpath.c .

DETAILS :

pcpath-&gt;path_list was not reset when it is replaced with a rectangle and freed.
Bug 687178 "Infinite loop in ialloc_validate_memory".

EXPECTED DIFFERENCES :

I did not detected any on Windows, but I believe that the old code was indeterministic.
</pre>
<p>[src/gxcpath.c 1.11]</p>
</blockquote>

<p><strong><a name="2003-12-04_0946"></a>
2003-12-04 09:46 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Type 1 subglyphs don't need Encoding entries.

DETAILS :

A new comment added to gxfcopy.c explains the change :

/* No need to add subglyphs to the Encoding because they always are
   taken from StandardEncoding (See the Type 1 spec about 'seac').
   Attempt to add them to the encoding can cause a conflict,
   if the encoding specifies different glyphs for these char codes
   (See the bug #687172). */

EXPECTED DIFFERENCES :

pdfwrite progression with comparefiles\Bug687044.ps
</pre>
<p>[src/gxfcopy.c 1.37]</p>
</blockquote>

<p><strong><a name="2003-12-04_0937"></a>
2003-12-04 09:37 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (type 1 hinter) : sbw was wrongly accounted with FontBBox over 4095 units.

DETAILS :

Side bearing and width was accounted before import_shift is adjusted to FontBBox.
Bug 687156 "some characters shifted higher in acrobat4 generated eps".

Besides that, it prevents a fixed overflow when FontBBox is zero and glyph coordinates are big.
Bug 687175 "(type 1 hinter) A fixed overflow can happen".

This patch removes import_shift and the dependence on FontBBox.
Instead that it dynamically reduces the number of fraction bits
in transformation matrices during the glyph import.

Minor change : removed some obsolete comments.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gstype1.c 1.30, src/gstype2.c 1.33, src/gxhintn.c 1.36, src/gxhintn.h 1.16]</p>
</blockquote>

<p><strong><a name="2003-12-04_0351"></a>
2003-12-04 03:51 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add new files; make all lists separated with comma and terminated with a period.
</pre>
<p>[doc/Develop.htm 1.125]</p>
</blockquote>

<p><strong><a name="2003-12-03_2231"></a>
2003-12-03 22:31 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add double-inclusion protection to errors.h to pacify the regression
test and rename double-inclusion protection variable in ierrors.h
for the naming consistency.
</pre>
<p>[src/errors.h 1.9, src/ierrors.h 1.2]</p>
</blockquote>

<p><strong><a name="2003-12-01_1819"></a>
2003-12-01 18:19 Ralph Giles</strong></p>
<blockquote>
<pre>
Cygwin defines unsigned size-specific types with a u_ prefix in sys/types.h in analogy with MSVC.
Use these instead of the generic int types when defining the stdint.h size-specific types. Patch
from Alex Cherpanov. Fixes bug 687162.
</pre>
<p>[src/stdpre.h 1.21]</p>
</blockquote>

<p><strong><a name="2003-12-01_1649"></a>
2003-12-01 16:49 Ralph Giles</strong></p>
<blockquote>
<pre>
Add stdint fixed-length integer typedefs for cygwin. Apparently this platform defines the signed
versions in sys/types.h so we need only define the unsigned versions. After a patch by Alex
Cherpanov, bug 687162.
</pre>
<p>[src/stdpre.h 1.20]</p>
</blockquote>

<p><strong><a name="2003-11-30_1903"></a>
2003-11-30 19:03 Ralph Giles</strong></p>
<blockquote>
<pre>
Typedef uint64_t from 'unsigned __int64' on win32. From Alex Cherpanov's patch for bug 687162.
</pre>
<p>[src/stdpre.h 1.19]</p>
</blockquote>

<p><strong><a name="2003-11-27_2232"></a>
2003-11-27 22:32 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Add support to pnm images with max_pixel_value &lt; (1&lt;&lt;depth)-1
Fix bug 687139.
</pre>
<p>[toolbin/tests/fuzzy.c 1.13]</p>
</blockquote>

<p><strong><a name="2003-11-27_0226"></a>
2003-11-27 02:26 Ralph Giles</strong></p>
<blockquote>
<pre>
Remove the search for long long / int64_t from genarch entirely. Neither of these
types is portable C as genarch must be, and nothing in Ghostscript actually requires
as 64-bit type, so the feature is inessential. (We do use a 64 bit type for gx_color_index
but that's passed through a separate define.) Bug 687161.
</pre>
<p>[src/genarch.c 1.8, src/std.h 1.10]</p>
</blockquote>

<p><strong><a name="2003-11-25_1532"></a>
2003-11-25 15:32 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A fixed overflow in setup_image_compression.

DETAILS :

Bug 687164 "(pdfwrite) dina3_watermark.pdf generates a 293Meg PDF".
The bug persists since Sun Apr 30 01:26:41 2000 UTC.

EXPECTED DIFFERENCES :

The re-distilled dina3_watermark.pdf renders differently due to DCT compression applied.
</pre>
<p>[src/gdevpsdi.c 1.26]</p>
</blockquote>

<p><strong><a name="2003-11-25_0834"></a>
2003-11-25 08:34 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : A misspelled TRAPEZIOD.

DETAILS :

The change is syntatctically equivalent.
Note that log messages of recent patches still keep the misspelled word.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gx.h 1.17, src/gxfdrop.c 1.3, src/gxfdrop.h 1.4, src/gxfill.c 1.54, src/gxfill.h 1.3, src/gxpath.h 1.10, src/gxpcopy.c 1.11, src/gzspotan.c 1.4]</p>
</blockquote>

<p><strong><a name="2003-11-25_0021"></a>
2003-11-25 00:21 Igor Melichev</strong></p>
<blockquote>
<pre>
Generailze the trapezoid fillling algorithm for curves, step 1.
The new code is disabled with CURVED_TRAPEZIOD_FILL 0 in gx.h .

DETAILS :

This patch slightly changes the enabled code
with adding more arguments to process_h_lists and end_x_line,
and with renaming gx_flatten_sample and gx_path_is_monotonic.
The new arguments are not used with CURVED_TRAPEZIOD_FILL 0.

With CURVED_TRAPEZIOD_FILL 1 the trapezoid filling algorithm
doesn't need to faltten the path in advance, and should work faster
due to smaller number of segment allocations.
Instead the generating of flattened segments and storing them to RAM
it breaks curves into pieces on-fly with help of
the gx_flattened_curve_iterator. Meanwhile it needs "small" curves.
To provide that we generalized gx_path_is_monotonic to gx_path__check_curves,
and gx_path_add_monotonized to gx_path_copy_reducing(..., pco_small_curves).

Minor changes :
- Fixed the vd_curve macro;
- improved vdtrace calls in gxpflat.c;
- Moved the FLATTENED_CURVE_ITERATOR definition to gx.h .

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gx.h 1.16, src/gxfdrop.c 1.2, src/gxfdrop.h 1.3, src/gxfill.c 1.53, src/gxfill.h 1.2, src/gxpath.h 1.9, src/gxpcopy.c 1.10, src/gxpflat.c 1.8, src/gzpath.h 1.10, src/vdtrace.h 1.9]</p>
</blockquote>

<p><strong><a name="2003-11-24_1450"></a>
2003-11-24 14:50 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Simplify the filling algorithm (step 12).

DETAILS :

The previous patch
http://www.ghostscript.com/pipermail/gs-cvs/2003-November/date.html
is buggy. This patch fixes that.

EXPECTED DIFFERENCES :

Should fix regressions which could appear on 2003-11-24.
</pre>
<p>[src/gxfill.c 1.52]</p>
</blockquote>

<p><strong><a name="2003-11-23_1844"></a>
2003-11-23 18:44 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Simplify the filling algorithm (step 11).

DETAILS :

Factored out a line intersection function.
This change should be algorithmically equivalent.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfill.c 1.51]</p>
</blockquote>

<p><strong><a name="2003-11-23_1016"></a>
2003-11-23 10:16 Igor Melichev</strong></p>
<blockquote>
<pre>
[Log message beg]
Fix : Adding gs/Resource/Decoding/Latin1, which is used by FAPI/UFST with Intellifont fonts.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[Resource/Decoding/Latin1 1.1, lib/gs_stres.ps 1.7]</p>
</blockquote>

<p><strong><a name="2003-11-22_1854"></a>
2003-11-22 18:54 Ray Johnston</strong></p>
<blockquote>
<pre>
Previous change assumed that all platforms have 'long long' type, but MSVC
doesn't have this. Use int64_t as set by stdpre.h instead.

DETAILS:

Tested on Windows MSVC and linux/gcc, but we need to test portability on
other platforms like HP-UX, AIX, and VMS.
</pre>
<p>[src/genarch.c 1.7]</p>
</blockquote>

<p><strong><a name="2003-11-21_2001"></a>
2003-11-21 20:01 Ralph Giles</strong></p>
<blockquote>
<pre>
Update indented preprocessor lines in code imported from Freetype to
put the '#' in the initial column, in accordance with the (slightly
more portable) Ghostscript convention.
</pre>
<p>[src/ttinterp.c 1.10, src/ttobjs.h 1.5, src/tttables.h 1.2, src/tttype.h 1.2]</p>
</blockquote>

<p><strong><a name="2003-11-21_1842"></a>
2003-11-21 18:42 Ralph Giles</strong></p>
<blockquote>
<pre>
Add a fallback definition of the common fixed-sized stdint types based on
the type sizes in the generated arch.h header. This should improve the portability
of uses of these types within the Ghostscript source.

DETAILS:

This new code in std.h does not superceed the in stdint.h and similar platform-
dependent includes in stdpre, it merely provides a fallback. stdpre.h now defines
STDINT_TYPES_DEFINED if it has done so; the std.h code is only activated if this
preprocessor symbol is not set.

This change does not help with the portability of compiling jbig2dec directly as
part of the Ghostscript build system since that code as a separate library includes
no headers from the Ghostscript tree.
</pre>
<p>[src/genarch.c 1.6, src/std.h 1.9, src/stdpre.h 1.18]</p>
</blockquote>

<p><strong><a name="2003-11-21_0416"></a>
2003-11-21 04:16 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687020 and 687146.  The pdfwrite device is incorrectly converting
CalRGB color spaces into ICC color spaces.  Fix #1.

Details:

As Raph pointed out in the Wednesday's support call, there are actually
two problems.

1.  We were not correctly recognizing that we can use a CalRGB color space
for the output.  This patch corrects this problem.  One of the tests in
that process was assuming an incorrect ordering to the transforms.  This
fix corrects this problem.

2.  The ICC color space which is being created is not equivalent to the
original CalRGB color space.  This results in differing colors between
the original file and the output PDF file.  This problem is still open.

Note:  I am leaving these bug reports still open since problem 2 is still
open.
</pre>
<p>[src/gdevpdfc.c 1.42]</p>
</blockquote>

<p><strong><a name="2003-11-20_2301"></a>
2003-11-20 23:01 Igor Melichev</strong></p>
<blockquote>
<pre>
Factoring out the iterator for flattened curve segments.

DETAILS :

The new code is marked with FLATTENED_CURVE_ITERATOR defined in gzpath.h.
It defines gx_flattened_curve_iterator for using in the True Type grid fitting.

The old code has bugs in the MERGE_COLLINEAR_SEGMENTS section.
An uneven behavior happened near the 'points' buffer boundary
and with the last but one point : some points were not skipped
when they should. For a while we keep a compatibility of the
new code to the old one.

This patch :

1. Defines of the gx_flattened_curve_iterator.
2. Emulates of the old code with gx_flattened_curve_iterator.
3. Provides a compatibility to the old code bugs with FLATTENED_CURVE_ITERATOR0_COMPATIBLE.
4. Improves a debug printing in the old code, to allow a trace comparizon with the new one.
5. Improves an old comment "Fast check for n == 3" ('n' was not explained).
6. Saves stack space when gx_flatten_sample recurses.
7. Inserts a 'const' into vdtrace.* .

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxpflat.c 1.7, src/gzpath.h 1.9, src/lib.mak 1.150, src/vdtrace.c 1.8, src/vdtrace.h 1.8]</p>
</blockquote>

<p><strong><a name="2003-11-20_2052"></a>
2003-11-20 20:52 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Restore v.1.2 rolled back by mistake.
Partial fix for bug 687029
</pre>
<p>[src/ttfsfnt.h 1.4]</p>
</blockquote>

<p><strong><a name="2003-11-20_1847"></a>
2003-11-20 18:47 Ralph Giles</strong></p>
<blockquote>
<pre>
Add prefix headers for the MacOS build to define DEBUG for the appropriate targets. Bug
686844.
</pre>
<p>[src/macgenmcpxml.sh 1.11, src/macos_carbon_d_pre.h 1.1, src/macos_classic_d_pre.h 1.1]</p>
</blockquote>

<p><strong><a name="2003-11-20_1843"></a>
2003-11-20 18:43 Ralph Giles</strong></p>
<blockquote>
<pre>
Replace non-standard #if DEBUG lines with #ifdef DEBUG. Discovered in fixing bug 686844.
</pre>
<p>[src/igc.h 1.7]</p>
</blockquote>

<p><strong><a name="2003-11-20_1616"></a>
2003-11-20 16:16 Ralph Giles</strong></p>
<blockquote>
<pre>
Replace non-standard #if DEBUG lines with #ifdef DEBUG. Discovered in fixing bug 686844.
</pre>
<p>[src/igc.c 1.12]</p>
</blockquote>

<p><strong><a name="2003-11-20_0753"></a>
2003-11-20 07:53 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a True Type grid fitting, step 3.

DETAILS :

The new code is disabled with TT_GRID_FITTING 0 in gx.h .
This patch improves the stem recognizer and fixes the "#if DEBUG" error.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gzspotan.c 1.3]</p>
</blockquote>

<p><strong><a name="2003-11-19_2233"></a>
2003-11-19 22:33 Ralph Giles</strong></p>
<blockquote>
<pre>
Add some basic instructions for creating an IDE project file for the example API client
code. Bug 669654.
</pre>
<p>[doc/API.htm 1.40]</p>
</blockquote>

<p><strong><a name="2003-11-19_2204"></a>
2003-11-19 22:04 Ralph Giles</strong></p>
<blockquote>
<pre>
Link to the MacOS example client from the API documentation, along with the others.
</pre>
<p>[doc/API.htm 1.39]</p>
</blockquote>

<p><strong><a name="2003-11-19_2059"></a>
2003-11-19 20:59 Ralph Giles</strong></p>
<blockquote>
<pre>
Replace the code that removes the additional CFLAGS added by the AC_PROG_CC autoconf
macro. Closes bug 687150.

DETAILS:

On linux with gcc, AC_PROG_CC adds '-g -O2' to the general CFLAGS. This was overriding
the -O we add in Makefile.in, and the bug complains that this confuses gdb because of
code re-organization.

This change also means we no longer include full debug symbols in the normal build. I
don't consider this an improvement personally, but will bow to the traditionalists. Note
that 'strip' still reduces the size of the executable by 20%, so it's still worth
running if you're concerned about install-size.
</pre>
<p>[src/configure.ac 1.34]</p>
</blockquote>

<p><strong><a name="2003-11-19_1309"></a>
2003-11-19 13:09 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : The last change to ttfsfnt.h doesn't compile on Linux and has been undone.

DETAILS :

The wrong patch is
http://www.ghostscript.com/pipermail/gs-cvs/2003-November/003765.html
</pre>
<p>[src/ttfsfnt.h 1.3]</p>
</blockquote>

<p><strong><a name="2003-11-19_0251"></a>
2003-11-19 02:51 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687131  Incorrect rendering for type 1 images when Interpolate ==
true.

DETAILS:

The user has a custom device which uses more than 32 bits per pixel and
also uses gx_default_copy_colort.  This fix extends that routine to
handle pixels sizes beyond 32 bits.
</pre>
<p>[src/gdevdbit.c 1.10]</p>
</blockquote>

<p><strong><a name="2003-11-19_0146"></a>
2003-11-19 01:46 Dan Coby</strong></p>
<blockquote>
<pre>
Enhancement for bug 687148.  Add 12 and 16 bits to the possible number
of bits per component for the bit devices.
</pre>
<p>[src/gdevbit.c 1.9]</p>
</blockquote>

<p><strong><a name="2003-11-18_1635"></a>
2003-11-18 16:35 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Replace non-portable types with ISO/IEC 988:1999 exact-size types.
Partial fix for bug 687029
</pre>
<p>[src/ttfsfnt.h 1.2]</p>
</blockquote>

<p><strong><a name="2003-11-18_1324"></a>
2003-11-18 13:24 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a True Type grid fitting, step 2.

DETAILS :

The new code is disabled with TT_GRID_FITTING 0 in gx.h .
This patch fixes memory management problems and implements
a trial stem recognizer.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxttfb.c 1.19, src/gzspotan.c 1.2, src/gzspotan.h 1.2, src/lib.mak 1.149]</p>
</blockquote>

<p><strong><a name="2003-11-18_0129"></a>
2003-11-18 01:29 Dan Coby</strong></p>
<blockquote>
<pre>
Correct the documentation for the possible values of color_info.depth to
include values greater than 32 bits.  The documentation problem was found
by the user while investigating 687131.
</pre>
<p>[doc/Drivers.htm 1.42]</p>
</blockquote>

<p><strong><a name="2003-11-17_2017"></a>
2003-11-17 20:17 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix the logic that conditionally disables interpolation. The previous only
worked if the max_gray was set to the same as max_color, but the macro
dci_std_color_max_gray set max_gray to 0 if the number of components was
&gt; 1. Detected with bug #687147 for customer #750.
</pre>
<p>[src/gxiscale.c 1.8]</p>
</blockquote>

<p><strong><a name="2003-11-17_1642"></a>
2003-11-17 16:42 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a True Type grid fitting, step 1.

DETAILS :

It's an initial commitment.
It is not completed, but we need to store changes to lib.mak .
The new code is disabled with TT_GRID_FITTING 0 in gx.h .

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gsfont.c 1.26, src/gx.h 1.15, src/gxfcache.h 1.21, src/gxfdrop.h 1.2, src/gxfill.c 1.50, src/gxttfb.c 1.18, src/gzspotan.c 1.1, src/gzspotan.h 1.1, src/lib.mak 1.148]</p>
</blockquote>

<p><strong><a name="2003-11-17_1546"></a>
2003-11-17 15:46 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Numeric errors appeared writing an UCR.

DETAILS :

The old code wrote UCR (undercolor removal) functions with mapping 0 to 0.00392,
causing a solid black to convert to a non-solid color with pkmraw device.
The fix reduces the sample range to [0:254] and generates an appropriate Decode array.

Bug 687109 "PDF--&gt;pkmraw: 0 0 0 RG isn't solid:.
Bug 687138 "pdfwrite is adding poor UCR functions to output files".

EXPECTED DIFFERENCES :

This patch causes multiple differences with pdfwrite-&gt;pkmraw.
The change to pdfwrite definitely is a progression,
but it discovers a new bug 687146 "(pdfwrite) CalRGB wrongly converts to ICCBased".

We did not check which differences are coused by the new bug.
Will see after the bug is fixed.
Updating the baseline should be fine for entire list.

0.pdf
01_001.pdf
033-52-5873.pdf
159.pdf
246-01.ps
477-03.ps
477-04.ps
477-05.ps
86554321.pdf
a.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso5.pdf
adesso6.pdf
adesso7.pdf
ADOBE1-4.pdf
ai2.pdf
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
bc_02a01_cal.pdf
brochurep1.pdf
bulletin.pdf
CAT_LOGO.ps
ccc.pdf
chstudy.pdf
dave.pdf
Dave_Barry.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
Es001-01.pdf
Faktura.pdf
file.pdf
Fixed_Original.pdf
foo.pdf
frosch.pdf
gs.anotherfailure.pdf
gs5.98-dragon.pdf
gs6.0-dragon.pdf
gslandscape.pdf
H00216q.pdf
ICPconcept.pdf
InstandardBuildChar.ps
Jahr2000.pdf
japan-.ps
japan.ps
js.pdf
kazmir.pdf
korea.ps
LD.pdf
little.guy.pdf
loremIpsum.pdf
MagicEye.pdf
map.pdf
messenger.pdf
messenger16.pdf
motor.pdf
mspro.pdf
NECPNTD.pdf
new_rect.pdf
new_rect_nr.pdf
ngnews.pdf
ngnews1.pdf
non-sepqxd2distiller.pdf
Page01.pdf
pdftops.pdf
PixelisAd.pdf
prob.pdf
QA_Inv.pdf
rf1025.pdf
rotate0.pdf
rotate180.pdf
rotate270.pdf
rotate90.pdf
S2_Digitalproof-Forum_x3k.pdf
si_tg_brochure.pdf
smdf.90441.102.pdf
sports.pdf
Svd.pdf
test.pdf
test3.pdf
Testform.v1.0.2.pdf
TextRize.pdf
Type11CDevProc.ps
type42_glyph_index.ps
unihaken-color.pdf
vsem0093.pdf
Vu989qfj.pdf
xgfddg.pdf
xngnews.pdf

pdfwrite-&gt;pkmraw 300dpi :

0.pdf
01_001.pdf
033-52-5873.pdf
159.pdf
1_pct_50_bang.pdf
246-01.ps
477-03.ps
477-04.ps
477-05.ps
86554321.pdf
a.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso5.pdf
adesso6.pdf
adesso7.pdf
ADOBE1-4.pdf
ai2.pdf
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
bc_02a01_cal.pdf
brochurep1.pdf
bulletin.pdf
CAT_LOGO.ps
ccc.pdf
chstudy.pdf
dave.pdf
Dave_Barry.pdf
dina3_watermark.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
Es001-01.pdf
Faktura.pdf
file.pdf
Fixed_Original.pdf
foo.pdf
frosch.pdf
gs.anotherfailure.pdf
gs5.98-dragon.pdf
gs6.0-dragon.pdf
H00216q.pdf
ICPconcept.pdf
InstandardBuildChar.ps
Jahr2000.pdf
japan-.ps
japan.ps
js.pdf
kazmir.pdf
korea.ps
LD.pdf
little.guy.pdf
loremIpsum.pdf
MagicEye.pdf
map.pdf
messenger.pdf
messenger16.pdf
motor.pdf
mspro.pdf
NECPNTD.pdf
new_rect.pdf
new_rect_nr.pdf
ngnews.pdf
ngnews1.pdf
non-sepqxd2distiller.pdf
Page01.pdf
pdftops.pdf
PixelisAd.pdf
prob.pdf
QA_Inv.pdf
rf1025.pdf
S2_Digitalproof-Forum_x3k.pdf
si_tg_brochure.pdf
smdf.90441.102.pdf
sports.pdf
Svd.pdf
test.pdf
test3.pdf
Testform.v1.0.2.pdf
TextRize.pdf
tpc2.ps
type1-ce1_setcurrentpoint.ps
Type11CDevProc.ps
type42_glyph_index.ps
unihaken-color.pdf
vsem0093.pdf
Vu989qfj.pdf
xgfddg.pdf
xngnews.pdf
</pre>
<p>[src/gdevpdfg.c 1.44]</p>
</blockquote>

<p><strong><a name="2003-11-14_1859"></a>
2003-11-14 18:59 Alex Cherepanov</strong></p>
<blockquote>
<pre>
JAWS PDF generator encodes empty stream as jaws_empty[]. The stream declares
that the data block length is zero but zlib routines regard a zero length data
block to be an error. Check for this case and return EOF without calling zlib.
Fix bug 686779 from the customer 131
</pre>
<p>[src/lib.mak 1.147, src/szlibd.c 1.6]</p>
</blockquote>

<p><strong><a name="2003-11-14_1821"></a>
2003-11-14 18:21 Ray Johnston</strong></p>
<blockquote>
<pre>
First attempt to add information requested by Igor to identify when the
basline was set for a particular 'DIFFER' case. Bug #687142.
</pre>
<p>[toolbin/tests/gscheck_pdfwrite.py 1.15, toolbin/tests/gscheck_raster.py 1.6]</p>
</blockquote>

<p><strong><a name="2003-11-13_2241"></a>
2003-11-13 22:41 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Add double inclusion protection to the True Type interpreter bridge modules.

DETAILS :

They follow FreeType's C-style as other modules branched from FreeType.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/ttconf.h 1.2, src/ttmisc.h 1.2]</p>
</blockquote>

<p><strong><a name="2003-11-13_2227"></a>
2003-11-13 22:27 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : The first clip path list element sometimes got an empty path.

DETAILS :

This continues fixing the bug 686885 "bad paths in pdf".

If !pcpath-&gt;path_valid, we convert the pcpath-&gt;rect_list to a path,
storing it into the clip path list element.

EXPECTED DIFFERENCES :

pdfwrite progressions :

1_2001.pdf
Altona-Testsuite_p2_S_x3.pdf

(I'm sorry, in
http://www.ghostscript.com/pipermail/gs-cvs/2003-November/003751.html
a difference with Altona-Testsuite_p2_S_x3.pdf was misidentified as a progression.
Rather that raster looks better, it differs more from Adobe.
With this patch the raster is closer to Adobe)
</pre>
<p>[src/gxcpath.c 1.10]</p>
</blockquote>

<p><strong><a name="2003-11-13_1920"></a>
2003-11-13 19:20 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix: Adobe Acrobat Reader ignores an empty path when setting the clip
path. Bug #687136.

DETAILS:

We never encountered this problem in a 'real' file, but one of Raph's
test files showed the difference in the way our PDF interpreter handled
an zero area path to setting clipping versus the way Adobe does.

Igor tested CPSI and determined that PostScript results in a zero area
clipping box, but Acrobat Reader works differently, so the patch detects
a zero area path and does not change the clipping path in that case.

The details of the determination of 0 area is commented here:

pathbbox	% get the path bounding box
3 -1 roll	% roll to get upper and lower Y coordinates together
sub abs		% form absolute delta Y of path bbox
3 1 roll	% roll upper and lower X coordinates to TOS
sub abs		% form absolute delta X of path bbox
add		% sum abs delta X and abs delta Y
0 ne		% if it is non-zero, then perform the clip/eoclip
</pre>
<p>[lib/pdf_ops.ps 1.33]</p>
</blockquote>

<p><strong><a name="2003-11-13_1519"></a>
2003-11-13 15:19 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Transfer function was not checked for identity.

DETAILS :

Bug 687124 "Large PDF file created from Quark with EPS's within",
A document defines a transfer function { {} exec {} exec },
which was not recognized as identity, causing an image downsampling to be rejected.
Improved pdf_update_transfer with checking for identity transfer.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfg.c 1.43]</p>
</blockquote>

<p><strong><a name="2003-11-12_1958"></a>
2003-11-12 19:58 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Default to empty string when there's no /ID in the trailer and issue
a warning because the key is required for encrypted files.
Fix bug 687135
</pre>
<p>[lib/pdf_sec.ps 1.12]</p>
</blockquote>

<p><strong><a name="2003-11-12_1429"></a>
2003-11-12 14:29 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Write high level clipping paths.

DETAILS :

This includes the "Preliminary patch for preserving clip path lists-bug686885" by Raph
(gxcpath.c, gzcpath.h), and a simple algorithm for writing it to PDF (gdevpdfd.c).

Now it writes entire list whenever clipping path is changed.
A diserable optimization is to avoid writing redundant elements.
For doing that we would like to have an id and a 'changed' flag in gx_path_s.

Bug 686885 "bad paths in pdf".

EXPECTED DIFFERENCES :

This patch discovers a problem in PDF interpreter with re-distilled 1_2001.pdf .
The problem is tracked as a new bug 687136 .

Other expected differences are pdfwrite progressions :

pdfwrite 72 dpi :

027-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
083-01.ps
102-01.ps
109-01.ps
169-01.ps
1_2001.pdf
205-01.ps
222-01.ps
298-01.ps
321-01.ps
Altona-Testsuite_p2_S_x3.pdf
BEST8-99-Path.fh7.pdf
H00216q.pdf
Openhuis_pdf_zw.pdf
PixelisAd.pdf
test.pdf

pdfwrite 300 dpi :

027-01.ps
027-09.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
083-01.ps
102-01.ps
109-01.ps
169-01.ps
169-09.ps
1_2001.pdf
205-01.ps
222-01.ps
222-09.ps
298-01.ps
298-09.ps
307-07.ps
316-07.ps
321-01.ps
321-09.ps
Altona-Testsuite_p2_S_x3.pdf
BEST8-99-Path.fh7.pdf
H00216q.pdf
Openhuis_pdf_zw.pdf
PixelisAd.pdf
shading_prob_800.ps
test.pdf
</pre>
<p>[src/gdevpdfd.c 1.35, src/gxcpath.c 1.9, src/gzcpath.h 1.5]</p>
</blockquote>

<p><strong><a name="2003-11-11_1216"></a>
2003-11-11 12:16 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Use [/XYZ null null null] as a default destination following the Distiller
example. The old destination was clearly wrong because it positioned the
bottom of the page on the top of the screen, effectively displaying the
next page.
Fix bug 687129
</pre>
<p>[src/gdevpdfm.c 1.33]</p>
</blockquote>

<p><strong><a name="2003-11-11_1123"></a>
2003-11-11 11:23 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : ..includecolorspace caused an abnormal recursion.

DETAILS :

1. With -dNOSUBSTDEVICECOLORS the procedure ..includecolorspace called
setcolorspace, which recursively called ..includecolorspace .
This recursion would be infinit unless an ocasional error
in a stopped context terminates it. We replace setcolorspace
with _setcolorspace_nosub to avoid the recursion.
This fixes the bug 687134 "-dNOSUBSTDEVICECOLORS causes text to disappear".

2. An optimization done with a new dictionary ..page_default_spaces,
which now keeps up to 3 global flags for Default* color spaces,
to reflect whether they were included into a current page.
It prevents redundant calls to _setcolorspace_nosub, .includecolorspace
from ..includecolorspace .

3. Moved .PurgeDict to gs_init.ps because now it is called from showpage, copypage .

4. Added a name argument to .includecolorspace and passed it through
a set of functions in the graphics library and pdfwrite.
Before that Default* color spaces were included into the PDF output
with wrong resource names.

5. Minor change : fixed a procedure header comment in gs_devcs.ps .

EXPECTED DIFFERENCES :

None, because the nightly regression doesn't test -dNOSUBSTDEVICECOLORS .
</pre>
<p>[src/gdevdflt.c 1.15, src/gdevnfwd.c 1.14, src/gdevpdfc.c 1.41, src/gdevpdfg.h 1.27, src/gdevpdfv.c 1.32, src/gscolor2.c 1.17, src/gscolor2.h 1.9, src/gxdevcli.h 1.20, src/zcolor.c 1.17, lib/gs_ciddc.ps 1.13, lib/gs_devcs.ps 1.6, lib/gs_init.ps 1.101]</p>
</blockquote>

<p><strong><a name="2003-11-10_1947"></a>
2003-11-10 19:47 Dan Coby</strong></p>
<blockquote>
<pre>
Continuation on the fix for 687101, Crash in GC on some PDF files.
This change adds comments to GS procedures for the imager state
structure.  These comments Were added to prevent confusion about the
handling of the effective transfer pointers.
</pre>
<p>[src/gsistate.c 1.8]</p>
</blockquote>

<p><strong><a name="2003-11-10_1655"></a>
2003-11-10 16:55 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (type 1 hinter) : Hints were not applied to the last segment of a Type 2 glyph.

DETAILS :

Due to Type 2 glyphs have no explicit closepath,
the last contour was not added to the contours list.
It caused its last segment got type=closepath instead type=oncurve,
and was skipped from grid fitting.

Bug 687119  "(pdfwrite) different raster if Helvetica is embedded".

EXPECTED DIFFERENCES :

Normal, 72dpi :

455690.pdf
acrobat.pdf
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
besttest.pdf
bugsample.pdf
bulletin.pdf
ca.pdf
CIDembedded.pdf
dave.pdf
Fixed_Original.pdf
font_issue.pdf
HeiseiMinStd.pdf
KozukaB-ILEmbed.pdf
Openhuis_pdf_zw.pdf
Original.pdf
PixelisAd.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
Svd.pdf
test.pdf
time1.pdf
vsem0093.pdf

pdfwrite, 72dpi :

033-52-5873.pdf
093-01.ps
455690.pdf
86554321.pdf
aaon97_p7.pdf
acrobat.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
besttest.pdf
Bug687044.ps
bugsample.pdf
bulletin.pdf
ca.pdf
chess.ps
chstudy.pdf
CIDembedded.pdf
dave.pdf
Fixed_Original.pdf
font_issue.pdf
gslandscape.pdf
H00216q.pdf
HeiseiMinStd.pdf
kazmir.pdf
knight.pdf
KozukaB-ILEmbed.pdf
laballade.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
Original.pdf
PixelisAd.pdf
prob.pdf
RealCities.pdf
rf1025.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
Svd.pdf
test-setweightvector.ps
test.pdf
test2.pdf
test2a.pdf
time1.pdf
tpc2.ps
vsem0093.pdf

Normal, 300dpi :

455690.pdf
86554321.pdf
ai2.pdf
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
besttest.pdf
bugsample.pdf
bulletin.pdf
ca.pdf
CIDembedded.pdf
dave.pdf
Fixed_Original.pdf
font_issue.pdf
HeiseiMinStd.pdf
KozukaB-ILEmbed.pdf
non-sepqxd2distiller.pdf
Openhuis_pdf_zw.pdf
Original.pdf
PixelisAd.pdf
QuickNews_Nov22.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
Svd.pdf
test.pdf
time1.pdf
type2accent.pdf
vsem0093.pdf

pdfwrite, 300dpi :

033-52-5873.pdf
093-01.ps
455690.pdf
86554321.pdf
aaon97_p7.pdf
acrobat.pdf
ai2.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
besttest.pdf
bla.ps
Bug687044.ps
bugsample.pdf
bulletin.pdf
ca.pdf
chess.ps
chstudy.pdf
CIDembedded.pdf
dave.pdf
Fixed_Original.pdf
fonttest.pdf
font_issue.pdf
gslandscape.pdf
H00216q.pdf
HeiseiMinStd.pdf
kazmir.pdf
knight.pdf
KozukaB-ILEmbed.pdf
laballade.pdf
NIL_0003.pdf
non-sepqxd2distiller.pdf
Openhuis_pdf_zw.pdf
Original.pdf
pdfopt_bug.pdf
PixelisAd.pdf
prob.pdf
QuickNews_Nov22.pdf
RealCities.pdf
rf1025.pdf
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
Svd.pdf
test-setweightvector.ps
test.pdf
test2.pdf
test2a.pdf
time1.pdf
tpc2.ps
type2accent.pdf
vsem0093.pdf
</pre>
<p>[src/gxhintn.c 1.35]</p>
</blockquote>

<p><strong><a name="2003-11-10_1334"></a>
2003-11-10 13:34 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Refer new source modules from Develop.htm .
</pre>
<p>[doc/Develop.htm 1.124]</p>
</blockquote>

<p><strong><a name="2003-11-08_0744"></a>
2003-11-08 07:44 Dan Coby</strong></p>
<blockquote>
<pre>
Add and option for specifying banded/noband.  The current version actually
uses 1 to specify banding and 0 to specify no banding. This is the optional
fourth parameter.
</pre>
<p>[toolbin/tests/make_two_versions 1.12]</p>
</blockquote>

<p><strong><a name="2003-11-07_0440"></a>
2003-11-07 04:40 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Restore the invariant: effective_transfer always points to the transfer
functions in the graphic state or halftone. Old code briefly left
effective_transfer pointing to garbage, which caused relocation of garbage
pointers and crash if GC happened at the right time.
Fix bug 687101
</pre>
<p>[src/gscolor.c 1.12, src/gscolor1.c 1.9]</p>
</blockquote>

<p><strong><a name="2003-11-04_0125"></a>
2003-11-04 01:25 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 686796 tiffg4 device and incorrect halftone frequency.
This eliminates a problem with not choosing the best halftone cell size
when more than one possible cell size has the exact angle requested.

DETAILS:

Previously the logic for determing the size of the halftone cells used
the product of the error in frequency times the error in the angle as
the metric for determing the best cell size.  For many common angles,
0, 45, 90, etc., this results in an angle error of zero.  This then
gave a value of zero for the metric no matter what the frequency error.
The result was that in many cases we ignored cell sizes that gave a
better frequency match.  The fix revies the metric to choose a cell
size which is closest (geometrically) to the ideal cell size.
</pre>
<p>[src/gshtscr.c 1.14]</p>
</blockquote>

<p><strong><a name="2003-11-03_1036"></a>
2003-11-03 10:36 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct spelling and wording.
</pre>
<p>[doc/Use.htm 1.94]</p>
</blockquote>

<p><strong><a name="2003-11-03_0239"></a>
2003-11-03 02:39 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Initialize cc-&gt;pair field for the external fonts, forgotten
during the switch to new TrueType interpreter (NEW_TT_INTERPRETER).
Fix bug 687116
</pre>
<p>[src/gxccache.c 1.28]</p>
</blockquote>

<p><strong><a name="2003-11-01_1318"></a>
2003-11-01 13:18 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (font resource machinery) : Dont try reloading fonts if the platform has no native fonts.

DETAILS :

This change suppresses redundant messages
"Cant find (or cant open) font file xxx.".

EXPECTED DIFFERENCES :

None.
</pre>
<p>[lib/gs_fonts.ps 1.44]</p>
</blockquote>

<p><strong><a name="2003-11-01_0443"></a>
2003-11-01 04:43 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Following the PDF spec ignore "/Encrypt null" entry in the trailer.
Fix bug 687117

DETAILS:
This patch is not an equivalent transformation because knownoget returns
false when the key value is null.
</pre>
<p>[lib/pdf_main.ps 1.81]</p>
</blockquote>

<p><strong><a name="2003-10-31_2212"></a>
2003-10-31 22:12 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (font resource machinery) : Provide correct font names for graphics library.

DETAILS :

The old code passed names of substitutes rather than font names referred by a document.
This patch fixes that with adding a special ney entry /.Alias to the font dictionary.

Besides that, multiple problems are fixed in gs_fonts.ps,
some of them appeared before the repository was created.
Lising them here :

1. Several comments about stack layout in procedure headers were wrong
   since the repository was created.
   We repaired some of them, but possibly not all.

2. The old code assumed that SubstituteFont adds
   a name to the stack rather than replaces it.
   See comment inserted into .dofindfont .
   The patch for the bug 637424 (Revision 1.24, Nov 21, 2002) broken the
   old behavior and left multiple rudiments in code.
   Now we restore the old functionality, and make SubstututeFont
   to be compartible with CPSI, which replaces a name.

3. Now we define fonts for all aliases in the aliasing/substituting chain.
   Not sure it is better than defining only the final one,
   but the pre-repository code did so, and was
   unintentionaly broken by multiple patches.

4. .stdsubstfont dropped some aliases with no strong reason.
   Restoring the old behavior.

5. .tryloadfont damaged the stack balance. It was not visible due to (4).

6. We use a hack to provide the main functionality.
   See comment in .aliasfont . A complete solution is too hard.

7. Inserted auxiliary comments about the stack layout.

This change fixes the bugs
687047 "fonts renamed in resulting pdf file"
687111 "Quality of output wth gs8.11 for pdfwrite device is faded as compared to gs6.12"

EXPECTED DIFFERENCES :

MANY OF pdfwrite TESTS RENDER DIFFERENTLY due to the font substitution had changed.
Now pdfwrite does not embed /NimbusMonL-Regu, but recognize its alias Courier
as a standard font name.

0.pdf
000040cf.000_60.pdf
001-01.ps
001-13.ps
001-25.ps
002-09.ps
002-21.ps
002-33.ps
003-01.ps
012-01.ps
012-05.ps
012-09.ps
012-13.ps
013-01.ps
013-05.ps
013-09.ps
013-13.ps
014-01.ps
014-05.ps
014-09.ps
014-13.ps
015-01.ps
015-05.ps
015-09.ps
016-01.ps
017-01.ps
018-01.ps
020-01.ps
021-01.ps
023-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
028-01.ps
031-01.ps
031-05.ps
032-01.ps
032-07.ps
033-01.ps
034-01.ps
034-10.ps
035-01.ps
035-07.ps
036-01.ps
038-01.ps
039-01.ps
040-01.ps
045-01.ps
046-01.ps
050-01.ps
055-01.ps
061-01.ps
070-01.ps
076-01.ps
083-01.ps
083-05.ps
083-09.ps
083-13.ps
084-01.ps
091-01.ps
093-01.ps
094-01.ps
096-01.ps
102-01.ps
103-01.ps
104-01.ps
109-01.ps
110-01.ps
113-01.ps
118-01.ps
119-01.ps
119-10.ps
119-16.ps
119-23.ps
119-35.ps
119-41.ps
119-47.ps
120-01.ps
123-01.ps
123-05.ps
123-09.ps
124-01.ps
129-01.ps
136-01.ps
141-01.ps
148-01.ps
148-05.ps
148-11.ps
148-16.ps
149-01.ps
149-05.ps
150-01.ps
154-01.ps
158-01.ps
159.pdf
162-01.ps
165-01.ps
166-01.ps
169-01.ps
169-05.ps
169-09.ps
169-13.ps
170-01.ps
175-01.ps
176-01.ps
177-01.ps
181-01.ps
184-01.ps
192-01.ps
194-01.ps
1_pct_50_bang.pdf
200-01.ps
205-01.ps
205-05.ps
205-09.ps
205-13.ps
206-01.ps
212-01.ps
213-01.ps
214-01.ps
215-01.ps
219-01.ps
220-01.ps
220-07.ps
222-01.ps
222-05.ps
222-09.ps
222-13.ps
223-01.ps
226-01.ps
227-01.ps
231-01.ps
233-01.ps
237-01.ps
238-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
246-01.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
265-01.ps
268-02.ps
268-03.ps
268-04.ps
268-05.ps
268-06.ps
268-10.ps
269-01.ps
270-01.ps
272-01.ps
276-01.ps
281-01.ps
282-01.ps
289-01.ps
296-01.ps
297-01.ps
298-01.ps
298-05.ps
298-09.ps
299-01.ps
303-01.ps
304-01.ps
307-01.ps
307-07.ps
307-13.ps
308-04.ps
310-04.ps
311-03.ps
313-01.ps
316-07.ps
320-01.ps
321-01.ps
321-05.ps
321-09.ps
321-13.ps
322-01.ps
325-01.ps
327-01.ps
328-01.ps
330-01.ps
334-01.ps
335-01.ps
336-01.ps
401-01.ps
405-01.ps
409-01.ps
415-01.ps
421-01.ps
430-01.ps
438-01.ps
442-01.ps
446-01.ps
450-01.ps
460-01.ps
463-01.ps
464-01.ps
468-01.ps
473-01.ps
476-01.ps
477-01.ps
477-03.ps
477-04.ps
477-05.ps
477-06.ps
478-01.ps
483-01.ps
483-05.ps
541.pdf
541_623.pdf
86554321.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso2.pdf
adesso3.pdf
adesso5.pdf
adesso6.pdf
adesso7.pdf
adesso8.pdf
ADOBE1-4.pdf
AdobeLic.pdf
ats-3-5-99.pdf
bc_02a01_cal.pdf
brochurep1.pdf
bug-gstest.pdf
ca.pdf
ccc.pdf
chess.ps
colorcir.ps
Dave_Barry.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
Encoding.ps
foo.pdf
frosch.pdf
GS_Stroke_error.pdf
H00216q.pdf
Jahr2000.pdf
js.pdf
kazmir.pdf
LD.pdf
messenger.pdf
messenger16.pdf
mspro.pdf
NECPNTD.pdf
new_rect.pdf
new_rect_nr.pdf
ngnews.pdf
ngnews1.pdf
p2b-100.pdf
pdftops.pdf
prfmm.pdf
pstopdf.pdf
pstopdfO3.pdf
QA_Inv.pdf
RealCities.pdf
rf1025.pdf
smdf.90441.102.pdf
Svd.pdf
test3.pdf
TextRize.pdf
textsavematrix.pdf
two_encodings.ps
Vu989qfj.pdf
waterfal.ps
xgfddg.pdf
xngnews.pdf
</pre>
<p>[src/zbfont.c 1.25, lib/gs_fonts.ps 1.43, doc/Use.htm 1.93]</p>
</blockquote>

<p><strong><a name="2003-10-30_1456"></a>
2003-10-30 14:56 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (dropout prevention) : The expression for choosing a pixel to paint with narrow trapesoids
was wrong (An improved revision).

DETAILS :

The patch
http://www.ghostscript.com/pipermail/gs-cvs/2003-October/003721.html
appears wrong. Now fixing it.

EXPECTED DIFFERENCES :

The massive difference in text rendering, which appeared after the patch
http://www.ghostscript.com/pipermail/gs-cvs/2003-October/003721.html
now should disappear. Only expected difference from the patch
http://www.ghostscript.com/pipermail/gs-cvs/2003-October/003719.html
(see its log message) should persist.
</pre>
<p>[src/gxdtfill.h 1.6]</p>
</blockquote>

<p><strong><a name="2003-10-30_1256"></a>
2003-10-30 12:56 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Simplify the filling algorithm (step 10).

DETAILS :

Factored out fill_trap_or_rect.
This change should be algorithmically equivalent.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfill.c 1.49]</p>
</blockquote>

<p><strong><a name="2003-10-30_1139"></a>
2003-10-30 11:39 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Simplify the filling algorithm (step 8).

DETAILS :

Don't create active line copies, because now the X list doesn't change.
This change should be algorithmically equivalent.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfill.c 1.48]</p>
</blockquote>

<p><strong><a name="2003-10-30_1102"></a>
2003-10-30 11:02 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Simplify the filling algorithm (step 7).

DETAILS :

Removed some unused functions.
This change should be algorithmically equivalent.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfill.c 1.47]</p>
</blockquote>

<p><strong><a name="2003-10-30_1045"></a>
2003-10-30 10:45 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Simplify the filling algorithm (step 6).

DETAILS :

This patch includes 2 changes :

1. Removed the "out of order lines patch".
We believe that now it never happens.

2. A code restructurization.
Moved the line intersection routine outside the main loop.

This change should be algorithmically equivalent.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfill.c 1.46]</p>
</blockquote>

<p><strong><a name="2003-10-30_0933"></a>
2003-10-30 09:33 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Simplify the filling algorithm (step 5).

DETAILS :

Divided gxfill.c into 2 modules.
Moved the dropout prevention code to the new module gxfdrop.c .
This change should be algorithmically equivalent.

Minor change :

1. Removed the ll_ptr type definition. IMO it is not fully conforming to C-style.htm .
2. Removed free variables from INSIDE_PATH_P and made it be of the module scope.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfdrop.c 1.1, src/gxfdrop.h 1.1, src/gxfill.c 1.45, src/gxfill.h 1.1, src/lib.mak 1.146]</p>
</blockquote>

<p><strong><a name="2003-10-30_0755"></a>
2003-10-30 07:55 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Simplify the filling algorithm (step 4).

DETAILS :

1. Restructirases some if statements to remove redundant code fragments.
2. Eliminated a low useful macros AL_DX, AL_DY.
This change should be algorithmically equivalent.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfill.c 1.44]</p>
</blockquote>

<p><strong><a name="2003-10-30_0634"></a>
2003-10-30 06:34 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Correct a typo in source leading to failure of form selection for PCL
printers. (contributed by Jim Bandy)
Fix bug 686815
</pre>
<p>[src/gdevdljm.c 1.9]</p>
</blockquote>

<p><strong><a name="2003-10-29_1743"></a>
2003-10-29 17:43 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Simplify the filling algorithm (step 2).

DETAILS :

1. The new function fill_trap_slanted fgactored out from the trapezoid algorithm
   to simplify the code of the latter.
2. Simplified argument lists of dropout prevention functions.
3. Moved helper function definitions before calls to allow
   inline optimizations.
This change should be algorithmically equivalent.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfill.c 1.43]</p>
</blockquote>

<p><strong><a name="2003-10-29_1558"></a>
2003-10-29 15:58 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Simplify the filling algorithm (step 2).

DETAILS :

This change removes the obsolete code PSEUDO_RASTERIZATION 0.
It should be algorithmically equivalent.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfill.c 1.42]</p>
</blockquote>

<p><strong><a name="2003-10-29_1457"></a>
2003-10-29 14:57 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Simplify the filling algorithm (step 1).

DETAILS :

This change divides the X-cycle of the trapezoid algorithm into 2 passes.
The new function move_al_by_y is the second pass.
It should be algorithmically equivalent.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfill.c 1.41]</p>
</blockquote>

<p><strong><a name="2003-10-28_1444"></a>
2003-10-28 14:44 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (dropout prevention) : The expression for choosing a pixel to paint with narrow trapesoids
was wrong. The old code sometimes unreasonably shifted stems in 1 pixel.

EXPECTED DIFFERENCES :

A massive difference in text rendering.
ALMOST ALL comparefiles RENDER DIFFERENTLY.
</pre>
<p>[src/gxdtfill.h 1.5, src/gxfill.c 1.40]</p>
</blockquote>

<p><strong><a name="2003-10-28_1442"></a>
2003-10-28 14:42 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a bridge to the True Type bytecode interpreter (step 21, final).

DETAILS :

This patch switches on the new TT interpreter
and updates the documentation.

EXPECTED DIFFERENCES :

Massive difference in rendering TT fonts :

01_001.pdf
159.pdf
adesso2.pdf
adesso7.pdf
adesso8.pdf
Altona.Page_3.2002-09-27.pdf
annots.pdf
budget2.pdf
budget2_ai87.pdf
bugsample.pdf
Faktura.pdf
fonts.pdf
ICPconcept.pdf
japan-.ps
japan.ps
keyboard.pdf
korea.ps
MagicEye.pdf
MyTest5.ps
MyTest6.ps
S2_Digitalproof-Forum_x3k.pdf
Testform.v1.0.2.pdf
test_multipage_prob.pdf
Type11CDevProc.ps
type42_glyph_index.ps
</pre>
<p>[src/gx.h 1.14, doc/Develop.htm 1.123, doc/Language.htm 1.77, doc/Projects.htm 1.55, doc/Use.htm 1.92]</p>
</blockquote>

<p><strong><a name="2003-10-27_1045"></a>
2003-10-27 10:45 Igor Melichev</strong></p>
<blockquote>
<pre>
Reclaim global memory in the beginning of the interpreter finalization (continued).

DETAILS :

Fixes the bug 687100 gswin32 -h crashes.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/imain.c 1.37]</p>
</blockquote>

<p><strong><a name="2003-10-27_0904"></a>
2003-10-27 09:04 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Removing the PDF Widths project from Project.htm .

DETAILS :

The issue was closed with pdf_font.ps Revision 1.57.
Thanks to Alex Cherepanov.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[doc/Projects.htm 1.54]</p>
</blockquote>

<p><strong><a name="2003-10-27_0802"></a>
2003-10-27 08:02 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (garbager) : The back pointer validity constraint was wrong.

DETAILS :

Bug 687021 "A crash in memory manager"

Here is what happens :

A big chunk is allocated by i_alloc_struct_array.
Later a part of the array is released.
Then another object is allocated in the released area.
Then the object is being relocated.
The old validity constraint in igc_reloc_struct_ptr assumed that the object
is in a chunk of the standard size.
However it is not.
The check fails, and gs_exit() is called.
The latter calls vm_reclaim and falls into an infinite recursion and crashes.

This patch enhances the constraint for instandard (big) chunks.
Unfortunately their sizes can't easy obtain from igc_reloc_struct_ptr,
therefore the new check only works for pointers to same chunk.
A new field (DEBUG=1 only) is inserted into gc_state_s to access the chunk from
igc_reloc_struct_ptr. We're not happy of this solution,
but there is no idea how to improve it.

EXPECTED DIFFERENCES :

With -Z? the old code failed with pdfwrite-&gt;ppmraw with the following tests :

040-01.ps
091-01.ps
110-01.ps
282-01.ps
Altona.Page_3.2002-09-27.pdf    (crash)

The new code doesn't fail with -Z? .

Nightly regression doesn't test -Z? .
</pre>
<p>[src/igc.c 1.11, src/igc.h 1.6]</p>
</blockquote>

<p><strong><a name="2003-10-26_0052"></a>
2003-10-26 00:52 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Apply oforce to every element of MediaBox and CropBox arrays.
Fix bug 687035 from customer 831
</pre>
<p>[lib/pdf_base.ps 1.39, lib/pdf_main.ps 1.80]</p>
</blockquote>

<p><strong><a name="2003-10-24_0614"></a>
2003-10-24 06:14 Dan Coby</strong></p>
<blockquote>
<pre>
Some minor clean up for the makefiles:
1.  Correct lines that should start with tabs.
2.  Clear some lines which only contain spaces.
</pre>
<p>[src/bcwin32.mak 1.30, src/dvx-gcc.mak 1.24, src/macos-mcp.mak 1.23, src/macosx.mak 1.21, src/msvc32.mak 1.50, src/msvclib.mak 1.25, src/msvctail.mak 1.10, src/openvms.mak 1.33, src/os2.mak 1.35, src/ugcclib.mak 1.26, src/unixansi.mak 1.33]</p>
</blockquote>

<p><strong><a name="2003-10-23_1745"></a>
2003-10-23 17:45 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : Shared CID font descriptors did not work properly.

DETAILS :

When a CID font descriptor is shared with several CID font resources,
must create several font objects with different CIDToGIDMap, DW, DW2
taken from CID font resource dictionaries.
The old code created a single font object with one randomly chosen CIDToGIDMap,
making some glyphs inaccessible, and glyphs could misplace.

New procedures adjustCIDType0, adjustCIDType2 are added into the adjustfont
dictionary, so that now CID fonts are processed in same way as fonts.
Bug 687048 "fonts not rendered correctly".

Besides that, the old code on pdf_font.ps created a CDevProc
for processing DW[2], but it was not properly added to the font dictionary and
was not executed. The new code fixes that.
This issue causes rendering differences.

[end quote]

EXPECTED DIFFERENCES :

This patch causes progressions in PDF interpreter :

raster, 72dpi :
ICPconcept.pdf
Testform.v1.0.2.pdf

raster, 300dpi :
Altona.Page_3.2002-09-27.pdf
ICPconcept.pdf
Testform.v1.0.2.pdf

pdfwrite-&gt;raster, 72dpi :
Altona.Page_3.2002-09-27.pdf
ICPconcept.pdf
japan-.ps
japan.ps
Testform.v1.0.2.pdf
Type11CDevProc.ps

pdfwrite-&gt;raster, 300dpi :
Altona.Page_3.2002-09-27.pdf
ICPconcept.pdf
japan-.ps
japan.ps
korea.ps
shading_prob_800.ps
Testform.v1.0.2.pdf
Type11CDevProc.ps
</pre>
<p>[lib/pdf_font.ps 1.59]</p>
</blockquote>

<p><strong><a name="2003-10-23_1046"></a>
2003-10-23 10:46 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Restrict Tj offsets.

DETAILS :

Acrobat reader 4.0c, 5.0 can't handle big offsets.
Bug 687089 "Displaced characters in PDF".

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdts.c 1.27]</p>
</blockquote>

<p><strong><a name="2003-10-23_0956"></a>
2003-10-23 09:56 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : MSVC compiler warning.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdte.c 1.49]</p>
</blockquote>

<p><strong><a name="2003-10-23_0949"></a>
2003-10-23 09:49 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Optimize pdf_make_text_glyphs_table_unencoded.

DETAILS :

This change is algorithmically equivalent.
The new code isn't faster, because the new function gs_c_decode
still needs an optimization, but the latter is simple.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdtt.c 1.67, src/gdevpdtt.h 1.20, src/gscencs.c 1.7, src/gscencs.h 1.5]</p>
</blockquote>

<p><strong><a name="2003-10-23_0904"></a>
2003-10-23 09:04 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : ColorSpace resource files define global resources.

DETAILS :

This is an optimisation issue.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[Resource/ColorSpace/DefaultCMYK 1.2, Resource/ColorSpace/DefaultGray 1.2, Resource/ColorSpace/DefaultRGB 1.2]</p>
</blockquote>

<p><strong><a name="2003-10-22_1955"></a>
2003-10-22 19:55 Ralph Giles</strong></p>
<blockquote>
<pre>
Always install all the available resource categories (directories) on
unix, in place of the earlier hard-wired list. Closes bug 687092.
</pre>
<p>[src/unixinst.mak 1.34]</p>
</blockquote>

<p><strong><a name="2003-10-22_1948"></a>
2003-10-22 19:48 Ralph Giles</strong></p>
<blockquote>
<pre>
Add the new ColorSpace directory to the list of installed resource
categories. This is the quick fix version of the resolution for Bug
687092.
</pre>
<p>[src/unixinst.mak 1.33]</p>
</blockquote>

<p><strong><a name="2003-10-22_1935"></a>
2003-10-22 19:35 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687099 Rebulding XREF leaves 1 object on the stack.  The  bug
title is erroneous.  All PDF files were leaving one item, a zero, on
the stack.  The problem was caused by an incorrect definition of
pdfemptycount.
</pre>
<p>[lib/pdf_main.ps 1.79]</p>
</blockquote>

<p><strong><a name="2003-10-22_1645"></a>
2003-10-22 16:45 stefan</strong></p>
<blockquote>
<pre>
file gslibctx.c was initially added on branch gslibctx.
</pre>
<p>[src/gslibctx.c 1.1]</p>
</blockquote>

<p><strong><a name="2003-10-22_1645"></a>
2003-10-22 16:45 stefan</strong></p>
<blockquote>
<pre>
file gslibctx.h was initially added on branch gslibctx.
</pre>
<p>[src/gslibctx.h 1.1]</p>
</blockquote>

<p><strong><a name="2003-10-22_1639"></a>
2003-10-22 16:39 Dan Coby</strong></p>
<blockquote>
<pre>
Change the name of the switch NOSUBDEVICECOLORS to NOSUBSTDEVICECOLORS.
This was done to prevent confusion about being read as 'No subdevice
colors'.
</pre>
<p>[doc/Use.htm 1.91, lib/gs_devcs.ps 1.5, lib/gs_init.ps 1.100]</p>
</blockquote>

<p><strong><a name="2003-10-22_1311"></a>
2003-10-22 13:11 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Provide an extended encoding for glyphshow.

DETAILS :

It fixes the problem 1 described in
the bug 687087 "pdfwrite : A mangled /trademark glyph" :
the glyph was converted to outline.

In the test document a glyphshow uses a glyph outside the font's Encoding.
Now we find a known Postscript encoding containing the glyph,
and encode the glyph with it.
Glyphs with unknown names still convert to outlines.

EXPECTED DIFFERENCES :

pdfwrite progressions :
136-01.ps
244-01.ps
The document tpc2.ps of the bug 687087.
</pre>
<p>[src/devs.mak 1.100, src/gdevpdtc.c 1.29, src/gdevpdte.c 1.48, src/gdevpdtt.c 1.66, src/gdevpdtt.h 1.19]</p>
</blockquote>

<p><strong><a name="2003-10-22_1214"></a>
2003-10-22 12:14 Ralph Giles</strong></p>
<blockquote>
<pre>
Update a call to map_rgb_color() to use the new encode_color() with a
component array argument. Partial resolution of Bug 686981.

DETAILS:

This resolves the compiliation problem that was the substance of the
original report. However, there is further code rot to be corrected as
the driver fails in use with '/undefined in --get--'.
</pre>
<p>[src/gdevcgm.c 1.9]</p>
</blockquote>

<p><strong><a name="2003-10-22_1122"></a>
2003-10-22 11:22 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Restore standard functionality of bind operator in DELAYBIND mode after
.bindnow . Simplify the implementation logic and document the changes.
Fix bug 686746

DETAILS:
The fix is based on the patch from Piotr Strzelczyk but selects
the bind definition at run time following the old implementation
to avoids errors when the differed bind operator is bound in.
</pre>
<p>[lib/gs_ll3.ps 1.20, doc/Language.htm 1.76, lib/gs_init.ps 1.99, lib/ps2ascii.ps 1.8]</p>
</blockquote>

<p><strong><a name="2003-10-22_0958"></a>
2003-10-22 09:58 Ralph Giles</strong></p>
<blockquote>
<pre>
Make a sentence fragment a clause.
</pre>
<p>[doc/Drivers.htm 1.41]</p>
</blockquote>

<p><strong><a name="2003-10-22_0855"></a>
2003-10-22 08:55 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Dereference indirect objects during conversion from PDF form XObject to
PostScript form. Minimize dictionary copying.
Fix bug 686953.
</pre>
<p>[lib/pdf_draw.ps 1.79]</p>
</blockquote>

<p><strong><a name="2003-10-22_0707"></a>
2003-10-22 07:07 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : Annotations, outlines and links pointing to
non-existing pages caused a failure with -dDOPDFMARKS.
Patch from Leon Bottou.

DETAILS :

Bug 686839 "Patch to ignore pdf errors in outlines and links"

A followup form Leon Bottou :

[beg quote]
I found several pdf files with damaged or incorrect annotations (outlines, links)
pointing to non existing pages or even pointing to nodes of incorrect type

When using the pdf interpreter with -dDOPDFMARKS, such
errors cause an execution error in the pdf interpreter
The attached patch ignores such errors.  The assumption is that
it is better to produce botched pdfmarks than producing an error
message and be unable to process the file.
[end quote]

EXPECTED DIFFERENCES :

None.
</pre>
<p>[lib/pdf_main.ps 1.78]</p>
</blockquote>

<p><strong><a name="2003-10-21_1502"></a>
2003-10-21 15:02 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Refactor pdf_obtain_font_resource.

DETAILS :

This change is algorithmically equivalent.
It's a preparation for fixing the problem 1 described in
the bug 687087 "pdfwrite : A mangled /trademark glyph"

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdtt.c 1.65]</p>
</blockquote>

<p><strong><a name="2003-10-21_1337"></a>
2003-10-21 13:37 Ralph Giles</strong></p>
<blockquote>
<pre>
Complete the replacement for fname_size described in the previous
commit. Part of fixing bug 686981.
</pre>
<p>[src/gdevcgm.c 1.8]</p>
</blockquote>

<p><strong><a name="2003-10-21_1328"></a>
2003-10-21 13:28 Ralph Giles</strong></p>
<blockquote>
<pre>
Replace a non-standard local filename length define with gp_file_name_sizeof.
</pre>
<p>[src/devs.mak 1.99, src/gdevcgm.c 1.7]</p>
</blockquote>

<p><strong><a name="2003-10-21_1154"></a>
2003-10-21 11:54 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix compiler warnings. Include gpmisc.h when needed.
Fix bug 687006.
</pre>
<p>[src/gp_dosfs.c 1.16, src/gp_macio.c 1.32, src/gp_ntfs.c 1.21, src/gp_unifn.c 1.15, src/gp_vms.c 1.36, src/int.mak 1.118, src/lib.mak 1.145, src/macos-mcp.mak 1.22, src/openvms.mak 1.32, src/openvms.mmk 1.27, src/stdio_.h 1.9, src/winplat.mak 1.5, src/zfile.c 1.39]</p>
</blockquote>

<p><strong><a name="2003-10-21_1120"></a>
2003-10-21 11:20 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Issue a path construction command after accumulation of 500 values to prevent
operand stack overflow.
Fix bug 687016
</pre>
<p>[src/gdevps.c 1.37]</p>
</blockquote>

<p><strong><a name="2003-10-21_1006"></a>
2003-10-21 10:06 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Disable the grid fitting while charproc accumulation (continued).

DETAILS :

1. If a charproc of a Type 3 font uses another Type 3 font, and the latter
converts to raster, the grid fitting was erroneusly disabled while
its charproc accumulation. Not sure that this case can happen,
but we like to clean up.

2. An optimization to process_plain_text is algorithmically equivalent.
   It is not related to charprocs though.

EXPECTED DIFFERENCES :

None with comparefiles.
</pre>
<p>[src/gdevpdte.c 1.47, src/gdevpdti.c 1.22]</p>
</blockquote>

<p><strong><a name="2003-10-21_0805"></a>
2003-10-21 08:05 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Add newly defined resource files to static resources.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[lib/gs_stres.ps 1.6]</p>
</blockquote>

<p><strong><a name="2003-10-21_0750"></a>
2003-10-21 07:50 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Some Cygwin/gcc compiler warnings.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfg.c 1.42, src/gdevpdtt.c 1.64, src/gxhintn.c 1.34, src/gxtype1.c 1.35, src/interp.c 1.17, src/isave.c 1.9, src/iscan.c 1.15, src/zfapi.c 1.49, src/zfont.c 1.9, src/devs.mak 1.98, src/icid.h 1.7, src/isave.h 1.6]</p>
</blockquote>

<p><strong><a name="2003-10-21_0143"></a>
2003-10-21 01:43 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Disable the grid fitting while charproc accumulation.

DETAILS :

This is a partial (minor) fix for the bug 687087 "pdfwrite : A mangled /trademark glyph".
The glyph looks fine but still converts to outline.

This change works for pdfwrite only.
It changes several files in the graphics library, but other devices
should percept this change as algorithmically equivalent.

The core of the change is explained in the comment inserted into gdevpdtt.c :

    if (pdev-&gt;font3 != 0) {
	/* A text operation happens while accumulating a charproc.
	   This is a case when source document uses a Type 3 font,
	   which's charproc uses another font.
	   Since the text operation is handled by the device,
	   the font isn't converting to a raster (i.e. to a bitmap font).
	   Disable the grid fitting for the convertion to get a proper outlines,
	   because the viewer resolution is not known during the accumulation.
	   Note we set identity CTM in pdf_text_set_cache for the accumilation,
	   and therefore the font may look too small while the source charproc
	   interpretation. The document tpc2.ps of the bug 687087 is an example.
	*/
	penum-&gt;device_disabled_grid_fitting = true;
    }

It is implemented with defining the new field device_disabled_grid_fitting
into gs_text_enum_common.

Minor changes :

1. In gs_type1_state_s renamed charpath_flag to no_grid_fitting.
   We believe the new name reflects the semantics better.
   Several function prototypes changed the argument name.

2. decompose_matrix in gxttfb.c changed the prototype,
   and disables the TT grid fitting for very small fonts.
   (We consider it as a minor change, because currently this portion
   is disabled with NEW_TT_INTERPRETER 0 in gx.h).

3. A problem discovered in t1_hinter__set_mapping that
   impedes implementing a grid-fitting disabling for small Type 1,2,11 fonts.
   A comment is inserted into gxhintn.c about that.
   Very samll glyphs can be mangled diring a rasterization, but the mangling
   isn't visible in raster with such small sizes.
   Therefore the problem isn't important.

EXPECTED DIFFERENCES :

None with comparefiles.

The test file tpc2.ps of the bug 687073 doesn't cause a mangled glyph,
rather the glyph still converts to outline.
</pre>
<p>[src/gdevpdte.c 1.46, src/gdevpdtt.c 1.63, src/gstext.c 1.14, src/gstype1.c 1.29, src/gstype1.h 1.9, src/gstype2.c 1.32, src/gxfcopy.c 1.36, src/gxhintn.c 1.33, src/gxhintn.h 1.15, src/gxtext.h 1.12, src/gxttfb.c 1.17, src/gxtype1.c 1.34, src/gxtype1.h 1.18, src/zchar1.c 1.34]</p>
</blockquote>

<p><strong><a name="2003-10-20_1206"></a>
2003-10-20 12:06 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Don't cache glyphs with a suspect bounding box. The patch tests for
(urx!=0 &amp;&amp; llx==urx) || (ury!=0 &amp;&amp; lly==ury) but suggestions of a
better test are allways welcome.
Fix bug 687015 from customer 440
</pre>
<p>[lib/pdf_font.ps 1.58]</p>
</blockquote>

<p><strong><a name="2003-10-19_1748"></a>
2003-10-19 17:48 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Return correct /DeviceGray color space from currentcolorspace operator
inside PaintProc of the uncolored pattern and cache device (bug 627169).
Use igs-&gt;color_space to track the current color space.
Fix bug 687080 from customer 710.

DETAILS:

The problem in bug 687080 is definitely a conflict about the current
color space while the PaintProc is being executed.  There are two
color space indicators: pgs-&gt;color_space and igs-&gt;colorspace.  Most
of the time these two agree and there is no problem.  However during
pattern accumulation pgs-&gt;color_space has been temporarily changed
from a pattern color space to DeviceGray.  This causes a problem
when the currentcmyk operator is called.  Currently, before this fix,
it calls currentcolor which returns a DeviceGray color.  Then a
color to CMYK routine is called based upon the color space being
a pattern color space.  This then fails since it has the wrong input
color values.

The fix looks at the current color space, in pgs-&gt;color_space,
and is special casing DeviceGray.  The fix should work better than
the current logic.  The only problem area would likely be if we have
other 'temporary' color spaces besides DeviceGray.  I do not know of
any and the current logic would also fail.
</pre>
<p>[src/int.mak 1.117, src/zcolor.c 1.16]</p>
</blockquote>

<p><strong><a name="2003-10-19_0615"></a>
2003-10-19 06:15 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix: Pattern color spaces that used save/restore within the PaintProc
would result in infinite looping with high level devices such as the
pdfwrite device since the restore cleared the pattern cache so that
after the restore, the pattern PaintProc would need to be executed
again. Bug #687052 for customer #411.

DETAILS:

The 'is_dummy' flag in the pattern cache indicates that the cache
entry does not contain bitmap or tile bits, but rather is just
a placeholder for the pattern 'id'.

The patch does not delete entries for pattern color spaces that
have is_dummy != 0. The pdfwrite device creates all pattern cache
entries as dummies.

This change does not result in any regression and, of course, prevents
the infinite looping.
</pre>
<p>[src/gxpcmap.c 1.11]</p>
</blockquote>

<p><strong><a name="2003-10-16_2042"></a>
2003-10-16 20:42 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Fonts used in a charproc were not added to Resources of some pages.

DETAILS :

Bug 687073 "cannot convert a ps file to pdf"

Changes :

1. Added gx_device_pdf::font3 to access the Type 3 font while a charproc stream accumulation.
2. Provided saving it to the substream context stack.
3. Provided resource id for Type 3 font resources (were zeros).
4. The new function pdf_used_charproc_fonts sets where_used to charproc fonts,
   allowing to write them to page Resources.
5. A minor cleanup of comments.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdf.c 1.75, src/gdevpdfx.h 1.77, src/gdevpdte.c 1.45, src/gdevpdtf.h 1.21, src/gdevpdti.c 1.21, src/gdevpdts.c 1.26, src/gdevpdtt.c 1.62, src/gdevpdtx.h 1.2]</p>
</blockquote>

<p><strong><a name="2003-10-16_1337"></a>
2003-10-16 13:37 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : The font copying routine was inprecise.

DETAILS :

1. Obtaining a glyph metrics, the font copying rutine scaled it
with UnitsPerEm and back, loosing a precision.
It caused an inprecise values for glyph width and side bearing in the font copy,
and implied slightly shifted glyphs when PDF is rasterised.
Inserted a compensation in the rounding expressions.

2. compare_glyphs sometimes compared a TT glyph with 0th glyph,
and made a wrong decision that fonts can't merge.
With some documents the PDF output becomes shorter.

EXPECTED DIFFERENCES :

pdfwrite, 72dpi:

keyboard.pdf
korea.ps
MagicEye.pdf
type42_glyph_index.ps

pdfwrite, 300dpi :

01_001.pdf
159.pdf
adesso2.pdf
adesso7.pdf
adesso8.pdf
Altona.Page_3.2002-09-27.pdf
Faktura.pdf
ICPconcept.pdf
keyboard.pdf
korea.ps
MagicEye.pdf
type42_glyph_index.ps

In adesso7.pdf, adesso8.pdf a TT font renders some worse, but it's unfortunate.
With the new TT interpreter and -dGridFitTT=1 it renders fine.
</pre>
<p>[src/gdevpsft.c 1.31, src/gstype42.c 1.40, src/gxfcopy.c 1.35]</p>
</blockquote>

<p><strong><a name="2003-10-16_1233"></a>
2003-10-16 12:33 Igor Melichev</strong></p>
<blockquote>
<pre>
Reclaim global memory in the beginning of the interpreter finalization.

DETAILS :

The patch
http://www.ghostscript.com/pipermail/gs-cvs/2003-October/003664.html
was incomplete.

EXPECTED DIFFERENCES :

Revisions after the patch
http://www.ghostscript.com/pipermail/gs-cvs/2003-October/003664.html
can crash or write an incomplete PDF. Now fixed.
</pre>
<p>[src/imain.c 1.36]</p>
</blockquote>

<p><strong><a name="2003-10-16_1123"></a>
2003-10-16 11:23 jeong</strong></p>
<blockquote>
<pre>
When Glyph names data is not available for a TrueType Format 2.0 font,
rangecheck error occured. It was due to an attempt to get the data
even when it is not available. Now when no name data is available,
/postnames is defined
as an empty array and the glyph won't get a name attached. Fixes
Bug#686961.
</pre>
<p>[lib/gs_ttf.ps 1.34]</p>
</blockquote>

<p><strong><a name="2003-10-16_1115"></a>
2003-10-16 11:15 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix error recovery code for PDF image; pop the operand of image operator
restored by the standard PS error recovery.
Fix bug 687081 from customer 770.
</pre>
<p>[lib/pdf_draw.ps 1.78]</p>
</blockquote>

<p><strong><a name="2003-10-15_1536"></a>
2003-10-15 15:36 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Resources were prematurely freed, causing pending pointers.

DETAILS :

Debugged with 473-01.ps (was a crash in ialloc_validate_object).

EXPECTED DIFFERENCES :

473-01.ps shouldn't crash pdfwrite.
</pre>
<p>[src/gdevpdf.c 1.74]</p>
</blockquote>

<p><strong><a name="2003-10-15_1535"></a>
2003-10-15 15:35 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Don't recompute FontBBox for CID font subsets.

DETAILS :

It's an optimization, which is important with the new TT interpreter.
The new TT interpreter copies TT structures into internal structures.
With CID fonts it'a a big memory consumtion.
Also now it runs faster.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdtd.c 1.15]</p>
</blockquote>

<p><strong><a name="2003-10-15_1134"></a>
2003-10-15 11:34 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : A minor code cleanup in zfont42.c .

DETAILS :

The condition for missing a glyph was too weak, rather it never went out.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/zfont42.c 1.17]</p>
</blockquote>

<p><strong><a name="2003-10-15_1129"></a>
2003-10-15 11:29 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A bug in memory descriptor.

DETAILS :

The bug caused a crash re-distilling the keyboard.pdf .

EXPECTED DIFFERENCES :

Should fix the pdfwrite crash with keyboard.pdf.
</pre>
<p>[src/gsstruct.h 1.17, src/gxfcopy.c 1.34]</p>
</blockquote>

<p><strong><a name="2003-10-15_0853"></a>
2003-10-15 08:53 Igor Melichev</strong></p>
<blockquote>
<pre>
Reclaim global memory in the beginning of the interpreter finalization.

DETAILS :

This is a partial fix for the bug 687071 "Default vmthreshold isn't sufficient for pdfwrite".
The pdfwrite device may need significant space in global memory to allocate compression filters
while the device finalization.

EXPECTED DIFFERENCES :

With this patch the following test crashes :

gswin32c.exe -dNOPAUSE  -dBATCH -sDEVICE=pdfwrite -sOutputFile=z:\cur.pdf comparefiles/keyboard.pdf -c quit

It looks as a wrong memory allocation or a descriptor.
I don't delay commit, because it's another problem to be worked out separately,
and the problem isn't massive.
</pre>
<p>[src/imain.c 1.35, src/interp.c 1.16, src/interp.h 1.6]</p>
</blockquote>

<p><strong><a name="2003-10-15_0750"></a>
2003-10-15 07:50 Dan Coby</strong></p>
<blockquote>
<pre>
Change the name of NOSUBCOLORSPACES to NOSUBDEVICECOLORS.

DETAILS:

In a code review for the NOSUBCOLORSPACES switch, Igor suggested changing
the name to KEEPDEVICECOLORS.  I still prefer NOSUB instead of KEEP.
Basically I prefer that switches which stop an action begin with NO.
However changing COLORSPACES to DEVICECOLORS is a definite improvement
since COLORSPACES is overly general and thus inaccurate.  The only
color spaces which are substituted are the device colors.
</pre>
<p>[doc/Use.htm 1.90, lib/gs_devcs.ps 1.4, lib/gs_init.ps 1.98]</p>
</blockquote>

<p><strong><a name="2003-10-15_0734"></a>
2003-10-15 07:34 Dan Coby</strong></p>
<blockquote>
<pre>
Add new header file src/gdevdevn.h to doc/Develop.htm.
</pre>
<p>[doc/Develop.htm 1.122]</p>
</blockquote>

<p><strong><a name="2003-10-15_0003"></a>
2003-10-15 00:03 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (True Type font loader) : 'glyf' and 'loca' were loaded emulating a CID font with True Type,
causing an unuseful huge memory consumtion.

DETAILS :

My old patch about the font emulation was incomplete.
This patch fixes that.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[lib/gs_ttf.ps 1.33]</p>
</blockquote>

<p><strong><a name="2003-10-14_2037"></a>
2003-10-14 20:37 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Resources were prematurely freed, causing duplicated objects in the output.

DETAILS :

Bug 687078 "pdfwrite duplicates page resources".
pdf_store_page_resources releases page resources, but they may be used in next
pages. Due to that such resources may be duplicated in the output file.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfc.c 1.40, src/gdevpdfu.c 1.43]</p>
</blockquote>

<p><strong><a name="2003-10-14_1500"></a>
2003-10-14 15:00 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Applying .includecolorspace to insert "default" color spaces.

DETAILS :

This completes the fix for the
bug 687054 "pdfwrite should include DefaultGray, DefaultRGB, DefaultCMYK".

The "default" color space resources are being included only if all 3 conditions are satisfied :

1. -dUseCIEColor is set;
2. -dNOSUBCOLORSPACES is set;
3. The source document defines the resource.

If the document doesn't define the resource, but the user wants to include it,
the document to be prepended with

  currentglobal true setglobal
  /DefaultGray /ColorSpace 2 copy findresource exch defineresource pop
  /DefaultRGB  /ColorSpace 2 copy findresource exch defineresource pop
  /DefaultCMYK /ColorSpace 2 copy findresource exch defineresource pop
  setglobal

and the resources must be available in gs/Resource/ColorSpace.

This patch removes the "default" color space resources from gs_ll3.ps,
assuming they are added to gs/Resource/ColorSpace.
This is done to obtain the proper result of resourcestatus.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[lib/gs_devcs.ps 1.3, lib/gs_ll3.ps 1.19]</p>
</blockquote>

<p><strong><a name="2003-10-14_1458"></a>
2003-10-14 14:58 Igor Melichev</strong></p>
<blockquote>
<pre>
Initial commit for ColorSpace resources.
</pre>
<p>[Resource/ColorSpace/DefaultCMYK 1.1, Resource/ColorSpace/DefaultGray 1.1, Resource/ColorSpace/DefaultRGB 1.1]</p>
</blockquote>

<p><strong><a name="2003-10-14_1253"></a>
2003-10-14 12:53 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a bridge to the True Type bytecode interpreter (step 20).

DETAILS :

The switch NEW_TT_INTERPRETER in gx.h is set to disable the new code.

This patch is a minor code cleanup.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxccache.c 1.27, src/gxttfb.c 1.16, src/ttfmain.c 1.18]</p>
</blockquote>

<p><strong><a name="2003-10-14_1243"></a>
2003-10-14 12:43 Igor Melichev</strong></p>
<blockquote>
<pre>
Define a new special operator .includecolorspace and new device virtual function
include_color_space. Implement the latter for pdfwrite.

DETAILS :

This is a partial fix for
Bug 687054 "pdfwrite should include DefaultGray, DefaultRGB, DefaultCMYK".
This stuff provides a writing, but currently it is never called by gs/lib/* .
A documentation is placed into a comment in gscolor2.c .

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevbbox.c 1.15, src/gdevdflt.c 1.14, src/gdevnfwd.c 1.13, src/gdevpdf.c 1.73, src/gdevpdfd.c 1.34, src/gdevpdfv.c 1.31, src/gdevpdfx.h 1.76, src/gdevrops.c 1.9, src/gscolor2.c 1.16, src/gscolor2.h 1.8, src/gxclip.c 1.12, src/gxclip2.c 1.9, src/gxclipm.c 1.11, src/gxclist.c 1.12, src/gxdevcli.h 1.19, src/gxdevice.h 1.14, src/zcolor.c 1.15]</p>
</blockquote>

<p><strong><a name="2003-10-14_1015"></a>
2003-10-14 10:15 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : Adjust the currentpoint saved back into TextMatrix so that it
does not include the effect of TextRise.

DETAILS :

Bug 686837 "PDF with subscript rendered wrong"
Patch from Raph Levien.

Here is analyzis from Raph Levien :
[beg quote]

the test file is using PDF's Ts operator to adjust the
"text rise", exactly as shown in section 5.2.6 "Text Rise" of the
PDF manual (3rd ed). Ghostscript's rendering is incorrect because
the "settextposition" function (in pdf_ops.ps) updates the TextMatrix
using the current point after showing the text. However, this point
already contains the effect of TextRise. Then, the next time
settextmatrix is invoked, it applies TextMatrix, followed by a
second TextRise.

The patch below simply reverses the effect of TextRise before setting
TextMatrix. I believe that the correct invariant is that
"settextposition" followed by "settextstate" should result in (0, 0)
being the current point in the resulting CTM. I argue that the patch
fulfills the invariant, as follows. Let the current point be (x, y),
relative to TextSaveMatrix. Then, settextposition sets the translate
portion of TextMatrix to (x, y - TextRise). Then, settextmatrix (as
invoked from settextstate) applies TextMatrix followed by TextRise,
for a net translation of (x, y).

Query: is this reasoning still valid for arbitary rotations and scales
in TextMatrix (as set by Tm)? It seems so to me, but I believe testing
is required to establish this definitively.

[end quote]

I've tested it with comparefiles and found no differences.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[lib/pdf_ops.ps 1.32]</p>
</blockquote>

<p><strong><a name="2003-10-14_0916"></a>
2003-10-14 09:16 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (resource machinery) : A bug in resourceforall.

DETAILS :

Bug 687004 "bug in gs_res.ps (6.52, 7.07 and 8.11)".
Patch from Ferdinand Oeinck.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[lib/gs_res.ps 1.36]</p>
</blockquote>

<p><strong><a name="2003-10-14_0914"></a>
2003-10-14 09:14 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (Type 1 interpreter) : Provide a tolerance to a missed subglyph.

DETAILS :

Bug 595760 "Fix for buggy font subsets".

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfcopy.c 1.33, src/gxfont1.h 1.12, src/gxtype1.c 1.33, src/zchar1.c 1.33, src/zfcid0.c 1.21]</p>
</blockquote>

<p><strong><a name="2003-10-13_1910"></a>
2003-10-13 19:10 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (FAPI/FreeType) : Upgrading to Free Type 2.1.5 .

DETAILS :

A minor change in a type name.
Patch from Robert Seretny.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/fapi_ft.c 1.12]</p>
</blockquote>

<p><strong><a name="2003-10-13_1506"></a>
2003-10-13 15:06 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (color space serialization) : Removing a constraint to the Sd function dimension.

DETAILS :

The implementation used an unreasonable constraint, which restricted
a number of color components. Now the constraint is removed.

EXPECTED DIFFERENCES :

Fixes the recent regression with Altona.Page_3.2002-09-27.pdf .
</pre>
<p>[src/gsfunc0.c 1.13]</p>
</blockquote>

<p><strong><a name="2003-10-13_1216"></a>
2003-10-13 12:16 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a bridge to the True Type bytecode interpreter (step 19).

DETAILS :

The switch NEW_TT_INTERPRETER in gx.h is set to disable the new code.

This patch applies the design grid to emulate an infinite resolution with GridFitTT=0.
Removed changes to ttinterp.c that were inserted to that purpose.

The old code literally implemented the Raph's idea to disable the pixel rounding in the
TT interpreter. Such implementation appears not good due to a rounding may apper implicitly
while coordinate computations with low level TT operations.
The new code requires lesser changes to the TT inprepreter and needs lesser
number of cases to represent the infinite resolution :
same code works for GridFitTT=0 and for charpath.

Also optimized MoveGlyphOutline because now it is called more frequent.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxccache.c 1.26, src/gxttfb.c 1.15, src/ttfmain.c 1.17, src/ttfoutl.h 1.12, src/ttinterp.c 1.9]</p>
</blockquote>

<p><strong><a name="2003-10-12_1909"></a>
2003-10-12 19:09 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a bridge to the True Type bytecode interpreter (step 18).

DETAILS :

The switch NEW_TT_INTERPRETER in gx.h is set to disable the new code.

This patch is an optimization : it avoids an extra glyph data copying,
and simplifies a memory descriptor.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxttfb.c 1.14, src/ttfmain.c 1.16, src/ttfmemd.c 1.6, src/ttfoutl.h 1.11]</p>
</blockquote>

<p><strong><a name="2003-10-10_0708"></a>
2003-10-10 07:08 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a bridge to the True Type bytecode interpreter (step 17).

DETAILS :

The switch NEW_TT_INTERPRETER in gx.h is set to disable the new code.

This patch fixes a problem with zero size fonts.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxccache.c 1.25, src/gxccman.c 1.22, src/gxfcache.h 1.20]</p>
</blockquote>

<p><strong><a name="2003-10-09_2226"></a>
2003-10-09 22:26 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 687055 pdfwrite should not fail with &lt;&lt;/ProcessColorModel /DeviceN&gt;&gt;
setpagedevice.  This change adds support for the DeviceN process color
model to the pdfwrite device.  The DeviceN process color model is treated
like the DeviceCMYK process color model except for the name.
</pre>
<p>[src/gdevpdf.c 1.72, src/gdevpdfp.c 1.33]</p>
</blockquote>

<p><strong><a name="2003-10-09_2029"></a>
2003-10-09 20:29 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a bridge to the True Type bytecode interpreter (step 16).

DETAILS :

The switch NEW_TT_INTERPRETER in gx.h is set to disable the new code.

This patch fixes a bug in character transformation matrix,
and sets the default value for GridFitTT to false.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gsfont.c 1.25, src/gxccman.c 1.21]</p>
</blockquote>

<p><strong><a name="2003-10-09_1919"></a>
2003-10-09 19:19 Igor Melichev</strong></p>
<blockquote>
<pre>
fuzzy.c : Implementing a ne option -c to switch on/off the reporting of coordinates of differences.
</pre>
<p>[toolbin/tests/fuzzy.c 1.12]</p>
</blockquote>

<p><strong><a name="2003-10-09_1456"></a>
2003-10-09 14:56 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a bridge to the True Type bytecode interpreter (step 15).

DETAILS :

The switch NEW_TT_INTERPRETER in gx.h is set to disable the new code.

This patch provides non-grid-fitted outlines with charpath.
For a better readability renamed various variables ralated to that.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gstype42.c 1.39, src/gxccache.c 1.24, src/gxccman.c 1.20, src/gxchar.c 1.37, src/gxfcache.h 1.19, src/gxttfb.c 1.13, src/gxttfb.h 1.9, src/ttfmain.c 1.15, src/ttfoutl.h 1.10, src/ttinterp.c 1.8]</p>
</blockquote>

<p><strong><a name="2003-10-09_1251"></a>
2003-10-09 12:51 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a bridge to the True Type bytecode interpreter (step 14).

DETAILS :

This patch removes obsolete comments.
It is algorithmically equivalent.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxccman.c 1.19, src/gxttfb.c 1.12, src/ttfmain.c 1.14]</p>
</blockquote>

<p><strong><a name="2003-10-09_0013"></a>
2003-10-09 00:13 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a bridge to the True Type bytecode interpreter (step 13).

DETAILS :

The switch NEW_TT_INTERPRETER in gx.h is set to disable the new code.

This patch implements a new user parameter GridFitTT.
A change to documentation isn't supplied because
this code is disabled by NEW_TT_INTERPRETER 0.
Here is definition :

GridFitTT=1 forces the TT interpreter to perform a grid fitting.

If a font initialization program uses patented instrictions,
the font renders without a grid fitting, and a warning is printed to stderr.

If a font initialization program doesn't use patented instrictions,
and some glyphs of the font uses patented instructions,
the glyphs renders without a grid fitting, and a warning is printed to stderr.

If a font initialization program doesn't use patented instrictions,
and a glyph of the font doesn't use patented instructions,
the glyph renders with grid fitting, and no warning is printed.

Note that some font may mix both grid-fitted and non-grid-fitted glyphs.

GridFitTT=0 forces the TT interpreter to skip the grid fitting.
The warning about "patented" font is not printed.

The user parameter can be set by the new command line option -dGridFitTT=x,
where x is 0 or 1.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[lib/gs_init.ps 1.97, src/gsfont.c 1.24, src/gsfont.h 1.9, src/gxccman.c 1.18, src/gxfcache.h 1.18, src/gxttfb.c 1.11, src/gxttfb.h 1.8, src/icontext.c 1.17, src/ttfmain.c 1.13, src/ttfoutl.h 1.9, src/ttinterp.c 1.7, src/zusparam.c 1.10]</p>
</blockquote>

<p><strong><a name="2003-10-08_2207"></a>
2003-10-08 22:07 Igor Melichev</strong></p>
<blockquote>
<pre>
fuzzy.c : Implement a reporting of coordinates of different pixels.
</pre>
<p>[toolbin/tests/fuzzy.c 1.11]</p>
</blockquote>

<p><strong><a name="2003-10-08_1853"></a>
2003-10-08 18:53 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Propagating return code from gs_main_finit to GSDLL API (continued).

DETAILS :

The previous patch is incomplete. This one fixes that.
</pre>
<p>[src/dmmain.c 1.3, src/dpmain.c 1.11, src/dwmain.c 1.15, src/dwmainc.c 1.17, src/dxmain.c 1.12, src/dxmainc.c 1.9, src/gsdll.c 1.11]</p>
</blockquote>

<p><strong><a name="2003-10-08_1718"></a>
2003-10-08 17:18 Igor Melichev</strong></p>
<blockquote>
<pre>
Propagating return code from gs_main_finit to GSDLL API.
THIS IS INCOMPATIBLE CHANGE : the API had changed a prototype.

A close_device method can terminate with an error,
which was not delivered to clients.
It is especially important with pdfwrite,
which performs a big work in close_device.

Now clients can know about the error checking the return code
of the gsapi_exit function. See examples in doc/API.htm .
</pre>
<p>[doc/API.htm 1.38, src/dpmain.c 1.10, src/dwmain.c 1.14, src/dwmainc.c 1.16, src/gsexit.h 1.9, src/iapi.c 1.10, src/imain.c 1.34, src/imain.h 1.8]</p>
</blockquote>

<p><strong><a name="2003-10-08_1419"></a>
2003-10-08 14:19 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a bridge to the True Type bytecode interpreter (step 12).

DETAILS :

The switch NEW_TT_INTERPRETER in gx.h is set to disable the new code.

This patch dalays the "patented" exception until a patented
method is called.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/ttfmain.c 1.12, src/ttinterp.c 1.6]</p>
</blockquote>

<p><strong><a name="2003-10-08_1354"></a>
2003-10-08 13:54 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a bridge to the True Type bytecode interpreter (step 11).

DETAILS :

The switch NEW_TT_INTERPRETER in gx.h is set to disable the new code.

This patch fixes a bug in phantom points' coordinates (debugged with test_multipage_prob.pdf).
Reset_CodeRange is removed because it duplicates Clear_CodeRange.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxccman.c 1.17, src/gxttfb.c 1.10, src/ttfmain.c 1.11, src/ttobjs.c 1.6, src/ttobjs.h 1.4]</p>
</blockquote>

<p><strong><a name="2003-10-08_1143"></a>
2003-10-08 11:43 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Contrary to the published spec (up to v.1.5) Acrobat Distiller 3.01 for Mac
can use /Identity instead of a tint transform function in /Separation color
space. Extend our PDF interpreter to cover this case.
Fix bug 687068.
</pre>
<p>[lib/pdf_draw.ps 1.77]</p>
</blockquote>

<p><strong><a name="2003-10-08_1134"></a>
2003-10-08 11:34 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a bridge to the True Type bytecode interpreter (step 10).

DETAILS :

The switch NEW_TT_INTERPRETER in gx.h is set to disable the new code.

This patch implements a proper grid fitting and AlignToPixels.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gstype42.c 1.38, src/gxccman.c 1.16, src/gxttfb.c 1.9, src/gxttfb.h 1.7, src/lib.mak 1.144, src/ttfmain.c 1.10, src/ttfoutl.h 1.8]</p>
</blockquote>

<p><strong><a name="2003-10-07_2002"></a>
2003-10-07 20:02 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a bridge to the True Type bytecode interpreter (step 9).

DETAILS :

The switch NEW_TT_INTERPRETER in gx.h is set to disable the new code.

This patch removes a dynamic biffer from ttfOutliner__BuildGlyphOutline,
and the macro wagOffset.
ttfFont::ttf_memory is moved to ttfInterpreter::ttf_memory.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxttfb.c 1.8, src/ttfmain.c 1.9, src/ttfmemd.c 1.5, src/ttfoutl.h 1.7, src/ttinterp.c 1.5, src/ttload.c 1.4, src/ttobjs.c 1.5]</p>
</blockquote>

<p><strong><a name="2003-10-07_1526"></a>
2003-10-07 15:26 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a bridge to the True Type bytecode interpreter (step 8).

DETAILS :

The switch NEW_TT_INTERPRETER in gx.h is set to disable the new code.

This patch implements a single instance of the TT interpreter shared
for all TT font instances.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gsfont.c 1.23, src/gstype42.c 1.37, src/gxccman.c 1.15, src/gxttfb.c 1.7, src/ttfmain.c 1.8, src/gxfcache.h 1.17, src/gxttfb.h 1.6, src/lib.mak 1.143, src/ttfmemd.c 1.4, src/ttfmemd.h 1.3, src/ttfoutl.h 1.6, src/ttinterp.c 1.4, src/ttobjs.c 1.4, src/ttobjs.h 1.3]</p>
</blockquote>

<p><strong><a name="2003-10-07_0003"></a>
2003-10-07 00:03 Dan Coby</strong></p>
<blockquote>
<pre>
This is part of the fix for 687055.  This change splits the DeviceN
parameter handling.  The SeparationOrder parameter handling is split
into a separate routine.

DETAILS:

The DeviceN parameter SeparationOrder is used to select which separations
are to be included in the output.  This parameter is not appropriate for
high level devices like pdfwrite.  The pdfwrite device does not attempt
to separate its output into separations.  However the pdfwrite device
does use its process color model colors for specifying output colors in
some backup cases.  If a separation were missing then the it would create
an incorrect output color. By splitting out the SeparationOrder parameter
we can still use common routines for pdfwrite and other DeviceN output
devices.
</pre>
<p>[src/gdevdevn.c 1.11, src/gdevdevn.h 1.2]</p>
</blockquote>

<p><strong><a name="2003-10-06_1908"></a>
2003-10-06 19:08 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a bridge to the True Type bytecode interpreter (step 7).

DETAILS :

The switch NEW_TT_INTERPRETER in gx.h is set to disable the new code.

This patch fixes more problems with error codes,
which could appear with high level devices.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdtd.c 1.14, src/ttfmain.c 1.7, src/ttobjs.c 1.3]</p>
</blockquote>

<p><strong><a name="2003-10-06_1643"></a>
2003-10-06 16:43 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a bridge to the True Type bytecode interpreter (step 6).

DETAILS :

The switch NEW_TT_INTERPRETER in gx.h is set to disable the new code.

This patch fixes more problems with error codes.
All comparefiles now run fine.

Rasters were checked with 72dpi.
TT glyphs appear in right places, but sometimes a hinted raster
looks worse than the old (unhinted) one. An example is Faktura.pdf .
To be analyzed.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxttfb.c 1.6, src/ttfmain.c 1.6]</p>
</blockquote>

<p><strong><a name="2003-10-06_1642"></a>
2003-10-06 16:42 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A bug convertinging a CID to a glyph index.

DETAILS :

This portion of code works only while computing a FontBBox for a font subset.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gstype42.c 1.36]</p>
</blockquote>

<p><strong><a name="2003-10-06_1220"></a>
2003-10-06 12:20 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a bridge to the True Type bytecode interpreter (step 5).

DETAILS :

The switch NEW_TT_INTERPRETER in gx.h is set to disable the new code.

This patch fixes some problems with error codes.
All comparefiles now run with no failure (rasters not checked yet).

EXPECTED DIFFERENCES :

None.
With NEW_TT_INTERPRETER 0 this change is algorithmically equivalent.
</pre>
<p>[src/gxccman.c 1.14, src/gxttfb.c 1.5, src/gxttfb.h 1.5, src/ttfmain.c 1.5, src/ttinterp.c 1.3, src/ttload.c 1.3]</p>
</blockquote>

<p><strong><a name="2003-10-06_1138"></a>
2003-10-06 11:38 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a bridge to the True Type bytecode interpreter (step 4).

DETAILS :

The switch NEW_TT_INTERPRETER in gx.h is set to disable the new code.

This patch fixes problems with memory management.

EXPECTED DIFFERENCES :

None.
With NEW_TT_INTERPRETER 0 this change is algorithmically equivalent.
</pre>
<p>[src/gsfont.c 1.22, src/gxccman.c 1.13, src/gxfcache.h 1.16, src/gxttfb.c 1.4, src/gxttfb.h 1.4, src/ttfmain.c 1.4, src/ttfmemd.c 1.3, src/ttfoutl.h 1.5, src/ttinterp.c 1.2, src/ttload.c 1.2, src/ttobjs.c 1.2, src/ttobjs.h 1.2]</p>
</blockquote>

<p><strong><a name="2003-10-06_0834"></a>
2003-10-06 08:34 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a bridge to the True Type bytecode interpreter (step 3).

DETAILS :

The switch NEW_TT_INTERPRETER in gx.h is set to disable the new code.

This patch propagates error codes from the new True Type interpreter,
and fixes some minor bugs.

EXPECTED DIFFERENCES :

None.
With NEW_TT_INTERPRETER 0 this change is algorithmically equivalent.
</pre>
<p>[src/gstype42.c 1.35, src/gxccache.c 1.23, src/gxccman.c 1.12, src/gxchar.c 1.36, src/gxfcache.h 1.15, src/gxfont42.h 1.17, src/gxttfb.c 1.3, src/gxttfb.h 1.3, src/ttfmain.c 1.3, src/ttfoutl.h 1.4]</p>
</blockquote>

<p><strong><a name="2003-10-02_1530"></a>
2003-10-02 15:30 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a bridge to the True Type bytecode interpreter (step 2).

DETAILS :

The switch NEW_TT_INTERPRETER in gx.h is set to disable the new code.

With NEW_TT_INTERPRETER 1 the TT interpreter is now attached and
passed a simple test (2210 glyphshow) with
\WINDOWS\Fonts\mingliu.ttc, which is a Dynalab font.
The TT error processing isn't completed. It may cause a crash.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gstype42.c 1.34, src/gxttfb.c 1.2, src/gxttfb.h 1.2, src/lib.mak 1.142, src/ttfmain.c 1.2, src/ttfoutl.h 1.3]</p>
</blockquote>

<p><strong><a name="2003-10-02_1148"></a>
2003-10-02 11:48 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a bridge to the True Type bytecode interpreter.

DETAILS :

A new switch NEW_TT_INTERPRETER in gx.h disabled the new code.
The new code is incomplete (see a "stub" in gstype42.c) and insufficiently debugged.
This patch provides necessary data transfer to places, in which
the True Type bytecode interpreter must be called.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gstext.c 1.13, src/gstype42.c 1.33, src/gx.h 1.13, src/gxccache.c 1.22, src/gxccman.c 1.11, src/gxchar.c 1.35, src/gxfcache.h 1.14, src/gxfont42.h 1.16, src/gxttfb.c 1.1, src/ttfmemd.c 1.2, src/zchar42.c 1.13, src/gxtext.h 1.11, src/gxttfb.h 1.1, src/lib.mak 1.141, src/ttfmemd.h 1.2, src/ttfoutl.h 1.2]</p>
</blockquote>

<p><strong><a name="2003-10-02_1015"></a>
2003-10-02 10:15 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Removing the dependence on graphic state from font cache rutines.

DETAILS :

This change is algorithmically equivalent.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxccache.c 1.21, src/gxccman.c 1.10, src/gxchar.c 1.34, src/gxfcache.h 1.13]</p>
</blockquote>

<p><strong><a name="2003-10-02_0959"></a>
2003-10-02 09:59 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Characters were cached mixing alpha bits numbers (continued).

DETAILS :

The previous patch appears incomplete.

EXPECTED DIFFERENCES :

None (the nightly regression doesn't test alpha bits).
</pre>
<p>[src/gxccache.c 1.20, src/gxccman.c 1.9, src/gxfcache.h 1.12]</p>
</blockquote>

<p><strong><a name="2003-10-02_0851"></a>
2003-10-02 08:51 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Characters were cached mixing alpha bits numbers.

DETAILS :

This bug only has an effect when same font renders to devices
with different alpha bits. It can cause rendering a cached charascter
with a wrong size (devided or multiplied by 1&lt;&lt;alpha_bits).

EXPECTED DIFFERENCES :

None (the nightly regression doesn't test alpha bits).
</pre>
<p>[src/gxccache.c 1.19, src/gxchar.c 1.33, src/gxfcache.h 1.11]</p>
</blockquote>

<p><strong><a name="2003-10-02_0702"></a>
2003-10-02 07:02 Dan Coby</strong></p>
<blockquote>
<pre>
Move the various device fields associated with the DeviceN process
color model into a common structure.  This allows common routines to
be used to support DeviceN process color model features on different
devices.  The src/gdevdevn.h file was added to define common fields
and structures.

The first application of this code is for 687055 - Adding support for
the DeviceN process color model to the pdfwrite device.
</pre>
<p>[src/devs.mak 1.97, src/gdevdevn.c 1.10, src/gdevdevn.h 1.1]</p>
</blockquote>

<p><strong><a name="2003-10-01_1636"></a>
2003-10-01 16:36 Jack Moffitt</strong></p>
<blockquote>
<pre>
Fix two bugs in testdiff that work around missing baselines.
</pre>
<p>[toolbin/tests/testdiff 1.4]</p>
</blockquote>

<p><strong><a name="2003-10-01_1344"></a>
2003-10-01 13:44 Igor Melichev</strong></p>
<blockquote>
<pre>
Initial commit for a reduced True Type bytecode interpreter.

DETAILS :

The True Type bytecode interpreter is branched from the Free Type 1 project.
Patented algorithms have been removed.
Now it compiles with Ghostscript, but it is never called.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/lib.mak 1.140, src/ttcalc.c 1.1, src/ttcalc.h 1.1, src/ttcommon.h 1.1, src/ttconf.h 1.1, src/ttconfig.h 1.1, src/ttfinp.c 1.1, src/ttfinp.h 1.1, src/ttfmain.c 1.1, src/ttfmemd.c 1.1, src/ttfmemd.h 1.1, src/ttfoutl.h 1.1, src/ttfsfnt.h 1.1, src/ttinterp.c 1.1, src/ttinterp.h 1.1, src/ttload.c 1.1, src/ttload.h 1.1, src/ttmisc.h 1.1, src/ttobjs.c 1.1, src/ttobjs.h 1.1, src/tttables.h 1.1, src/tttype.h 1.1, src/tttypes.h 1.1]</p>
</blockquote>

<p><strong><a name="2003-09-30_1516"></a>
2003-09-30 15:16 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Handle missing /BitsPerComponent key case.
Fix bug 687956.
</pre>
<p>[lib/pdf_draw.ps 1.76]</p>
</blockquote>

<p><strong><a name="2003-09-30_1100"></a>
2003-09-30 11:00 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Don't use Tj when real width is smaller than 1% of Widths.

DETAILS :

This is a workaround for the bug 687051
"freehand patterns cause incorrect result".
See comment in code.

Our workaround is hewristical.
To get a strongly guaranteed result a bug to be reported to Freehand,
which sets a wrong character size with setcachedevice :
the setcachedevice arguments appear 144 times bigger when the actual glyph size.
After converting to PDF it causes too big numeric errors in a PDF viewer.

Adobe Distiller converts this text into a paintings of
individual glyphs, loosing the text features, and enlarging the uncompressed output.
The Adobe's method appears acceptable with this document
because the text actually represents a texture, and the text features (Encoding, etc.)
appears unimportant. We can't implement the Adobe's method because we have no idea
how to recognize in pdfwrite the case of a Type 3 font represents a texture.

Users may want to apply an idiom recognition in PS level for that texture,
to convert it into a regular images for a better coordinate precision.
The ideom approach is independent to this patch, and we believe that
both things can work togeter.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdts.c 1.25]</p>
</blockquote>

<p><strong><a name="2003-09-29_2032"></a>
2003-09-29 20:32 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Fix calculation of the area where path segments can mark the current band.
Old code skipped segments above the page boundary regardless of the line width.
Fixes bug 686788 from customer 710.

DETAILS:
The area is calculated now as [y - expansion.y, y + height + expansion.y]
for every band. Beware of FOR_RECTS_NO_ERROR loop silently updating y and
height.
</pre>
<p>[src/gxclpath.c 1.18]</p>
</blockquote>

<p><strong><a name="2003-09-29_1341"></a>
2003-09-29 13:41 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Don't synchronize graphic state before exiting a charproc.

DETAILS :

The problem discovered with the test document of the bug 687051
"freehand patterns cause incorrect result".
It wrote an excessive clipping path at the end of charproc.

This patch doesn't close the bug, because there is another problem
(with Type 3 character placement) in there.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdtt.c 1.61]</p>
</blockquote>

<p><strong><a name="2003-09-28_1954"></a>
2003-09-28 19:54 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Convert input values to the traditional Lab range when input
color space of ICC profile is Lab. Before conversion all colors
were rendered 100 times darker, i.e. almost black.
Fixes bug 600288 from customer 150.
</pre>
<p>[src/gsicc.c 1.12]</p>
</blockquote>

<p><strong><a name="2003-09-25_2123"></a>
2003-09-25 21:23 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Inline images mangled charproc stream.

DETAILS :

The problem discovered with the test document of the bug 687051
"freehand patterns cause incorrect result".

The problem happened due to pdf_copy_data can't handle the case
when the target file of the source cos_write_stream object
is same as the target file for the copying. Implementing
a new funtion pdf_copy_data_safe for this case.

This patch doesn't close the bug, because there is another problem
(with Type 3 character placement) in there.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gdevpdfo.c 1.21, src/gdevpdfu.c 1.42, src/gdevpdfx.h 1.75]</p>
</blockquote>

<p><strong><a name="2003-09-24_1341"></a>
2003-09-24 13:41 Ralph Giles</strong></p>
<blockquote>
<pre>
Correct a typo in the 'make so' target link line. This also allows the
Solaris linker to ignore the option, allowing the link to complete on
that platform. Thanks to Bob T. for pointing out the issue. Partial fix
for bug 686865.

DETAILS:

I don't know if this was originally a typo or if GNU ld's options have
changed. However, the manpage for my version (2.14.90.0.6) clearly
states the syntax is -soname=foo.
</pre>
<p>[src/unix-dll.mak 1.10]</p>
</blockquote>

<p><strong><a name="2003-09-18_1320"></a>
2003-09-18 13:20 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Fonts with zero FontBBox were not anti-aliased.

DETAILS :

Bug 687036 "gs 8.11 does not anti-alias type 3 bitmap fonts".
The bug appeared in gxchar.c revision 1.21.

EXPECTED DIFFERENCES :

None, because the test tool doesn't test TextAlphaBits &gt; 1.
</pre>
<p>[src/gxchar.c 1.32]</p>
</blockquote>

<p><strong><a name="2003-09-16_1354"></a>
2003-09-16 13:54 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : A bug in compare_glyphs.

DETAILS :

This fixex the crash with illustrator5.ps mentioned in the
bug #687044 "strange elements with text".
It appears a 1 year old bug.
The behavior could be indeterministic.

EXPECTED DIFFERENCES :

None.
</pre>
<p>[src/gxfcopy.c 1.32]</p>
</blockquote>

<p><strong><a name="2003-09-16_1211"></a>
2003-09-16 12:11 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Don't write a clipping path with setcharwidth.

DETAILS :

This is a partial fix for the bug #687044 "strange elements with text".
See big comments added to gdevpdfg.c .

Minor changes :

1. Removed an unsafe cast to gs_state * in gdevpdfg.c
with defing a new graphics library function gs_currentscreenphase_pis.

2. Provided a safety with a cast to gs_show_enum * in gdevpdtt.c .

3. defined a new graphics library function gx_get_clip_path_id .

EXPECTED DIFFERENCES :

A progression in pdfwrite with 238-01.ps .
</pre>
<p>[src/gdevpdfg.c 1.41, src/gdevpdtt.c 1.60, src/gsht.c 1.17, src/gsstate.c 1.22, src/gxistate.h 1.17, src/gxstate.h 1.8]</p>
</blockquote>

<p><strong><a name="2003-09-16_1002"></a>
2003-09-16 10:02 Igor Melichev</strong></p>
<blockquote>
<pre>
Don't apply Type 1 hinting to charpath.
THIS IS AN INCOMPATIBLE CHANGE : charpath now creates a different outline than before.

DETAILS :

Adobe doesn't hint charpath.
Not sure why GS did.
This change makes GS to be closer to Adobe and
partially fixes the bug 687044 "strange elements with text".

Note that 'charpath fill' never was equal to 'show'. Neither the old hinter,
nor the new hinter, nor any combination of them in the pair ('charpath', 'show')
give same result. This happens because 'fill' uses the "center pixel inside" rule,
but 'show' uses a different one. With the new hinter 'show' performs
a spot topology analyzis during the rasterization. This rule doesn't belong
to the class of rules, which can be explained in terms "a part of pixel inside".

Thus, since "same" or "closer" result isn't possible,
the criterion for the choice must lie in another space.
I believe that the "Adobe compatibility" is the right one.

Besides that, Ghostscript PDF imperpreter emulates the text rendering modes 1,5,6
with 'charpath stroke', and with the hinted charpath the results look strange.

EXPECTED DIFFERENCES :

pdfwrite + ppmraw 72pdi :

017-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
034-01.ps
045-01.ps
093-01.ps
220-01.ps
327-01.ps
334-01.ps
335-01.ps
336-01.ps
alphabet.ps
bugsample.pdf
PixelisAd.pdf
ridt91.eps

pdfwrite + ppmraw 300pdi :

017-01.ps
027-01.ps
027-05.ps
027-09.ps
027-13.ps
034-01.ps
045-01.ps
093-01.ps
220-01.ps
327-01.ps
334-01.ps
335-01.ps
336-01.ps
alphabet.ps
bugsample.pdf
PixelisAd.pdf
ridt91.eps

ppmraw 72pdi :

027-01.ps
027-05.ps
027-09.ps
027-13.ps
034-01.ps
220-01.ps
alphabet.ps
bugsample.pdf
PixelisAd.pdf
ridt91.eps

ppmraw 300pdi :

027-01.ps
027-05.ps
027-09.ps
027-13.ps
034-01.ps
220-01.ps
alphabet.ps
bugsample.pdf
PixelisAd.pdf
ridt91.eps
two_encodings.ps
</pre>
<p>[src/gxtype1.c 1.32]</p>
</blockquote>

<p><strong><a name="2003-09-16_0711"></a>
2003-09-16 07:11 Dan Coby</strong></p>
<blockquote>
<pre>
Remove extra carriage returns (^M) at the end of some lines.
</pre>
<p>[lib/pdf_draw.ps 1.75]</p>
</blockquote>

<p><strong><a name="2003-09-15_2005"></a>
2003-09-15 20:05 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Following PLRM, set identity initial matrix for non-forwarding nulldevice.
Fix bug 687041
</pre>
<p>[src/gdevnfwd.c 1.12]</p>
</blockquote>

<p><strong><a name="2003-09-15_1711"></a>
2003-09-15 17:11 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Write color commands to charprocs which don't call setcachedevice[2].

DETAILS :

This is a partial fix for the bug #687044 "strange elements with text".

Minor change : Removed a duplicated instruction from gdevpdtt.c .

This patch doesn't cause a difference with our test base.
</pre>
<p>[src/gdevpdti.c 1.20, src/gdevpdtt.c 1.59]</p>
</blockquote>

<p><strong><a name="2003-09-15_1004"></a>
2003-09-15 10:04 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : A bug in the new code of gs_rectfill (gsdps1.c Revision 1.9).
</pre>
<p>[src/gsdps1.c 1.10]</p>
</blockquote>

<p><strong><a name="2003-09-13_0204"></a>
2003-09-13 02:04 Russell Lang</strong></p>
<blockquote>
<pre>
Fix: Prevent crash caused by dsc_copy_string not stopping at the end
of a string occasionally.
Fixes bug 687045 "Crash while parsing long %%DocumentProcessColor line".
Report (atend) in the trailer as being unknown.
Recognise %%DocumentProcessColors and %%DocumentCustomColors
in the trailer.
Allocate colour details using the correct allocator so they
will be freed correctly.
</pre>
<p>[src/dscparse.c 1.14]</p>
</blockquote>

<p><strong><a name="2003-09-12_0442"></a>
2003-09-12 04:42 Dan Coby</strong></p>
<blockquote>
<pre>
Provide a means for disabling color space substitution.

DETAILS:

Ghostscript supports substituting CIE and ICC color spaces for DeviceGray
DeviceRGB, and DeviceCMYK color spaces.  This is part of the support for
the UseCIEColor feature in PostScript.  This substitution is done inside
the PostScript code in lib/gs_devcs.ps.

The recent improvements to the pdfwrite device mean that the interpreter's
color space and color values are now passed to the output file.  Since
the color space substitution is done prior to passing the color space to
the interpreter, the original color space is lost if UseCIEColor is
set.  This change provides a means to prevent the substitution.  Thus
the original color space is passed to the interpreter and on to the
output file for pdfwrite.
</pre>
<p>[doc/Use.htm 1.89, lib/gs_devcs.ps 1.2, lib/gs_init.ps 1.96]</p>
</blockquote>

<p><strong><a name="2003-09-11_2112"></a>
2003-09-11 21:12 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implement CDevProc handling for CIDFontType 2.

DETAILS :

It defines a new gs_text_process return value TEXT_PROCESS_CDEVPROC,
which allows a device to request a special interpreter callout
for executing CDevProc. The processing is some tricky :
we apply zchar_set_cache to prepare interpreter stacks,
and hook its results in pte-&gt;procs-&gt;set_cache .

This patch handles CDevProc only for CIDFontType 2.
Other font types should be a separate patch.

This patch causes progressions in pdfwrite :
japan.ps
Type11CDevProc.ps
</pre>
<p>[src/gdevpdtc.c 1.28, src/gdevpdte.c 1.44, src/gdevpdtt.c 1.58, src/gdevpdtt.h 1.18, src/gstext.h 1.9, src/gxfont.h 1.21, src/int.mak 1.116, src/zchar.c 1.12, src/zchar1.c 1.32, src/zchar42.c 1.12, src/zchar42.h 1.1]</p>
</blockquote>

<p><strong><a name="2003-09-11_2043"></a>
2003-09-11 20:43 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A part of CID text was missed after a font change.
</pre>
<p>[src/gdevpdtc.c 1.27]</p>
</blockquote>

<p><strong><a name="2003-09-11_1634"></a>
2003-09-11 16:34 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Ignore system-defined FILENAME_MAX when it is too small.
HP-UX 11i 11.11 incorrectly defines FILENAME_MAX as 14.
Fix bug 687030 from customer 1060
</pre>
<p>[src/gp_unifs.c 1.15]</p>
</blockquote>

<p><strong><a name="2003-09-11_1114"></a>
2003-09-11 11:14 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Stream content of ICC color space was missed.
It seems a very old bug...
</pre>
<p>[src/gdevpdfo.c 1.20]</p>
</blockquote>

<p><strong><a name="2003-09-10_1201"></a>
2003-09-10 12:01 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Improving text colors.

DETAILS :

1. Check the color and clip change after each callout (gdevpdtt.c).
   Fixes the bug 686822 "Wrong PDF from kshow with grestore".

2. Don't write color into charprocs of bitmap fonts.

3. Skip writing a process color imaging a cached bitmap character.
   The old code wrote redundant "0 g" commands.

This patch causes progressions in pdfwrite :
093-01.ps
165-01.ps
244-01.ps
kshow_with_grestore.ps
</pre>
<p>[src/gdevpdfb.c 1.20, src/gdevpdtt.c 1.57]</p>
</blockquote>

<p><strong><a name="2003-09-10_0801"></a>
2003-09-10 08:01 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Image XObject was not added into pattern's Resources.

DETAILS :

Bug 687028 "ps2pdf for makepattern creates PDF unreadable by Acrobat Reader".
</pre>
<p>[src/gdevpdfj.c 1.26]</p>
</blockquote>

<p><strong><a name="2003-09-09_2035"></a>
2003-09-09 20:35 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Apply the color space serialization for color space comparizon (continued).

DETAILS :

Fixes redundant Pattern color space objects.
Bug 687022 "pdfwrite : Redundant color space objects"

Also fixed a bug in gx_serialize_Pattern.
</pre>
<p>[src/gdevpdfc.c 1.39, src/gdevpdfg.c 1.40, src/gdevpdfg.h 1.26, src/gdevpdfv.c 1.30, src/gspcolor.c 1.12]</p>
</blockquote>

<p><strong><a name="2003-09-09_1930"></a>
2003-09-09 19:30 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : A minor code cleanup.

DETAILS :

'sclose' is inserted for a conformity, rather it has no effect in this case.

The "fixme" comment is removed because it appears wrong.
If the color space is new, it needs a complete serialization
for storing the data to PDF resource. We can't delay the serialization
because the life time of the original color space may exceed before
the next comparizon happens. Contrary, if the color space is not new,
it also needs a complete serialization for a full comparison,
to know whether it is same color space.
Thus, a complete serialization is required in any case.
</pre>
<p>[src/gdevpdfc.c 1.38]</p>
</blockquote>

<p><strong><a name="2003-09-09_1603"></a>
2003-09-09 16:03 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Apply the color space serialization for color space comparizon.

DETAILS :

Fixes the bug 687022 "pdfwrite : Redundant color space objects"
</pre>
<p>[src/devs.mak 1.96, src/gdevpdfc.c 1.37, src/gdevpdfg.h 1.25]</p>
</blockquote>

<p><strong><a name="2003-09-09_1554"></a>
2003-09-09 15:54 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a serialization for color spaces and functions (continued 2).

DETAILS :

Fixes a bug in gs_function_Sd_serialize, fn_common_serialize.
</pre>
<p>[src/gsfunc.c 1.9, src/gsfunc0.c 1.12]</p>
</blockquote>

<p><strong><a name="2003-09-09_1425"></a>
2003-09-09 14:25 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a serialization for color spaces and functions (continued).

DETAILS :

This stuff will be used by high level devices for comparing color spaces.
A serialization will. be used because we need to compare color spaces,
which's life times don't intersect.

This patch only defines new functions but never calls them.
Regressions should not appear.
A draft implementation for the functions is provided.
A debugging of them will be a separate issue.
</pre>
<p>[src/gscie.h 1.13, src/gscscie.c 1.10, src/gsicc.c 1.11, src/gspcolor.c 1.11, src/lib.mak 1.139]</p>
</blockquote>

<p><strong><a name="2003-09-09_1244"></a>
2003-09-09 12:44 Igor Melichev</strong></p>
<blockquote>
<pre>
Implementing a serialization for color spaces and functions.

DETAILS :

This stuff will be used by high level devices for comparing color spaces.
A serialization will. be used because we need to compare color spaces,
which's life times don't intersect.

This patch only defines new functions but never calls them.
Regressions should not appear.
A draft implementation for the functions is provided.
A debugging of them will be a separate issue.
</pre>
<p>[src/gscdevn.c 1.15, src/gscdevn.h 1.8, src/gscolor2.c 1.15, src/gscpixel.c 1.9, src/gscscie.c 1.9, src/gscsepr.c 1.22, src/gscspace.c 1.10, src/gsfunc.c 1.8, src/gsfunc.h 1.9, src/gsfunc0.c 1.11, src/gsfunc3.c 1.16, src/gsfunc4.c 1.14, src/gxcspace.h 1.10, src/gxfunc.h 1.8, src/lib.mak 1.138]</p>
</blockquote>

<p><strong><a name="2003-09-08_1330"></a>
2003-09-08 13:30 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc compiler warnings.
</pre>
<p>[src/gdevdgbr.c 1.11, src/gstrans.c 1.18]</p>
</blockquote>

<p><strong><a name="2003-09-08_1319"></a>
2003-09-08 13:19 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Impproving the coordinate precision in function fill_rectangle_hl_color.

DETAILS :

It fixes the coordinate precision in the recent patch.
With pdfwrite the following files become better (closer to the old code) :
213-01.ps
255-01.ps
270-01.ps
442-01.ps
</pre>
<p>[src/gdevdflt.c 1.13, src/gdevnfwd.c 1.11, src/gdevpdfd.c 1.33, src/gsdps1.c 1.9, src/gspaint.c 1.8, src/gxdevcli.h 1.18]</p>
</blockquote>

<p><strong><a name="2003-09-08_1206"></a>
2003-09-08 12:06 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Cygwin/gcc compiler warnings.

DETAILS :

The change to zbfont.c may cause a progression on low endian platforms.
</pre>
<p>[src/gdevpdfc.c 1.36, src/gxcldev.h 1.13, src/gxcpath.c 1.8, src/lib.mak 1.137, src/zbfont.c 1.24, src/ztrans.c 1.21]</p>
</blockquote>

<p><strong><a name="2003-09-08_1145"></a>
2003-09-08 11:45 Igor Melichev</strong></p>
<blockquote>
<pre>
Defining a new device virtual function fill_rectangle_hl_color.
This fuction is used to implement gs_rectfill and gs_fillpage
with a high level color handling.

DETAILS :

The old device virtual function fill_rectangle has no way to pass a high level color.
Therefore high level devices always used process colors with rectfill and fillpage.
See gxdevcli.h for the definition of the new function.

The new function is used to implement gs_rectfill and gs_fillpage in pdfwrite.
gs_rectfill and gs_fillpage are modified to provide the new logics.
gdevpdfd.c is reorganised with factoring out some common code parts.

Fixes the bug #687024 "rectfill doesn't pass high level colors to device".

This patch causes a MINOR DIFFERENCE in color in all Genoa tests with pdfwrite :
a gray rectangle in the header gets a sligtly different gray value.

Besides that, the following files render few differently due to coordinate rounding in pdfwrite :
245-13.ps
442-01.ps
</pre>
<p>[src/gdevbbox.c 1.14, src/gdevdflt.c 1.12, src/gdevnfwd.c 1.10, src/gdevpdf.c 1.71, src/gdevpdfd.c 1.32, src/gdevpdfx.h 1.74, src/gdevrops.c 1.8, src/gsdps1.c 1.8, src/gspaint.c 1.7, src/gxclip.c 1.11, src/gxclip2.c 1.8, src/gxclipm.c 1.10, src/gxclist.c 1.11, src/gxdevcli.h 1.17, src/gxdevice.h 1.13, src/gxhldevc.c 1.3, src/gxhldevc.h 1.4, src/lib.mak 1.136]</p>
</blockquote>

<p><strong><a name="2003-09-05_2130"></a>
2003-09-05 21:30 Dan Coby</strong></p>
<blockquote>
<pre>
Add gxhldevc.c and gxhldevc.h to the file list.
</pre>
<p>[doc/Develop.htm 1.121]</p>
</blockquote>

<p><strong><a name="2003-09-04_1617"></a>
2003-09-04 16:17 Ralph Giles</strong></p>
<blockquote>
<pre>
VMS fix from Forrest Cahoon.
</pre>
<p>[src/gp_vms.c 1.35]</p>
</blockquote>

<p><strong><a name="2003-09-04_1451"></a>
2003-09-04 14:51 Igor Melichev</strong></p>
<blockquote>
<pre>
Removing rudiments of the old hinter (step 5).

DETAILS :

Removed an unused variable.
</pre>
<p>[src/gxtype1.c 1.31]</p>
</blockquote>

<p><strong><a name="2003-09-04_1431"></a>
2003-09-04 14:31 Igor Melichev</strong></p>
<blockquote>
<pre>
Removing rudiments of the old hinter (step 4).
</pre>
<p>[src/gxop1.h 1.7]</p>
</blockquote>

<p><strong><a name="2003-09-04_1428"></a>
2003-09-04 14:28 Igor Melichev</strong></p>
<blockquote>
<pre>
Removing rudiments of the old hinter (step 3).

DETAILS :

The structure gs_op1_state stored an unused data and now removed.

The change to gstype2.c ln 262-279 is not algorithmically equivalent.
The old code erroneusely called closepath in some cases.
It produced a small dirt in rendering.
Due to that, this patch causes progressions in rendering :

72pdi :

bugsample.pdf
PixelisAd.pdf
RodinCIDEmbed.pdf

300dpi :

bugsample.pdf
PixelisAd.pdf
</pre>
<p>[src/gdevpsfx.c 1.24, src/gstype1.c 1.28, src/gstype2.c 1.31, src/gxop1.h 1.6, src/gxtype1.c 1.30, src/gxtype1.h 1.17, src/lib.mak 1.135]</p>
</blockquote>

<p><strong><a name="2003-09-04_1210"></a>
2003-09-04 12:10 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Removing obsolete linker statements from Win32 linkage definitions (an addition 2).

DETAILS :

The patch http://www.ghostscript.com/pipermail/gs-cvs/2003-September/003574.html
was wrong. Now fixed.
</pre>
<p>[src/dwsetup.def 1.4, src/dwuninst.def 1.4, src/msvc32.mak 1.49]</p>
</blockquote>

<p><strong><a name="2003-09-04_1130"></a>
2003-09-04 11:30 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix (the new type 1 hinter) : Slightly sloped stems were wrongly grid-fitted.

DETAILS :

It shifted a stem pole to central coordinate of the stem.
Unsloped stems are insencitive, but sloped ones got a wrong placement.
Fixes the bug 687018 "Shift in glyph position/bbox using new font renderer".

This patch causes differences in rendering :

72pdi :

033-52-5873.pdf
alphabet.ps
bulletin.pdf
fonttest.pdf
HeiseiMinStd.pdf
Openhuis_pdf_zw.pdf
ridt91.eps
Svd.pdf

300dpi :

033-52-5873.pdf
045-01.ps
455690.pdf
86554321.pdf
aaon97_p7.pdf
adesso6.pdf
ai2.pdf
bulletin.pdf
fonttest.pdf
HeiseiMinStd.pdf
LD.pdf
Openhuis_pdf_zw.pdf
prob.pdf
ridt91.eps
RodinCIDEmbed.pdf
Svd.pdf

The baseline to be updated.
</pre>
<p>[src/gxhintn.c 1.32]</p>
</blockquote>

<p><strong><a name="2003-09-04_0952"></a>
2003-09-04 09:52 Jouk Jansen</strong></p>
<blockquote>
<pre>

 Committing in .

 OpenVMS patches

 Modified Files:
 	gs/src/gp_vms.c gs/src/openvms.mmk gs/src/vms_x_fix.h
 ----------------------------------------------------------------------
</pre>
<p>[src/gp_vms.c 1.34, src/openvms.mmk 1.26, src/vms_x_fix.h 1.7]</p>
</blockquote>

<p><strong><a name="2003-09-03_2031"></a>
2003-09-03 20:31 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Removing obsolete linker statements from Win32 linkage definitions (an addition).
</pre>
<p>[src/dwsetup.def 1.3, src/dwuninst.def 1.3, src/msvc32.mak 1.48]</p>
</blockquote>

<p><strong><a name="2003-09-03_2027"></a>
2003-09-03 20:27 Igor Melichev</strong></p>
<blockquote>
<pre>
Removing rudiments of the old hinter (step 3, final).
</pre>
<p>[src/gxhint1.c 1.7, src/gxhint2.c 1.8, src/gxhint3.c 1.9]</p>
</blockquote>

<p><strong><a name="2003-09-03_2021"></a>
2003-09-03 20:21 Igor Melichev</strong></p>
<blockquote>
<pre>
Removing rudiments of the old hinter (step 2).

DETAILS :

This patch removes rudiments of the old hinter, which were enclosed with
"#ifdef KEEP_OLD_HINTER", and removes gxhint1.c, gxhint2.c gxhint3.c
from makefiles.
</pre>
<p>[src/gstype2.c 1.30, src/gxtype1.c 1.29, src/gxtype1.h 1.16, src/lib.mak 1.134]</p>
</blockquote>

<p><strong><a name="2003-09-03_1620"></a>
2003-09-03 16:20 Jack Moffitt</strong></p>
<blockquote>
<pre>
Make run_nightly retry sending mail every 5 seconds.
</pre>
<p>[toolbin/tests/run_nightly 1.20]</p>
</blockquote>

<p><strong><a name="2003-09-03_0322"></a>
2003-09-03 03:22 Ralph Giles</strong></p>
<blockquote>
<pre>
Rename the client header errors.h to ierrors.h. This is more consistent
with iapi.h, and reduces the risk of a namespace conflict. The old
errors.h header is still available, and simply includes ierrors.h
for compatibility. This file is marked as deprecated and will be removed
in a future release.

This change is in response to a spurious report of a namespace conflict on MacOS in bug 686966.
</pre>
<p>[doc/API.htm 1.37, doc/C-style.htm 1.44, doc/Develop.htm 1.120, src/dmmain.c 1.2, src/dpmain.c 1.9, src/dwmain.c 1.13, src/dwmainc.c 1.15, src/dxmain.c 1.11, src/dxmainc.c 1.8, src/errors.h 1.8, src/fapi_ft.c 1.11, src/fapiufst.c 1.23, src/gs.c 1.11, src/gsdll.c 1.10, src/gsiomacres.c 1.5, src/ialloc.c 1.6, src/iapi.c 1.9, src/iapi.h 1.12, src/ibnum.c 1.7, src/iccfont.c 1.8, src/icontext.c 1.16, src/idict.c 1.8, src/idparam.c 1.8, src/ierrors.h 1.1, src/igc.c 1.10, src/igstate.h 1.8, src/iinit.c 1.9, src/ilocate.c 1.9, src/imain.c 1.33, src/imainarg.c 1.31, src/iname.c 1.7, src/inobtokn.c 1.5, src/int.mak 1.115, src/interp.c 1.15, src/iparam.c 1.9, src/iplugin.c 1.4, src/ireclaim.c 1.7, src/isave.c 1.8, src/iscan.c 1.14, src/iscanbin.c 1.13, src/iscannum.c 1.7, src/istack.c 1.6, src/iutil.c 1.9, src/iutil2.c 1.6, src/macos-fw.mak 1.7, src/opcheck.h 1.6, src/oper.h 1.6, src/os2.mak 1.34, src/zcid.c 1.8, src/zfile1.c 1.11, src/ziodev.c 1.13]</p>
</blockquote>

<p><strong><a name="2003-09-02_2250"></a>
2003-09-02 22:50 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing a high level color handling (a 3d improvement).

DETAILS :

This fixes the problem with 477-03.ps described in the bug #687023.
</pre>
<p>[src/gdevpdfc.c 1.35]</p>
</blockquote>

<p><strong><a name="2003-09-02_2157"></a>
2003-09-02 21:57 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing a high level color handling (a 2nd improvement).

DETAILS :

This fixes a minor bug in the patch
http://www.ghostscript.com/pipermail/gs-cvs/2003-August/003560.html :
use process color when gx_hld_get_color_space_and_ccolor returns an unknown result.
This change should not change behavior because this case currently never happens.
</pre>
<p>[src/gdevpdfg.c 1.39]</p>
</blockquote>

<p><strong><a name="2003-09-02_1910"></a>
2003-09-02 19:10 Ralph Giles</strong></p>
<blockquote>
<pre>
Propagate CFLAGS and LDFLAGS values set in the environment when configure
is run to the autoconf top-level makefile. Unlike passing the same values
to make, the values are added to the generated arguments and act supplementally.
Closes bug 686943.
</pre>
<p>[src/Makefile.in 1.27]</p>
</blockquote>

<p><strong><a name="2003-09-02_1547"></a>
2003-09-02 15:47 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing a high level color handling (an improvement).

DETAILS :

This fixes bugs in the patch
http://www.ghostscript.com/pipermail/gs-cvs/2003-August/003560.html :

1. pdf_cs_Pattern_uncolored_hl wrote a wrong base space of a Pattern space.
   It fixes a failure with 245-01.ps .

2. Improving the approximation in pdf_write_ccolor.
</pre>
<p>[src/gdevpdfc.c 1.34, src/gdevpdfg.c 1.38]</p>
</blockquote>

<p><strong><a name="2003-09-02_1017"></a>
2003-09-02 10:17 Igor Melichev</strong></p>
<blockquote>
<pre>
Removing rudiments of the old hinter (step 1).

DETAILS :

This patch encloses rudiments of the old hinter with "#ifdef KEEP_OLD_HINTER",
where KEEP_OLD_HINTER is undefined.

This change is algorithmically equivalent,
because the new hinter worked instead the old one. Only exception is
the change to gstype1.c ln 370 : the condition t1_hinter__is_x_fitting(h)
is waeker than the old pcis-&gt;fh.use_x_hints, because
the new hinter applies an X-grid fitting with a slightly sloped transforms.

The change to gdevpsfx.c define local arrays for storing hints.
The old code used the old hinter structures, which appear too heavy
for the need of gdevpsfx.c .
</pre>
<p>[src/gdevpsfx.c 1.23, src/gstype1.c 1.27, src/gstype2.c 1.29, src/gxhint1.c 1.6, src/gxhint2.c 1.7, src/gxhint3.c 1.8, src/gxhintn.c 1.31, src/gxhintn.h 1.14, src/gxtype1.c 1.28, src/gxtype1.h 1.15]</p>
</blockquote>

<p><strong><a name="2003-08-30_2218"></a>
2003-08-30 22:18 Ralph Giles</strong></p>
<blockquote>
<pre>
Add 'extern "C"' protection to iapi.h for inclusion in C++ clients. Closes
bug 686990.
</pre>
<p>[src/iapi.h 1.11]</p>
</blockquote>

<p><strong><a name="2003-08-30_1910"></a>
2003-08-30 19:10 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 686948 Dotted lines messing in PDF.  Draw all line cap
types for zero line lengths.  Previously only rounded caps were
drawn.

DETAILS:

This is a (minor) revision to a the previous fix from Jeong for
this problem.

For those people who do not remember, this problem involves a dashed
line with a zero line length for the imaged (pen down) part of the
dashed line.  Ghostscript currently calls this a degenerate situation
and does nothing except for round line caps.  Jeong had previously
proposed changing the test to any line cap except butt caps.  Jeong
removed this proposal after testing and finding that Adobe Acrobat
drew thin line segments even for butt line caps.

This proposal simply removes the test for line cap type completely.
It does still leaves a test for dot length = 0.

The routine already contains code for using adjacent line segments
to determine a 'direction' for zero length segments.

Testing with both butt and square line caps and with on axis and
diagonal lines produces results comparable to Adobe Acrobat.
(Acrobat is not consistent with segment widths for the butt joints.)
</pre>
<p>[src/gxstroke.c 1.9]</p>
</blockquote>

<p><strong><a name="2003-08-30_0803"></a>
2003-08-30 08:03 jeong</strong></p>
<blockquote>
<pre>
When a PDF file has an embedded TrueType font with wrong 'name' table
entry, /findname procedure in gs_ttf.ps throwed a rangecheck error.
Now it just returns 'false' as an output instead of making rangecheck
error.
Bug# 686903.
</pre>
<p>[lib/gs_ttf.ps 1.32]</p>
</blockquote>

<p><strong><a name="2003-08-28_1942"></a>
2003-08-28 19:42 Igor Melichev</strong></p>
<blockquote>
<pre>
pdfwrite : Implementing a high level color handling.

DETAILS :

pdfwrite now passes colors identically except minor problems,
which should be fixed soon :

1. rectfill still converts colors.
   This happens because gs_rectfill calls dev_proc(pdev,fill_rectangle),
   which doesn't pass device color.
   Therefore high level color is not available for pdfwrite.
   This is an architectural problem which requires a hard decision.

2. Some documents (gs.anotherfailure.pdf is an example) generate
   too many color space objects to the output PDF.
   Requires an optimization.

3. 477-03.ps embeds a color space that can't write to PDF due to PDF limitations.
   Process colors are written into PDF.

4. Few tests cause significant difference in colors :
	0.pdf               (yellow background)
	MagicEye.pdf        (yellow background)
	Fixed_Original.pdf
	Testform.v1.0.2.pdf (a gray rectangle disappears)
   To be analyzed.
</pre>
<p>[src/devs.mak 1.95, src/gdevpdfc.c 1.33, src/gdevpdfd.c 1.31, src/gdevpdfg.c 1.37, src/gdevpdfg.h 1.24, src/gdevpdfv.c 1.29, src/gdevpdtw.c 1.25, src/gdevpsdf.h 1.20, src/gdevpsdu.c 1.20, src/gxhldevc.c 1.2, src/gxhldevc.h 1.3]</p>
</blockquote>

<p><strong><a name="2003-08-28_1018"></a>
2003-08-28 10:18 Igor Melichev</strong></p>
<blockquote>
<pre>
Fix : Removing obsolete linker statements from Win32 likage definitions.
</pre>
<p>[src/dw32c.def 1.3, src/dwmain32.def 1.3, src/gsdll32.def 1.4]</p>
</blockquote>

<p><strong><a name="2003-08-26_2108"></a>
2003-08-26 21:08 Igor Melichev</strong></p>
<blockquote>
<pre>
Fixing all MSVC compiler warnings (icclib).
</pre>
<p>[icclib/icc.c 1.9]</p>
</blockquote>

<p><strong><a name="2003-08-26_2054"></a>
2003-08-26 20:54 Igor Melichev</strong></p>
<blockquote>
<pre>
Fixing all MSVC compiler warnings (Release build).
</pre>
<p>[src/gxclipm.c 1.9]</p>
</blockquote>

<p><strong><a name="2003-08-26_1538"></a>
2003-08-26 15:38 Igor Melichev</strong></p>
<blockquote>
<pre>
Fixing all MSVC compiler warnings.
</pre>
<p>[src/gdevpsdu.c 1.19, src/gdevupd.c 1.13, src/gsciemap.c 1.15, src/gswts.c 1.5, src/gxclrect.c 1.6, src/gxdda.h 1.5, src/gxshade.c 1.17, src/gxstroke.c 1.8, src/sdcparam.c 1.6]</p>
</blockquote>

<p><strong><a name="2003-08-26_1237"></a>
2003-08-26 12:37 Igor Melichev</strong></p>
<blockquote>
<pre>
A preparation for high level color handling in vector devices.

THIS IS INCOMPATIBLE CHANGE for devices derived from gx_device_vector.
Now they must implement the new virtual function can_handle_hl_color.
A simplest impementation compatible to the old behavior is to return false.

DETAILS :

The new code uses the new functions gx_hld_save_color and
gx_hld_saved_color_equal instead the old gx_saved_color_update.
This allows devices to know when the client color changes and
to generate the appropriate output. This affects
pdfwrite, pswrite, epswrite, pxlmono and pxlcolor devices.
However the devices still write device colors to output.
An implementation of writing the client color
in pdfwrite, pswrite, epswrite will be the next improvement.

Since a big part of color code is shared with pxlmono and pxlcolor,
we need a switch for checking whether the device can handle
high level colors. For this purpose we add a new
virtual function can_handle_hl_color to gx_device_vector_procs.
Currently all implementation of this function return false,
and all devices still write process colors.

A minor change : psdf_setfillcolor and psdf_setstrokecolor
are removed because they were never called.
</pre>
<p>[src/gdevpdfd.c 1.30, src/gdevpdfg.c 1.36, src/gdevpdfg.h 1.23, src/gdevpdfx.h 1.73, src/gdevpdtt.c 1.56, src/gdevps.c 1.36, src/gdevpsdf.h 1.19, src/gdevpsdu.c 1.18, src/gdevpx.c 1.14, src/gdevvec.c 1.20, src/gdevvec.h 1.12, src/gsdcolor.h 1.12, src/gxdcolor.c 1.12, src/gxhldevc.h 1.2, src/lib.mak 1.133]</p>
</blockquote>

<p><strong><a name="2003-08-21_1950"></a>
2003-08-21 19:50 Raph Levien</strong></p>
<blockquote>
<pre>
Fix decimal value of NoView annotation flag in annotvisible logic.
Fixes bug #687010.

DETAILS:

On page 493 of the PDF 1.4 reference, NoView is specified as bit
position 6, which would seem to correspond to the old value of 64.
However, for some reason Adobe counts its bit positions starting at
1, so the actual numeric value is 2^(bit pos - 1), or 32.
</pre>
<p>[lib/pdf_draw.ps 1.74]</p>
</blockquote>

<p><strong><a name="2003-08-21_1718"></a>
2003-08-21 17:18 Raph Levien</strong></p>
<blockquote>
<pre>
Re-enable tempfile creation with empty string prefix - was disabled
as part of tempfile prefix_is_simple checking patch.
</pre>
<p>[src/zfile.c 1.38]</p>
</blockquote>

<p><strong><a name="2003-08-21_1455"></a>
2003-08-21 14:55 Igor Melichev</strong></p>
<blockquote>
<pre>
Fixing some Cygwin/gcc warnings.
</pre>
<p>[src/gdevdgbr.c 1.10, src/gdevepsc.c 1.10, src/gdevmrun.c 1.5, src/gdevpdtw.c 1.24, src/gspath.c 1.8, src/gstype1.c 1.26, src/gstype1.h 1.8, src/gxcmap.c 1.16, src/gxcpath.c 1.7, src/gxhintn.c 1.30, src/gxpath.h 1.8, src/gzacpath.h 1.6, src/ifont2.h 1.6]</p>
</blockquote>

<p><strong><a name="2003-08-21_1425"></a>
2003-08-21 14:25 Igor Melichev</strong></p>
<blockquote>
<pre>
Removing the obsolete code DROPOUT_PREVENTION 0.

DETAILS :

The macros PSEUDO_RASTERIZATION, ADJUST_SERIF, CHECK_SPOT_CONTIGUITY
are left for further developmant. We intend to convert the filling algorithm into
a template like we did with gxdtfill.h . The goal is to generate
several instances of the algorithm optimized for different cases :
a non-character fill (with the path adjustment and with no dropout prevention),
character fill (with no path adjustment and with dropout prevention),
and spot topology analyzis for autohinting (no adjustment, no dropout prevention,
store trapezoids into a special storage). The ADJUST_SERIF code
probably will die after True Type hinter is done.
</pre>
<p>[src/gdevddrw.c 1.8, src/gdevddrw.h 1.3, src/gx.h 1.12, src/gxccache.c 1.18, src/gxchar.c 1.31, src/gxfill.c 1.39, src/gxpcopy.c 1.9, src/gxpflat.c 1.6, src/zchar42.c 1.11]</p>
</blockquote>

<p><strong><a name="2003-08-21_1347"></a>
2003-08-21 13:47 Igor Melichev</strong></p>
<blockquote>
<pre>
Removing the obsolete code NEW_TYPE1_HINTER 0 from the character renderer.

DETAILS :

A small part of the old Type 1 hinter is still called from gdevpsfx.c for
converting Type 1 font to Type 2. gdevpsfx.c to be ported to the new Type 1
hinter and then the old hinter (gxhint1.c, gxhint2.c, gxhint3.c) to be
completely removed.
</pre>
<p>[src/gstype1.c 1.25, src/gstype2.c 1.28, src/gx.h 1.11, src/gxtype1.c 1.27, src/gxtype1.h 1.14]</p>
</blockquote>

<p><strong><a name="2003-08-20_1953"></a>
2003-08-20 19:53 Igor Melichev</strong></p>
<blockquote>
<pre>
Removing the obsolete code PATTERN_STREAM_ACCUMULATION 0 .
</pre>
<p>[src/gdevpdf.c 1.70, src/gdevpdfi.c 1.49, src/gdevpdfm.c 1.32, src/gdevpdfv.c 1.28, src/gdevpdfx.h 1.72, src/gdevpdti.c 1.19, src/gsptype1.c 1.17, src/gx.h 1.10, src/gxpcmap.c 1.10, src/gxpcolor.h 1.9, src/zpcolor.c 1.11]</p>
</blockquote>

<p><strong><a name="2003-08-20_1758"></a>
2003-08-20 17:58 Igor Melichev</strong></p>
<blockquote>
<pre>
Removing the obsolete code NEW_COMBINE_PATH 0 .
</pre>
<p>[src/gp_dosfs.c 1.15, src/gp_iwatc.c 1.16, src/gp_macio.c 1.31, src/gp_ntfs.c 1.20, src/gp.h 1.26, src/gp_os2.c 1.29, src/gp_unifn.c 1.14, src/gp_unifs.c 1.14, src/gp_vms.c 1.33, src/icontext.c 1.15, src/icstate.h 1.12, src/imainarg.c 1.30, src/zfile.c 1.37, src/zfile1.c 1.10, lib/gs_ciddc.ps 1.12, lib/gs_fonts.ps 1.42, lib/gs_init.ps 1.95, lib/gs_res.ps 1.35]</p>
</blockquote>

<p><strong><a name="2003-08-19_2020"></a>
2003-08-19 20:20 Alex Cherepanov</strong></p>
<blockquote>
<pre>
Cygwin wants X11 libraries in the order Xt SM ICE Xext X11 but autoconf
generated them in the order SM ICE Xt Xext X11. Restore pre-autoconf order.
</pre>
<p>[src/configure.ac 1.33]</p>
</blockquote>

<p><strong><a name="2003-08-18_2338"></a>
2003-08-18 23:38 Ralph Giles</strong></p>
<blockquote>
<pre>
Raise the limit on interpreter memory to 1GB for regression testing. This
larger value is required to process the ai2.pdf test file with pdfwrite
at the default (720 dpi) resolution.
</pre>
<p>[toolbin/tests/gstestgs.py 1.21]</p>
</blockquote>

<p><strong><a name="2003-08-18_2121"></a>
2003-08-18 21:21 Dan Coby</strong></p>
<blockquote>
<pre>
This commit is part of extending support for high level colors to
high level devices.  In general, additions have been made to the
device colors to include the high level color values used to create
the device color.  A flag was also added to indicate if the color
information (in dev_color-&gt;ccolor) is valid.  There are also two
files being added to provide support for saving and comparing the
high level color information.
</pre>
<p>[src/devs.mak 1.94, src/gdevbbox.c 1.13, src/gdevdbit.c 1.9, src/gdevpdfb.c 1.19, src/gdevpdfd.c 1.29, src/gdevpdfg.c 1.35, src/gdevpdfi.c 1.48, src/gdevpdfv.c 1.27, src/gdevpdtt.c 1.55, src/gdevplnx.c 1.6, src/gdevps.c 1.35, src/gdevpx.c 1.13, src/gdevvec.c 1.19, src/gsciemap.c 1.14, src/gscolor.c 1.11, src/gscsepr.c 1.21, src/gsdcolor.h 1.11, src/gslib.c 1.12, src/gspcolor.c 1.10, src/gsptype2.c 1.13, src/gsptype2.h 1.8, src/gxacpath.c 1.9, src/gxcmap.c 1.15, src/gxdcolor.c 1.11, src/gxhldevc.c 1.1, src/gxhldevc.h 1.1, src/gxi12bit.c 1.6, src/gxicolor.c 1.9, src/gxifast.c 1.9, src/gximage3.c 1.12, src/gxipixel.c 1.9, src/gxpcmap.c 1.9, src/lib.mak 1.132]</p>
</blockquote>

<p><strong><a name="2003-08-18_2043"></a>
2003-08-18 20:43 Dan Coby</strong></p>
<blockquote>
<pre>
Fix for 686998 syntax error in findxref for customer 580.  The given
test file does not have 'startxref' on its own line.  This is a
violation of the PDF spec.  However Adobe Acrobat accepts the file.
This fix adds a check for this case and prints a warning message.
File processing then continues.

DETAILS:

This fix also includes moving the findxref inside of a stopped context
check in case any other problems are encountered while searching for
the xref table.  If a problem is now found during findxref, the xref
rebuild logic will be called.
</pre>
<p>[lib/pdf_main.ps 1.77, lib/pdf_rbld.ps 1.4]</p>
</blockquote>

<p><strong><a name="2003-08-18_2033"></a>
2003-08-18 20:33 Raph Levien</strong></p>
<blockquote>
<pre>
The invocation "./configure; make install" wasn't working because
the install target doesn't create the "standard directories", in
particular obj/. This patch simply adds the STDDIRS dependency to
the install-exec target, parallel to the existing std target, which
is the default chosen from a simple "make" invocation.
</pre>
<p>[src/unixinst.mak 1.32]</p>
</blockquote>

<p><strong><a name="2003-08-18_2030"></a>
2003-08-18 20:30 Ray Johnston</strong></p>
<blockquote>
<pre>
Fix non-conformance of "startjob" if password check fails. Previously, the
"quit" operator in systemdict was masked by a definition of /quit as /stop
in userdict, even if startjob failed due to password check or other reason.
</pre>
<p>[lib/gs_lev2.ps 1.30]</p>
</blockquote>

<p><strong><a name="2003-08-18_1702"></a>
2003-08-18 17:02 Ralph Giles</strong></p>
<blockquote>
<pre>
Bump the version number post-release.
</pre>
<p>[doc/News.htm 1.136, lib/gs_init.ps 1.94, src/gscdef.c 1.38, src/version.mak 1.66]</p>
</blockquote>

<p><strong><a name="2003-08-18_0150"></a>
2003-08-18 01:50 Ralph Giles</strong></p>
<blockquote>
<pre>
Protect a Carbon-only call in the MacOS code. This was preventing linking
in the Classic shlib build.
</pre>
<p>[src/gp_macio.c 1.30]</p>
</blockquote>

<p><strong><a name="2003-08-17_1741"></a>
2003-08-17 17:41 Ray Johnston</strong></p>
<blockquote>
<pre>
Add some more CMap files that have been encountered in files recently
submitted as bugs. Newer versions of some of the ETen CMap group are also
provided.
</pre>
<p>[Resource/CMap/ETHK-B5-H 1.1, Resource/CMap/ETHK-B5-V 1.1, Resource/CMap/ETen-B5-H 1.2, Resource/CMap/ETen-B5-UCS2 1.1, Resource/CMap/ETen-B5-V 1.2, Resource/CMap/ETenms-B5-H 1.1, Resource/CMap/ETenms-B5-V 1.1]</p>
</blockquote>

<p><strong><a name="2003-08-17_1052"></a>
2003-08-17 10:52 Russell Lang</strong></p>
<blockquote>
<pre>
Add the jbig2dec source directory to the Windows Release instructions.
</pre>
<p>[doc/Release.htm 1.81]</p>
</blockquote>

<h2><a name="Version8.11"></a>Version 8.11 (2003-08-16)</h2>

<p>
Ghostscript 8.11 is the first stable release since 8.00,
building on the features in the 8.10 beta, and with numerous 
additional fixes and improvements.
In particular, font rendering is greatly improved (thanks to Igor
Melichev's new hinting code), PDF 1.4 transparency rendering is much
more likely to be correct, and there is better support for CID font
substitution. Processing of incorrect and broken PDF files is also
improved, including files corrupted xref tables and non-ASCII font
names. Many other smaller fixes are included.
<p>
Users may want to experiment with the new -dAlignToPixels=0 setting,
which enables subpixel positioning for antialiased font rendering.

<p>
The following <a href="http://bugs.ghostscript.com/">bugs.ghostscript.com</a> numbers were open at
the time of this release:
<blockquote>
405501,
406273,
414947,
430175,
446344,
456692,
458261,
458775,
458780,
459647,
463688,
465936,
487460,
487953,
493348,
509829,
526099,
526491,
530011,
535366,
535932,
542629,
553187,
555072,
558151,
558435,
563287,
572865,
578865,
592160,
592837,
595760,
600288,
601336,
602263,
603934,
604722,
605830,
607425,
607850,
610478,
611898,
614298,
617077,
617523,
624515,
626295,
628110,
629335,
634036,
634358,
636210,
645316,
651644,
656414,
656510,
664484,
667301,
669654,
674241,
674417,
674418,
677324,
677383,
677430,
680301,
681469,
684778,
684866,
685335,
686746,
686747,
686750,
686752,
686765,
686770,
686778,
686779,
686782,
686788,
686789,
686796,
686803,
686813,
686815,
686816,
686817,
686819,
686822,
686824,
686833,
686834,
686837,
686839,
686841,
686842,
686843,
686844,
686845,
686850,
686852,
686853,
686860,
686863,
686865,
686867,
686873,
686877,
686883,
686885,
686889,
686892,
686896,
686897,
686902,
686903,
686904,
686908,
686909,
686919,
686930,
686931,
686933,
686936,
686937,
686938,
686943,
686944,
686946,
686947,
686948,
686949,
686950,
686951,
686952,
686953,
686954,
686956,
686957,
686958,
686959,
686961,
686963,
686966,
686975,
686978,
686980,
686981,
686990,
686996,
686998,
686999,
687000.
</blockquote>

<h3><a name="8.11_Incompatible_changes"></a>Incompatible changes</h3>

<p>The mechanism for locating resources has changed since 8.00. See the <a
href="Use.htm#Finding_files">usage documentation</a> for details of the new mechanism.

<p>Ghostscript now runs in save level 1 by default, which has changed since
8.10.  Jobservers will need to use the -dNOOUTERSAVE option to restore the
old behavior.

<h3>Changelog</h3>

<!-- generated by split_changelog.py from the output of cvs2cl.pl -->

<p><strong><a name="2003-08-16_1952"></a>
2003-08-16 19:52 giles</strong></p>
<blockquote>
<pre>
Correct the release date in the documentation footer and increment the version number for release.
</pre>
<p>[doc/API.htm 1.36, doc/Bug-form.htm 1.38, doc/Bug-info.htm 1.37, doc/C-style.htm 1.43, doc/Commprod.htm 1.29, doc/Copying.htm 1.28, doc/DLL.htm 1.32, doc/Deprecated.htm 1.9, doc/Develop.htm 1.119, doc/Devices.htm 1.69, doc/Drivers.htm 1.40, doc/Fonts.htm 1.38, doc/Helpers.htm 1.32, doc/History1.htm 1.28, doc/History2.htm 1.28, doc/History3.htm 1.28, doc/History4.htm 1.28, doc/History5.htm 1.30, doc/History6.htm 1.45, doc/History7.htm 1.33, doc/History8.htm 1.5, doc/Htmstyle.htm 1.33, doc/Install.htm 1.43, doc/Issues.htm 1.38, doc/Language.htm 1.75, doc/Lib.htm 1.31, doc/Maintain.htm 1.39, doc/Make.htm 1.69, doc/New-user.htm 1.48, doc/Projects.htm 1.53, doc/Ps-style.htm 1.26, doc/Ps2epsi.htm 1.30, doc/Ps2pdf.htm 1.55, doc/Psfiles.htm 1.49, doc/Readme.htm 1.51, doc/Source.htm 1.28, doc/Tester.htm 1.28, doc/Testing.htm 1.22, doc/Unix-lpr.htm 1.28, doc/Use.htm 1.88, doc/Xfonts.htm 1.28, doc/gs-vms.hlp 1.27]</p>
</blockquote>

<p><strong><a name="2003-08-16_1948"></a>
2003-08-16 19:48 giles</strong></p>
<blockquote>
<pre>
Bump the release date for Ghostscript 8.11.
</pre>
<p>[doc/News.htm 1.134, doc/Release.htm 1.80, man/dvipdf.1 1.26, man/font2c.1 1.26, man/gs.1 1.27, man/gslp.1 1.26, man/gsnd.1 1.26, man/pdf2dsc.1 1.25, man/pdf2ps.1 1.27, man/pdfopt.1 1.25, man/pf2afm.1 1.26, man/pfbtopfa.1 1.27, man/printafm.1 1.26, man/ps2ascii.1 1.25, man/ps2epsi.1 1.24, man/ps2pdf.1 1.31, man/ps2pdfwr.1 1.30, man/ps2ps.1 1.33, man/wftopfa.1 1.26, src/version.mak 1.65]</p>
</blockquote>

<p><strong><a name="2003-08-16_1943"></a>
2003-08-16 19:43 giles</strong></p>
<blockquote>
<pre>
Document testing.cfg as well as testing.cfg.example.
</pre>
<p>[doc/Testing.htm 1.21]</p>
</blockquote>

<p><strong><a name="2003-08-16_0753"></a>
2003-08-16 07:53 raph</strong></p>
<blockquote>
<pre>
Cleans up the behavior of the .tempfile operator, primarily making it
consistent across all the platforms, ensuring that the TMPDIR and TEMP
environment variables are effective, the system temp directory is used
when these are not specified, and the permissions for tempfile
creation work as expected (allowed in the simple case, but closing off
potential vulnerabilities in other cases. Intended as a final fix for
bug #686922.

DETAILS:

1. The permissions behavior of .tempfile is changed so that simple
prefixes are always allowed, absolute pathname prefixes are checked
using the PermitFileWriting logic, and other cases are disallowed. In
particular, it is no longer possible to specify temp prefixes relative
to the current directory, or as subdirectories of the standard temp
directory. Both such cases are potential security holes, and are
probably not useful in any real application.

2. The meaning of gp_open_scratch_file() is made more consistent
across the platforms. In particular, it is now the clear
responsibility of this function to add the appropriate temp
directory. As such, gp_gettmpdir() is no longer exported in the public
gp.h interface (gpmisc.h is intended only for the convenience of gp_
implementations).

3. On VMS, gp_open_scratch_file() didn't previously add the
temporary directory pathname. Now it does.

4. On Windows, gp_open_scratch_file()'s behavior was somewhat
inconsistent, calling GetTempPath() only when the length of the TMPDIR
or TEMP environment variables overflowed the buffer provided. It
now additionally uses GetTempPath() in the cases where these
environment variables are not set.

5. Since gp_open_scratch_file() now takes responsibility for
determining the temporary directory, ztempfile() no longer attempts
to do this.
</pre>
<p>[doc/Language.htm 1.74, src/gp.h 1.25, src/gp_mswin.c 1.22, src/gp_vms.c 1.32, src/gpmisc.h 1.12, src/lib.mak 1.131, src/zfile.c 1.36]</p>
</blockquote>

<p><strong><a name="2003-08-16_0651"></a>
2003-08-16 06:51 ray</strong></p>
<blockquote>
<pre>
Convert ASCII range font names found during the FONTPATH scanning to
simole ASCII aliases (original Unicode names preserved). Fixes bug 686861
for customer 131.

DETAILS:

This is an interim patch that establishes the alias in the ASCII code
range if (and only if) the high byte of ALL characters in the name are
NULL (\000).

The future improved implementation would be to add a UTF-8 fontname when
the TTF font has the name in Unicode. This would allow simple PostScript
applications that use the 8-bit character name to work as this patch does.
</pre>
<p>[lib/gs_fonts.ps 1.41]</p>
</blockquote>

<p><strong><a name="2003-08-16_0042"></a>
2003-08-16 00:42 ray</strong></p>
<blockquote>
<pre>
Pass path across grestore using base "identity" coordinates to prevent
limitcheck errors. The upath operator returns coordinates in the current
user space, but these are no longer valid across a CTM change such as
"grestore" or "setgstate" causes. Fixes SF bug #687001 for customers
580 and 590.

DETAILS:
The patch gets the upath using identity user space, then stuffs it into
the graphics state after the grestore in the same identity space
restoring the CTM of the grestore after the uappend.

Both grestore_nopath and setgstate are modified. These could probably
be refactored later to share PS code, but the value is minimal (IMO).

Interesting that this hadn't turned up before, but two customers tripped
over this recently.
</pre>
<p>[lib/pdf_ops.ps 1.31]</p>
</blockquote>

<p><strong><a name="2003-08-15_2232"></a>
2003-08-15 22:32 raph</strong></p>
<blockquote>
<pre>
Fixes two pointers to freed objects that were left dangling
in the PDF 1.4 transparency logic. Fixes bug #686994.

DETAILS:

With some test files, saved graphics states had held on to pointers to
the device filter stack that had already been freed by a
gs_pop_device_filter() call. These dangling pointers can cause garbage
collection corruption. This patch introduces reference counting
discipline to these pointers so that the dfilter_stack objects are not
actually freed until the last reference is dropped.

A similar but simpler argument applies to the pdf14_ctx object in the
pdf14_device. This patch simply sets the pointer to NULL when freeing
the context.
</pre>
<p>[src/gdevp14.c 1.19, src/gsdfilt.c 1.8, src/gsdfilt.h 1.9, src/gsstate.c 1.21, src/gzstate.h 1.9]</p>
</blockquote>

<p><strong><a name="2003-08-15_2023"></a>
2003-08-15 20:23 giles</strong></p>
<blockquote>
<pre>
Correct a typo in the previous commit.
</pre>
<p>[src/gp_macio.c 1.29]</p>
</blockquote>

<p><strong><a name="2003-08-15_2019"></a>
2003-08-15 20:19 giles</strong></p>
<blockquote>
<pre>
Remove redunant prototypes from gp_mac.h and modernise the implementation
of gp_open_scratch_file on MacOS to match the updated prototype in gp.h.
Also adds some limit checking in that implementation.

Note that gp_mac.h is now empty. I've left it in the build in expectation of
future usefulness.
</pre>
<p>[src/gp_mac.h 1.5, src/gp_macio.c 1.28]</p>
</blockquote>

<p><strong><a name="2003-08-14_2228"></a>
2003-08-14 22:28 Russell Lang</strong></p>
<blockquote>
<pre>
Update DSC parser to latest version from GSview.

DETAILS:
Recognise MacBinary or AppleSingle files and process the data
fork only, similar to DOS EPS files.
Handle DCS2 files that contravene the spec by putting the TIFF
preview between the composite and the separations.
Recognise CMYK and RGB names if separations are renamed using
epstool.
</pre>
<p>[src/dscparse.c 1.13, src/dscparse.h 1.12]</p>
</blockquote>

<p><strong><a name="2003-08-14_1956"></a>
2003-08-14 19:56 alexcher</strong></p>
<blockquote>
<pre>
Fix make files and portability layer to compile on Borland 5.5
freeware compiler.
</pre>
<p>[src/bcwin32.mak 1.29, src/unistd_.h 1.9, src/winint.mak 1.20]</p>
</blockquote>

<p><strong><a name="2003-08-14_1752"></a>
2003-08-14 17:52 alexcher</strong></p>
<blockquote>
<pre>
Include time.h and sys/time.h on Intel compiler as requested by Duraid Madina.
Fix bug 686984
</pre>
<p>[src/time_.h 1.7]</p>
</blockquote>

<p><strong><a name="2003-08-14_1732"></a>
2003-08-14 17:32 alexcher</strong></p>
<blockquote>
<pre>
Update non-DLL version to support visual tracer.
Fix bug 686993
</pre>
<p>[src/dwdll.c 1.6, src/dwnodll.c 1.5, src/msvc32.mak 1.47]</p>
</blockquote>

<p><strong><a name="2003-08-13_1604"></a>
2003-08-13 16:04 alexcher</strong></p>
<blockquote>
<pre>
Fix portability issues: add a portable header for sscanf() and
use specific handle HDROP instead of generic HANDLE.
</pre>
<p>[src/dwimg.c 1.9, src/winint.mak 1.19]</p>
</blockquote>

<p><strong><a name="2003-08-13_1556"></a>
2003-08-13 15:56 alexcher</strong></p>
<blockquote>
<pre>
Don't rely on MS linker merging global variables defined multiple times.
</pre>
<p>[src/dwtrace.h 1.5]</p>
</blockquote>

<p><strong><a name="2003-08-13_1554"></a>
2003-08-13 15:54 alexcher</strong></p>
<blockquote>
<pre>
Update GS icon file by re-saving it in MSVC 6. Old icon file was incompatible
with OpenWatcom resource compiler.
</pre>
<p>[src/gswin.icx 1.2]</p>
</blockquote>

<p><strong><a name="2003-08-13_1549"></a>
2003-08-13 15:49 alexcher</strong></p>
<blockquote>
<pre>
Remove comma from the linker command line because the following indirect
file contains keyword-value pairs, not a list of values.
</pre>
<p>[src/watcw32.mak 1.27]</p>
</blockquote>

<p><strong><a name="2003-08-13_1514"></a>
2003-08-13 15:14 alexcher</strong></p>
<blockquote>
<pre>
OpenWatcom doesn't define LPRGBQUAD. Add the corresponding typedef.
Partial fix for 686816
</pre>
<p>[src/windows_.h 1.5]</p>
</blockquote>

<p><strong><a name="2003-08-12_1413"></a>
2003-08-12 14:13 ray</strong></p>
<blockquote>
<pre>
Add the headers (&#36;Id: &#36; line and copyright notices).
</pre>
<p>[toolbin/genfontmap.ps 1.2]</p>
</blockquote>

<p><strong><a name="2003-08-12_1332"></a>
2003-08-12 13:32 igor</strong></p>
<blockquote>
<pre>
Fix : The condition for empty environment string was wrong in ztempfile.
Bug 686922 "no default temp dir"
</pre>
<p>[src/zfile.c 1.35]</p>
</blockquote>

<p><strong><a name="2003-08-11_1914"></a>
2003-08-11 19:14 igor</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : The default implementation of stringwidth is incompatible with Type 3 font processing.

DETAILS :

With Type 3 fonts the default implementation of stringwidth renders characters to PS cache,
causing them to convert to bitmaps in further rendering. This patch implements stringwidth
with Type 3 fonts inside pdfwrite, allowing the charproc accumulation during stringwidth.

Bug 686992 "Duplicated characters in Arabian Type 3".
</pre>
<p>[src/gdevpdte.c 1.43, src/gdevpdtt.c 1.54, src/gxchar.c 1.30, src/gxchar.h 1.14]</p>
</blockquote>

<p><strong><a name="2003-08-11_1742"></a>
2003-08-11 17:42 ray</strong></p>
<blockquote>
<pre>
Correct offsets into .bigstring (broken when string size changed from 1000).
</pre>
<p>[lib/gs_frsd.ps 1.8]</p>
</blockquote>

<p><strong><a name="2003-08-11_1150"></a>
2003-08-11 11:50 igor</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Don't write OP into charprocs.

DETAILS :

Bug 686986  "Could not find the extended graphic state ..." error
</pre>
<p>[src/gdevpdfg.c 1.34]</p>
</blockquote>

<p><strong><a name="2003-08-11_1144"></a>
2003-08-11 11:44 igor</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Check a run out charstring while converting Type 1 font into Type2.

DETAILS :

1. Compare the instruction pointer with the charstring end address (gdevpsfx.c).
2. Error codes were not propagated.

Bug 686985 "pdfwriter segfaults converting a charstring".
</pre>
<p>[src/gdevpdtb.c 1.21, src/gdevpsf2.c 1.27, src/gdevpsfx.c 1.22]</p>
</blockquote>

<p><strong><a name="2003-08-10_0633"></a>
2003-08-10 06:33 dan</strong></p>
<blockquote>
<pre>
Fix for Bug 686991  Memory leak in CET test file 12-07.ps.

DETAILS:

A pointer to a free object was found while running the CET with the
memory allocation test switches (-Z@?&#36;).  The free object was a color
space and the pointer was inside a gs_image_enum_common structure.

The situation occurs when an error is found in the data source for
for an image.   The actual cause was that the image enum common
structure should have also been released.

Note:  The data source checking is the only place that has this
problem.  After the data source checking, the image enum common
structure pointer is placed into an image enum structure.  Errors
that are detected after that point call gx_image_cleanup which
handles all of the data in the image enum structure including the
image enum common structure.
</pre>
<p>[src/zimage.c 1.12]</p>
</blockquote>

<p><strong><a name="2003-08-08_1845"></a>
2003-08-08 18:45 ray</strong></p>
<blockquote>
<pre>
Adjust internal string lengths to allow for long path/filenames such as
for Resource paths. OS limits may be shorter than the 8192 length allowed
for after this changes, but now interpreter internals won't cause a failure.
Customer 590 found this with a long GenericResourceDir. Bug #686989.

DETAILS:

While 8192 is also arbitrary, now all strings used for path/filenames are
the same and probably long enough for a while.

Also I made all the string lengths used for file copy operations be the
same 64000 bytes (they were highly inconsistent).
</pre>
<p>[lib/gs_cidcm.ps 1.11, lib/gs_diskn.ps 1.5, lib/gs_fntem.ps 1.7, lib/gs_fonts.ps 1.40, lib/gs_frsd.ps 1.7, lib/gs_pdfwr.ps 1.36, lib/gs_pfile.ps 1.5, lib/gs_res.ps 1.34, lib/gs_resst.ps 1.3, lib/gs_statd.ps 1.12, lib/gslp.ps 1.6, lib/pdf_main.ps 1.76, lib/pphs.ps 1.6, lib/wftopfa.ps 1.5]</p>
</blockquote>

<p><strong><a name="2003-08-07_1819"></a>
2003-08-07 18:19 ray</strong></p>
<blockquote>
<pre>
Add a utility to create a Fontmap format file after forcing a scan of all
FONTPATH directories. The created Fontmap file will contain direct links
to all fonts found, so that subsequent runs of Ghostscript that use this
Fontmap won't need to perform the time consuming scan of the FONTPATH.
</pre>
<p>[toolbin/genfontmap.ps 1.1]</p>
</blockquote>

<p><strong><a name="2003-08-07_1709"></a>
2003-08-07 17:09 igor</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Widths were computed wrongly with Type 3 fonts.

DETAILS :

1. With glyphshow process_text_modify_width called pdf_char_widths with GS_NO_CHAR.

2. In pdf_char_widths an index for real_widths array was wrong (2 times smaller) with Type 3.

3. Now we write Widths as reals, improving the precision.
   Now the precision isn't smaller than 1/100, rather the old code
   looses all significant digits when a width is smaller than 1.
   A better way would be re-scaling the font, but currently we don't see a strong need for that.

Bug 686988 "test-setweightvector.ps wrongly converts to PDF".

This patch fixes the test-setweightvector.ps problem and improves glyph positions in
Altona.Page_3.2002-09-27.pdf .
</pre>
<p>[src/gdevpdte.c 1.42, src/gdevpdtw.c 1.23]</p>
</blockquote>

<p><strong><a name="2003-08-06_1705"></a>
2003-08-06 17:05 alexcher</strong></p>
<blockquote>
<pre>
Allocate larger buffer for generated charstrings. Old allocation was
insufficient for gray block characters. (Unicode 2591, 2592, 2593).
Fix bug 686987.
</pre>
<p>[lib/bdftops.ps 1.7]</p>
</blockquote>

<p><strong><a name="2003-08-06_1624"></a>
2003-08-06 16:24 giles</strong></p>
<blockquote>
<pre>
Disable the legacy macstdio device in the default Codewarrior build. It conflicts
with and is obsoleted by the modern Metrowerks Standard Library and our default
Carbon build, which most users are now using.
</pre>
<p>[src/macos-mcp.mak 1.21]</p>
</blockquote>

<p><strong><a name="2003-08-06_1613"></a>
2003-08-06 16:13 giles</strong></p>
<blockquote>
<pre>
Remove an unused local variable
</pre>
<p>[src/gdevpdtw.c 1.22]</p>
</blockquote>

<p><strong><a name="2003-08-06_1550"></a>
2003-08-06 15:50 giles</strong></p>
<blockquote>
<pre>
Fix incorrect line endings.
</pre>
<p>[src/gdevpdtw.c 1.21]</p>
</blockquote>

<p><strong><a name="2003-08-04_1351"></a>
2003-08-04 13:51 giles</strong></p>
<blockquote>
<pre>
Document adding the jbig2dec source to the source release.
</pre>
<p>[doc/Release.htm 1.79]</p>
</blockquote>

<p><strong><a name="2003-08-02_2250"></a>
2003-08-02 22:50 igor</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Providing an access to the original font matrix via a special
font dictionary key /.OrigFont (part 2).

DETAILS :

The patch
http://www.ghostscript.com/pipermail/gs-cvs/2003-August/003482.html
was buggy. This patch corrects it and fixes the 2003-08-02 regression
with two_encodings.ps .
</pre>
<p>[src/gdevpdtt.c 1.53, src/zbfont.c 1.23]</p>
</blockquote>

<p><strong><a name="2003-08-02_1552"></a>
2003-08-02 15:52 igor</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : A workaround for Type 3 fonts with instandard BuildChar.

DETAILS :

Bug 686982 "Wrong characters in PDF".
</pre>
<p>[src/gdevpdti.c 1.18, src/gsccode.h 1.12, src/zbfont.c 1.22]</p>
</blockquote>

<p><strong><a name="2003-08-02_1200"></a>
2003-08-02 12:00 igor</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : xshow, xyshow array index was wrong.

DETAILS :

Bug 686976 "type3 fonts are mangled in pdf conversion",
but the problem was more general than Type3.
</pre>
<p>[src/gdevpdtc.c 1.26, src/gdevpdte.c 1.41]</p>
</blockquote>

<p><strong><a name="2003-08-02_0954"></a>
2003-08-02 09:54 igor</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : gs_copied_can_copy_glyphs used glyph names instead glyph indices with Type 42.

DETAILS :

This change is a continuation of the glyph/glyph_index cleanup
started in http://www.ghostscript.com/pipermail/gs-cvs/2003-June/003354.html .

Bug 686983 "TT fonts converted to type3".
</pre>
<p>[src/gxfcopy.c 1.31]</p>
</blockquote>

<p><strong><a name="2003-08-01_2037"></a>
2003-08-01 20:37 igor</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Providing an access to the original font matrix via a special
font dictionary key /.OrigFont .

DETAILS :

The new key is implementation specific and should not affect regular documents.
It works for the case when a font is copied like this :

	/x findfont dup length dict copy
	/y exch definefont

- it points from the copy to the original font.

This change fixes Ghostscript Bug 686970 "Overlapping characters"
and causes a progression with 455690.pdf with pdfwrite.

A long ago Peter L. Deutsch and me discussed the heuristic in
pdf_font_orig_matrix/font_orig_scale. I was aware of its limitations,
but I followed Peter's authority. Now we get a real case that it can't handle,
and therefore I take the responsibility for the different approach.

-igor.
</pre>
<p>[lib/gs_fonts.ps 1.39, src/gdevpdtt.c 1.52, src/gsfont.c 1.21, src/gxfont.h 1.20, src/zbfont.c 1.21]</p>
</blockquote>

<p><strong><a name="2003-08-01_1650"></a>
2003-08-01 16:50 jack</strong></p>
<blockquote>
<pre>
Update News.htm with current open bugs and incompatible changes.
</pre>
<p>[doc/News.htm 1.133]</p>
</blockquote>

<p><strong><a name="2003-08-01_1553"></a>
2003-08-01 15:53 giles</strong></p>
<blockquote>
<pre>
Remove a redundant dependency definition.
</pre>
<p>[src/lib.mak 1.130]</p>
</blockquote>

<p><strong><a name="2003-08-01_1540"></a>
2003-08-01 15:40 giles</strong></p>
<blockquote>
<pre>
Set release dates on the documenation.
</pre>
<p>[doc/News.htm 1.132, man/dvipdf.1 1.25, man/font2c.1 1.25, man/gs.1 1.26, man/gslp.1 1.25, man/gsnd.1 1.25, man/pdf2dsc.1 1.24, man/pdf2ps.1 1.26, man/pdfopt.1 1.24, man/pf2afm.1 1.25, man/pfbtopfa.1 1.26, man/printafm.1 1.25, man/ps2ascii.1 1.24, man/ps2epsi.1 1.23, man/ps2pdf.1 1.30, man/ps2pdfwr.1 1.29, man/ps2ps.1 1.32, man/wftopfa.1 1.25]</p>
</blockquote>

<p><strong><a name="2003-08-01_1521"></a>
2003-08-01 15:21 giles</strong></p>
<blockquote>
<pre>
Update release date for stable 8.11 release.
</pre>
<p>[doc/News.htm 1.131, src/gscdef.c 1.37, src/version.mak 1.64]</p>
</blockquote>

<p><strong><a name="2003-07-31_2014"></a>
2003-07-31 20:14 alexcher</strong></p>
<blockquote>
<pre>
Create a table that decides whether the glyph index belongs to
[WinAnsiEncoding, StandardEncoding, MacExpertEncoding], or SymbolEncoding,
or none of them. Use this table instead of searching the encoding vectors
for every glyph.
Fix bug 686929
</pre>
<p>[doc/Develop.htm 1.118, src/devs.mak 1.93, src/gdevpdtv.c 1.1, src/gdevpdtv.h 1.1, src/gdevpdtw.c 1.20, toolbin/encs2c.ps 1.4]</p>
</blockquote>

<p><strong><a name="2003-07-31_1215"></a>
2003-07-31 12:15 igor</strong></p>
<blockquote>
<pre>
Fix (the new Type 1 hinter) : Accent was misplaced in composite Type 2 glyphs.

DETAILS :

Bug 686971 "Characters with accents problem".
Expected progressions :

	Altona.Page_3.2002-09-27.pdf
	Svd.pdf
</pre>
<p>[src/gstype2.c 1.27, src/gxhintn.c 1.29]</p>
</blockquote>

<p><strong><a name="2003-07-30_2024"></a>
2003-07-30 20:24 giles</strong></p>
<blockquote>
<pre>
Document the .bindnow operator and the need to rebind bind to .bind after
calling it with -dDELAYBIND. Closes bug 633299.
</pre>
<p>[doc/Language.htm 1.73, doc/Use.htm 1.87]</p>
</blockquote>

<p><strong><a name="2003-07-30_1548"></a>
2003-07-30 15:48 ray</strong></p>
<blockquote>
<pre>
Remove superfluous 'save pop' from .setpdfwrite definition since gs_init.ps
now performs the outer level save which addresses the font loading issue
.setpdfwrite was solving.
</pre>
<p>[lib/gs_pdfwr.ps 1.35]</p>
</blockquote>

<p><strong><a name="2003-07-30_1335"></a>
2003-07-30 13:35 ray</strong></p>
<blockquote>
<pre>
Add -dNOOUTERSAVE when -c false 0 startjob pop is used to set up a job
server environment so that Genoa tests will operate as if under a job
server and so that global VM will be restored when Genoa tests check the
exitserver operation.
</pre>
<p>[toolbin/tests/gstestgs.py 1.20]</p>
</blockquote>

<p><strong><a name="2003-07-30_0726"></a>
2003-07-30 07:26 ray</strong></p>
<blockquote>
<pre>
Add an initial outermost save unless -dNOOUTERSAVE option is specified.
Fixes Bug #686972 and others that were closed with the instructions to
use -c "save pop" prior to the file.

DETAILS:
The initial save is needed for several ProcSets from Adobe applications
and those of other vendors that expect objects in global VM to be retained
after a restore that would otherwise remove objects in global VM defined
after the corresponding save.

This kept recurring because several ProcSets from Adobe, Quark and others
expect to run under a job server. The -dNOOUTERSAVE is needed for backward
compatibility and for those that want to run under a job server and want
global VM to be restored between jobs (as expected under a job server).

Note that the save object is discarded so that it cannot be used to restore
to the state prior to .setsafe and thus circumvent security when -dNOSAFER
is used and .setsafe or .locksafe is subsequently used to go to SAFE mode.
</pre>
<p>[doc/Use.htm 1.86, lib/gs_init.ps 1.93]</p>
</blockquote>

<p><strong><a name="2003-07-30_0025"></a>
2003-07-30 00:25 giles</strong></p>
<blockquote>
<pre>
Properly handle the absence of a parameter dictionary in the JBIG2Decode
filter implementation. Closes bug 686979.

DETAILS:

Filter implementations can be called with &lt;source&gt; &lt;paramdict&gt; or just
with &lt;source&gt; on the stack. Previously our jbig2 decode filter only
supported the former. This went undetected because previous files we'd
encountered from the CVISION and Adobe encoders included a /JBIG2Globals
filter parameter even if it was empty. The file submitted with the bug
has no filter params at all for the JBIG2Decode stream. It identifies
itself as having been generated by CVISION Technologies' PDFCompressor 2.0.
</pre>
<p>[src/zfjbig2.c 1.3]</p>
</blockquote>

<p><strong><a name="2003-07-29_1224"></a>
2003-07-29 12:24 giles</strong></p>
<blockquote>
<pre>
Correct capitalization of the -d parameter in the IJS examples.
</pre>
<p>[doc/Devices.htm 1.68]</p>
</blockquote>

<p><strong><a name="2003-07-26_1923"></a>
2003-07-26 19:23 dan</strong></p>
<blockquote>
<pre>
Correct a problem which was created when the SeparationOrder parameter
was implemented.  The usual symptom was an uninitialized value left in
the cyan component for a gray color space.
</pre>
<p>[src/gdevdevn.c 1.9]</p>
</blockquote>

<p><strong><a name="2003-07-25_1408"></a>
2003-07-25 14:08 giles</strong></p>
<blockquote>
<pre>
Build fix of the jbig2 makefile. OOur portable (v)snprintf implementation is
in snprintf.c, notvsnprintf.c. Reported in but 686966.
</pre>
<p>[src/jbig2.mak 1.6]</p>
</blockquote>

<p><strong><a name="2003-07-25_0005"></a>
2003-07-25 00:05 giles</strong></p>
<blockquote>
<pre>
Record that .buildnativefontmap has been run even if .getnativefonts returns
false (unimplemented). This was causing an endless loop if a font was not
found as dofindfont tried to call the native font enumeration code over and
over.
</pre>
<p>[lib/gs_fonts.ps 1.38]</p>
</blockquote>

<p><strong><a name="2003-07-24_1522"></a>
2003-07-24 15:22 ray</strong></p>
<blockquote>
<pre>
Fix a SEGV that could occur during 'shfill' if a GC occurred between the
.buildhading and the .shfill internal operators.

DETAILS:

The DataSource sub-structure that is part of the shading_mesh_params was
not being traced, so that memory pointed to by elements of that structure
would be prematurely freed.

This was detected running files produced by libGL2ps that turned an Open GL
rendering into LOTS of shapes to be filled with Gouraud triangles.
</pre>
<p>[src/gsshade.c 1.9, src/gsshade.h 1.7, src/gsstruct.h 1.16]</p>
</blockquote>

<p><strong><a name="2003-07-24_0025"></a>
2003-07-24 00:25 giles</strong></p>
<blockquote>
<pre>
Fix security issue with .setnativefontmapbuilt. Procedures that change the
systemdict must be execute-only so the .forceput cannot be extracted and
used to change other parameters. Thanks to Russell Lang for this.
</pre>
<p>[lib/gs_fonts.ps 1.37]</p>
</blockquote>

<p><strong><a name="2003-07-24_0007"></a>
2003-07-24 00:07 giles</strong></p>
<blockquote>
<pre>
Since globaldict isn't always available and userdict is subject to save/restore,
keep /.nativefontmapbuilt in systemdict, with an accompanying procedure to set
its value since systemdict is read-only from the normal runlevel.
</pre>
<p>[lib/gs_fonts.ps 1.36]</p>
</blockquote>

<p><strong><a name="2003-07-23_2331"></a>
2003-07-23 23:31 giles</strong></p>
<blockquote>
<pre>
Record whether the .buildnativefontmap has been run as a boolean under
the key /.nativefontmapbuilt in userdict, instead of the array hack
used previously.

A better choice would be globaldict which is less susceptible to save/restore
but this is a language level 2 feature and not defined with gs_fonts.ps is
run.
</pre>
<p>[lib/gs_fonts.ps 1.35]</p>
</blockquote>

<p><strong><a name="2003-07-23_2127"></a>
2003-07-23 21:27 raph</strong></p>
<blockquote>
<pre>
More transparency fixes: set color space when computing /BC in soft-mask
transparency groups. Implement /TR transfer function in soft-mask groups.
</pre>
<p>[lib/pdf_draw.ps 1.73, src/gdevp14.c 1.18]</p>
</blockquote>

<p><strong><a name="2003-07-23_1720"></a>
2003-07-23 17:20 giles</strong></p>
<blockquote>
<pre>
Enable native font enumeration by default. This change also corrects some
flaws in the search logic. Like with the FONTPATH directory scanning,
.buildnativefontmap will only be called the first time a font cannot be found.
However, it can still be run manually to update the in-memory Fontmap.

DETAILS:

To record that .buildnativefontmap has been run, we define /.nativefontmapbuilt
as an array containing a single element, either 'true' or 'false'. We use an
array to avoid local vs. global issues when the value is set during the call
to .buildnativefontmap.
</pre>
<p>[lib/gs_fonts.ps 1.34]</p>
</blockquote>

<p><strong><a name="2003-07-19_0613"></a>
2003-07-19 06:13 raph</strong></p>
<blockquote>
<pre>
More transparency fixes: fix broken remapping of Separation and DeviceN
colorspaces in PDF 1.4 mode. Convert background color for soft mask
groups to DeviceGray colorspace using PostScript code (currentgray).
</pre>
<p>[lib/pdf_draw.ps 1.72, src/gdevp14.c 1.17, src/ztrans.c 1.20]</p>
</blockquote>

<p><strong><a name="2003-07-18_2140"></a>
2003-07-18 21:40 raph</strong></p>
<blockquote>
<pre>
Draws the alpha plane of PDF 1.4 SMask images as a soft masked group.
</pre>
<p>[lib/pdf_draw.ps 1.71]</p>
</blockquote>

<p><strong><a name="2003-07-17_1349"></a>
2003-07-17 13:49 giles</strong></p>
<blockquote>
<pre>
Speed up native font enumeration on MacOS by caching the results of parsing the FOND resource
table.

Also return paths of the from '%macresource%path:to:file#POST' for resource files without
FOND tables, on the assumption these are LWFN files. The font loading machinery doesn't yet
support such paths, and they are simply skipped without being added to the in-memory font map.
</pre>
<p>[src/gp_macio.c 1.27]</p>
</blockquote>

<p><strong><a name="2003-07-15_1647"></a>
2003-07-15 16:47 giles</strong></p>
<blockquote>
<pre>
Rename reftable to fond_table, etc. to avoid confusion with postscript references.
</pre>
<p>[src/gp_macio.c 1.26]</p>
</blockquote>

<p><strong><a name="2003-07-15_0105"></a>
2003-07-15 01:05 giles</strong></p>
<blockquote>
<pre>
Improve native font enumeration on MacOS. This feature is still not enabled.

DETAILS:

There are six different api calls to open a resource file on MacOS Carbon,
all of various provenance and history. We were using FSOpenResourceFile()
in our FOND parsing code because it will open the data fork of .dfont files
or the resource fork of resource font files. Very convenient. However, it
fails for some common font files with broken resource maps. Therefore we
now fall back to FSpOpenResFile() which only tries the resource fork, but
can handle the broken maps, if the first attempt fails. I've not encountered
any .dfont files with broken resource maps; they're a recent phenomenon so
we should be safe there.

Also contains changes to skip the FOND parsing for .ttf and .otf filenames,
to ask for 'Local' instead of 'Global' fonts in the enumerator (the difference
is unclear) and changes to use the Carbon headers in the Carbon build.
</pre>
<p>[src/gp_macio.c 1.25]</p>
</blockquote>

<p><strong><a name="2003-07-14_1932"></a>
2003-07-14 19:32 ray</strong></p>
<blockquote>
<pre>
Read a PostScript embedded ICC input profile into a bytestring (.bigstring)
rather than a temp file. This is faster and doesn't leave the temp file
laying around. Bug #686926 for Artifex customer #1110.

DETAILS:

Since we don't know the size of the bytestring needed to invoke .bigstring,
we read the ICC profile data into an array of 64,000 byte strings, then
create the bytestring and fill it with putinterval.

This bytestring then becomes the source for a ReusableStreamDecode filter
which is a seekable filter. We'd like to have simply used SubFileDecode
filter and ASCIIHexDecode as the source for ReusableStreamDecode, but
this only works if SubFileDecode has a count.
</pre>
<p>[lib/gs_icc.ps 1.10]</p>
</blockquote>

<p><strong><a name="2003-07-14_0720"></a>
2003-07-14 07:20 Russell Lang</strong></p>
<blockquote>
<pre>
Exclude NT file attributes when building zip file of sources.
</pre>
<p>[doc/Release.htm 1.78]</p>
</blockquote>

<p><strong><a name="2003-07-11_1518"></a>
2003-07-11 15:18 giles</strong></p>
<blockquote>
<pre>
Have configure define DONT_HAVE_JMEMSYS_H is appropriate, is support of the eventual generation of gconfig_.h by the configure script rather than unix-aux.mak.
</pre>
<p>[src/configure.ac 1.32]</p>
</blockquote>

<p><strong><a name="2003-07-10_2232"></a>
2003-07-10 22:32 dan</strong></p>
<blockquote>
<pre>
Added casts to remove some warning messages from MSVC.  Partial fix for
bug #686592.
</pre>
<p>[src/gdevdevn.c 1.8, src/gdevpsd.c 1.5]</p>
</blockquote>

<p><strong><a name="2003-07-10_1921"></a>
2003-07-10 19:21 ray</strong></p>
<blockquote>
<pre>
Comment out the #define for the DUMP_TO_PNG debug mode (it will need make
file changes to compile correctly since png.h may not be on standard
include paths.
</pre>
<p>[src/gdevp14.c 1.16]</p>
</blockquote>

<p><strong><a name="2003-07-10_1842"></a>
2003-07-10 18:42 raph</strong></p>
<blockquote>
<pre>
First batch of transparency improvments. With these changes,
ChineseOpera.ai and a number of other files using soft mask groups
should render correctly.
</pre>
<p>[src/gdevp14.c 1.15, src/gstrans.c 1.17, src/gxblend.c 1.5]</p>
</blockquote>

<p><strong><a name="2003-07-10_1834"></a>
2003-07-10 18:34 raph</strong></p>
<blockquote>
<pre>
A code clarity change only. Make the value of 1-input stitching function
more explicit in the degenerate case.
</pre>
<p>[src/gsfunc3.c 1.15]</p>
</blockquote>

<p><strong><a name="2003-07-10_1807"></a>
2003-07-10 18:07 giles</strong></p>
<blockquote>
<pre>
Update version information and links to the web and bts sites, after a patch from Ambrose Li. Bug 686939.
</pre>
<p>[doc/Bug-info.htm 1.36, doc/New-user.htm 1.47]</p>
</blockquote>

<p><strong><a name="2003-07-10_1755"></a>
2003-07-10 17:55 giles</strong></p>
<blockquote>
<pre>
Generate the list of X11 libraries we need to link to in configure. Previously this was hardwired, but some systems do require the addition of the X_PRE_LIBS and X_EXTRA_LIBS discovered by the configure macro. Closes bug 686938.
</pre>
<p>[src/Makefile.in 1.26, src/configure.ac 1.31]</p>
</blockquote>

<p><strong><a name="2003-07-10_1746"></a>
2003-07-10 17:46 ray</strong></p>
<blockquote>
<pre>
Prevent divide by zero when invalid Bounds arrays are encountered. Earlier
we allowed invalid Bounds to be compatible with Adobe, but did not supply
a non-zero denominator value. Fix required for ChineseOpera.ai
</pre>
<p>[src/gsfunc3.c 1.14]</p>
</blockquote>

<p><strong><a name="2003-07-10_1711"></a>
2003-07-10 17:11 giles</strong></p>
<blockquote>
<pre>
Recognize the 0.3 source release jbig2dec.
</pre>
<p>[src/configure.ac 1.30]</p>
</blockquote>

<p><strong><a name="2003-07-10_1708"></a>
2003-07-10 17:08 giles</strong></p>
<blockquote>
<pre>
Improve a comment in the generated gconfig_.h on unix.
</pre>
<p>[src/unix-aux.mak 1.10]</p>
</blockquote>

<p><strong><a name="2003-07-10_0256"></a>
2003-07-10 02:56 ray</strong></p>
<blockquote>
<pre>
Add some casts to prevent excessive warnings when compiling C fonts with
MSVC 6. This only affects the syntax of the generated fonts.
</pre>
<p>[lib/font2c.ps 1.6]</p>
</blockquote>

<p><strong><a name="2003-07-09_2355"></a>
2003-07-09 23:55 igor</strong></p>
<blockquote>
<pre>
Fix: Cygwin/gcc warnings.

DETAILS :

One of them actually was a bug in the recent patch.
</pre>
<p>[src/gxtype1.c 1.26, src/zchar1.c 1.31]</p>
</blockquote>

<p><strong><a name="2003-07-09_2346"></a>
2003-07-09 23:46 igor</strong></p>
<blockquote>
<pre>
pdfwrite : Improving the font metrics handling.

DETAILS :

1. Metrics, Metrics2 was ignored for CID fonts;
2. usematrix was ignored;
3. v-vector was erroneusely scaled down in 1000 for TT fonts;
4. glyph_info mixed WMode 0 1nd 1 in some cases.

This patch is a partial fix for the bug #686947 "rotated japanese chars".
A complete fix should include a handling of CDevProc.

This patch causes an unexpected progression of pdfwrite with keyboard.pdf
at any resolution, and a minor difference with 093-01.ps at 300dpi.
</pre>
<p>[src/gdevpdtc.c 1.25, src/gdevpdte.c 1.40, src/gdevpdtt.c 1.51, src/gstype42.c 1.32, src/gxfcopy.c 1.30, src/gxtype1.c 1.25, src/ichar1.h 1.10, src/int.mak 1.114, src/zchar1.c 1.30, src/zfcid1.c 1.18]</p>
</blockquote>

<p><strong><a name="2003-07-09_1403"></a>
2003-07-09 14:03 igor</strong></p>
<blockquote>
<pre>
Fixing a C++ style comment in fapi_ft.c.
</pre>
<p>[src/fapi_ft.c 1.10]</p>
</blockquote>

<p><strong><a name="2003-07-08_2103"></a>
2003-07-08 21:03 giles</strong></p>
<blockquote>
<pre>
Don't redefine _Windows, since msvctail.mak passes it on the command line. Fixes a warning under
MSVC reported by Igor Melichev.
</pre>
<p>[src/iapi.h 1.10]</p>
</blockquote>

<p><strong><a name="2003-07-08_1731"></a>
2003-07-08 17:31 giles</strong></p>
<blockquote>
<pre>
Use 'fontname' instead of 'name' as an argument to gp_enumerate_fonts_next()
to avoid a warning on MSVC. Thanks to Igor for pointing out the issue.
</pre>
<p>[src/gp.h 1.24, src/gp_dvx.c 1.10, src/gp_iwatc.c 1.15, src/gp_macio.c 1.24, src/gp_mswin.c 1.21, src/gp_os2.c 1.28, src/gp_os9.c 1.11, src/gp_unix.c 1.12, src/gp_vms.c 1.31, src/zfontenum.c 1.3]</p>
</blockquote>

<p><strong><a name="2003-07-08_1502"></a>
2003-07-08 15:02 giles</strong></p>
<blockquote>
<pre>
Add dmmain.c to the list of (platform-specific) source files exempt from the C++ comment policy.
</pre>
<p>[toolbin/tests/check_comments.py 1.2]</p>
</blockquote>

<p><strong><a name="2003-07-08_1458"></a>
2003-07-08 14:58 giles</strong></p>
<blockquote>
<pre>
Remove some C++ style comments.
</pre>
<p>[src/gsiomacres.c 1.4]</p>
</blockquote>

<p><strong><a name="2003-07-08_1456"></a>
2003-07-08 14:56 giles</strong></p>
<blockquote>
<pre>
Remove some C++ style comments and correct formatting.
</pre>
<p>[src/zfontenum.c 1.2]</p>
</blockquote>

<p><strong><a name="2003-07-08_1451"></a>
2003-07-08 14:51 giles</strong></p>
<blockquote>
<pre>
Add zfontenum.c to the file listing in the documentation.
</pre>
<p>[doc/Develop.htm 1.117]</p>
</blockquote>

<p><strong><a name="2003-07-08_1326"></a>
2003-07-08 13:26 igor</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Enlarge font resource arrays on demand.

DETAILS :

The patch fixes CID fonts that provide a lesser CIDCount than
CIDs used in a document. Rather PS requires to print CID=0,
we need to provide a bigger CIDCount since we don't
re-encode the text. The text should look fine if the
viewer application substitutes the font.

Fixes the pdfwrite regression with 401-01.ps, which caused a segfault on Linux.
Thanks to Ray Johnston for the fault analyzis.
</pre>
<p>[src/gdevpdtc.c 1.24, src/gdevpdtf.c 1.31, src/gdevpdtf.h 1.20]</p>
</blockquote>

<p><strong><a name="2003-07-07_2154"></a>
2003-07-07 21:54 jack</strong></p>
<blockquote>
<pre>
Implement C++ style comment checking.  Partially fixes bug #538033.
</pre>
<p>[toolbin/tests/check_comments.py 1.1]</p>
</blockquote>

<p><strong><a name="2003-07-07_2153"></a>
2003-07-07 21:53 jack</strong></p>
<blockquote>
<pre>
Require python2.2 now, since the new C++ style comment checking requires it.
</pre>
<p>[toolbin/tests/check_all.py 1.4, toolbin/tests/check_dirs.py 1.7, toolbin/tests/check_docrefs.py 1.8, toolbin/tests/check_source.py 1.6, toolbin/tests/dump_testdb 1.5, toolbin/tests/get_baselines 1.2, toolbin/tests/gscheck_all.py 1.4, toolbin/tests/gscheck_fuzzypdf.py 1.6, toolbin/tests/gscheck_pdfwrite.py 1.14, toolbin/tests/gscheck_raster.py 1.5, toolbin/tests/make_testdb 1.11, toolbin/tests/make_two_pdfversions 1.7, toolbin/tests/make_two_versions 1.11, toolbin/tests/revert_baseline 1.11, toolbin/tests/revert_pdfbaseline 1.9, toolbin/tests/run_nightly 1.19, toolbin/tests/run_regression 1.12, toolbin/tests/testdiff 1.3, toolbin/tests/update_baseline 1.12, toolbin/tests/update_pdfbaseline 1.8]</p>
</blockquote>

<p><strong><a name="2003-07-04_1931"></a>
2003-07-04 19:31 giles</strong></p>
<blockquote>
<pre>
Initial check in of the native font enumeration mechanism with an implementation for MacOS. The
code is currently disabled pending resolution of bugs regarding some font files.

DETAILS:

This adds a trio of gp_enumerate_fonts calls which implement an interator for querying the native
operating system for font files. This is essentially required to make use of the support for
reading resource-based font collection files on MacOS since there is no convenient way to
construct a Fontmap by hand. Thus our initial implementation focusses there and only stubs are
provided on other platforms. However, it would generally be a useful feature on any system that
provides such services.

An iterator object is created with gp_enumerate_fonts_init() and released with
gp_enumerate_fonts_free(). Between these calls, each font is returned by a successive
call to gp_enumerate_fonts_next() as a pair of C strings giving the access path and reported font
name.

On MacOS these are implemented using the FMFontIterator API from Carbon. Unfortunately, while this
returns font names and files, it does not provide details about the resource internals so we must
open the file and extract the resource id corresponding to the font itself. It also is not always
possible to obtain the correct postscript name from the OS call.

Connection is made to postscript through the .getnativefonts operator, implemented in zfontenum.c.
I handles the interation and places the results on the stack as an array of two element arrays,
each representing the name and path as postscript strings. New code in gs_fonts.ps calls this and
adds the entries to the fontmap after first calling .findfontname on each path to verify
accessibility and in case the reported font name is unreliable. This is implemented as the
.buildnativefontmap procedure, which is called by the font location logic if a requested font
is not found in the Fontmap.

Caveats: This can be a very expensive operation, so like the FONTPATH directory scanning it should
probably only happen once in a given session, instead of every time a font isn't found. The macos
implementation could also be considerably streamlined.
</pre>
<p>[lib/gs_fonts.ps 1.33, src/gp.h 1.23, src/gp_dvx.c 1.9, src/gp_iwatc.c 1.14, src/gp_macio.c 1.23, src/gp_mswin.c 1.20, src/gp_os2.c 1.27, src/gp_os9.c 1.10, src/gp_unix.c 1.11, src/gp_vms.c 1.30, src/int.mak 1.113, src/zfontenum.c 1.1]</p>
</blockquote>

<p><strong><a name="2003-07-04_1508"></a>
2003-07-04 15:08 giles</strong></p>
<blockquote>
<pre>
Apparently Metrowerks CodeWarrior defines _WINDOWS_ instead of the normal __WINDOWS__. Support both for determining the calling conventions of the client api. Problem reported by Des Courtney as bug 686934.
</pre>
<p>[src/iapi.h 1.9]</p>
</blockquote>

<p><strong><a name="2003-07-04_1302"></a>
2003-07-04 13:02 giles</strong></p>
<blockquote>
<pre>
Add the new get_baselines script to the regression test documentation.
</pre>
<p>[doc/Testing.htm 1.20]</p>
</blockquote>

<p><strong><a name="2003-07-03_1220"></a>
2003-07-03 12:20 igor</strong></p>
<blockquote>
<pre>
Fix (Type 1 hinter) : -dAlignToPixels=0 was ignored with -dNOCACHE.

DETAILS :

Now we pass the oversampling scale and the number of subpixels
to the Type 1 hinter in separate parameters. The old interface
was wrong when alpha buffer is installed with -dNOCACHE.

The patch cause difference in rendering with -dTextAlphaBits=2,4.
These cases are not tested by the regression test tool.

Minor changes :

- fixed C-style in gxhintn.c;
- removed "const gs_log2_scale_point no_scale = {0, 0}" to simplify calls
  to gs_type1_interp_init.
</pre>
<p>[src/gdevpsfx.c 1.21, src/gstype1.c 1.24, src/gstype1.h 1.7, src/gstype2.c 1.26, src/gxfcopy.c 1.29, src/gxhintn.c 1.28, src/gxhintn.h 1.13, src/gxtype1.c 1.24, src/gxtype1.h 1.13, src/zchar1.c 1.29]</p>
</blockquote>

<p><strong><a name="2003-07-02_2341"></a>
2003-07-02 23:41 jack</strong></p>
<blockquote>
<pre>
Report upgraded baselines in the last 24 hours. Closes bug #654532.
</pre>
<p>[toolbin/tests/get_baselines 1.1, toolbin/tests/gscheck_raster.py 1.4, toolbin/tests/run_nightly 1.18, toolbin/tests/testing.cfg.example 1.3]</p>
</blockquote>

<p><strong><a name="2003-07-02_1435"></a>
2003-07-02 14:35 giles</strong></p>
<blockquote>
<pre>
Change the release instructions to refer to GPL Ghostscript rather than GNU Ghostscript. We're no longer part of the GNU project. Closes bug 686913.
</pre>
<p>[doc/Release.htm 1.77]</p>
</blockquote>

<p><strong><a name="2003-07-02_1316"></a>
2003-07-02 13:16 giles</strong></p>
<blockquote>
<pre>
Document passing -DGX_COLOR_INDEX_TYPE in unixansi.mak in response to the confusion reported in bug 686876.
</pre>
<p>[src/unixansi.mak 1.32]</p>
</blockquote>

<p><strong><a name="2003-07-01_1501"></a>
2003-07-01 15:01 giles</strong></p>
<blockquote>
<pre>
Correct a bug with zero-length files in .findfontvalue, used by .findfonttype and .findfontname.
</pre>
<p>[lib/gs_fonts.ps 1.32, lib/gs_ttf.ps 1.31]</p>
</blockquote>

<p><strong><a name="2003-07-01_1441"></a>
2003-07-01 14:41 giles</strong></p>
<blockquote>
<pre>
Document the need to set /OutputFile to a valid filename before calling 'setdevice' with the pdfwrite device. Closes bug 686784.
</pre>
<p>[doc/Language.htm 1.72]</p>
</blockquote>

<p><strong><a name="2003-07-01_1000"></a>
2003-07-01 10:00 igor</strong></p>
<blockquote>
<pre>
Fix : merge Adobe Glyph List to gs/Resource/Decoding/Unicode.
</pre>
<p>[Resource/Decoding/Unicode 1.3]</p>
</blockquote>

<p><strong><a name="2003-07-01_0437"></a>
2003-07-01 04:37 alexcher</strong></p>
<blockquote>
<pre>
Fix premature increment of a nested string counter.
Skip white space characters before '(' on 0 level.
</pre>
<p>[src/geninit.c 1.8]</p>
</blockquote>

<p><strong><a name="2003-07-01_0419"></a>
2003-07-01 04:19 alexcher</strong></p>
<blockquote>
<pre>
Include default font map into compiled initialization files but use it only
if the default font map file fails to open at run time.
Fix bug 414985.
</pre>
<p>[lib/Fontmap 1.2, lib/gs_fonts.ps 1.31, doc/Make.htm 1.68]</p>
</blockquote>

<p><strong><a name="2003-06-30_1623"></a>
2003-06-30 16:23 alexcher</strong></p>
<blockquote>
<pre>
Fix a typo in a comment.
</pre>
<p>[lib/gs_stres.ps 1.5]</p>
</blockquote>

<p><strong><a name="2003-06-26_2242"></a>
2003-06-26 22:42 dan</strong></p>
<blockquote>
<pre>
Fix for 686927  Bug in implementation of .hsb2rgb (gs_cspace.ps).
This is a bug report, fix, and a test file from Heiko Oberdiek.
I love it when the bug reporter also includes an analysis, a fix and a
test file.  The problem was an error in the calculations for an HSB (hue,
saturation, brightness) color to RGB when the hue was 1.  The only change
that I made in Heiko's fix was to change a few more comments.
</pre>
<p>[lib/gs_cspace.ps 1.6]</p>
</blockquote>

<p><strong><a name="2003-06-26_2220"></a>
2003-06-26 22:20 alexcher</strong></p>
<blockquote>
<pre>
PDF fonts can have different widths assigned to character codes corresponding
to the same glyph. There is no equivalent feature in PostScript. In this case
we define a new entry in CharString dictionary, and change Encoding vector and
Metrics accordingly. Currently the font adjustment is applied to Type1,
MMType1, and TrueType font resources as defined in adjustfonttypes dictionary.
Fixes bug 623292
</pre>
<p>[lib/pdf_font.ps 1.57, lib/pdf_ops.ps 1.30]</p>
</blockquote>

<p><strong><a name="2003-06-26_1559"></a>
2003-06-26 15:59 alexcher</strong></p>
<blockquote>
<pre>
Don't oversample characters for rendering in non-pure color. Search the
character cache for the exact match -- don't do routine downsampling.
Move cached image depth calculations to compute_glyph_raster_params().
Fix downsampling depth calculation although it is not expected to be used
in normal operation. Leave the downsampling code intact because it is also
used for error recovery.
Fix bug 570772 from customer 1.
</pre>
<p>[src/gxccache.c 1.17, src/gxccman.c 1.8, src/gxchar.c 1.29]</p>
</blockquote>

<p><strong><a name="2003-06-26_0914"></a>
2003-06-26 09:14 igor</strong></p>
<blockquote>
<pre>
Fix : Improving an error message.
</pre>
<p>[src/imain.c 1.32]</p>
</blockquote>

<p><strong><a name="2003-06-24_1057"></a>
2003-06-24 10:57 igor</strong></p>
<blockquote>
<pre>
Fix : gs/Resource/Decoding/Unicode contained wrong codes for Cyrillic and Herbrew.
</pre>
<p>[Resource/Decoding/Unicode 1.2]</p>
</blockquote>

<p><strong><a name="2003-06-22_1115"></a>
2003-06-22 11:15 igor</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : pdev-&gt;black and pdev-&gt;white were not set when ProcessColorModel changes.
Bug 686921 "/ProcessColorModel /DeviceCMYK causes black page".
</pre>
<p>[src/gdevpdfg.c 1.33]</p>
</blockquote>

<p><strong><a name="2003-06-21_1516"></a>
2003-06-21 15:16 igor</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Improving the condition for writing ToUnicode CMap for simple fonts.
</pre>
<p>[src/gdevpdte.c 1.39, src/gdevpdtw.c 1.19]</p>
</blockquote>

<p><strong><a name="2003-06-21_1212"></a>
2003-06-21 12:12 igor</strong></p>
<blockquote>
<pre>
Fix : Remove LONG_MIN from gxfill.c for a better portability.
</pre>
<p>[src/gxfill.c 1.38]</p>
</blockquote>

<p><strong><a name="2003-06-20_1552"></a>
2003-06-20 15:52 giles</strong></p>
<blockquote>
<pre>
Give the explicit maximum buffer size in bytes. Suggestion by Ray re bug
686925.
</pre>
<p>[doc/API.htm 1.35, doc/DLL.htm 1.31]</p>
</blockquote>

<p><strong><a name="2003-06-20_1432"></a>
2003-06-20 14:32 giles</strong></p>
<blockquote>
<pre>
Document the 64 KB length limit on input data passed through the
gsapi_run_string* and gsdll_run_cont() calls. Fixes bug 686925.
</pre>
<p>[doc/API.htm 1.34, doc/DLL.htm 1.30]</p>
</blockquote>

<p><strong><a name="2003-06-20_1320"></a>
2003-06-20 13:20 giles</strong></p>
<blockquote>
<pre>
Remove &lt;limit.h&gt; inclusions as it defines types that conflict with our
std*.h on HPUX and probably other systems. Fix for bug 686920.

Also correct the copyright dates for gxhintn.c.

DETAILS:

limits.h was defining ushort on HPUX which conflicts with the definition
imported in stdpre.h. There are two approaches within our portability
framework: don't use these defines, or make them part of the
output from genarch. Since there's only one use in the code (for
MIN_LONG) I simply defined it at the top of the file.

The test used should work on all 2's complement systems and would
probably fail miserably on anything else. It was the most portable
define I could come up with. A less assuming variant
((long)(ARCH_MAX_ULONG&gt;&gt;1)+1) also works but generates a warning about
the overflow.

genarch.c could of course test a variety of candidates and look for the
rollover. We could also switch to autoconf for provisioning the whole
set of defines. This was chosen as the simplest fix for the time.
</pre>
<p>[src/gxfill.c 1.37, src/gxhintn.c 1.27]</p>
</blockquote>

<p><strong><a name="2003-06-20_1123"></a>
2003-06-20 11:23 giles</strong></p>
<blockquote>
<pre>
Declare zimage_data_setup() as private to match its prototype. Corrects
a warning on the HPUX native compiler.
</pre>
<p>[src/zimage.c 1.11]</p>
</blockquote>

<p><strong><a name="2003-06-19_1538"></a>
2003-06-19 15:38 igor</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : FontMatrix was wrong when a standard font is used
with various encodings.

DETAILS :

The core of the change is one in pdf_font_std_alloc.
Others provide information for it.

Bug 686917 "bad type1 font handling in pdfwriter".
</pre>
<p>[src/gdevpdtb.c 1.20, src/gdevpdtd.c 1.13, src/gdevpdtf.c 1.30, src/gdevpdtt.c 1.50, src/gxfcopy.c 1.28, src/gdevpdtb.h 1.9, src/gdevpdtf.h 1.19, src/gxfcopy.h 1.9]</p>
</blockquote>

<p><strong><a name="2003-06-18_2051"></a>
2003-06-18 20:51 alexcher</strong></p>
<blockquote>
<pre>
Windows 2000 driver includes PJL into %%BeginFeature block.
Identify this from the operand stack pattern: countdictstack lucas mark
and fail the feature request.
Fix bug 686916
</pre>
<p>[lib/gs_init.ps 1.92]</p>
</blockquote>

<p><strong><a name="2003-06-18_2001"></a>
2003-06-18 20:01 alexcher</strong></p>
<blockquote>
<pre>
Use single '%' in a comment.
</pre>
<p>[lib/gs_stres.ps 1.4]</p>
</blockquote>

<p><strong><a name="2003-06-18_1958"></a>
2003-06-18 19:58 alexcher</strong></p>
<blockquote>
<pre>
Activate DSC parser only after all prologue files are read to
prevent spurious comments starting with '%%' from disturbing the parser.
</pre>
<p>[lib/gs_pdfwr.ps 1.34]</p>
</blockquote>

<p><strong><a name="2003-06-18_1956"></a>
2003-06-18 19:56 alexcher</strong></p>
<blockquote>
<pre>
Fix mis-identificaion of every DSC-conforming file as EPS.
</pre>
<p>[src/gdevpdfp.c 1.32]</p>
</blockquote>

<p><strong><a name="2003-06-18_1953"></a>
2003-06-18 19:53 alexcher</strong></p>
<blockquote>
<pre>
Add a paragraph documenting current page orientation options,
document limitations on ps2pdf options, and show a work-around.
Fixes bug 592930
</pre>
<p>[doc/Ps2pdf.htm 1.54]</p>
</blockquote>

<p><strong><a name="2003-06-18_1330"></a>
2003-06-18 13:30 igor</strong></p>
<blockquote>
<pre>
pdfwrite : Generate ToUnicode CMaps for CID fonts.

DETAILS :

This patch must not affect any rendering.

The main change is in gdevpdtc.c and zbfont.c .

Minor changes :

- removed an debug code (#if TEST_UNICODE_SUPPORT, #if 0 in gdevpdtc.c);
- Propagated error code in gdevpdf.c .

Bug 686887 "Searchable pdf".
</pre>
<p>[src/gdevpdf.c 1.69, src/gdevpdtc.c 1.23, src/gdevpdte.c 1.38, src/zbfont.c 1.20]</p>
</blockquote>

<p><strong><a name="2003-06-17_1341"></a>
2003-06-17 13:41 igor</strong></p>
<blockquote>
<pre>
Fix (type 1 hinter) : Don't apply alignment zone to horizontal stems
when the shift is bigger than half pixel.

DETAILS :

Fixes a problem with comparefiles/font_issue.pdf .

This patch causes minor differences in rendering of multiple files :

72dpi :

027-09.ps
bulletin.pdf
chess.ps
CIDembedded.pdf
fonttest.pdf
Svd.pdf
test.pdf

300dpi :

01_001.pdf
027-05.ps
027-09.ps
033-52-5873.pdf
045-01.ps
093-01.ps
136-01.ps
154-01.ps
158-01.ps
159.pdf
165-01.ps
1_pct_50_bang.pdf
231-01.ps
233-01.ps
251-01.ps
268-03.ps
268-05.ps
281-01.ps
327-01.ps
450-01.ps
455690.pdf
541.pdf
541_623.pdf
86554321.pdf
aaon97_p7.pdf
acrobat.pdf
adesso1.pdf
adesso3.pdf
adesso5.pdf
adesso6.pdf
adesso7.pdf
AdobeLic.pdf
alphabet.ps
Altona-Testsuite_p2_S_x3.pdf
Altona.Page_3.2002-09-27.pdf
ats-3-5-99.pdf
besttest.pdf
brochurep1.pdf
bug-gstest.pdf
bugsample.pdf
bulletin.pdf
ccc.pdf
chess.ps
CIDembedded.pdf
colorcir.ps
dave.pdf
Dave_Barry.pdf
DisplayedGood.pdf
DisplayedWrong.pdf
fonttest.pdf
frosch.pdf
gs5.98-dragon.pdf
gs6.0-dragon.pdf
H00216q.pdf
js.pdf
kazmir.pdf
KozukaB-ILEmbed.pdf
laballade.pdf
LD.pdf
narrow_font.pdf
ngnews.pdf
ngnews1.pdf
NIL_0003.pdf
Openhuis_pdf_zw.pdf
pdftops.pdf
PixelisAd.pdf
prfmm.pdf
pstopdf.pdf
pstopdfO3.pdf
QA_Inv.pdf
RealCities.pdf
rf1025.pdf
ridt91.eps
RodinCIDEmbed.pdf
S2_Digitalproof-Forum_x3k.pdf
smdf.90441.102.pdf
Svd.pdf
test.pdf
test2.pdf
test2a.pdf
textsavematrix.pdf
time1.pdf
vsem0093.pdf
waterfal.ps
xgfddg.pdf
xngnews.pdf
</pre>
<p>[src/gxhintn.c 1.26]</p>
</blockquote>

<p><strong><a name="2003-06-17_1210"></a>
2003-06-17 12:10 giles</strong></p>
<blockquote>
<pre>
Clarify a comment.
</pre>
<p>[src/macos-mcp.mak 1.20]</p>
</blockquote>

<p><strong><a name="2003-06-17_0942"></a>
2003-06-17 09:42 igor</strong></p>
<blockquote>
<pre>
Implementing the text rendering mode 3 with graphics library
to allowing PDF interpreter with pdfwrite to pass invisible text (continued).

DETAILS :

2 files were missed from the previous patch. Adding them now.
</pre>
<p>[src/gsstate.c 1.20, src/gxistate.h 1.16]</p>
</blockquote>

<p><strong><a name="2003-06-16_1504"></a>
2003-06-16 15:04 igor</strong></p>
<blockquote>
<pre>
Implementing the text rendering mode 3 with graphics library
to allowing PDF interpreter with pdfwrite to pass invisible text.

DETAILS :

This patch improves the text rendering mode 3 only.
Other text modes stay like they were -
implemented with charpath in pdf_ops.ps
(to be improved someday).

We process invisible text with TEXT_DO_NONE,
adding an additional check to op_show_restore in zchar.c .
We would like to implement a new mode TEXT_DO_INVISIBLE,
but we don't want to do so deep change without a strong neccessity.
It can be subject of a further improvement.

With this patch stringwidth won't work with text rendering mode 3.
We never use this combination.
TEXT_DO_INVISIBLE could work for it.

Bug 686914 "pdfwrite does not preserve invisible text".
</pre>
<p>[src/gdevpdte.c 1.37, src/gdevpdtt.c 1.49, src/gsstate.h 1.9, src/gstext.c 1.12, src/int.mak 1.112, src/zchar.c 1.11, src/zgstate.c 1.8, lib/pdf_ops.ps 1.29]</p>
</blockquote>

<p><strong><a name="2003-06-16_1046"></a>
2003-06-16 10:46 igor</strong></p>
<blockquote>
<pre>
Fix : (type 1 interpreter) : ce1_setcurrentpoint was wrong (3nd attempt).

DETAILS :

This patch defines a compatible workaround for fonts that use
ce1_setcurrentpoint in an illegal way. See comments in code.
</pre>
<p>[src/gdevpsfx.c 1.20, src/gxhintn.c 1.25]</p>
</blockquote>

<p><strong><a name="2003-06-11_1949"></a>
2003-06-11 19:49 igor</strong></p>
<blockquote>
<pre>
Fix : (type 1 interpreter) : ce1_setcurrentpoint was wrong (2nd attempt).

DETAILS :

The previous patch appears wrong.
This patch unwinds the change to gdevpsfx.c and fixes ce1_setcurrentpoint
in the new Type1 hinter.
</pre>
<p>[src/gdevpsfx.c 1.19, src/gxhintn.c 1.24]</p>
</blockquote>

<p><strong><a name="2003-06-11_1202"></a>
2003-06-11 12:02 igor</strong></p>
<blockquote>
<pre>
Fix : Errors in a comment documenting gs_glyph.
</pre>
<p>[src/gsccode.h 1.11]</p>
</blockquote>

<p><strong><a name="2003-06-11_0135"></a>
2003-06-11 01:35 giles</strong></p>
<blockquote>
<pre>
Print out modified file names and versions when generating the html changelog. Update the current
versions of Changes.html and Details.html as an example.
</pre>
<p>[doc/Changes.htm 1.47, doc/Details.htm 1.6]</p>
</blockquote>

<p><strong><a name="2003-06-11_0131"></a>
2003-06-11 01:31 giles</strong></p>
<blockquote>
<pre>
Print out modified filenames and versions when generating the html changelog.
</pre>
<p>[toolbin/split_changelog.py 1.5]</p>
</blockquote>

<p><strong><a name="2003-06-10_1429"></a>
2003-06-10 14:29 igor</strong></p>
<blockquote>
<pre>
Fix : (type 1 interpreter) : ce1_setcurrentpoint was wrong.
</pre>
<p>[src/gdevpsfx.c 1.18, src/gstype1.c 1.23]</p>
</blockquote>

<p><strong><a name="2003-06-09_2225"></a>
2003-06-09 22:25 alexcher</strong></p>
<blockquote>
<pre>
Edited to reflect new capabilities of Bugzilla and current bug reporting
practices.
</pre>
<p>[doc/Bug-form.htm 1.37]</p>
</blockquote>

<p><strong><a name="2003-06-09_2216"></a>
2003-06-09 22:16 alexcher</strong></p>
<blockquote>
<pre>
Change links from SourceForge bug tracker,
http://sourceforge.net/bugs/?group_id=1897
to Ghostscript Bugzilla, http://bugs.ghostscript.com
Fix bug #686888
</pre>
<p>[doc/Bug-info.htm 1.35, doc/Make.htm 1.67]</p>
</blockquote>

<p><strong><a name="2003-06-09_2155"></a>
2003-06-09 21:55 alexcher</strong></p>
<blockquote>
<pre>
Add hyperlinks to Ghostscript Bugzilla bug entries.
</pre>
<p>[doc/Devices.htm 1.67, doc/Issues.htm 1.37, doc/Projects.htm 1.52]</p>
</blockquote>

<p><strong><a name="2003-06-09_1358"></a>
2003-06-09 13:58 alexcher</strong></p>
<blockquote>
<pre>
Permit explicit specification of /GDBytes equal to 0 for incrementally
downloadable CIDFonts.
Fixes bug 686890 from customer 131.

DETAILS:
Incrementally downloadable CIDFont has GlyphDirectory key. According to
PLRM3 p. 376 "The binary data section of a CIDFont with a GlyphDirectory entry
does not need a charstring offset table or charstrings; if present, they will
be ignored". PLRM3 says nothing about GDBytes entry but it seems logical that
the entry is no longer needed when the structure it describes is ignored.

Old code used 0 as a default GDBytes value but required explicit specification
to be &gt; 0. New code permits explicit 0 value because "Acrobat PDFMaker 5.0 for
Word" generates it.
</pre>
<p>[src/zfcid.c 1.14]</p>
</blockquote>

<p><strong><a name="2003-06-08_1359"></a>
2003-06-08 13:59 igor</strong></p>
<blockquote>
<pre>
Fix : Removing an unused code.
</pre>
<p>[src/gdevbit.c 1.8]</p>
</blockquote>

<p><strong><a name="2003-06-08_0330"></a>
2003-06-08 03:30 igor</strong></p>
<blockquote>
<pre>
Fix : Completing the extended semantics of gs_glyph.

DETAILS :

The extended semantics was introduced with the patch
http://www.ghostscript.com/pipermail/gs-cvs/2003-June/003354.html
That patch appears incomplete. Hopely this one completes it.
Also it fixes the bug #686910, which was not detected with comparefiles.
</pre>
<p>[src/zfont42.c 1.16]</p>
</blockquote>

<p><strong><a name="2003-06-07_2117"></a>
2003-06-07 21:17 igor</strong></p>
<blockquote>
<pre>
pdfwrite : Write Encoding for True Type fonts.

DETAILS :

See comment in code.
</pre>
<p>[src/gdevpdtt.c 1.48]</p>
</blockquote>

<p><strong><a name="2003-06-07_2114"></a>
2003-06-07 21:14 igor</strong></p>
<blockquote>
<pre>
Fix (PDF interpreter) : Account Encoding while building CharStrings for TrueType fonts.

DETAILS :

If an Encoding is specified with a symbolic TrueType font,
its character names to be used for generating CharStrings.
The old code uses SymbolEncoding instead, missing some characters.

Fixes the bug 686912 "PDF interpreter problem with True Type &amp; Encoding".
</pre>
<p>[lib/gs_ttf.ps 1.30, lib/pdf_font.ps 1.56]</p>
</blockquote>

<p><strong><a name="2003-06-06_1750"></a>
2003-06-06 17:50 igor</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Convert Type 0 fonts with multiple CID font descendents into
Type 0 fonts with single CID font descendents (the part 3).

DETAILS :

At last we got a non-degenerate test for multiple CID font descendents
and could debug this stuff with a real document.

This patch mixes several changes :

- In some cases CIDFontType 2 fonts wrongly computed glyph indices ignoring GlyphDirectory.
  The new function z11_glyph_info works for it.

- The text decomposition in gdevpdtc.c mixed font indices of various font descendents.

- font-&gt;procs.get_glyph_info sometimes received glyph indices
  instead glyph names or CIDs. This happened with subglyphs of a CIDFontType 2 glyph.
  This patch improves the semantics of gs_glyph with distinguishing
  CIDs and GIDs with a new tag in the 2nd high order bit.
  The new macro GS_MAX_GLYPH_INDEX and related stuff
  works for it.

- gdevpdtd.c tried to compute CID font features using glyph names,
  which don't exist in this case. Replaced with CIDs.

- In gdevtrac.c a wrong glyph space was specified enumerating glyphs
  (a minor change, since gdevtrac.c is almost an example).

- Fixed a compiler warning in gdevdevn.c .

Working on this patch, we can see rudiments
in pdfwrite code, which are inherited from pre-8.00 code
(before stable font copies are implemented), which to be fixed someday :

- subset_glyphs arguments in gdevpsft.c looks always NULL
  and probably to be removed;

- COPY_GLYPH_BY_INDEX is now obsolete and to be removed;

- glyph enumeration procedures (*enumerate_glyph*) sometimes retrieve
  a wrong tag in gs_glyph values. The new macro GS_GLYPH_TAG works against it,
  rather an improvement to enumeration procedures would be useful.

The patch is debugged with korea.ps from the bug #686894.
After this change the embedded composite font with 2 CIDFontType 2
descendents is correctly decomposed into 2 Type 0 fonts with
single descendents (the old (gs8.10) code converts it into a Type 3
with outlines). The generated PDF satisfies the PDF specification
and Ghostscript can handle it. Meanwhile Acrobat Reader 4,5,6
fails with it. It appears an old known problem :
if a Type 42 font and a CIDFontType 2 with a non-standard CMap
appear in same PDF document, Acrobat Reader fails.
We believe it's a bug in Acrobat reader, because if we
modify the document with removing portions of text so that
only one of the 2 fonts is really used, Acrobat Reader renders it fine.
It fails only when both things are really used for rendering.
A workaround for this problem to do separately.
</pre>
<p>[src/gdevdevn.c 1.7, src/gdevpdtc.c 1.22, src/gdevpdtd.c 1.12, src/gdevpdtf.c 1.29, src/gdevpdtt.c 1.47, src/gdevpsf.h 1.24, src/gdevpsft.c 1.30, src/gdevpsfu.c 1.11, src/gdevtrac.c 1.5, src/gsccode.h 1.10, src/gstype42.c 1.31, src/gxfcopy.c 1.27, src/gxfont42.h 1.15, src/zfcid1.c 1.17, src/zfont42.c 1.15]</p>
</blockquote>

<p><strong><a name="2003-06-06_1629"></a>
2003-06-06 16:29 alexcher</strong></p>
<blockquote>
<pre>
Process encryption dictionary after reading all parts of xref. Old code
resolved encryption dictionary after reading the latest part of xref only
and returned null instead of the dictionary for some files.
Fixes bug 686907 from customer 1060.
</pre>
<p>[lib/pdf_main.ps 1.75]</p>
</blockquote>

<p><strong><a name="2003-06-03_0731"></a>
2003-06-03 07:31 igor</strong></p>
<blockquote>
<pre>
pdfwrite : Don't add subset prefix when a font doesn't embeed.
Ghostscript Bug 686893  NeverEmbed for Japanese CID fonts doesn't work correctly
Patch from Koji Nakamaru.
</pre>
<p>[src/gdevpdtf.c 1.28]</p>
</blockquote>

<p><strong><a name="2003-06-03_0626"></a>
2003-06-03 06:26 dan</strong></p>
<blockquote>
<pre>
Fix for 686785 segfault with PDF 1.4.  The PDF interpreter was calling
PDF 1.4 transparency features (begin_trasnparency_group) even though
the alpha involved was 1.0.  THe fix is to set a flag when the need
for transparency is done at the start of a page and then testing it
when transparency may be needed durng the page.
</pre>
<p>[lib/pdf_draw.ps 1.70, lib/pdf_main.ps 1.74]</p>
</blockquote>

<p><strong><a name="2003-06-03_0530"></a>
2003-06-03 05:30 dan</strong></p>
<blockquote>
<pre>
This fix corrects a recursion loop that exists with PDF form objects
with a transparency group.
</pre>
<p>[lib/pdf_draw.ps 1.69]</p>
</blockquote>

<p><strong><a name="2003-06-02_1952"></a>
2003-06-02 19:52 alexcher</strong></p>
<blockquote>
<pre>
Count 1st page objects as shared objects. This is the 1st version that
generates files compatible with AR5 used as a browser plug-in.
Earlier versions of Acrobat ignore malformed hint tables. All versions
ignore the tables when they read the file from disk.
Fixes bug 592841
</pre>
<p>[lib/pdfopt.ps 1.20]</p>
</blockquote>

<p><strong><a name="2003-06-02_1621"></a>
2003-06-02 16:21 igor</strong></p>
<blockquote>
<pre>
pdfwrite : Glyph indices were wrongly computed with copied FontType 11.
Ghostscript Bug 686894 "Corrupted CMap".
</pre>
<p>[src/gxfcopy.c 1.26]</p>
</blockquote>

<p><strong><a name="2003-06-02_1335"></a>
2003-06-02 13:35 giles</strong></p>
<blockquote>
<pre>
Add standard banner and (unnecessary) double include protection to satisfy policy tests.
</pre>
<p>[src/macos_carbon_pre.h 1.2]</p>
</blockquote>

<p><strong><a name="2003-06-02_1329"></a>
2003-06-02 13:29 giles</strong></p>
<blockquote>
<pre>
Correct listing of MacOS platform-specific source files.
</pre>
<p>[doc/Develop.htm 1.116]</p>
</blockquote>

<p><strong><a name="2003-05-31_0010"></a>
2003-05-31 00:10 ray</strong></p>
<blockquote>
<pre>
Previous commit was from a bad version of the file (prior to a local
correction in a different directory). This fix is the correct fix for
embedded fonts that have Length 0 for customer #590.
</pre>
<p>[lib/pdf_font.ps 1.55]</p>
</blockquote>

<p><strong><a name="2003-05-30_2328"></a>
2003-05-30 23:28 ray</strong></p>
<blockquote>
<pre>
Some PDF files have embedded fonts with Length == 0. These should default
to the same handling as when there is no embedded font. Fix for customer
#590.
</pre>
<p>[lib/pdf_font.ps 1.54]</p>
</blockquote>

<p><strong><a name="2003-05-29_1928"></a>
2003-05-29 19:28 giles</strong></p>
<blockquote>
<pre>
Add an example library client for MacOS, comparable to dxmain and dwmain for other platforms. This
implementation is specific to Metrowerk CodeWarrior, relying on the MSL/SIOUX stdio implementation
for the interactive window. No project file support at the moment.

Code contributed by Nigel Hathaway.
</pre>
<p>[src/dmmain.c 1.1, src/dmmain.r 1.1]</p>
</blockquote>

<p><strong><a name="2003-05-29_1911"></a>
2003-05-29 19:11 giles</strong></p>
<blockquote>
<pre>
Add a prefix header file for the MacOS Carbon build to enable target-specific settings.

DETAILS:

Metrowerks CodeWarrior doesn't really have an equivalent of the -D commandline option to set CPP
defines at compile time. This makes it difficult to set target-specific #ifdef's, for example the
__CARBON__ switches used in the MacOS support code. The closest thing offered is a hook in the
project file for a 'prefix' header file that will be prepended to each source file as it is fed to
the preprocessor. We add such a file for the carbon build, and enable it in the project file xml.

The conditional in macgenmcpxml.sh is a direct comparison for the Ghostscript carbon shlib name,
which is excessively brittle. Something like perl's =~ /carbon/i on the target name would be
preferable, but I couldn't figure out how to do that reliably in sh.
</pre>
<p>[src/macgenmcpxml.sh 1.10, src/macos_carbon_pre.h 1.1]</p>
</blockquote>

<p><strong><a name="2003-05-29_1902"></a>
2003-05-29 19:02 giles</strong></p>
<blockquote>
<pre>
Check for a valid filter name before trying to parse jbig2 global context streams.
Fixes bug 686829.

DETAILS:

The expansion of abbreviated filter names and check for supported filters was
happening after the special-case handling of JBIG2Decode parameters, resulting
is an '/undefined in /.jbig2makeglobalctx' error if Ghostscript was compiled
without jbig2 support, rather than the usual 'Unable to process' warnings for
files containing JBIG2Decode data.
</pre>
<p>[lib/pdf_base.ps 1.38]</p>
</blockquote>

<p><strong><a name="2003-05-29_1638"></a>
2003-05-29 16:38 giles</strong></p>
<blockquote>
<pre>
Remove spurious '-c' options to install. Closes bug 686895.
</pre>
<p>[ijs/Makefile.in 1.2]</p>
</blockquote>

<p><strong><a name="2003-05-27_1610"></a>
2003-05-27 16:10 alexcher</strong></p>
<blockquote>
<pre>
Initialize current color value as null when pattern color space is set.
Fixes bug 686805
</pre>
<p>[src/zpcolor.c 1.10]</p>
</blockquote>

<p><strong><a name="2003-05-24_2241"></a>
2003-05-24 22:41 igor</strong></p>
<blockquote>
<pre>
Fix : Don't fail when GlyphNames2Unicode can't be provided for a CID font.
</pre>
<p>[lib/gs_fntem.ps 1.6]</p>
</blockquote>

<p><strong><a name="2003-05-24_1719"></a>
2003-05-24 17:19 dan</strong></p>
<blockquote>
<pre>
A pair of fixes for Bug 686791   Device bitcmyk produces wrong output
The bitcmyk device produce the wrong output if GrayValues=8.  In this
case the pixel size is 32 bits.  The encode_color procedure was sign
extending the  MSB into the upper 32 bits of 64 bit gx_color_indexes.
The fix in gdevbit.c prevents this from happening.  The fix in gdevm32.c
makes it so that it does not matter.  I am including both for
completeness.  The bitcmyk device should not produce garbage in the
remaining bits.  Thus the first fix.  However there may be other
devices with this problem so I am including the fix in gdevm32.c.
There was a recent report from an AIX system with a similar problem
</pre>
<p>[src/gdevbit.c 1.7, src/gdevm32.c 1.5]</p>
</blockquote>

<p><strong><a name="2003-05-23_0957"></a>
2003-05-23 09:57 igor</strong></p>
<blockquote>
<pre>
Provide a trial support for converting a text to Unicode.
</pre>
<p>[lib/gs_cidfn.ps 1.27, lib/gs_fntem.ps 1.5, lib/gs_fonts.ps 1.30, lib/gs_pdfwr.ps 1.33, src/gdevpdtc.c 1.21, src/zbfont.c 1.19]</p>
</blockquote>

<p><strong><a name="2003-05-23_0153"></a>
2003-05-23 01:53 ray</strong></p>
<blockquote>
<pre>
Stream 'position' was not update correctly under some conditions.
Fixes Bug #686859 for customer #600.

DETAILS:

The stream position was not updated if the buffer was emptied by
sgets, which then called to spgetcc. The latter would reset the
read pointers needed in order to account for the empty buffer.
</pre>
<p>[src/stream.c 1.22]</p>
</blockquote>

<p><strong><a name="2003-05-22_2337"></a>
2003-05-22 23:37 igor</strong></p>
<blockquote>
<pre>
pdfwrite : Convert Type 0 fonts with multiple CID font descendents into
Type 0 fonts with single CID font descendents (part 2).

DETAILS :

The previous patch appears wrong for the case when same CID font is used with
different CMaps. Creating multiple Type 0 fonts for this case,
assigning them a composite font name with CMap name.

Minor changes :

- a compiler warning in gdevpdfv.c .

- a wrong error code was returned from zfcid0.c .
</pre>
<p>[src/gdevpdfv.c 1.26, src/gdevpdtc.c 1.20, src/gdevpdtf.c 1.27, src/gdevpdtf.h 1.18, src/gdevpdtt.c 1.46, src/gdevpdtt.h 1.17, src/zfcid0.c 1.20]</p>
</blockquote>

<p><strong><a name="2003-05-22_2257"></a>
2003-05-22 22:57 giles</strong></p>
<blockquote>
<pre>
Double-equals ('==') for string comparison is not portable shell. Thanks
to Nelson Beebe for pointing out the issue.
</pre>
<p>[src/configure.ac 1.29]</p>
</blockquote>

<p><strong><a name="2003-05-22_2027"></a>
2003-05-22 20:27 igor</strong></p>
<blockquote>
<pre>
Fix : Removed a debug hack.
</pre>
<p>[src/gsfcmap1.c 1.6]</p>
</blockquote>

<p><strong><a name="2003-05-22_1551"></a>
2003-05-22 15:51 ray</strong></p>
<blockquote>
<pre>
PDF Forms that contained indirect objects need to be resolved prior to
processing with 'execform'. Bug #686884 for customer #150.
</pre>
<p>[lib/pdf_draw.ps 1.68]</p>
</blockquote>

<p><strong><a name="2003-05-22_1541"></a>
2003-05-22 15:41 igor</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Convert Type 0 fonts with multiple CID font descendents into
Type 0 fonts with single CID font descendents.

DETAILS :

Bug 686869 "Rasterized characters".

Our testbase doesn't test this case. Rather the test file for 686869
contains a font with 2 CID descendents, it actually uses only the 1st
descendent, so it's not a complete test.

The new code fails with 401-01.ps . This test file is buggy and
requires a special workaround, which should be a separate patch.

The main change is gdevpdtc.c, gdevpdtf.h .

Minor changes :

- added a new argument to a set of CMap management functions to access a
  submap corresponding to a specified font index;

- gs_cmap_init now reserves so many gs_id numbers,
  as many fonts it refer;

- removed some unused variables (gdevpdfm.c, gdevpdfv.c, gdevpdtb.c).
</pre>
<p>[src/gdevpdfm.c 1.31, src/gdevpdfv.c 1.25, src/gdevpdtb.c 1.19, src/gdevpdtc.c 1.19, src/gdevpdtf.c 1.26, src/gdevpdtf.h 1.17, src/gdevpdtt.c 1.45, src/gdevpdtt.h 1.16, src/gdevpdtw.c 1.18, src/gdevpdtw.h 1.3, src/gdevpsf.h 1.23, src/gdevpsfm.c 1.14, src/gsfcmap.c 1.22, src/gxfcmap.h 1.15, src/zcidtest.c 1.3]</p>
</blockquote>

<p><strong><a name="2003-05-22_0602"></a>
2003-05-22 06:02 igor</strong></p>
<blockquote>
<pre>
Fix (pdfwrite) : Removing the 'vdata' argument to simplify internal interfaces.

DETAILS :

This change is algorithmically equivalent.

Note that 'size' argument is replaced with 'bsize', which now passes the
buffer size rather than text size. Added some dynamical checks to ensure the
buffer size is enough.
</pre>
<p>[src/gdevpdtc.c 1.18, src/gdevpdte.c 1.36, src/gdevpdtt.c 1.44, src/gdevpdtt.h 1.15]</p>
</blockquote>

<p><strong><a name="2003-05-21_1750"></a>
2003-05-21 17:50 giles</strong></p>
<blockquote>
<pre>
Bump version number after the 8.10 release.
</pre>
<p>[doc/News.htm 1.130, lib/gs_init.ps 1.91, src/gscdef.c 1.36, src/version.mak 1.63]</p>
</blockquote>



<h2><a name="Version8.10"></a>Version 8.10 (2003-05-21)</h2>

<p>
The 8.10 release is an incremental release from 8.00. It contains
some fairly substantial reworking of important modules, most notably
in the font rendering. Because of the extent of the changes, we're
labelling this as a beta release. It should be quite usable, but
it hasn't been as thoroughly wrung out as our production releases.
<p>
The major new feature improved font rendering by Igor Melichev. The
new font renderer prevents dropouts intelligently rather than relying
on "fill_adjust" (which has the side effect of making the font
bolder).
<p>
In addition, pdfwrite continues to evolve and improve. Most patterns
and type 3 fonts are now output as high-level objects rather 
than being rasterized.
<p>
This is our first release with support for JBIG2 encoded images, using
our jbig2dec library. This decoder is not yet complete, but
successfully decodes many PDF files containing JBIG2 images.
<p>
This release also contains an important security fix. If you are using
Ghostscript in a security-critical application, we recommend you
upgrade now.
<p>
Finally, we include the usual bug fixes and improvements. Please
exercise this release thoroughly, so we can make the next release
rock-solid.

<p>
The following <a href="http://bugs.ghostscript.com/">bugs.ghostscript.com</a> numbers were open at
the time of this release:
<blockquote>
405501,
406273,
414947,
414985,
430175,
446344,
456692,
458261,
458775,
458780,
459647,
463688,
465936,
487460,
487953,
493348,
505429,
509829,
526099,
526491,
530011,
535366,
535752,
535932,
538033,
542629,
553187,
555072,
558151,
558435,
563287,
570772,
572865,
578838,
578865,
592160,
592837,
592841,
592930,
595760,
600288,
601336,
602263,
603934,
604722,
605830,
607425,
607850,
610478,
611898,
614298,
617077,
617523,
621267,
623292,
624515,
626059,
626295,
628110,
629335,
633299,
634036,
634358,
636210,
637850,
645316,
651644,
654532,
656414,
656510,
664484,
667301,
669654,
674241,
674390,
674417,
674418,
677324,
677383,
677430,
677573,
680301,
681469,
684778,
684866,
685335,
686746,
686747,
686750,
686752,
686768,
686770,
686777,
686778,
686779,
686782,
686784,
686785,
686788,
686789,
686791,
686796,
686803,
686805,
686813,
686815,
686816,
686817,
686819,
686821,
686822,
686823,
686824,
686827,
686829,
686833,
686834,
686837,
686839,
686841,
686842,
686843,
686844,
686845,
686850,
686852,
686853,
686859,
686860,
686861,
686863,
686865,
686867,
686869,
686871,
686873,
686876,
686877,
686878,
686880,
686881.
</blockquote>

<h2><a name="8.10_Incompatible_changes"></a>Incompatible changes</h2>

<p>The mechanism for locating resources has changed. See the <a href="Use.htm#Finding_files">usage
documentation</a> for details of the new mechanism.

<h2><a name="8.10_changelog"></a>Changelog</h2>

<!-- generated by split_changelog.py from the output of cvs2cl.pl -->

<p><strong><a name="2003-05-21_0017"></a>
2003-05-21 00:17 Ralph Giles</strong></p>
<blockquote><pre>
Correct additional header dependency errors.
</pre></blockquote>

<p><strong><a name="2003-05-20_2350"></a>
2003-05-20 23:50 Ralph Giles</strong></p>
<blockquote><pre>
Update changelog and history files for the 8.10 release.

DETAILS:

Turned out I'd forgotten to modify makehist.tcl to handle the new
changelog format, so the merge of News and Changes into History8.htm
was done manually. Fortunately this is much simpler now.

We will also need a separate 'detailed history' file in which to archive
the Details documents before the next release.

N.B. those trying to regenerate this: the gs8_00 tag was accidentally
modified in April, so the date-from-tag filtering recommended in the
release instructions does not work for this diff. Instead the xml
changelong was generated with hand-picked dates:

	cvs2cl.pl --xml --utc -T --follow trunk --usermap authors \
		--log-opts "-d'2002-11-21&lt;2003-06-21'" -f doc/changelog.xml
</pre></blockquote>

<p><strong><a name="2003-05-20_2329"></a>
2003-05-20 23:29 Ralph Giles</strong></p>
<blockquote><pre>
Some browsers don't like '--' in the body of an html comment.
</pre></blockquote>

<p><strong><a name="2003-05-20_2258"></a>
2003-05-20 22:58 Ralph Giles</strong></p>
<blockquote><pre>
Add a missing header dependency.

DETAILS:
Our wrapper header memory_.h includes std.h, as most of them do, but
this dependency was not marked, causing a build error with a parallel
make. It began compiling the sjbig2.c before genarch was complete.
</pre></blockquote>

<p><strong><a name="2003-05-20_2130"></a>
2003-05-20 21:30 Ralph Giles</strong></p>
<blockquote><pre>
Our bug tracker is now at ghostscript.com.
</pre></blockquote>

<p><strong><a name="2003-05-20_2106"></a>
2003-05-20 21:06 Ralph Giles</strong></p>
<blockquote><pre>
Add release notes written by Raph Levien.
</pre></blockquote>

<p><strong><a name="2003-05-20_2016"></a>
2003-05-20 20:16 Ralph Giles</strong></p>
<blockquote><pre>
Update open bug list for release.
</pre></blockquote>

<p><strong><a name="2003-05-20_2006"></a>
2003-05-20 20:06 Ralph Giles</strong></p>
<blockquote><pre>
Add a missing dependendency definition.
</pre></blockquote>

<p><strong><a name="2003-05-20_1955"></a>
2003-05-20 19:55 Ralph Giles</strong></p>
<blockquote><pre>
Propagate version number and release date to the documentation.
</pre></blockquote>

<p><strong><a name="2003-05-20_1952"></a>
2003-05-20 19:52 Ralph Giles</strong></p>
<blockquote><pre>
Update libpng version to reflect the current release.
</pre></blockquote>

<p><strong><a name="2003-05-20_1948"></a>
2003-05-20 19:48 Ralph Giles</strong></p>
<blockquote><pre>
Update version number and date for 8.10 release.
</pre></blockquote>

<p><strong><a name="2003-05-20_1859"></a>
2003-05-20 18:59 Ralph Giles</strong></p>
<blockquote><pre>
Document the location of the jbig2dec releases on sourceforge in the build documentation.
</pre></blockquote>

<p><strong><a name="2003-05-20_1844"></a>
2003-05-20 18:44 Ralph Giles</strong></p>
<blockquote><pre>
Bump the 'known-good' versions for the jbig2 makefile to include the 0.3 release.
</pre></blockquote>

<p><strong><a name="2003-05-20_1840"></a>
2003-05-20 18:40 Ralph Giles</strong></p>
<blockquote><pre>
Include an RCS Id line in the generated html changelog files.
</pre></blockquote>

<p><strong><a name="2003-05-20_1346"></a>
2003-05-20 13:46 Alex Cherepanov</strong></p>
<blockquote><pre>
Work around 64K limit in a few probable places.
Fixes bug 611727
</pre></blockquote>

<p><strong><a name="2003-05-20_1246"></a>
2003-05-20 12:46 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Merge the Encoding of the 'complete' font copy when merging fonts.

DETAILS :

"PPI-ProPag 2.6.1.4 (archivePg)" creates multiple font copies with reduced encodings
(we believe it is poorly designed), and we merge the copies back to a single font.
Doing so the Encoding was not merged for the "complete" font copy.
The patch fixes that.

Bug 686875 Missing characters with -dSubsetFonts=false
</pre></blockquote>

<p><strong><a name="2003-05-20_0910"></a>
2003-05-20 09:10 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : 'loca' was wrong in some cases embedding a TT font subset.

DETAILS :

By TT spec, when a TT font uses indexToLocFormat==0, glyph offsets in 'glyf' must be even.
The old code doesn't take care about the glyph alignment while converting a font
from indexToLocFormat==1 to indexToLocFormat==0.
This patch inserts padding bytes into 'glyf' to align glyph offsets with indexToLocFormat==0.

Bug 686868 "Missing characters".
</pre></blockquote>

<p><strong><a name="2003-05-19_0618"></a>
2003-05-19 06:18 Dan Coby</strong></p>
<blockquote><pre>
Add a warning message if the rebuilding logic found two or more objects
with the same object numbers and the same generation numbers.
</pre></blockquote>

<p><strong><a name="2003-05-19_0520"></a>
2003-05-19 05:20 Dan Coby</strong></p>
<blockquote><pre>
1.  Ignore data after %%EOF whicl scanning for objects or trailer.
2.  Allow objects with duplicate object and generation numbers.
3.  Change heuristic for finding the trailer dictionary.

DETAILS:

The previous testing had on the rebuild facility had verified that
all test files ran without apparent problems.  However a full check
of the files in the regression test suite has found three cases of
the output images not matching between the normal PDF processing
and the rebuild processing.

1.  Many real life PDF files contain garbage after the final %%EOF
marker.  Ghostscript has known about and tolerated this situation for
some time.  I found a test case (adesso6.pdf) in which the repair
logic was finding what it considered a valid object in this garbage.
The revisions determine the location of the last %%EOF and form a
count of the data left in the file after the %%EOF.  This count is
used to exclude this data from the object scanning and the trailer
location scanning.

2.  A test case was found in which two objects were found to have
the same object number and revision number.  By my reading of the
PDF spec, the newer object should have a higher revision number.
However the object scanner was changed to accept the last such
object as the desired one.  Most PDF editors (at least Adobe) put
updated objects at the end of the file.

3.  A test case was found in which a Linearized PDF file had been
edited and a new xref list and trailer dictionary were placed at
the end of the file.  The heuristic for finding the trailer dictionary
was changed to check the specified location of the 'first' xref list.
If this location is in the first half of the file, then the start of
the file is searched for the first trailer.  Otherwise the end of the
file is searched for the last trailer.

With these three changes, all of the PDF files in the regression
test suite produce matching results using either the normal PDF
processing or the rebuild procedures.
</pre></blockquote>

<p><strong><a name="2003-05-19_0115"></a>
2003-05-19 01:15 Ray Johnston</strong></p>
<blockquote><pre>
The TrueType font loading was quite a bit slower than it should be. This
optimized font loader is up to ten times faster. Fixes bug #686851.

DETAILS:

Analysis of the time spent during TT font loading led to two problem areas.

The first was that the cmap array was built inefficiently when their was
a large glyph range, that had large holes was built with a loop that
called a PostScript function 'putglyph' to fill unused areas with .notdef
(glyph ID 0). The revision pre-fills the 'glyphs' array with .notdef from
a static array pre-filled with 1024 zeroes.

The second problem was the code that built the encoding using the 'post'
table. This code had a 'repeat' loop to find the name from the start of
the glyphNames section of the 'post' table for each named glyph in the
encoding. By creating a temporary cross reference, only one pass through
the names is made.
</pre></blockquote>

<p><strong><a name="2003-05-18_0503"></a>
2003-05-18 05:03 Alex Cherepanov</strong></p>
<blockquote><pre>
PostScript is a trademark and requires BiCapitalization.
</pre></blockquote>

<p><strong><a name="2003-05-17_0546"></a>
2003-05-17 05:46 Ray Johnston</strong></p>
<blockquote><pre>
Security fixes. Add detection of %pipe% device when in SAFER mode. Also
fix detection of 'renamefile' to prevent rename from a file that is not on
the PermitFileControl list.
</pre></blockquote>

<p><strong><a name="2003-05-17_0540"></a>
2003-05-17 05:40 Ray Johnston</strong></p>
<blockquote><pre>
Fix to prevent Windows function from creating file names like (xxx/\\yyy).
If there is a trailing path sep, GetTempFileName needs it to be \, not /.
Also remove extraneous ^M from previous commit.
</pre></blockquote>

<p><strong><a name="2003-05-16_1449"></a>
2003-05-16 14:49 Ralph Giles</strong></p>
<blockquote><pre>
Correct the implementation of the new file_name_combine operators for MacOS.

Details:

The parent directory reference prefix is '::' rather than ':'. Also, a path
that begins with the ':' directory separator is a relative path from the
current working directory.

The more substantive change is in the implementation on gp_check_root(), intended
to return the 'root' prefix of a path, if any. The previous implementation returned
the location of the first patch separator, causing initialization to fail when
attempting to determine if GenericResourceDir ends in a directory separator in
gs_res.c.

Absolute paths are not a well defined concept on Classic MacOS. In that case we just
return 0, as if no path were ever absolute. This likely causes other problems not
addressed here. In the Carbon build, we make use of the FSGetVolumeInfo() call
to enumerate all mounted volumes, attempting to match each one. This call returns a
16-bit char unicode name for each volume which we make no attempt to convert to
whatever 8-bit encoding ghostscript might receive the path in orginally; however
we do match the lower 8 bits for the first 256 characters, which works well enough
for English volume names.

Note that this patch only provides support for MacOS-style paths with ':' as a
separator. The Metrowerks Standard Library also accepts unix-style paths and
on MacOS X users will expect to be able to use them. Support will need to be
extended to include this.
</pre></blockquote>

<p><strong><a name="2003-05-16_1255"></a>
2003-05-16 12:55 Alex Cherepanov</strong></p>
<blockquote><pre>
Fix uninitialized variable in gp_open_scratch_file() when the temporary 
file prefix is an absolute path.
Fixes bug 686874
</pre></blockquote>

<p><strong><a name="2003-05-16_1248"></a>
2003-05-16 12:48 Alex Cherepanov</strong></p>
<blockquote><pre>
Disable binary encoding. PDF doesn't use binary encoding and may
contain characters in the range 128 to 159 in names.
Fixes bug 686866
</pre></blockquote>

<p><strong><a name="2003-05-16_1241"></a>
2003-05-16 12:41 Alex Cherepanov</strong></p>
<blockquote><pre>
Wild core returned sometimes as an error code from pdf_image_end_image_data()
caused unexpected PS error and a low level stacks dump.
Fixes bug 686870.
</pre></blockquote>

<p><strong><a name="2003-05-15_2310"></a>
2003-05-15 23:10 Dan Coby</strong></p>
<blockquote><pre>
Added new PS source file lib/pdf_rbld.ps.  This module contains procedures
for rebuilding damaged PDF files.
</pre></blockquote>

<p><strong><a name="2003-05-15_2306"></a>
2003-05-15 23:06 Dan Coby</strong></p>
<blockquote><pre>
Added new PS source file lib/pdf_rbld.ps.  This module contains procedures
for rebuilding damaged PDF files.
</pre></blockquote>

<p><strong><a name="2003-05-15_2231"></a>
2003-05-15 22:31 Dan Coby</strong></p>
<blockquote><pre>
This is a set of routines for attempting to recover PDF files which
have been mangled by EOL conversions.  This is a facility which Adobe
Acrobat has and thus we need to duplicate.

DETAILS:

THE PROBLEM:

The basic problem is that PDF files contain 'xref tables' which are
really object location indexes which contain the absolute position of
objects in a file.  If a file is changed by converting the type of
EOLs then the file size is changed and the xref data is no longer
valid.  In many cases, Acrobat can rebuild these files.  It is not
always possible to always rebuild files.  If the files contain binary
data which contains line feed or new line characters then the binary
data may be mangled and cannot be rebuilt.  We need to be able to
duplicate Acrobat's ability for rebuilding files.  (Note:  In theory
one can get more and more sophisticated about rebuilding files.  The
techniques used in this code are quite simple but effective.)

THE BASIC SOLUTION:

The solution to this problem consists of several pieces.  The first piece
was to modify the pdf interpreter's internal representation of the xref
data.  The xref data is stored into two larrays.  The larray Generations
contains the object's generation number.  This was not changed.  The
larray Objects contained the location of the xref entry in the file.
This was set initially by the readxref routine.  Since the xref entry
data is not valid (for mangled files) this was not useful.  Objects
was changed to contain the actual location of the object in the file.
This actually eliminates one step in the process.  Previously when an
object was referenced, the location of the xref entry in the file was
obtained from Objects and then the xref entry was read to determine
the actual location of the desired object.

The second part of the process was to put .internal_stopped trapping
around the two usages of readxref to catch any failures of that routine.
An error message is printed and we then try to rebuild the locations
of the objects and find the proper trailer dictionary.

The third part of the process is to locate the objects in the file.
This is done by a simple scan of the file looking for lines beginning
with x y obj where x is a object number and y is object generation
number and obj is the text 'obj'.  In theory this simple strategy can
be confused by binary data but with over 156 files tested, no problems
were found.

The fourth part of the process is to locate the appropriate 'trailer'
dictionary.  There is a trailer dictionary with each xref list.  In
theory there can be many trailer dictionaries in a file.  The only
desired trailer dictionary is the one associated with the 'first'
xref list.  Unfortunately since we cannot count on the location
information in a mangled file, following the xref links is problematic.
The solution used is simple.  For Linearized pdf files, we find the
first (at the front of the file) trailer dictionary otherwise we use
the last trailer dictionary in the file.  This simple method works
for the 151 known good files (see testing below) and all five known
bad files.

Included are diffs for the changes and the new file lib/pdf_rbld.ps.
The only change in the src directory was the addition of pdf_rbld.ps
to the int.mak file.

TESTING:

There have been two sets of test run on this code.  The first set
consists of running 151 pdf files from our regression test suite.
These files are not mangled.  However by disabling the normal readxref
routine, the new code was exercised.  All 151 pdf files were displayed
correctly.

The second set of tests consists of actual problem files.  I was able
to locate five files that we have been sent that have been mangled.

file name		Ghostscript	Acrobat 5.0.5
1003.pdf		   okay		   okay
cm_test.pdf		   okay		   okay
precon.pdf		   okay	  	   fail
ServletReport.pdf	   fail	       	   fail
dauben.pdf		   fail		   fail

As expected, not all files can be recovered.  I was pleased that,
for this small sample, we did better than Acrobat.
</pre></blockquote>

<p><strong><a name="2003-05-15_2225"></a>
2003-05-15 22:25 Dan Coby</strong></p>
<blockquote><pre>
Revised fix for 686872 token operator sometimes leaves extra data on stack.
With some strings, the token operator can leave extra data on the stack.
In the test case, the token operator is generating a syntaxerror.  The
error is expected.  However the token operator is leaving 3 items on the
stack.  It should only leave one:  The original string.  This fix
corrects the problem.

DETAILS:

The problem was found while developing the xref data recovery facility
which uses the token operator to scan PDF files (including binary data).
The fix consists of simply recording the operator stack level at the
start of the string processing and restoring it if an error occurs.

The revision to the fix consists of using the 'pop' macro to modify
the o_stack pointer instead of directly setting the pointer.
</pre></blockquote>

<p><strong><a name="2003-05-15_1846"></a>
2003-05-15 18:46 Alex Cherepanov</strong></p>
<blockquote><pre>
Fix negative shift count in operator &lt;&lt; .
On 80x86 processors the shift argument is implicitely masked by 31.
Fixes bug #686743.
</pre></blockquote>

<p><strong><a name="2003-05-15_1659"></a>
2003-05-15 16:59 Ralph Giles</strong></p>
<blockquote><pre>
Add the psd (Photoshop raster) output devices to the default autoconf build.
</pre></blockquote>

<p><strong><a name="2003-05-15_1001"></a>
2003-05-15 10:01 Russell Lang</strong></p>
<blockquote><pre>
Log message:
For the pngalpha device, set the default background color to white
in the bKGD chunk.  Add an option -dBackgroundColor=16#RRGGBB to
explicitly set the background color.  This is needed by a common
web browser that doesn't correctly support PNG with alpha transparency.

DETAILS:
Programs that don't fully support alpha transparency let
libpng convert an RGBA image to RGB.  The background color
used is either provided by the program, or in the bKGD
chunk, or it falls back to gray.  MSIE was defaulting
to a gray background which is not commonly used on web
pages.  By writing a white bKGD chunk, PNG files will display
correctly against a white background in MSIE.
If a solid color for a web page background is used
with &lt;body bgcolor="#CCCC00"&gt;, then PNG images appearing
on that page would need to be created with
-dBackgroundColor=16#CCCC00.
For textured background there is no hope.
Microsoft needs to fix Internet Explorer.
</pre></blockquote>

<p><strong><a name="2003-05-15_0325"></a>
2003-05-15 03:25 Dan Coby</strong></p>
<blockquote><pre>
Fix for 686872 token operator sometimes leaves extra data on stack.
With some strings, the token operator can leave extra data on the stack.
In the test case, the token operator is generating a syntaxerror.  The
error is expected.  However the token operator is leaving 3 items on the
stack.  It should only leave one:  The original string.  This fix
corrects the problem.

DETAILS:

The problem was found while developing the xref data recovery facility
which uses the token operator to scan PDF files (including binary data).
The fix consists of simply recording the operator stack level at the
start of the string processing and restoring it if an error occurs.
</pre></blockquote>

<p><strong><a name="2003-05-14_1336"></a>
2003-05-14 13:36 Alex Cherepanov</strong></p>
<blockquote><pre>
Following PDF spec make MatrixA equal to WhitePoint of CalGray color 
space. To avoud clipping set the max values of RangeLMN to the
corresponding values of WhitePoint.
Fixes bug 686749
</pre></blockquote>

<p><strong><a name="2003-05-12_1221"></a>
2003-05-12 12:21 Igor Melichev</strong></p>
<blockquote><pre>
Fix : margin_set::y was not initialized starting a fill (2nd attempt).

DETAILS :

The previous patch caused differences in rendering,
and therefore it's log message appers wrong.
Actually the uninitialized variable caused an indeterministic behavior,
and the previous patch fixed it.

Meanwhile the initial value appears not good for the case
then the bottom of a character may cause a dropout.
This patch improves that case.

Expecting minor differences rendering the following files at 72dpi :

01_001.pdf
136-01.ps
165-01.ps
455690.pdf
86554321.pdf
aaon97_p7.pdf
ccc.pdf
chess.ps
CIDembedded.pdf
LD.pdf
messenger.pdf
messenger16.pdf
QuickNews_Nov22.pdf
RodinCIDEmbed.pdf
xgfddg.pdf
</pre></blockquote>

<p><strong><a name="2003-05-11_1359"></a>
2003-05-11 13:59 Alex Cherepanov</strong></p>
<blockquote><pre>
Linearized PDF hints are rewritten as following:
(1) added shared object hint table
(2) added padding after every per-page entry in hint tables
(3) changed the values of some entries
Fixed a PS error in PDF files with empty /Contents array.
Added a check for encrypted PDF.
Fixes bug #611694.

DETAILS:
There are still many things to improve:
(1) detection of 1st page objects and shared objects yelds different
    result from Adobe Acrobat.
(2) no optional hint tables are generated
(3) encrypted PDF is not supported

The optimizer was tested on all PDF files of our test suite. It fails on:
(1) all encrypted files
(2) 000040cf.000_60.pdf because of bad entries in 12 0 obj
(3) test_multipage_prob.pdf because one of the font names contains
    a character recognized as a binary token
</pre></blockquote>

<p><strong><a name="2003-05-11_1333"></a>
2003-05-11 13:33 Alex Cherepanov</strong></p>
<blockquote><pre>
Add missing quote to an error message.
</pre></blockquote>

<p><strong><a name="2003-05-09_0043"></a>
2003-05-09 00:43 Ralph Giles</strong></p>
<blockquote><pre>
Replace generic always-on debug printfs with if_debugN() calls. To get
the old behavior, pass -Zs to the debug build.
</pre></blockquote>

<p><strong><a name="2003-05-09_0041"></a>
2003-05-09 00:41 Ralph Giles</strong></p>
<blockquote><pre>
Correct a cut-and-paste error in FEATURE_DEVS.
</pre></blockquote>

<p><strong><a name="2003-05-08_2149"></a>
2003-05-08 21:49 Raph Levien</strong></p>
<blockquote><pre>
Workaround to clean up after a PaintProc which leaves additional
garbage on the operator stack. Fixes bug #686855.
</pre></blockquote>

<p><strong><a name="2003-05-08_1832"></a>
2003-05-08 18:32 Ralph Giles</strong></p>
<blockquote><pre>
Add the standard copyright banner and &#36;Id line to the new changelog script.
</pre></blockquote>

<p><strong><a name="2003-05-08_1828"></a>
2003-05-08 18:28 Ralph Giles</strong></p>
<blockquote><pre>
Add recent new files to the developer documentation.
</pre></blockquote>

<p><strong><a name="2003-05-08_1104"></a>
2003-05-08 11:04 Igor Melichev</strong></p>
<blockquote><pre>
Fix (type 1 hinter) : Overshoot thresholds were wrongly computed with TextAlphaBits &gt; 1.
</pre></blockquote>

<p><strong><a name="2003-05-08_1033"></a>
2003-05-08 10:33 Russell Lang</strong></p>
<blockquote><pre>
When enumerating files on Windows, do not return directory
names.  Partial fix for Bug 686853  filenameforall enumerates
directory items.
</pre></blockquote>

<p><strong><a name="2003-05-08_0957"></a>
2003-05-08 09:57 Igor Melichev</strong></p>
<blockquote><pre>
Fix : margin_set::y was not initialized starting a fill.

DETAILS :

It could indereministically execute some code in start_margin_set,
but the code appears idle in this case because margin_set::margin_list == NULL.
Therefore it could not cause an indeterministic result.
Therefore this patch is an equivalent change, which is useful
to simplify the job for code validation tools.
</pre></blockquote>

<p><strong><a name="2003-05-08_0816"></a>
2003-05-08 08:16 Igor Melichev</strong></p>
<blockquote><pre>
Fix : gx_path::procs was not initialized in some cases.
</pre></blockquote>

<p><strong><a name="2003-05-08_0423"></a>
2003-05-08 04:23 Igor Melichev</strong></p>
<blockquote><pre>
pdfwrite : Don't write colors to charproc.

DETAILS :

Bug 686856 "PDF interpreter : /undefined in --setgray--".

Rather Acrobat Reader ingonre colors in charprocs,
we should not write them, because it is not conforming.

Expecting differences with pdfwrite with the tests :

adesso8.pdf
grayalph.ps
</pre></blockquote>

<p><strong><a name="2003-05-07_2212"></a>
2003-05-07 22:12 Dan Coby</strong></p>
<blockquote><pre>
Fix for 686857 bitcmyk has problems with -dBITS=2.  This fix corrects
a problem with the halftone calculations if the number of bits per
component is more than one and the process color model is subtractive.

DETAILS:

This problem was caused by a change (1.2) to src/gxdevndi.c

  src/gxdevndi.c
    Modified gx_render_device_DeviceN to always perform the conversion
    from color component intensity values to halftone levels in an
    additive sense, if the gray_colorspace operand is true. This is
    necessary for compatibility with the pre-DeviceN code.

However the change only worked for max_value = 1.  This is the typical
case of 1 bit halftoning.  The fix works for any value of max_value.
</pre></blockquote>

<p><strong><a name="2003-05-07_1637"></a>
2003-05-07 16:37 Ray Johnston</strong></p>
<blockquote><pre>
Add some Document structuring commands to improve conformance. Thanks to
HF Nordhaug for submitting these.
</pre></blockquote>

<p><strong><a name="2003-05-07_1255"></a>
2003-05-07 12:55 Ralph Giles</strong></p>
<blockquote><pre>
Prefer the more modern __VMS platform define for including inttypes.h.
</pre></blockquote>

<p><strong><a name="2003-05-07_1131"></a>
2003-05-07 11:31 Ralph Giles</strong></p>
<blockquote><pre>
Include inttypes.h on VMS. This provides the stdint types needed by jbig2dec,
at least on OpenVMS. After a patch from Jouk Jansen.
</pre></blockquote>

<p><strong><a name="2003-05-06_2050"></a>
2003-05-06 20:50 Alex Cherepanov</strong></p>
<blockquote><pre>
dumphint is a new utility to print (to stdout) linearized PDF hint tables in
an easy-to-read form. The following deviations from the published
specification has been observed in PDF files produced by Acrobat suite
of products.

(1) /P (page offset hint table) key in hint stream dictionary has never been
    generated by Adobe products. It is no longer required in PDF 1.5.
(2) Per-page items 4 and 5 of the page offset hint table start from 1st
    page, not 2nd page as the spec claims.
(3) All array entries start from the new byte boundary.
</pre></blockquote>

<p><strong><a name="2003-05-06_1038"></a>
2003-05-06 10:38 Jouk Jansen</strong></p>
<blockquote><pre>

 Committing in .

 jbig2 support for OpenVMS using MMK

 Modified Files:
 	gs/src/jbig2.mak gs/src/openvms.mmk
 ----------------------------------------------------------------------
</pre></blockquote>

<p><strong><a name="2003-05-06_1005"></a>
2003-05-06 10:05 Igor Melichev</strong></p>
<blockquote><pre>
pdfwrite : Don't convert type 1 patterns and type 3 fonts to rasters.

DETAILS :

Expecting differences with pdfwrite with the tests :

H:\AuxFiles\CompareFiles\012-09.ps
013-09.ps
014-09.ps
015-09.ps
017-01.ps
020-01.ps
027-13.ps
031-05.ps
032-07.ps
034-10.ps
035-07.ps
045-01.ps
083-09.ps
103-01.ps
118-01.ps
123-09.ps
136-01.ps
148-16.ps
149-05.ps
165-01.ps
169-09.ps
176-01.ps
192-01.ps
205-09.ps
212-01.ps
213-01.ps
214-01.ps
220-07.ps
222-09.ps
226-01.ps
231-01.ps
244-01.ps
245-01.ps
245-07.ps
245-13.ps
245-17.ps
250-01.ps
251-01.ps
255-01.ps
257-01.ps
258-01.ps
260-01.ps
263-01.ps
264-01.ps
269-01.ps
270-01.ps
281-01.ps
296-01.ps
297-01.ps
298-09.ps
303-01.ps
307-07.ps
310-04.ps
311-03.ps
321-09.ps
327-01.ps
334-01.ps
335-01.ps
336-01.ps
adesso8.pdf
grayalph.ps
mspro.pdf
Popafinalrep.pdf
prob1.pdf
Testform.v1.0.2.pdf
xes2ps-problem.pdf
</pre></blockquote>

<p><strong><a name="2003-05-06_0850"></a>
2003-05-06 08:50 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Pattern phase was wrongly computed for pattern stream accumulation (2nd attempt).
</pre></blockquote>

<p><strong><a name="2003-05-06_0351"></a>
2003-05-06 03:51 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Pattern phase was wrongly computed for pattern stream accumulation.
</pre></blockquote>

<p><strong><a name="2003-05-05_1257"></a>
2003-05-05 12:57 Igor Melichev</strong></p>
<blockquote><pre>
Free Type Integration : commit an improved bridge.

DETAILS :

This commit corresponds to Free Type revision
http://www.graham.asher.btinternet.co.uk/artifex19.zip
http://www.graham.asher.btinternet.co.uk/artifex19.txt .
Note that it includes fixes opposite the current Free Type CVS.
The file ftwinfnt.h is missed in the zip, taken from an older version.

Rather the release note reads that all test files are passed except 2 ones,
we noticed failures running 01_001.pdf, 401-01.ps, Altona.Page_3.2002-09-27.pdf,
fonts.pdf (infinite loop), H00216q.pdf, HeiseiMinStd.pdf, keyboard.pdf,
test_multipage_prob.pdf (crash),
Also the character 'R' in 0.pdf renders wrongly.
Systematical testing was not done yet.
</pre></blockquote>

<p><strong><a name="2003-05-05_1153"></a>
2003-05-05 11:53 Igor Melichev</strong></p>
<blockquote><pre>
Fix : Add the static resource gs/Decoding/StandardEncoding .
</pre></blockquote>

<p><strong><a name="2003-05-05_1150"></a>
2003-05-05 11:50 Igor Melichev</strong></p>
<blockquote><pre>
Initial commit for a minimal set of resources for CID font emulation, FAPI and pdfwrite .
</pre></blockquote>

<p><strong><a name="2003-05-05_0908"></a>
2003-05-05 09:08 Igor Melichev</strong></p>
<blockquote><pre>
Fix (file_name_combine) : Check .tempfile permissions.

DETAILS :

The temporary directory is allowed for creating temporary files
without specifying a special permission. However when the
prefix argument of .tempfile is an absolute path,
the permission is checked for it.

Minor change :

On Windows gp_open_scratch_file now calls gp_gettmpdir,
making the logic closer to one on Unix.
The call to GetTempPath is left for backward compatibility
(when the environment specify TMP but no TEMP).
</pre></blockquote>

<p><strong><a name="2003-05-04_2201"></a>
2003-05-04 22:01 Igor Melichev</strong></p>
<blockquote><pre>
Fix (AlignToPixels) : Provide a better stem contrast.

DETAILS :

Minor changes :
1. Alignment with AlingToPixels=1 was wrong (gxhintn.c ln 1370).
2. The debug graphic output wrongly drew integral pixels.
</pre></blockquote>

<p><strong><a name="2003-05-04_2006"></a>
2003-05-04 20:06 Ralph Giles</strong></p>
<blockquote><pre>
Correct a programming error that prevented macos native font loading from working
under Metrowerks Codewarrior.

DETAILS:

Integers were being read by |-ing together the results of successive fgetc() calls
within a single expression. Binary or doesn't have a specific order of evaluation in
C so while gcc read the bytes in the correct order Metrowerks was re-ordering the first
two reads resulting in a byte-swap error. The new code uses fread() followed by
reordering based on array index.
</pre></blockquote>

<p><strong><a name="2003-05-04_1019"></a>
2003-05-04 10:19 Igor Melichev</strong></p>
<blockquote><pre>
Fix (AlignToPixels) : Rounding formulas for glyph positions were wrong.
</pre></blockquote>

<p><strong><a name="2003-04-30_2002"></a>
2003-04-30 20:02 Igor Melichev</strong></p>
<blockquote><pre>
Fix : FONTPATH was broken with lib/gs_fonts.ps revisions 1.17 and 1.25 .
</pre></blockquote>

<p><strong><a name="2003-04-30_1034"></a>
2003-04-30 10:34 Russell Lang</strong></p>
<blockquote><pre>
If reopening the display device fails after setting the
callback, display an error message. Allocate the large display
bitmap using a low level allocator to avoid exceeding the memory
limit of the previously used device stable memory allocator.
Fixes bugs 686836 "-r doesn't work" and duplicate 686838
"Ghostscript doesn't do anything".

DETAILS:
The display memory device and the raster including line pointers
was allocated using the stable allocator of the display device.
This had a limit of 1Mbyte, which was exceeded when the
resolution was greater then 114dpi.  This would cause subsequent
allocations to fail, but it appears that nothing else tried to
use this allocator after the display device.  The display device
was changed to allocate the line pointers separately to allow
the raster to be allocated in special memory, e.g. video memory
or shared memory.  This caused the subsequent allocation of the
line pointers to fail when resolution exceeded 114dpi.

The modified code now allocates the raster with
gs_alloc_byte_array_immovable, which allocates directly from the
C heap, not subject to any memory limit apart from the overall
-K limit if specified, and is not subject to garbage collection.
The normal allocator now has sufficient memory to allocate the
line pointers without problem. The raster pointer is removed
from the pointers that are enumerated during garbage collection.
</pre></blockquote>

<p><strong><a name="2003-04-30_0111"></a>
2003-04-30 01:11 Ray Johnston</strong></p>
<blockquote><pre>
Add a an option to disable the use of and embedded BeginICCProfile in
PostScript. The option is -dNOPSICC. Documentation is also added for
the option.
</pre></blockquote>

<p><strong><a name="2003-04-29_2250"></a>
2003-04-29 22:50 Ralph Giles</strong></p>
<blockquote><pre>
Enable jbig2 support in the default windows build. The jbig2dec source is now required.
</pre></blockquote>

<p><strong><a name="2003-04-27_2346"></a>
2003-04-27 23:46 Ralph Giles</strong></p>
<blockquote><pre>
Add the bbox device to the default macos shlib build. Bug 686811.
</pre></blockquote>

<p><strong><a name="2003-04-26_1840"></a>
2003-04-26 18:40 Dan Coby</strong></p>
<blockquote><pre>
Log Message:

This is the fix for 686798 /typecheck in --setcolorspace-- with
-sDEVICE=x11cmyk. This fix increases the stack checking while sampling
tint transform functions. It also makes the error handling more robust
for invalid tint transforms.

DETAILS:

It is sad to say but this is a bug that we have seen before, several
times.  Ray and I fixed this problem at the last code fest in September.
However that fix did not make its way into CVS.

The cause of this problem is that certain proc sets from Adobe violate
the PLRM.  In the test file, the proc set is from Adobe Photoshop
Version 5.5.  The proce set contains tint transform functions which
violate the specification in two different ways.  In one case, the tint
transform function changes stack values outside of the given color value.
This is used as a test to see if the interpreter supports the given
duotone color space.  If so then the proc set creates a color space with
a tint transform which is unbalanced in its stack usage.  This could
cause a stack overflow/underflow during sampling of the tint transform.
Adobe apparently assumes that this tint transform is never executed
since the function starts with the name /NeverReached.

The fix involves checking the stack depth after each execution of the
tint transform function and verifying that it matches the correct
position given the number of function inputs and outputs.  If so then
the stack is returned to its original position and the sampling is
aborted.  Changes in lib/gs_sepr.ps make the tint transform sampling
logic more robust in case the tint transform modifies the top of the
stack.  (This occurs in this case since the tint transform is actually
popping extra items off of the stack.)  We also create a dummy tint
transform function if sampling fails.  The later was done to prevent
the /typecheck error and give pdfwrite something with which to work.
</pre></blockquote>

<p><strong><a name="2003-04-26_1828"></a>
2003-04-26 18:28 Alex Cherepanov</strong></p>
<blockquote><pre>
Fix scanline size calculations and channel mix-up.
</pre></blockquote>

<p><strong><a name="2003-04-26_1705"></a>
2003-04-26 17:05 Igor Melichev</strong></p>
<blockquote><pre>
Complete the set of Adobe CMaps.
</pre></blockquote>

<p><strong><a name="2003-04-26_0452"></a>
2003-04-26 04:52 Alex Cherepanov</strong></p>
<blockquote><pre>
Following PDF 1.4, chapter 4.6.2 pattern is instantiated in the graphic state
harvested at the beginning of the pattern's parent content stream. This patch
fixes PS graphic state parameters only. PDF specific parameters are still
inherited from the current graphic state.
Bug #686834

DETAILS:
PS makepattern operator saves only PS graphic state for later use in PaintProc.
GS PDF interpreter implements PDF graphic state as a stack of dictionaries.
We should save full PDF graphic state and set it manually during execution of
PaintProc.
</pre></blockquote>

<p><strong><a name="2003-04-24_1942"></a>
2003-04-24 19:42 Ray Johnston</strong></p>
<blockquote><pre>
Fix ASCII85Decode filter to match Adobe's when strings that are not multiples
of four are padded with other than zero. Tested against CPSI for exact match.
Also overflow error detection added to conform to the PLRM and CPSI.
Fixes bug #686840.
</pre></blockquote>

<p><strong><a name="2003-04-24_0637"></a>
2003-04-24 06:37 Ray Johnston</strong></p>
<blockquote><pre>
Add processing of %%BeginICCProfile DSC section for (some) EPS file, notably
Adobe Photoshop. Final part of fix for bug 686797.

DETAILS:
The change to gs_pdfwr.ps was due to the fact that it did not properly
balance the stack.

The method of trying /N 4 + /DeviceCMYK, then /N 3 + /DeviceRGB, finally
/N 1 + /DeviceGray is a *hack* that could be avoided if we knew what color
space the ICC profile expected. Since .seticcspace fails if /N doesn't
match what is in the profile, this seems like a reasonable hack.
</pre></blockquote>

<p><strong><a name="2003-04-24_0620"></a>
2003-04-24 06:20 Ray Johnston</strong></p>
<blockquote><pre>
Get rid of some dead code (left over from cut+paste)
</pre></blockquote>

<p><strong><a name="2003-04-23_1847"></a>
2003-04-23 18:47 Ray Johnston</strong></p>
<blockquote><pre>
The DeviceN merge broke the command line -dUseCIEColor option. This patch
restores basic CMYK color conversion when -dUseCIEColor is set. Partial
solution to bug #686797.
</pre></blockquote>

<p><strong><a name="2003-04-23_1558"></a>
2003-04-23 15:58 Ralph Giles</strong></p>
<blockquote><pre>
Remove some debug printouts.
</pre></blockquote>

<p><strong><a name="2003-04-22_1352"></a>
2003-04-22 13:52 Igor Melichev</strong></p>
<blockquote><pre>
Applying the generic stream accumulation method to /BP pdfmark.

DETAILS:

This is an equivalent change.
</pre></blockquote>

<p><strong><a name="2003-04-21_1539"></a>
2003-04-21 15:39 Igor Melichev</strong></p>
<blockquote><pre>
A preparation for non-convert PatternType 1 to rasters with pdfwrite.

DETAILS:

The patch defines a new device virtual function pattern_manage,
and a default implementation for it. The purpose is to inform
the device about pattern accumulation and to bypass the installation of
gx_device_pattern_accum when the device can handle the pattern command stream.

The new code is temporary disabled with PATTERN_STREAM_ACCUMULATION 0
macro defined in gx.h . When it is 0, the new device virtual
function is provided but never called. The behavior should not change.

The rest of this log message describes PATTERN_STREAM_ACCUMULATION 1.
In this mode pdfwrite doesn't convert PatternType 1 to rasters.
It creates good PDFs at least with 012-09.ps and 269-01.ps
(these are very complicated cases with patterns inside charprocs and patterns),
but there are problems when rasterizing the resulting PDFs with GS.
(A new bug 686834 issued for tracking this problem).

When a pattern stream is handled by the device,
we can't create a proper content of gx_color_tile.
However we need a correct content if the pattern is used
for rasterization of an object which the device can't handle
at the high level. An example is pdf14 device during a PDF re-distillation,
which handles transparency. Another example is
a conversion of composite fonts, which have multiple CID descendents -
pdfwrite still converts such fonts to raster fonts.

Since a proper contents may be needed for gx_device_color,
we define a new flag gx_color_tile::is_dummy, and account it in
gx_pattern_cache_lookup. Thus, if the current device is cache device
installed for the font conversion, the tiles with is_dummy == true
are being be dismissed. Vice versa, tiles with is_dummy == false are
being dismissed when current device is pdfwrite.

We do not move parts of zpcolor.c code to gx_default_pattern_manage,
because we don't see a proper place for it to be compatible to
the FEATURE_DEVS configurability. Instead that, we implement
a branching inside gsptype1.c and zpcolor.c . If more branches will
be necessary in future, this to be improved with moving code
fragments to specific implementations of pattern_manage,
together with improving the FEATURE_DEVS modularity.
Delaying this reorganization until a strong reason appears.

NOTE: The patch extends the device interface with gs_pattern1_instance_t.

Minor Changes :

1. Fixed some MSVC warnings.
2. gx_pattern_alloc_cache passed a wrong client ID to memory manager.
3. Skipped some unuseful graphic state parameters while a contents substream accumulation.
</pre></blockquote>

<p><strong><a name="2003-04-18_2200"></a>
2003-04-18 22:00 Russell Lang</strong></p>
<blockquote><pre>
In the display device, store the line pointers separately from
the bits, so that the bits can be placed in special memory (e.g.
allocated in video memory).  Fixes Bug 686780 display_memalloc()
asks for too much memory.
</pre></blockquote>

<p><strong><a name="2003-04-18_1819"></a>
2003-04-18 18:19 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Applying a generic resource writing method to charprocs.

DETAILS:

pdf_write_resource_objects does it fine after a small change
to pdf_begin_data_stream.

This patch must not change any behawior except the PDF object writing sequence.

Minor Changes :

1. Removed rudiments of a dead development branch.
2. Generalized pdf_enter_substream and pdf_begin_data_stream .
</pre></blockquote>

<p><strong><a name="2003-04-18_1457"></a>
2003-04-18 14:57 Ralph Giles</strong></p>
<blockquote><pre>
Calling the gsapi polling function from the Macintosh gp_check_interrupts
function voilates the layering of the interpreter over the graphics library.
Therefore we isolate the offending code to a separate module 'macpoll.dev'
in a fashion analogous to the mspoll feature dev available on the windows
build. Enable this by default in the CodeWarrior build.
Partial fix for Bug 686810. After a patch by Russell Lang.
</pre></blockquote>

<p><strong><a name="2003-04-18_1433"></a>
2003-04-18 14:33 Ralph Giles</strong></p>
<blockquote><pre>
Use different output file names for the Classic and Carbon MacOS shlib targets.
Closes bug 686818.
</pre></blockquote>

<p><strong><a name="2003-04-18_1416"></a>
2003-04-18 14:16 Igor Melichev</strong></p>
<blockquote><pre>
Complete the set of Adobe CMaps.
</pre></blockquote>

<p><strong><a name="2003-04-18_0118"></a>
2003-04-18 01:18 Russell Lang</strong></p>
<blockquote><pre>
Call the gsapi polling function from the Macintosh gp_check_interrupts
function. Partial fix for Bug 686810 "CHECK_INTERRUPTS should allow
shorter worst-case abort".
</pre></blockquote>

<p><strong><a name="2003-04-17_0924"></a>
2003-04-17 09:24 Russell Lang</strong></p>
<blockquote><pre>
Call the gsapi polling function during the main interpreter loop
timeslice code.  This allows a client to abort the interpreter
when running "{} loop". Fixes Bug 686810 "CHECK_INTERRUPTS
should allow shorter worst-case abort".

DETAILS:
PostScript which executed an infinite loop could not be stopped
by the gsapi client.  The time slice code in the main
interpreter loop is executed once for every 32767 passes through
the interpreter loop.  Within the time slice code we now call
the polling function and if the return value is non-zero, we set
code to gs_error_interrupt to cause the interpreter to exit.
This was not a client bug (as far as I know).  The original
request was from Zoltan Biro.
</pre></blockquote>

<p><strong><a name="2003-04-17_0049"></a>
2003-04-17 00:49 Ralph Giles</strong></p>
<blockquote><pre>
Remove a C99 snprintf() call. In this case the length is limited by the format string.
</pre></blockquote>

<p><strong><a name="2003-04-17_0046"></a>
2003-04-17 00:46 Ralph Giles</strong></p>
<blockquote><pre>
Remove two non-library files from the jbig2 makefile.
</pre></blockquote>

<p><strong><a name="2003-04-17_0042"></a>
2003-04-17 00:42 Raph Levien</strong></p>
<blockquote><pre>
Added documentation of UseWTS user parameter.
</pre></blockquote>

<p><strong><a name="2003-04-17_0033"></a>
2003-04-17 00:33 Ralph Giles</strong></p>
<blockquote><pre>
Define HAVE_STDINT_H in stdpre.h on MacOS. Required for a clean compile
under CodeWarrior.

DETAILS:

The jbig2dec library and headers require some of the C99 types. We've
made sure those are available, but the mechanism depended on either
passing -DHAVE_STDINT_H on the commandline or windows-specific typedefs.
Since there's no convenient way pass single defines through codewarrior
that would be seen by both the jbig2dec and the gs sources, we add a
platform-specific define to headers in each codebase.
</pre></blockquote>

<p><strong><a name="2003-04-17_0023"></a>
2003-04-17 00:23 Ralph Giles</strong></p>
<blockquote><pre>
Enable jbig2 support in the MacOS CodeWarrior build, and add the local
library source to the search path. jbig2dec is now required for this build.
</pre></blockquote>

<p><strong><a name="2003-04-16_2332"></a>
2003-04-16 23:32 Ralph Giles</strong></p>
<blockquote><pre>
Protect some defines that conflict with constants in stdint.h.
</pre></blockquote>

<p><strong><a name="2003-04-16_1637"></a>
2003-04-16 16:37 Ralph Giles</strong></p>
<blockquote><pre>
Correct some typos.
</pre></blockquote>

<p><strong><a name="2003-04-16_1409"></a>
2003-04-16 14:09 Ralph Giles</strong></p>
<blockquote><pre>
Add a license paragraph for the Resource directory asserting the AFPL with
an exception for the Adobe-owned CMap files.
</pre></blockquote>

<p><strong><a name="2003-04-16_1354"></a>
2003-04-16 13:54 Ralph Giles</strong></p>
<blockquote><pre>
Test the optimization compiler flag '-O2' before using it since some vendor
compilers have different syntax.

DETAILS:

This is really just a quick fix; it doesn't check flags for the debug or profile
builds. A full solution would also try known options based on the compiler
being used. It's not fair to just disable optimization if -O2 doesn't work.
</pre></blockquote>

<p><strong><a name="2003-04-16_1338"></a>
2003-04-16 13:38 Ralph Giles</strong></p>
<blockquote><pre>
JBIG2 code in the interpreter and stream library requires an -I argument
to find the jbig2dec headers when compiling with local source.
</pre></blockquote>

<p><strong><a name="2003-04-16_0831"></a>
2003-04-16 08:31 Igor Melichev</strong></p>
<blockquote><pre>
Complete the set of Adobe CMaps.
</pre></blockquote>

<p><strong><a name="2003-04-15_1843"></a>
2003-04-15 18:43 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Compress charproc streams.

DETAILS:

This patch mixes 3 changes :

1. Applying a compression to vector charprocs. Bitmap charprocs are
   left uncompresed. The written PDF should have same contents as before.

2. A preparation to Type 1 pattern accumulation with implementing
   a pdf_substream_save stack. Moved accum_char_proc_* fields to there.
   This change should be equivalent.

3. Renamed cos_write_stream_from_pipeline to cos_stream_from_pipeline,
   because the old name appears confusable.
   A new function with the old name is defined for another purpose.

No regression changes expected.
</pre></blockquote>

<p><strong><a name="2003-04-15_1436"></a>
2003-04-15 14:36 Ralph Giles</strong></p>
<blockquote><pre>
Add new jbig2dec makefile and supporting defines to remaining platform-dependent makefiles.
</pre></blockquote>

<p><strong><a name="2003-04-15_1412"></a>
2003-04-15 14:12 Ralph Giles</strong></p>
<blockquote><pre>
Add support for compiling in libjbig2dec statically from source. This makefile
is only good for v0.2.
</pre></blockquote>

<p><strong><a name="2003-04-14_2115"></a>
2003-04-14 21:15 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Use cos_write_stream for charproc accumulation.

DETAILS:

pdfwrite crashes with -r72 012-09.ps due to 2 nesting separates :
one for charproc accumulator, and another one for graphic state object inside it.
This problem does not happen with comparefiles with the default value of -r.
Meanwhile the problem is harmful because it occasionally depends on CTM.

Minor changes :
- A misprint in "pdf_begin_char_proc_gerneric".
- Removed some unused variables.
- Inserted some necessary #include statements.
</pre></blockquote>

<p><strong><a name="2003-04-13_2314"></a>
2003-04-13 23:14 Igor Melichev</strong></p>
<blockquote><pre>
Fix (dropout prevention) : sfill was unintentionally slowed down.

DETAILS:

In some cases the scanline algorithm appears to speed up the sfill in about 2 times.
This patch enables the scanline algorithm when DROPOUT_PREVENTION is on,
except for characters. It brings the shfill case closer to the old algorithm.

This patch causes minor differences while filling a path,
especially with shfill, but such differences should be small
and almost unvisible.

Minor change :

The condition in gxfill.c line 2075 is changed to be closer to
the old algorithm when filling non-characters, because
dropout prewvention is not neccessary for this case.
</pre></blockquote>

<p><strong><a name="2003-04-12_2204"></a>
2003-04-12 22:04 Russell Lang</strong></p>
<blockquote><pre>
Add Resource directory to the lib path configured by the Windows installer.
</pre></blockquote>

<p><strong><a name="2003-04-12_1808"></a>
2003-04-12 18:08 Ray Johnston</strong></p>
<blockquote><pre>
Create more specific DEBUG switches in the interpreter initialization
modules to allow debugging to only include information of interest.
If -dDEBUG is set, then set all of the specific switches.
</pre></blockquote>

<p><strong><a name="2003-04-12_1739"></a>
2003-04-12 17:39 Ralph Giles</strong></p>
<blockquote><pre>
Add the new Resource directory tree to the unix install target.

DETAILS:

We have a hard-wired list of directories to install under Resource. All
the files in these directories will be non-recursively copied to the
install directory. It is therefore only necessary to update RES_CATEGORIES
when a new category is added but not for individual files.
</pre></blockquote>

<p><strong><a name="2003-04-12_1328"></a>
2003-04-12 13:28 Russell Lang</strong></p>
<blockquote><pre>
Add Resource directory to Windows installer.
Update copyright dates.
Exclude file attributes (ACLs) from the zip archives.
</pre></blockquote>

<p><strong><a name="2003-04-11_2147"></a>
2003-04-11 21:47 Ralph Giles</strong></p>
<blockquote><pre>
Correctly dereference the arguments to the sort compare function used in the
device listing. This was incorrect in the previous commit.
</pre></blockquote>

<p><strong><a name="2003-04-11_1755"></a>
2003-04-11 17:55 Igor Melichev</strong></p>
<blockquote><pre>
Fix : Increasing the text alpha bits thresholds.
Bug 686775 "Large text is not anti-aliased".

DETAILS:

We can't set infinite thresholds due to RAM consumption in character cache.
</pre></blockquote>

<p><strong><a name="2003-04-11_1754"></a>
2003-04-11 17:54 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Generate pseudo-random font names for subset fonts
from the glyph usage array.
Bug 686807 A "subset fonts" error in Adobe Acrobat from files made by GS8.00

DETAILS :

Since the revision 1.9 of gdevpdtb.c (Sun Sep 8 20:20:12 2002 UTC)
subset font names were deterministic to simplify the debugging.
The names were derived from resource IDs, and could cause a conflict
when merging documents. This patch generates different font names
hashing the glyph usage bitmask. Now the conflict can happen
with a very small probablility, when different subsets give same
hash value.
</pre></blockquote>

<p><strong><a name="2003-04-11_1105"></a>
2003-04-11 11:05 Ralph Giles</strong></p>
<blockquote><pre>
Add the new default resource directory to the autoconf makefile.
</pre></blockquote>

<p><strong><a name="2003-04-11_1056"></a>
2003-04-11 10:56 Igor Melichev</strong></p>
<blockquote><pre>
Fix : Remove an unintentional rudiment of a debug printing.
</pre></blockquote>

<p><strong><a name="2003-04-11_0936"></a>
2003-04-11 09:36 Igor Melichev</strong></p>
<blockquote><pre>
Turn on the static resources with COMPILE_INIT=1.

DETAILS:

The OpenVMS case is not implemented in geninit.c .
</pre></blockquote>

<p><strong><a name="2003-04-11_0930"></a>
2003-04-11 09:30 Igor Melichev</strong></p>
<blockquote><pre>
Switching to the new logics of resource file location.
THIS IS INCOMPATIBLE CHANGE, because the default resource path is now different :
resource files are moved to gs/Resource .
See gs/doc/Use.htm#Finding_files and gs/doc/Use.htm#Resource_related_parameters.

DETAILS:

This patch does not include necessary changes to Ghostscript installer.

The main code change in one to gp.h .
Rudiments of old code in gs/src and gs/lib are marked with NEW_COMBINE_PATH.
They to be removed after beta-testing.

Change to makefiles provide extended default values for
file search paths, which are platform dependent.

For convenience, here we summarize all related issues,
which were mentioned in previous patches :

1. The search method with multiple resource directories
   appears not fully conforming to PLRM. We cannot ever call
   ResourceFileName while executing findresource
   or resourcestatus, because per PLRM it always
   returns a single path. Therefore we implement
   an extended search method in findresource,
   resourcestatus and resourceforall, which first calls
   ResourceFileName and checks whether the returned path
   points to an existing file. If yes, the file is used,
   othervise we search all directories specified in
   LIB_PATH. With a single resource directory
   it appears equivalent to Adobe.
   THIS IS INCOMPATIBLE CHANGE.

2. ResourceFileName may be used for obtaining a path
   where a resource file to be installed. In this case
   Ghostscript to be invoked with -sGenericResourceDir=path,
   specifying an absolute path. The default value for
   GenericResourceDir is a relative path. Therefore
   a default invocation with a Postscript installer
   will install resources into gs/Resource.
   THIS IS INCOMPATIBLE CHANGE.

3. We do not distinguish lib and Resource directories.
   There is no file name conflicts because
   lib does not contain subdirectories, but Resource
   always store files in subdirectories.

4. We implement a new flag in gs_context_state,
   which informs lib_file_open whether it is invoked
   with a file specified in a command line argument.
   Doing so because command line argument files
   don't need to check permissions, and they
   are executed with a special PS operator .runfile .
   We cannot use a .runfile argument for passing this
   information, because it would be a security hole
   due to .runfile is available for documents
   and cannot be hidden.

5. We still have a security hole while loading
   resources from gs_init.ps .
   Both the old and the new code load some resources
   (such as CIDInit ProcSet) before entering
   the SAFER mode. Therefore it is a way for
   Postscript viruses to migrate.
   To be fixed later.

6. Default values for GenericResourceDir and FontResourceDir
   are platform dependent.
   (The old code always use Unix notation - a bug).

7. Default value for GenericResourcePathSep is platform dependent.
   The value is used before non-directory items only.
   (The old code always use Unix notation - a bug).
   (The old code used the value before directory items - a bug on OpenVMS).

8. If a path starts with a number of parent references,
   a template with same number of parent references
   must be added to permission list to allow the access in SAFER mode.
   The template (*) allows access to any file.
   THIS IS INCOMPATIBLE CHANGE, because
   the old code ever rejects parent directories.

9. GenericResourceDir and FontResourceDir are not being added
   to permission list while .locksafe. Instead that,
   we generate (*/*) templates with all LIBPATH items.
   THIS IS INCOMPATIBLE CHANGE, but for non-exotic cases
   (such as "(./Resource/CMap/H) .libfile" in a document)
   it should not be visible.

A. Scratch files with a non-absolute prefix always open
   in a scratch directory. The old code can open them
   in current and parent directories if an user modified
   a default prefix in C code.
   THIS IS INCOMPATIBLE CHANGE for users who had modified
   a scratch file prefix in C code.
   Permission for scratch directory is not checked
   as well as in old code.

B. The operator .filenamedirseparator is removed,
   because it cannot work properly on OpenVMS.
   On OpenVMS it needs both prefix and trailer to
   determine a correct separator.
   We removed it because the new logics never needs it.

C. The operator .pathstring_not_bare is removed,
   because .file_name_combine performs it's job better.

D. The functions gp_pathstring_not_bare, gp_file_name_references_parent,
   char *gp_file_name_concat_string are removed.

E. New operators added to maintain the new logics :

   &lt;string&gt; &lt;string&gt; &lt;bool&gt; .file_name_combine &lt;string&gt; true
   &lt;string&gt; &lt;string&gt; &lt;bool&gt; .file_name_combine &lt;string&gt; &lt;string&gt; false

      Combine a file name with a prefix.
      The first argument is a prefix, the second is a file name.
      Internal syntax of arguments and result is platform dependent.
      The combination is being reduced to a shortest equivalent,
      but if it starts with cwd reference, the starting
      cwd reference persists.

      If the &lt;bool&gt; argument is true, it considered to use the
      "no sibling" mode. It prevents reduction of
      (x/../y) to (y) for any x != y. With false such reduction
      is allowed. The &lt;bool&gt; argument appears a rudinemt from
      a dead branch. The new code always sets it to false.

      On success, the result is a combined, reduced path and false.
      On failure, the argument strings left on operand stack,
      followed with false.

   - .file_name_separator &lt;string&gt;

      Returns a readonly string, which represents a separator
      which is used in file names between directory item and file item.
      Used for making the default value of GenericResourcePathSep.

   - .file_name_directory_separator &lt;string&gt;

      Returns a readonly string, which represents a separator
      which is used in file names between two directory items.
      Used for making the default value of GenericResourceDir
      and FontResourceDir.

   - .file_name_current &lt;string&gt;

      Returns a readonly string, which represents a reference
      to current working directory. Used for making the default
      value of GenericResourceDir and FontResourceDir.
</pre></blockquote>

<p><strong><a name="2003-04-11_0759"></a>
2003-04-11 07:59 Igor Melichev</strong></p>
<blockquote><pre>
Initial commit for a minimal set of resources for CID font emulation, FAPI and pdfwrite .
</pre></blockquote>

<p><strong><a name="2003-04-11_0756"></a>
2003-04-11 07:56 Igor Melichev</strong></p>
<blockquote><pre>
Initial commit for a minimal set of resources for CID font emulation, FAPI and pdfwrite .
</pre></blockquote>

<p><strong><a name="2003-04-11_0748"></a>
2003-04-11 07:48 Igor Melichev</strong></p>
<blockquote><pre>
Removing it because it appears in a wrong place of the directory tree.
</pre></blockquote>

<p><strong><a name="2003-04-11_0746"></a>
2003-04-11 07:46 Igor Melichev</strong></p>
<blockquote><pre>
Initial commit for a minimal set of resources for CID font emulation, FAPI and pdfwrite .
</pre></blockquote>

<p><strong><a name="2003-04-11_0740"></a>
2003-04-11 07:40 Igor Melichev</strong></p>
<blockquote><pre>
Removing it because it appears in a wrong place of the directory tree.
</pre></blockquote>

<p><strong><a name="2003-04-11_0733"></a>
2003-04-11 07:33 Igor Melichev</strong></p>
<blockquote><pre>
Initial commit for a minimal set of resources for CID font emulation, FAPI and pdfwrite .
</pre></blockquote>

<p><strong><a name="2003-04-10_2222"></a>
2003-04-10 22:22 Ralph Giles</strong></p>
<blockquote><pre>
MSVC (at least) requires void* be cast. Also remove a spurious comment.
</pre></blockquote>

<p><strong><a name="2003-04-10_2211"></a>
2003-04-10 22:11 Ralph Giles</strong></p>
<blockquote><pre>
Sort the list of devices in the output of 'gs -h' so they're easier to read.
Also list the default device separately as it's no longer first. Based on a
patch from Nelson Beebe. Closes bug 416746.
</pre></blockquote>

<p><strong><a name="2003-04-10_1903"></a>
2003-04-10 19:03 Ray Johnston</strong></p>
<blockquote><pre>
Tolerate %%EOF that doesn't have any line-end characters before the end
of the file. No other applications (AR5, xpdf, pdf-tools) complain about
this, so now we also allow this variation on the %%EOF line.

Fixes bug: 686793
</pre></blockquote>

<p><strong><a name="2003-04-10_1845"></a>
2003-04-10 18:45 Alex Cherepanov</strong></p>
<blockquote><pre>
Use fstat() function to determine whether the file is seekable.
This should work on all supported platforms and seems to be the only way
to get the file type using a MSVC CRTL function.
Bug #686773

DETAILS:
Windows API documentation seems to imply undefined results when seeking
of retrieving file position of a special file. MSDN documentation requires
programmers to check file type using GetFileType() function before seeking.
MSVC 6 CRTL doesn't check file type before calling the corresponding 
Windows API functions. fstat() is the only function in MSVC 6 CRTL that
calls GetFileType(). S_ISREG() is a POSIX macro that check whether the
file is ordinary. It can be easily emulated if missing.
</pre></blockquote>

<p><strong><a name="2003-04-10_1639"></a>
2003-04-10 16:39 Alex Cherepanov</strong></p>
<blockquote><pre>
Use standard sRGB CRD. Fix color cast in the light areas caused
by chromatic adaptation done in the wrong (RGB) color space.
Bug #650802
</pre></blockquote>

<p><strong><a name="2003-04-10_1349"></a>
2003-04-10 13:49 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Generate a page when input file has no pages.
Bug 686792 "Empty PS file generates produces invalid PDF".
</pre></blockquote>

<p><strong><a name="2003-04-10_1158"></a>
2003-04-10 11:58 Igor Melichev</strong></p>
<blockquote><pre>
Fix : Ignore a missed CMapType, because Adobe does so.
Bug 686800 "Error converting PostScript file with vertical Japanese text".
</pre></blockquote>

<p><strong><a name="2003-04-10_0910"></a>
2003-04-10 09:10 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : The monitoring of fill overprint parameter was not conforming to PDF 1.3, 1.4 spec.
Bug 686802 "Stroke Overprint lost making PDF".
</pre></blockquote>

<p><strong><a name="2003-04-09_2326"></a>
2003-04-09 23:26 Ralph Giles</strong></p>
<blockquote><pre>
Update the release instructions to use cvs2cl and the new split_changelog.
Also include Changes and Details files for differences up to this point as
an example of the new format.
</pre></blockquote>

<p><strong><a name="2003-04-09_2258"></a>
2003-04-09 22:58 Ralph Giles</strong></p>
<blockquote><pre>
Add news script to generate split abbreviated/detailed changelogs in the new
format. Accepts xml input from the cvs2cl perl script.

DETAILS:

After the 8.00 release we switched to a new format for Changes.htm and the
History files, based on the more traditional Changelog format instead of
grouping commits by section, which often resulted in duplicate posts. At
the same time we began a convention of including any notes too extensive
for such a listing below a 'DETAILS:' separator, with the idea that we'd
create two changelogs, with hyperlinks between so detailed information was
still available even in the new easier to browse format.

The method we've adopted uses the cvs2cl perl script, available from
http://www.red-bean.com/cvs2cl/ to parse the output of 'cvs log' and
generate an xml file containing the merged entries. This script is
more robust than our own cvs2hist. The split_changelog.py script is
then run to convert the xml changelog to the two sizes of linked html
changelogs.

split_changelog isn't very bright about constructing links, so it should
be run from inside the doc directory for now.
</pre></blockquote>

<p><strong><a name="2003-04-09_1857"></a>
2003-04-09 18:57 Igor Melichev</strong></p>
<blockquote><pre>
Fix : Ignore a small noise skewing in the character caching criterion.
</pre></blockquote>

<p><strong><a name="2003-04-09_1847"></a>
2003-04-09 18:47 Igor Melichev</strong></p>
<blockquote><pre>
Fix (type1 hinter) : The overshoot suppressing code was wrong.
Bug 686812 "Incorrect font rendering for Zapfino ampersand".

DETAILS :

It always restricted overshoots with 1 pixel due to a stupid error in code.

This patch causes differences in almost tests with 300 dpi,
and with 3 tests at 72 dpi.
</pre></blockquote>

<p><strong><a name="2003-04-08_1849"></a>
2003-04-08 18:49 Dan Coby</strong></p>
<blockquote><pre>
The previous change removing the spotrgb device missed src/Makefile.in.
This change corrects that omission.
</pre></blockquote>

<p><strong><a name="2003-04-08_1701"></a>
2003-04-08 17:01 Raph Levien</strong></p>
<blockquote><pre>
Fix: Restores logic to improve shading quality, which was clobbered in
DeviceN merge.
</pre></blockquote>

<p><strong><a name="2003-04-08_1642"></a>
2003-04-08 16:42 Igor Melichev</strong></p>
<blockquote><pre>
pdfwrite : Don't convert Type 3 fonts to raster fonts.

DETAILS :

The main work is done with pdf_install_charproc_accum and
pdf_end_charproc_accum. They forward a BuildChar/BuildGlyph output
to a separate graphic stream. See the big comment at the end of pdf_text_process.

The new function gx_default_text_restore_state restores graphic
state of PS interpreter when we discontinue the default text enumeration
after executing a PS charproc. New state variable gx_device_pdf::accum_char_proc
sets a special mode for graphic handlers.

We ever clip BuildChar/BuildGlyph with a FontBBox or with character bbox
specified in setcachedevice*. Doing so with calling gx_clip_to_rectangle
from pdf_text_set_cache, because we need to avoid the
current PS clipping path to interfere the character proc.
Possibly a better way is to install an infinite (i.e. absenting) clipping box,
wnen setcharwidth is used instead setcachedevice*.
but we don't know how to. Due to that the distilled 238-01.ps
renders some differently than undistilled one, and in most cases
it appears closer to what CPSI does.

An additional optimization : In sync_text_state the condition for matrix
sinchronization is done weaker : with empty text buffer the
synchronization is not needed.
</pre></blockquote>

<p><strong><a name="2003-04-08_1631"></a>
2003-04-08 16:31 Igor Melichev</strong></p>
<blockquote><pre>
pdfwrite : Don't convert Type 3 fonts to raster fonts.

DETAILS :

The main work is done with pdf_install_charproc_accum and
pdf_end_charproc_accum. They forward a BuildChar/BuildGlyph output
to a separate graphic stream. See the big comment at the end of pdf_text_process.

The new function gx_default_text_restore_state restores graphic
state of PS interpreter when we discontinue the default text enumeration
after executing a PS charproc. New state variable gx_device_pdf::accum_char_proc
sets a special mode for graphic handlers.

We ever clip BuildChar/BuildGlyph with a FontBBox or with character bbox
specified in setcachedevice*. Doing so with calling gx_clip_to_rectangle
from pdf_text_set_cache, because we need to avoid the
current PS clipping path to interfere the character proc.
Possibly a better way is to install an infinite (i.e. absenting) clipping box,
wnen setcharwidth is used instead setcachedevice*.
but we don't know how to. Due to that the distilled 238-01.ps
renders some differently than undistilled one, and in most cases
it appears closer to what CPSI does.

An additional optimization : In sync_text_state the condition for matrix
sinchronization is done weaker : with empty text buffer the
synchronization is not needed.
</pre></blockquote>

<p><strong><a name="2003-04-08_1359"></a>
2003-04-08 13:59 Ralph Giles</strong></p>
<blockquote><pre>
Initial commit of native MacOS font loading. This implements a %macresource% iodevice for
retrieving data from the 'resource' structure associated with MacOS files, either directly from
the resource fork, or from a serialized data fork resource file. This is primarily used to access
font data on that platform. Resource fork access is only supported on MacOS, while data fork files
(e.g. .dfont format font files) can be read on any platform. This code is currently disabled.

DETAILS:

This change allows fonts stored in resources to be specified in the fontmap. A special indexing
scheme is added to the filename to address the particular resource desired by id and 4-character
type code, e.g. '%macresource%Arial#sfnt+4096' or
'%macresource%/Library/Fonts/Optima.dfont#sfnt+14151'.
</pre></blockquote>

<p><strong><a name="2003-04-08_1238"></a>
2003-04-08 12:38 Ralph Giles</strong></p>
<blockquote><pre>
Initialize the legacy global pgsdll_callback to NULL to avoid problems
if it isn't properly set. Part of bug 686768.
</pre></blockquote>

<p><strong><a name="2003-04-08_1217"></a>
2003-04-08 12:17 Ralph Giles</strong></p>
<blockquote><pre>
Avoid calling a null pgsdll_callback, as can happen with the new client api
and CHECK_INTERRUPTS. This fix affects only MacOS, similar protections are
already in place for other platforms. Also return EOFC in the mac stdio
stream process if no callback is defined. Closes bug 686768.
</pre></blockquote>

<p><strong><a name="2003-04-08_0504"></a>
2003-04-08 05:04 Dan Coby</strong></p>
<blockquote><pre>
Implementation of the SeparationOrder parameter.  This implementation
is only applicable for the spotcmyk and devicen devices.  This change
also removes the uuused spotrgb device.
</pre></blockquote>

<p><strong><a name="2003-04-04_1710"></a>
2003-04-04 17:10 Ralph Giles</strong></p>
<blockquote><pre>
Correct documenation change: -dAdjustWidth is on by default.
</pre></blockquote>

<p><strong><a name="2003-04-03_1642"></a>
2003-04-03 16:42 Raph Levien</strong></p>
<blockquote><pre>
Fix: Make the pdf 'q' operator not affect the current path, in conformance
with the PDF spec. Fixes SF #596009.
</pre></blockquote>

<p><strong><a name="2003-04-03_1354"></a>
2003-04-03 13:54 Ralph Giles</strong></p>
<blockquote><pre>
Document that setpagedevice keys can reset the effects of pdfmark commands.
Closes bug 645677.
</pre></blockquote>

<p><strong><a name="2003-04-03_1334"></a>
2003-04-03 13:34 Jouk Jansen</strong></p>
<blockquote><pre>

 Committing in .

 for new file syntax on OpenVMS
 added the  case for prefix=***] and filename=-*****

 Modified Files:
 	gs/src/gp_vms.c
 ----------------------------------------------------------------------
</pre></blockquote>

<p><strong><a name="2003-04-03_1328"></a>
2003-04-03 13:28 Ralph Giles</strong></p>
<blockquote><pre>
Fix documentation for -dAdjustWidth. This parameter takes a integer rather
that an boolean as was stated. Closes bug 538033.
</pre></blockquote>

<p><strong><a name="2003-04-02_2345"></a>
2003-04-02 23:45 Alex Cherepanov</strong></p>
<blockquote><pre>
Fix a typo causing "/typecheck in restore" in documents with /Threads .
Bug #611701
</pre></blockquote>

<p><strong><a name="2003-04-02_2143"></a>
2003-04-02 21:43 Ralph Giles</strong></p>
<blockquote><pre>
Remove the non-HAVE_STDINT_H non-win32 attempts to define stdint types
and related sys/types redefine hacks. Also warn in the configure script
if stdint.h is not found.

DETAILS:

Compiling libjbig2dec requires the size-specific types in stdint.h, as
does compiling in the headers. Therefore these types must be made
available in ghostscript if jbig2.dev is included in FEATURE_DEVS.

The best way to integrate this is to create a stdint_.h for ghostscript
that contains discovered and/or platform-specific typedefs for the
types. This is still the plan, but to speed integration we just through
some defines into stdpre.h. If -DHAVE_CONFIG_H is passed by the makefile
(as configure does) then the C99 header is used, and we make specific
defines for MSVC which doesn't yet ship the header. We also had some
fallbacks for other systems (vendor unix mostly) but these caused
collisions with partial definitions of what became the C99 types in
sys/types.h and the redirection hack we do with ulong et al. did not
work on all platforms (notably macosx).

It is the fallback defines that have been removed; users building
on older platforms will probably have to patch the types in to use JBIG2
support.
</pre></blockquote>

<p><strong><a name="2003-04-01_2018"></a>
2003-04-01 20:18 Alex Cherepanov</strong></p>
<blockquote><pre>
On some devices the initial page size is rounded up but page size is
rounded to the nearest pixel when set by setpagedevice. Changing default
page size to match the setpagedevice. Bug #686795
</pre></blockquote>

<p><strong><a name="2003-03-29_0055"></a>
2003-03-29 00:55 Alex Cherepanov</strong></p>
<blockquote><pre>
Multi-target rule that generates all of the targets at once was executed for
every target obsoleting some of the files generated earlier and causing
recompilation. Replace the multi-target rule with a single-target rule and
make the target a prerequisite of the remaining targets; use empty command to
disable default build rules. Bug #685341.
</pre></blockquote>

<p><strong><a name="2003-03-28_2015"></a>
2003-03-28 20:15 Ray Johnston</strong></p>
<blockquote><pre>
Prevent UMRs and when an image3x type image only has one of the possible
two masks. Hangs or data garbling could result. Related to bug #686782.

DETAILS:

While several places in the image3x handling checked mask[i].depth to make
sure that it was non-zero, other places didn't have this check, but just
operated on the InterleaveType of the mask. While I could have added the
mask[i].depth check, setting mask[i].InterleaveType to zero when a mask
was not used was a single line change and served the purpose.

I found this when looking at performance on this PC_*.ai file and was
getting infinite loops. The plane_data was ending up pointing to the
wrong area when the uninitialized mask[i].InterleaveType just happened to
be 3 (interleave_separate_sources).
</pre></blockquote>

<p><strong><a name="2003-03-27_2110"></a>
2003-03-27 21:10 Ray Johnston</strong></p>
<blockquote><pre>
Improve previous patch to work from within encapsulated job framework.

DETAILS:

If gs is started with:  gs -c false 0 startjob pop - &lt; /dev/null

then the previous patch would result in:

	Unrecoverable error: invalidaccess in quit

since the systemdict /quit is defined to cause this error from within an
encapsulated job. This patch detects the .jobsavelevel &gt; 0 and uses 'stop'
instead, which quits gs without a spurious error message.
</pre></blockquote>

<p><strong><a name="2003-03-27_2055"></a>
2003-03-27 20:55 Ray Johnston</strong></p>
<blockquote><pre>
Use the systemdict version of "quit" from gs_main_finit so that we can still
quit if /quit has been redefined. Bug #686783. Analysis by Raph Levien.
</pre></blockquote>

<p><strong><a name="2003-03-27_1420"></a>
2003-03-27 14:20 Igor Melichev</strong></p>
<blockquote><pre>
pdfwrite : The old code copied parameters of PS interpreter's graphic state
to the output PDF. However some of them are installation dependent and must not copy.
THIS IS AN INCOMPATIBLE CHANGE : the generated PDFs will render some differently
on printers.

DETAILS:

We provide a signal to pdfwrite at very end of gs_init.ps - see
the change to gs_pdfwr.ps, the priority=2000.
The signal is handled in gdev_pdf_fill_path,
and stores a copy of PS interpreter's graphic state parameter values.
Those valuess are used for comparizon with current parameters of PS interpreter
when an object is written. Therefore, if a value of a parameter was not
changed by a document, it is not written to PDF.

Note that if a PS document sets parameters equal to the
installation defaults, the setting in missed in PDF.
This is unfortunate.

The patch causes multiple differences in rendering distilled
comparefiles with pkmraw, because transfer functions changed from a
HP-specific (defined in gs_init.ps) to none. Those differences were
checked with the fuzzy compare utility and look fine. It should fix
the 2003-03-26 regressions, but new differences will appear.
</pre></blockquote>

<p><strong><a name="2003-03-27_0109"></a>
2003-03-27 01:09 Ray Johnston</strong></p>
<blockquote><pre>
Improve .copyparam to handle arrays as well as strings, preserving the
'executable' status of arrays. Fixes bug #647685.
</pre></blockquote>

<p><strong><a name="2003-03-26_1327"></a>
2003-03-26 13:27 Igor Melichev</strong></p>
<blockquote><pre>
Fix : A bug processing an error in .schedule_init .
</pre></blockquote>

<p><strong><a name="2003-03-26_1308"></a>
2003-03-26 13:08 Igor Melichev</strong></p>
<blockquote><pre>
Ignore pdfmark if the output device isn't pdfwrite.
THIS IS INCOMPATIBLE CHANGE.
If an user changes the output device to pdfwrite dynamically,
he should specify PDFSETTINGS in command line to enforce
the pdfwrite initialization when GS starts up.
Perhaps it's a seldom case.

DETAILS :

The old code always executed a big part of pdfwrite code with useful reason.
Now we can skip it with help of .schedule_init .
</pre></blockquote>

<p><strong><a name="2003-03-26_1154"></a>
2003-03-26 11:54 Igor Melichev</strong></p>
<blockquote><pre>
Fixing some compiler warnings (unused variables, etc.).
</pre></blockquote>

<p><strong><a name="2003-03-25_2118"></a>
2003-03-25 21:18 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Provide a complete monitoring of the viewer's graphic state
while generating a PDF output. The old code misses the synchronization
of the viewer's graphic state with its internal copy when generating
a 'grestore' command to undo a clipping.
Bug 686763 "pdfwrite is not correctly handling OPM distiller parameter".

DETAILS :

This change affects all vector devices, but it should be equivalent
for all them except pdfwrite, and except for the pointer lifetime bug
explained below.

Here is an example when the desynchronization appears :

  f1 settransfer
  0 setcolor
  path1 fill
  f2 settransfer
  1 setcolor
  path2 fill
  gsave
  path3 clip
  path4 fill
  grestore
  path5 fill

After 'grestore' it uses f1 instead f2.

The old code does not remember the viewer's graphic state,
which was immediately before 'gsave', and resets the internal copy of
the graphic state to default values when it generates 'grestore'.
This logic is fully wrong : if after 'grestore' a parameter is equal
to the default value, pdfwrite does not generate a set command for this parameter,
but the viewer uses the value which was set before 'grestore',
which can differ from the default one.

Moreover, gdevvec copies the device color from local memory
to global memory, and doesn't ask garbager to process pointers in
the copy. When the device color contains pointers
to patterns or so, the live time of the copy appears bigger
than the live time of the pointed structure. The old code only
compares the pointed addresses without accessing the pointed data,
so that a crash can't happen. But if garbager moves another color
to same address, the comparison answers "equal" when actually colors
are not equal, and the generated PDF appears wrong.

To exclude the pointer lifetime problem, the patch uses the 'save_dc' method
instead the 'equal' method for colors. But the implementation
of save_dc was dummy for patterns. To complete it, gs_id is
inserted into gs_pattern_instance_s, and more variants added to
gx_device_color_saved_s. The clist device appears tolerant
to this change.

Note that macros color_unset, color_set_null, color_is_null,
gx_dc_is_null are now applied to gx_device_color_saved.

For complete monitoring the viewer's graphic state,
we implement a 2-elements stack 'vgstack' in gx_device_pdf_s,
save the viewer's graphic state in it when generating 'q' commands,
and restore from there when generating 'Q'. If a 'gs' parameter
needs to change, we move to 'PDF_IN_STREAM' context, because
we must not insert 'gs' into a text context. New functions
pdf_try_prepare_stroke and pdf_try_prepare_fill provide
the "try" logics for this.

If a 'gs' parameter changes with changing a clipping,
first we need to undo the old clipping with 'Q',
and then generate new 'gs' parameters relatively to the
restored graphic state. The new function pdf_unclip
works for this.

With this patch the length of generated PDF appears longer
for some tests. The most important ones are :

acrobat.pdf        Lengths differ in 6141.
adesso8.pdf        Lengths differ in -8316.
HeiseiMinStd.pdf   Lengths differ in 4000.
narrow_font.pdf    Lengths differ in 6141.
RealCities.pdf     Lengths differ in 12370.
RodinCIDEmbed.pdf  Lengths differ in 101698.

It happens because pdfwrite doesn't remember 'gs' dictionaries,
and therefore redundant copies can appear.
This problem to be fixed separately.

Expecting a progression : 093-01.ps (was a wrong stroke widths with a PaintType 2 font).

Expecting a regression : with this patch, re-distilled
    Testform.v1.0.2.pdf paints good with Adobe, but wrongly with GS.
                         Maybe a bug in GS PDF interpreter.
</pre></blockquote>

<p><strong><a name="2003-03-25_2113"></a>
2003-03-25 21:13 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : 'write_range' was buggy (inconsistent) since zfont42.c rev.1.11 (17 Jan 2003).
</pre></blockquote>

<p><strong><a name="2003-03-24_1541"></a>
2003-03-24 15:41 Ralph Giles</strong></p>
<blockquote><pre>
Add rasterdb.py to the documentation file index.
</pre></blockquote>

<p><strong><a name="2003-03-24_1000"></a>
2003-03-24 10:00 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : The recent patch for the bug 653140 changed the font embedding condition
with too narrow one. Restoring it to the old one.

DETAILS :

The wrong patch is http://www.ghostscript.com/pipermail/gs-cvs/2003-March/003048.html .

This patch should fix the regressions
http://www.ghostscript.com/pipermail/gs-regression/2003-March/000538.html
</pre></blockquote>

<p><strong><a name="2003-03-24_0050"></a>
2003-03-24 00:50 Jack Moffitt</strong></p>
<blockquote><pre>
Implements raster database to store and retrieve cached baseline rasters.
</pre></blockquote>

<p><strong><a name="2003-03-24_0031"></a>
2003-03-24 00:31 Jack Moffitt</strong></p>
<blockquote><pre>
Fixes a bug where baselines weren't being reverted if they already existed.
</pre></blockquote>

<p><strong><a name="2003-03-23_2359"></a>
2003-03-23 23:59 Jack Moffitt</strong></p>
<blockquote><pre>
Added emacs mode lines to python files without extensions.
</pre></blockquote>

<p><strong><a name="2003-03-22_1824"></a>
2003-03-22 18:24 Ralph Giles</strong></p>
<blockquote><pre>
Define some of the C99 stdint types in the common stdpre.h. This is
required for libjbig2 integration.

DETAILS:
Another option would have been to define a local 'stdint_.h', but
stdpre.h already contains a number of typedefs and includes sys/types.h
to provide expected basic types. We use stdint.h itself if the toplevel
makefile defines HAVE_STDINT_H.

Note that unfortunately sys/types.h often tries to provide types now in
stdint.h. We do the same collision-avoidance we do with our shorthand
types, but this could clobber correct definitions for the explicitly-
sized types on systems without stdint.h. (The only mainstream platform
not shipping stdint.h is MSVC, and we provide specific typedefs for that
platform.)

Some systems also provide a sys/inttypes.h with the same definitions. We
ignore this.
</pre></blockquote>

<p><strong><a name="2003-03-22_1247"></a>
2003-03-22 12:47 Igor Melichev</strong></p>
<blockquote><pre>
Fix (CFF parser) : Warn and ingore missed tables instead giving up.
Bug 686772 "PDf file breaks in ghostscript works on other PDF rips".
</pre></blockquote>

<p><strong><a name="2003-03-21_1914"></a>
2003-03-21 19:14 Igor Melichev</strong></p>
<blockquote><pre>
pdfwrite : Fixing the bug 653140 "use NeverEmbed to restrict CIDFont embedding"

DETAILS :

The important change is setting pfont-&gt;font_name for CID fonts.
Before now it contained empty string. Other changes are minor
and only provide a data transfer.
</pre></blockquote>

<p><strong><a name="2003-03-21_1017"></a>
2003-03-21 10:17 Igor Melichev</strong></p>
<blockquote><pre>
file_name_combine : Improve the choice of the default GenericResourceDir.

DETAILS:

This patch does not change any behavior with a regular build.

The default value for GenericResourceDir can be configured
with -sGenericResourceDir=path . If not specified, it
chooses the first directory in LIBPATH, except (.),
and combines it with ../Resource .

The default value for FontResourceDir can be configured
with -sFontResourceDir=path . If not specified, it
chooses the first directory in LIBPATH, except (.),
and combines it with ../Resource/Font .

findresource was buggy : it returned a path with GenericResourceDir
when the real resource file is in another directory.
Now it first searches in LIBPATH, and if not found calls ResourceFileName .

We can't ever call ResourceFileName from findresource,
because it ever retrieves a single path. See the bug above.
Therefore with multiple resource directories it is conforming to PLRM
but differs from CPSI.
</pre></blockquote>

<p><strong><a name="2003-03-20_2210"></a>
2003-03-20 22:10 Alex Cherepanov</strong></p>
<blockquote><pre>
Remove -dNODISPLAY flag from ps2ps.bat because nothing is generated
when the flag is set. There's no -dNODISPLAY flag in UNIX or OS/2
versions. Fixes bug #686776
</pre></blockquote>

<p><strong><a name="2003-03-20_2027"></a>
2003-03-20 20:27 Alex Cherepanov</strong></p>
<blockquote><pre>
Check i/o errors in PS and EPS generation drivers. Return ioerror soon
after the error is encountered in the output stream.
Fixes bug #686741

DETAILS:
To simplify the code errors are checked only at the critical places:
before seeking, inside loops, before returning from functions.
Stream error status is checked by direct access to the stream structure
because both macro and extern_inline based solutions were declined.
</pre></blockquote>

<p><strong><a name="2003-03-20_2011"></a>
2003-03-20 20:11 Alex Cherepanov</strong></p>
<blockquote><pre>
Check i/o errors in PS and EPS generation drivers. Return ioerror soon
after the error is encountered in the output stream.
Fixes bug #686741

DETAILS:
To simplify the code errors are checked only at the critical places:
before seeking, inside loops, before returning from functions.
Stream error status is checked by direct access to the stream structure
because both macro and extern_inline based solutions were declined.
</pre></blockquote>

<p><strong><a name="2003-03-20_1610"></a>
2003-03-20 16:10 Igor Melichev</strong></p>
<blockquote><pre>
Fix (file_name_combine) : The operator .file_name_combine returned a read-only string.
</pre></blockquote>

<p><strong><a name="2003-03-20_1522"></a>
2003-03-20 15:22 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : When advance width has non-zero y component, the width was set to zero.
Bug 686764 "Overlapping characters".

DETAILS :

The test document embeds a font, in which some characters
have a small non-zero y component of the advance width.
It looks as a buggy font. The pdfwrite writes zero to Widths array
(that's correct, because it is only useful with zero y component),
and did not generate glyph positioning commands (the bug).
This patch makes pdfwrite to be tolerant to such buggy fonts
with generating glyph position for subsequent glyph.
It does not repair the font.
</pre></blockquote>

<p><strong><a name="2003-03-20_0929"></a>
2003-03-20 09:29 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : While embedding a font, prefer font name to key name.
It conserves original font names and allows derived fonts to merge.
</pre></blockquote>

<p><strong><a name="2003-03-18_0129"></a>
2003-03-18 01:29 Ralph Giles</strong></p>
<blockquote><pre>
Add the new pngalpha device to the default autoconf build.
</pre></blockquote>

<p><strong><a name="2003-03-17_0954"></a>
2003-03-17 09:54 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Unwinding another part of the previous patch
which wrote a wrong numLongMetrics.
</pre></blockquote>

<p><strong><a name="2003-03-16_2050"></a>
2003-03-16 20:50 Igor Melichev</strong></p>
<blockquote><pre>
Fix : Increasing the threshould for the dropout prevention invocation.
</pre></blockquote>

<p><strong><a name="2003-03-16_2007"></a>
2003-03-16 20:07 Igor Melichev</strong></p>
<blockquote><pre>
Fix (file_name_combine) : A bug in gs_fapi.ps .
</pre></blockquote>

<p><strong><a name="2003-03-15_0809"></a>
2003-03-15 08:09 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Unwinding a part of the previous patch
and improve the OS/2 table writing ann embedded CIDFontType2.
Bugzilla Bug 686759 "pdf to pdf doesnt work".

DETAILS :

The previous patch appears wrong and caused a regression
due to the change to "have_cmap = no_generate &amp;&amp; !writing_cid,"
in gdevpsft.c . This patch unwinds it. Also the log message
of the previous patch is fully wrong. The CID font in the test document
for 686759 does not contain cmap and the cmap must not
be written. But with the previous patch a corrupt cmap
was written. Accessing the wrong font copy pdfwrite
failed to compute glyph widths and therefore converted the font
into a bitmap font. This patch restores the code
to "have_cmap = no_generate,". The bug 686759 is reopened.

Also we detected that the OS/2 table was written
wrongly in some circumstances : its position in font
file did not correspond to one specified in the font
header. This patch fixes it.
</pre></blockquote>

<p><strong><a name="2003-03-14_1155"></a>
2003-03-14 11:55 Ralph Giles</strong></p>
<blockquote><pre>
Correct a typo in a help string.
</pre></blockquote>

<p><strong><a name="2003-03-14_1136"></a>
2003-03-14 11:36 Ralph Giles</strong></p>
<blockquote><pre>
Correct a serious error in the bmp file padding method. Also convert all error
output to stdout from stderr since we no longer output the diff image to stdout.
Patch from Igor Melichev.
</pre></blockquote>

<p><strong><a name="2003-03-14_0155"></a>
2003-03-14 01:55 Ralph Giles</strong></p>
<blockquote><pre>
The code for writing the BMP header made assumptions about struct
packing and was not portable. Replace the previous code with a method
that writes fields one at a time. Also, since fseek() is reported not to
work beyond the end of the written file, pad out the length of the image
data section so we can fill in the rows in proper bottom-to-top order.

Note that the bmp output code does not convert RGB to BGR; this is not
critical as the output is only used for hilighting differences.

Closes bug #686739.
</pre></blockquote>

<p><strong><a name="2003-03-14_0010"></a>
2003-03-14 00:10 Ralph Giles</strong></p>
<blockquote><pre>
Replace the win32-specific code for seeking with a generic version.
Partial fix for bug #686739.

DETAILS:

The code was making an assumption about the internals of the opaque
fpos_t type. This is a 64 bit integer on win32, but a struct on
linux and macos, so the compile of course fails.

This commit temporarily breaks diff.bmp output on win32, which allegedly
cannot fseek() beyond the written end of the file so the row-reversal
logic will fail. This will be corrected in another revision.
</pre></blockquote>

<p><strong><a name="2003-03-13_1911"></a>
2003-03-13 19:11 Dan Coby</strong></p>
<blockquote><pre>
Fix for 686740 PDF file causes gs8 to core dump.  The test file
uses PDF transparency.  This is a PDF 1.4 feature however the file
header says %PDF1.3.  The implementing code has tests for PDF
version 1.4 before it tests for transparency features.  The fix
simply lowers the test level to 1.3.
</pre></blockquote>

<p><strong><a name="2003-03-13_1254"></a>
2003-03-13 12:54 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Never write cmap embedding a CIDFontType2.
Bugzilla Bug 686759 "pdf to pdf doesnt work".

DETAILS :

PDF uses CIDToGIDMap for mapping CIDs to GIDs.
Therefore the cmap table of the True Type font is not used with CIDFontType2.
In PDF spec section 5.8 "Embedded Font Programs" reads :

	If used
	with a CIDFont dictionary,the "cmap " table is not needed,since the mapping
	from character codes to glyph descriptions is provided separately.

Note the words "is not needed".
Meanwhile reading a PDF 1.2 format, Acrobat Reader 4 and 5 claim an
error if a cmap presents.
</pre></blockquote>

<p><strong><a name="2003-03-12_1222"></a>
2003-03-12 12:22 Igor Melichev</strong></p>
<blockquote><pre>
file_name_combine :
1. Always search command line argument files in (.) .
2. Throw invalidfileaccess from .libfile .
3. Always check permissions with reduced file names.
4. Ignore "./" prefixes in permission lists, except for (./*) .

This patch should not not change behavior with regular build.

DETAILS :

With NEW_COMBINE_PATH 1 contributes the improvement listed above.

Argument files are searched independently on SEARCH_HERE_FIRST.

If a file is in the search list, but the access isn't permitted,
.libfile throus invalidfileaccess, as with NEW_COMBINE_PATH 0.

Minor changes :
- some C-style cleanup in gpmisc.c ;
- don't compile i_ctx_p-&gt;filearg with NEW_COMBINE_PATH 1;
- don't compile i_ctx_p-&gt;starting_arg_file with NEW_COMBINE_PATH 0;
- a check for parents in check_file_permissions was buggy.
</pre></blockquote>

<p><strong><a name="2003-03-12_1116"></a>
2003-03-12 11:16 Jouk Jansen</strong></p>
<blockquote><pre>

 Committing in .

 pngalpha device added also to the OpenVMS make file for MMK
 (same change was already made for gmake in openvms.mak)

 Modified Files:
 	gs/src/openvms.mmk
 ----------------------------------------------------------------------
</pre></blockquote>

<p><strong><a name="2003-03-12_0724"></a>
2003-03-12 07:24 Jouk Jansen</strong></p>
<blockquote><pre>

 Committing in .

 update VMS file-format writing

 Modified Files:
 	gs/src/gp_vms.c
 ----------------------------------------------------------------------
</pre></blockquote>

<p><strong><a name="2003-03-11_1136"></a>
2003-03-11 11:36 Russell Lang</strong></p>
<blockquote><pre>
Add pngalpha device that uses RGBA, with the alpha channel
providing pixel coverage.  Used for generating PNG images with a
transparent background.

DETAILS
Add missing initialiser for get_clipping_box to
prn_color_params_procs macro.  (src/gdevprn.h)

Avoid cast warning for software_key (src/gdevpng.c).

Add pngalpha device that uses RGBA.  This requires custom
encode_color and decode_color procedures to put RGB in the
first three bytes while leaving the fourth A byte as opaque.
To avoid gx_no_color_value, the alpha is stored inverted so
opaque is 0x00 and transparent is 0xff.

If pngalpha is told to fill the entire page with white, it uses
the kludge of instead filling with almost white and transparent
(0xfefefeff). This works because it is triggered by "erasepage",
but not by "1 setgray clippath fill". A custom open_device and
put_params are needed to save the clist or memory device
fill_rectangle, and to restore the pngalpha_fill_rectangle.

A custom copy_alpha is required to correctly blend RGBA. The
blend is based on pixel coverage, not true transparency
Ghostscript doesn't pass transparency to the device. Alpha blend
maths from Porter and Duff 1984 paper for "A over B". RGB values
are stored without pre-multiplication. A custom
pngalpha_create_buf_device is used to replace the memory device
implementation gx_default_copy_alpha with pngalpha_copy_alpha,
but not to replace clist_copy_alpha.

The pngalpha device is successful at giving a transparent
background to many images such as colorcir.ps and golfer.eps,
but not tiger.eps which fills the clipping path with grey.
It does not implement a transparent background for PDF 1.4
transparent input files.
</pre></blockquote>

<p><strong><a name="2003-03-11_1113"></a>
2003-03-11 11:13 Igor Melichev</strong></p>
<blockquote><pre>
Fix : setweightvector did not set the copy of WeightVector in gs_type1_data_s.
Bug #686753 "Wrong Display of Multiple Master Fonts".

DETAILS:

The test document creates a Type 3 font, in which BuildChar
procedure defines a copy of MM font and later replaces
WeightVector in it.

A new PS operator introduced to handle it.
Adobe implementations do so.

We are not happy with the change of VM with no regard to 'restore'.
It appears compatible with the test document,
because it calls setweightvector before rendering each glyph.
(Another interesting point is that the test document executes
"0 setcachelimit" before rendering a glyph).
But it is not compatible to CPSI (a special test done).
Providing a correct restore appears too complicated -
need to change the data representation to 'ref'.
Delaying it until it is really needed.

Alternatively we could obtain a fresh copy of WeightVector
in each call to *show, but it would be a significant performance flaw.

The patch fixes the problem explained in the bug report #686753,
but the supplied document has another problem :
with pdfwrite some characters are converted to raster.
To be fixed separately.
</pre></blockquote>

<p><strong><a name="2003-03-10_1308"></a>
2003-03-10 13:08 Jouk Jansen</strong></p>
<blockquote><pre>

 Committing in .

 Oops... I made a typo in the version of 1 hour before this.

 Modified Files:
 	gs/src/gp_vms.c
 ----------------------------------------------------------------------
</pre></blockquote>

<p><strong><a name="2003-03-10_1056"></a>
2003-03-10 10:56 Jouk Jansen</strong></p>
<blockquote><pre>

 Committing in .

 corrected VMS file syntax.

 Modified Files:
 	gs/src/gp_vms.c
 ----------------------------------------------------------------------
</pre></blockquote>

<p><strong><a name="2003-03-10_0736"></a>
2003-03-10 07:36 Igor Melichev</strong></p>
<blockquote><pre>
file_name_combine : (1) Implement the extended search method in resourceforall,
resourcestatus, ResourceFileName. (2) Don't check permissions for command line argument files.

DETAILS:

This patch does not change any behavior with a regular build.

To skip the permission check with argument files we added a flag into
gs_context_state. This is only a secure way to pass the information
across PS interpreter, which executes .runfile with any argument file.

Per Adobe specification, a resource category can define the ResourceFileName procedure,
which generates a resource file name from resource instance name.
Since Ghostscript uses an extended search method for finding resource files,
the strong Adobe's semantics appears inapplicable.
Ghostscript implements an extended semantics.

Finding a resource file while executing findresource or resourcestatus,
Ghostscript does not call ResourceFileName. Instead that, it searches directories
with an extended method explained in How Ghostscript finds files.

ResourceFileName may be called from a Postscript program such as a resource installer.
The default implementation for ResourceFileName first checks whether
GenericResourceDir specifies an absolute path. If so, ResourceFileName uses its value
to generate the result. Otherwise, it tries to find an existing resource file with
the extended method. If it succeeds, ResourceFileName returns the path
to the resource file found. Otherwise it uses GenericResourceDir to combine a default path.

Note that with a single resource directory and an absolute ResourceFileName the behavior
appears equivalent to Adobe's one.

The new search method doesn't distinguish 'lib' and 'Resource' directories.

Minor changes :

The operator .file_name_parent is removed.
The operator .file_name_current is removed.
Improved some error messages.
</pre></blockquote>

<p><strong><a name="2003-03-07_1457"></a>
2003-03-07 14:57 Igor Melichev</strong></p>
<blockquote><pre>
Fix (file_name_combine) : Improving the OpenVMS path syntax.

DETAILS :

This patch does not change any behavior with regular build.

With NEW_COMBINE_PATH 1 it allows to combine with filenames like (x]y) .
</pre></blockquote>

<p><strong><a name="2003-03-07_1421"></a>
2003-03-07 14:21 Igor Melichev</strong></p>
<blockquote><pre>
Fix (file_name_combine) : Renaming no_neighbour with no_sibling.

DETAILS :

This patch does not change any behavior.
</pre></blockquote>

<p><strong><a name="2003-03-07_1112"></a>
2003-03-07 11:12 Igor Melichev</strong></p>
<blockquote><pre>
Fix (file_name_combine) : Improving the file path syntax for OS/2, DOS and Windows.
</pre></blockquote>

<p><strong><a name="2003-03-07_0048"></a>
2003-03-07 00:48 Dan Coby</strong></p>
<blockquote><pre>
Fix for #686755 sgirgb device.  The sgirgb device would produce compiler
errors if included in version 8.00 or later.

DETAILS:

The sgirgb device had not been modified to match the changes made in the
device API with version 8.00.  These were fixed.  In addition a couple of
compiler warnings were removed.  AN unsed variable (sptr) was also
removed.

Note:  I am unable to test this fix since I do not have an sgi system.
The inclusion of the sgirgb device also creates link errors in a WinXP
build due to undefined/missing bzero.  Since this was not changed, I
am assuming that this is not a problem on an sgi system.
</pre></blockquote>

<p><strong><a name="2003-03-06_1601"></a>
2003-03-06 16:01 Igor Melichev</strong></p>
<blockquote><pre>
file_name_combine : Removing a rudiment of old code.

DETAILS:

This patch does not change any behavior with a regular build.

The operator .file_name_parents is now removed.
</pre></blockquote>

<p><strong><a name="2003-03-06_1353"></a>
2003-03-06 13:53 Igor Melichev</strong></p>
<blockquote><pre>
file_name_combine : Implementing new command line arguments:
-sGenericResourceDir= and -sFontResourceDir= .

DETAILS:

This patch does not change any behavior with a regular build.

With NEW_COMBINE_PATH 1 the new arguments replace
default values for GenericResourceDir and FontResourceDir .

A consistency check is added to gs_res.ps .
It signals an error if the value of GenericResourceDir
is inconsistent with LIBPATH. An automatic insertion of it
into LIBPATH appears cumbersome because the access to LIBPATH in C code
goes through gs_main_instance_s.

The operator .file_name_combine changed the prototype.
A boolean result is added instead a failure on error.
This simplifies error processing in PS code, especially
because the 'stopped' changes the memory allocation mode.
Relevant changes done to calls of .file_name_combine in gs/lib .

A minor bug is fixed in gp_file_name_combine_generic.
</pre></blockquote>

<p><strong><a name="2003-03-06_1047"></a>
2003-03-06 10:47 Russell Lang</strong></p>
<blockquote><pre>
Change OS/2 gp_file_name_combine to match Windows.
</pre></blockquote>

<p><strong><a name="2003-03-06_1028"></a>
2003-03-06 10:28 Igor Melichev</strong></p>
<blockquote><pre>
file_name_combine : Adding the 'no_neighbour' argument.

DETAILS:

This patch does not change any behavior with a regular build.
It slightly change behavior when built with NEW_COMBINE_PATH 1.

The 'no_neighbour' is a boolean, which protects steps from
a directory to its neighbor directory in file_name_combine.
With true argument the combination

   (x/y) + (../z/t) fails
but
   (x/y) + (../y/t) succeeds.

With false argument both combinations succeed.

The argument is added to both C function and PS operator.

We apply false argument while executing .libfile
and while generating PermitFileReading.
True argument is used in FAPI support to locate
FAPI-handled font files (which generally are not PS files,
and they are not being read with PS operators).

With NEW_COMBINE_PATH 1, THIS IS INCOMPATIBLE CHANGE.
To access resources, run Ghostscript with specifying
a resource directory in the -I command line argument.
</pre></blockquote>

<p><strong><a name="2003-03-04_1610"></a>
2003-03-04 16:10 Igor Melichev</strong></p>
<blockquote><pre>
Fix (file_name_combine) : Relative paths in GS command line did not work.
This patch cnanges a disabled code only.
</pre></blockquote>

<p><strong><a name="2003-03-04_1524"></a>
2003-03-04 15:24 Igor Melichev</strong></p>
<blockquote><pre>
Fix (file_name_combine) : An improvement to .locksafe .

DETAILS :

This patch changes a disabled code only.
It skips redundant templates when GenericResourceDir
or FontResourceDir is an absolute path.
</pre></blockquote>

<p><strong><a name="2003-03-04_1449"></a>
2003-03-04 14:49 Igor Melichev</strong></p>
<blockquote><pre>
Fix : A bug in CIDDecoding category definition.

DETAILS :

Should use .libfile opening a resource file to
resolve relative paths with LIBPATH.
</pre></blockquote>

<p><strong><a name="2003-03-04_1405"></a>
2003-03-04 14:05 Igor Melichev</strong></p>
<blockquote><pre>
Fix (file_name_combine) : A bug in .locksafe .
This patch changes a disabled code only.
</pre></blockquote>

<p><strong><a name="2003-03-04_1120"></a>
2003-03-04 11:20 Igor Melichev</strong></p>
<blockquote><pre>
Fix : removing an unused variable.
</pre></blockquote>

<p><strong><a name="2003-03-04_1100"></a>
2003-03-04 11:00 Igor Melichev</strong></p>
<blockquote><pre>
Initial commit for the new SAFER logics.

DETAILS:

This patch should not change any behavior unless
NEW_COMBINE_PATH is changed to 1. With 0 a minor meanful
change is the replacing .pathstring_not_bare with .file_name_combine
in gs_fapi.ps (which fixes a bug in FAPI support,
and doesn't affect builds with no FAPI).

The change is compatible unless NEW_COMBINE_PATH is 1.
Incompatibility issues with 1 are explained below.

With NEW_COMBINE_PATH 1 the patch defines a new logic for
.libfile, SAFER, and related things :

1. Default values for GenericResourceDir and FontResourceDir
   are platform dependent.
   (The old code always use Unix notation - a bug).

2. Default value for GenericResourcePathSep is platform dependent.
   The value is used before non-directory items only.
   (The old code always use Unix notation - a bug).
   (The old code used the value before directory items - a bug on OpenVMS).

3. PLRM specifies GenericResourceDir to be a single absolute path name.
   But Ghostscript's tradition is to load library files
   form a list of directories. Since we want to propagate
   this tradition to resource files, we get a conflict.
   To resolve the conflict, we allow GenericResourceDir
   to be a relative path, which is being concatenated with
   LIBPATH items. Thus we provide an extension of Postscript.

4. When a LIBPATH item is being concatenated with GenericResourceDir,
   an abnormal behavior appears when GenericResourceDir references parent.
   Exactly, concatenating the (.) item of LIBPATH with
   the default GenericResourceDir, which is (../Resource/),
   we get (../Resource/), i.e. it searches in a directory,
   which users don't expect to. We work around the abnormal
   behavior with skipping such paths while executing .libfile .

   More precisely, the .libpath algorithm is :

   For each LIBPATH item :
      - combine it with the argument string;
      - if the (reduced) combination refers the parent, skip it;
      - otherwise try to open the path. If succeeded, exit with it.
   If no success, fail with undefinedfilename or invalidfileaccess.

   Here and below we used Unix notation just for simplifying
   the log message. All statements to be generalized for any platform,
   and they are true for any supported platform.

5. A consequence of our workaround for (4) is a new constraint to .libfile :

   Let x is a cwd.
   Let x/../y exists. Lets mark it as y1.
   Let LIBPATH contains cwd and a directory z, which is not cwd.
   Let z/../y exists. Lets mark it as y2.
   Consequently y1 != y2.
   Executing

      (../y/f) .libpath

   searches y2/f, but does not search y1/f .
   The old code searched both in non-safer mode.
   THIS IS INCOMPATIBLE CHANGE.

6. A better workaround for (4) would be an implementation
   of RESPATH, which by default generates from LIBPATH
   with replacing (../Resource/) with (./Resource/).
   This requires to maintain a new directory lists.
   .libfile should get an additional argument,
   which specifies a search list - LIBPATH, RESPATH or FONTPATH.
   We do not make this improvement now,
   but will add it to Issues.htm .

7. If a path starts with a number of parent references,
   a template with same number of parent references
   must be added to permission list to allow the access.
   The template (*) allows access to any file.
   THIS IS INCOMPATIBLE CHANGE, because
   the old code ever rejects parents.

8. GenericResourceDir and FontResourceDir are not being added
   to permission list while .locksafe. Instead that,
   we combine them with all LIBPATH items,
   and add the combinations to the permission list
   unless it references parent.
   THIS IS INCOMPATIBLE CHANGE, but for non-exotic cases
   (such as "(../Resource/CMap/H) .libfile" in a document)
   it should be equivalent to the old behavior.

9. Scratch files with a non-absolute prefix always open
   in a scratch directory. The old code can open them
   in current and parent directories if an user modified
   a default prefix in C code.
   THIS IS INCOMPATIBLE CHANGE for users who had modified
   a scratch file prefix in C code.
   Permission for scratch directory is not checked
   as well as in old code.

A. The operator .filenamedirseparator is removed,
   because it cannot work properly on OpenVMS.
   On OpenVMS it needs both prefix and trailer to
   determine a correct separator.
   We removed it because the new logics never needs it.

B. The operator .pathstring_not_bare is removed,
   because .file_name_combine performs it's job better.

C. The functions gp_pathstring_not_bare, gp_file_name_references_parent,
   char *gp_file_name_concat_string are not longer in use.

D. New operators added to maintain the new logics :

   &lt;string&gt; &lt;string&gt; .file_name_combine &lt;string&gt;

      Combine a file name with a prefix.
      The first argument is a prefix, the second is a file name.
      Internal syntax of arguments and result is platform dependent.
      The combination is being reduced to a shortest equivalent,
      but if it starts with cwd reference, the starting
      cwd reference persists.

   - .file_name_separator &lt;string&gt;

      Returns a readonly string, which represents a separator
      which is used in file names between directory item and file item.
      Used for making the default value of GenericResourcePathSep.

   - .file_name_directory_separator &lt;string&gt;

      Returns a readonly string, which represents a separator
      which is used in file names between two directory items.
      Used for making the default value of GenericResourceDir.

   - .file_name_parent &lt;string&gt;

      Returns a readonly string, which represents a parent reference.
      Used for making the default value of GenericResourceDir
      and GenericResourceDir.

   &lt;string&gt; .file_name_parents &lt;integer&gt;

      Returns an integer equal to the length of maximal
      anchor substring, which includes parent references and separators only.
      Used in generating the permission list from LIBPATH and
      [GenericResourceDir FontResourceDir] as a workaround
      for (6).

   We believe that all them are necessary, except the last one,
   which is temporary used in (8) as a workaround for (6).
</pre></blockquote>

<p><strong><a name="2003-03-03_1150"></a>
2003-03-03 11:50 Igor Melichev</strong></p>
<blockquote><pre>
gp_file_name_combine : Implementing new PS operators.
</pre></blockquote>

<p><strong><a name="2003-03-03_1100"></a>
2003-03-03 11:00 Igor Melichev</strong></p>
<blockquote><pre>
gp_file_name_combine : Fixing the OpenVMS parent syntax.
</pre></blockquote>

<p><strong><a name="2003-03-03_1049"></a>
2003-03-03 10:49 Igor Melichev</strong></p>
<blockquote><pre>
gp_file_name_combine : Fixing a comment about OpenVMS.
</pre></blockquote>

<p><strong><a name="2003-03-03_1032"></a>
2003-03-03 10:32 Igor Melichev</strong></p>
<blockquote><pre>
gp_file_name_combine : Fixing the OpenVMS parent syntax and generalizing the ankor parent check.
Thanks to Jacob Jansen.
</pre></blockquote>

<p><strong><a name="2003-03-02_2252"></a>
2003-03-02 22:52 Igor Melichev</strong></p>
<blockquote><pre>
gp_file_name_combine : Adding more helpers for OpenVMS support.

DETAILS:

The previous patch unintentionally set NEW_COMBINE_PATH=1.
This one repairs it.

OpenVMS uses different separators for directory and file
items - '.' and ']'. More helpers added to resolve this.
gp_file_name_conbine_generic now checks which one is needed
for concatenating paths.
</pre></blockquote>

<p><strong><a name="2003-03-02_1348"></a>
2003-03-02 13:48 Igor Melichev</strong></p>
<blockquote><pre>
gp_file_name_combine : Implementing some useful functions.

DETAILS:

This patch doesn't change any behavior.
The new functions will be used with NEW_COMBINE_PATH=1.

Probably we don't need gp_file_name_reduce, but it's implementation
is pretty nice and isn't obvious.

gp_file_name_is_absolute will replace gp_pathstring_not_bare.
NEW_COMBINE_PATH=1 wan't need a special check for cwd.

gp_file_name_is_from_parent will replace gp_file_name_references_parent.
The new function only check partent at the beginning of the path,
and should be used with reduced paths only.

We could code an in-place reduction with :

    gp_file_name_combine_result
    gp_file_name_reduce_inplace(char *buffer, uint *blen)
    {
        return gp_file_name_reduce(buffer, *blen, buffer, blen);
    }

but we believe that

1. Aliasing const with non-const isn't a valid C.
   Rather GS contains multiple const hacks, we don't want to add another one.

2. The input buffer must have space for the trailing zero,
   which is not accounted in *blen.

The patch also includes a minor cleanup of comments and gp_file_name_combine_generic.
</pre></blockquote>

<p><strong><a name="2003-03-02_1150"></a>
2003-03-02 11:50 Igor Melichev</strong></p>
<blockquote><pre>
Fix : A compiler warning in platform dependent code for gp_file_name_combine.
</pre></blockquote>

<p><strong><a name="2003-03-02_1138"></a>
2003-03-02 11:38 Igor Melichev</strong></p>
<blockquote><pre>
Fix : A syntax error in platform dependent code for gp_file_name_combine.
</pre></blockquote>

<p><strong><a name="2003-03-01_1359"></a>
2003-03-01 13:59 Igor Melichev</strong></p>
<blockquote><pre>
Implementing gp_file_name_combine.

DETAILS :

This patch introduces a new code, which is currently
disabled with "#define NEW_COMBINE_PATH 0" in gp.h .

The new function gp_file_name_combine concatenates
two paths and then reduce the concatenation with excluding
parent references when possible. It is platform dependent,
but we could factor out a big common part - see gp_file_name_combine_generic.
Platforms define 8 small helpers for it.

The gp_file_name_combine and its helpers were debugged on Windows
with emulating other platforms. A help wanted to
test them on real platforms. For testing them
replace 0 with 1 in the definition of NEW_COMBINE_PATH
in gp.h and rebuild.

We do not protect definitions of new functions with
NEW_COMBINE_PATH switch, because we want them to be syntax-checked.

Some old functions, such as gp_pathstring_not_bare,
gp_file_name_concat_string will be reconsidered later,
because the helpers perform similar work in a generalized way.
Probably some of old ones to be removed. Our strong intention is
to remove gp_pathstring_not_bare, because it's behavior looks
strange from the user's end.
</pre></blockquote>

<p><strong><a name="2003-03-01_1254"></a>
2003-03-01 12:54 Igor Melichev</strong></p>
<blockquote><pre>
Reorganizing lib_open, lib_file_open, lib_file_fopen, file_open_stream functions
to allow to check permissions with a combined file name.

DETAILS :

This should be an equivalent change.
It is a preparation for implementing static resources.

This patch moves the directory enumeration cycle from lib_file_fopen
to lib_file_open. After that we have a place in lib_file_open
in which both combined path and permissions are accessible
(more precisely, this place is in lib_fopen_with_libpath).
The checking permissions in there will be next improvement.

This patch defines a stub for gp_file_name_combine function.
Temporary it is placed into zfile.c .
Later it will be moved to platform dependent modules.
</pre></blockquote>

<p><strong><a name="2003-02-28_1858"></a>
2003-02-28 18:58 Ray Johnston</strong></p>
<blockquote><pre>
Moving clear to before the restore removed the startjob parameters from
the opstack.

DETAILS:

This was an attempt to remove a potential problem with invalidrestore
caused by stuff on the opstack or dictstack if startjob was executed with
elements on these stacks. Since the problem has always been there and
since no one has tripped over it, we will investigate a correct fix
to preventing invalidrestore when the need arises. In the meantime,
at least startjob will work.
</pre></blockquote>

<p><strong><a name="2003-02-28_1853"></a>
2003-02-28 18:53 Ralph Giles</strong></p>
<blockquote><pre>
Correct a comment typo.
</pre></blockquote>

<p><strong><a name="2003-02-28_0358"></a>
2003-02-28 03:58 Ray Johnston</strong></p>
<blockquote><pre>
Correct typo somehow a /* comment crept in -- changed to %
</pre></blockquote>

<p><strong><a name="2003-02-28_0031"></a>
2003-02-28 00:31 Ray Johnston</strong></p>
<blockquote><pre>
Add .endjob procedure for use by job servers. Remainder of job encapsulation
and documentation to follow later. Also fix potential "invalidrestore"
problem with "extiserver" and "true &lt;passwd&gt; startjob" caused by stuff left
on the opstack or dictstack.
</pre></blockquote>

<p><strong><a name="2003-02-27_1156"></a>
2003-02-27 11:56 Ralph Giles</strong></p>
<blockquote><pre>
Support for JBIG2 streams with a JBIG2Globals shared data reference.

DETAILS:

The JBIG2Decode filter can take an optional /JBIG2Globals parameter,
always an indirect object reference to another stream. This commit adds
a new .jbig2makeglobalctx operator that takes a bytestring contanting
the global stream data, runs it through the decoder library and wraps
the resulting context pointer in an astruct which is returned as a
special -jbig2globalctx- object on the postscript stack.

A new procedure called from inside applyfilters in the pdf decoder takes
care of spooling the global data into the bytestring and installing the
astruct under the .jbig2globalctx key in the parameter dictionary. The
filter implementation looks for this and passes it to the page decoder
instance if it's available. The original JBIG2Globals key is ignored by
the actual decode filter implementation.
</pre></blockquote>

<p><strong><a name="2003-02-26_2233"></a>
2003-02-26 22:33 Igor Melichev</strong></p>
<blockquote><pre>
Fix : Improving a comment in lib/FAPIconfig.
</pre></blockquote>

<p><strong><a name="2003-02-25_2053"></a>
2003-02-25 20:53 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : -dSubsetFonts=false did not work with incremental fonts.

DETAILS :

pdfwrite created a "complete" copy of a font at the first appearance of the font.
With incremental fonts it missed incremental glyphs with -dSubsetFonts=false.
The patch checks whether a glyph is added incrementally and
replaces the "complete" font copy with a font subset.
Bug #686735 "-dSubsetFonts=false produces a bad PDF".

The core of the patch is the change to gdevpdte.c .
Other changes just pass a necessary data through internal interfaces.

This patch should not change behavior with -dSubsetFonts=false,
which is used by default for the regression testing.
</pre></blockquote>

<p><strong><a name="2003-02-25_1544"></a>
2003-02-25 15:44 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Removing pdf_font_resource_s::copied_font.

DETAILS :

The patch removes a duplicated pointer.
It is a preparation for fixing #686735 "-dSubsetFonts=false produces a bad PDF".
The patched code should be equivalent to the old one.
</pre></blockquote>

<p><strong><a name="2003-02-25_1325"></a>
2003-02-25 13:25 Igor Melichev</strong></p>
<blockquote><pre>
Fix (FAPI) : improving a comment.
</pre></blockquote>

<p><strong><a name="2003-02-25_1309"></a>
2003-02-25 13:09 Igor Melichev</strong></p>
<blockquote><pre>
Fixing a compiler warning.
</pre></blockquote>

<p><strong><a name="2003-02-25_1225"></a>
2003-02-25 12:25 Igor Melichev</strong></p>
<blockquote><pre>
Fixing the device finalization problem.

DETAILS :

pdfwrite (and possibly other devices) perform a huge work within close_device.
Since close_device is called via finalization method from memory
manager, some device structures could be released before calling
device_close, so that the huge work could not safely complete.
Also it could return error codes, which were entirely lost.

This patch calls gs_closedevice implicitly when a device
is about to uninstall. We catch 2 such events : when the interpreter
is about to exit, and when the interpreter executes setdevice.
This should be enough for "external" devices, such as printer drivers.
Internal devices do not receive these calls.

Note that a call to gx_device_fill_in_procs is added after assign_dev_procs
from gx_default_create_buf_device. Not sure why it was not done before.
After assign_dev_procs, ppmraw had ununitialized procs.

Also note that is_open flag is now unconditionally resets in gs_closedevice.
The new code needs to reset it to prevent redundant call to close_device from
device finalization method. The redundant call causes
a crash if pdfwrite has insufficient disk space to store the
output file (debugged with dina3_watermark.pdf) .

Bug 601255 "segv while device finalization".
</pre></blockquote>

<p><strong><a name="2003-02-24_1350"></a>
2003-02-24 13:50 Alex Cherepanov</strong></p>
<blockquote><pre>
Avoid dictfull error; allocate page dictionary as large as the image
cache size. Wrap the image data string in the executable array because
some interpreters require the procedure data source.
Fixes bug #643398
</pre></blockquote>

<p><strong><a name="2003-02-22_1805"></a>
2003-02-22 18:05 Ralph Giles</strong></p>
<blockquote><pre>
Use the correct debug macro in the recently committed struct_array
allocation checks. Only relevent to the debug build.
</pre></blockquote>

<p><strong><a name="2003-02-22_0550"></a>
2003-02-22 05:50 Alex Cherepanov</strong></p>
<blockquote><pre>
Return error immediately when glyph ID is not found in GlyphDirectory.
Avoid access to partly constructed GlyphData and obscure failures there.
Fixes SourceForge bug #672129

DETAILS:
This change has no effect on rendering. Old code was
failing during access to GlyphData, which caused default glyph
substitution. New code returns the error earlier and causes
the same default glyph substitution.
</pre></blockquote>

<p><strong><a name="2003-02-21_1852"></a>
2003-02-21 18:52 Ray Johnston</strong></p>
<blockquote><pre>
Add runtime validity checking related to struct_array allocations. This is
only enabled for DEBUG builds so the checks will not slow down production
builds. Related to bug 669170.
</pre></blockquote>

<p><strong><a name="2003-02-21_1848"></a>
2003-02-21 18:48 Ray Johnston</strong></p>
<blockquote><pre>
Fix SEGV when cmap allocation failed (check for pcmap==NULL was misplaced).
</pre></blockquote>

<p><strong><a name="2003-02-21_1122"></a>
2003-02-21 11:22 Igor Melichev</strong></p>
<blockquote><pre>
Fix : Don't generate the warning "/Unicode /Decoding is not accessible"
when working with no pdfwrite device.
</pre></blockquote>

<p><strong><a name="2003-02-20_2134"></a>
2003-02-20 21:34 Alex Cherepanov</strong></p>
<blockquote><pre>
The fact that pswrite and epswrite devices generate low level
PostScript has been documented as a known limitation.
</pre></blockquote>

<p><strong><a name="2003-02-20_1857"></a>
2003-02-20 18:57 Jack Moffitt</strong></p>
<blockquote><pre>
Forces test scripts which take files as arguments to treat the files as
names rather than paths.
</pre></blockquote>

<p><strong><a name="2003-02-20_1834"></a>
2003-02-20 18:34 Igor Melichev</strong></p>
<blockquote><pre>
Fix : A structure discriptor was wrong allocating an array of gs_cid_system_info.

DETAILS :

This also unwinds the patch
http://www.ghostscript.com/pipermail/gs-cvs/2003-February/002895.html
</pre></blockquote>

<p><strong><a name="2003-02-20_1338"></a>
2003-02-20 13:38 Alex Cherepanov</strong></p>
<blockquote><pre>
Fix: Use default procedures for non-forwarding component bbox device.
Forwarding procedures cannot be used if there's no target device.

DETAILS :

Bug #636210

This is a partial fix for bug #636210.
Another part, I/O error processing, will be posted separately.
This change was locally tested with full regression test.
</pre></blockquote>

<p><strong><a name="2003-02-18_1957"></a>
2003-02-18 19:57 Igor Melichev</strong></p>
<blockquote><pre>
This is initial commit for implementing static resources.

DETAILS :

1. Adding a new iodevice %static% with the new file ziodevst.c .
It is used for opening files placed in static data segment.
They need to be accessed as PS files due to multiple reasons,
including the implementation of gs_ciddc.ps and for PS procedure
ResourceFileName defined in PLRM.

2. Implementing a queue for delayed invocation
of initialization functions at end of gs_init.
This feature is necessary due to customized
builds of Ghostscript : some 'dev' depend each
on other and some functions are needed to execute
after all devs are preset. Currently it is only used
for obtaining the Unicode Decoding resource,
but later it will be used for perfectly consistent
processing of font and CID font map files,
both with FAPI and without it.

3. gs_resmp.ps slightly changed for handling
resource maps which are not defined as files.

4. The new file gs_resst.ps implements a procset
for handling static resource files. Both gs_resst.ps and
gs_ciddc.ps use the %static% iodevice.

5. The new file gs_resst.ps creates a map of resource files
placed in static segment. Later it would be nice
to generate it during GS installation. With the defined
resource set gs_init.obj grows up to 1.5Meg,
but both MSVC and gcc/Cygwin could handle it.

Currently all resources in gs_stres.ps are COMMENTED OUT
to prevent problems building Ghostscript with COMILE_INITS=1
on Mac and VMS. To uncomment them, replace '%-' with empty string.

This patch was locally tested with entire comparefiles
with COMPILE_INITS=0. It should not cause regressions.
Also it was slightly tested with COMPILE_INITS=1 :
the static resources work fine.

The patch assumes that during a GS build resource files
are placed in gs/Resource/ . It uses 1 Decoding and
a dozen of CMaps, which are necessary for the CID font emulation
and for FAPI to work. You need to uncomment them
in gs_stres.ps .

When GS is invoked, resources are being loaded from both
the static segment and from the OLD(!!!!!) default path.
In other words, the resource machinery works fine,
but the default resource path is not fixed yet.
I intend to fix it in the next day or two.

The patch depends on
http://www.ghostscript.com/pipermail/gs-cvs/2003-February/002950.html

The patch does not include CMaps and Decodings resources.
They to be added separately.
</pre></blockquote>

<p><strong><a name="2003-02-17_0831"></a>
2003-02-17 08:31 Jouk Jansen</strong></p>
<blockquote><pre>

 Committing in .

 OpenVMS crash fix (temporarily)

 Modified Files:
 	gs/src/openvms.mmk
 ----------------------------------------------------------------------
</pre></blockquote>

<p><strong><a name="2003-02-17_0008"></a>
2003-02-17 00:08 Igor Melichev</strong></p>
<blockquote><pre>
Enhancing the functionality of geninit.c .

DETAILS :

1. Implemented "long" relative paths. See translate_path.
   Not sure what to do with separators on Mac.
   See the __MACOS__ section.
   This change was not debugged on Mac.
   In case of problems please patch it.

2. Moved some error messages to prefix_open,
   to allow translated paths to be displayed.

3. Implemented an intact including of files.
   This is useful for including Adobe resources.
   Don't want legal problems with them.
   The syntax of 'Replace' statement is enhanced.
</pre></blockquote>

<p><strong><a name="2003-02-16_1751"></a>
2003-02-16 17:51 Igor Melichev</strong></p>
<blockquote><pre>
Fix : Improving the CIDFontType 2 font copying.

DETAILS :

I believe that the code about copying CIDFontType 2 glyphs
is overcomplicated with mixing CIDs and GIDs, and needs to be
cleaned up. The old code had an obvious inconsistency :
it allocated a smaller array for glyph indices than written,
causing a heap damage. This patch simply makes the code to be
self-consistent. I can't say that I completely
understand whether CIDs/GIDs passed correctly or not.
Now it is working, but the correctness was not proved,
and Acrobat Reader doesn't show the glyph with /CIDTTEMUL
(see below).

The problem was detected with COMPILE_INITS=1 with emulating
a CID wont with mshei.ttf . The following program had crashed
with pdfwrite :

/glyph 2300 def
/ShinGo-Bold /CIDFont findresource
100 scalefont setfont
100 200 moveto glyph glyphshow
/CIDTTEMUL /CIDFont findresource
100 scalefont setfont
100 100 moveto glyph glyphshow
showpage

with the cidfmap file like this :

/ShinGo-Bold &lt;&lt; /FileType /TrueType /Path (f:/WIN2000/Fonts/batang.ttf) /SubfontID 0 /CSI [(Japan1) 2] &gt;&gt; ;
/CIDTTEMUL &lt;&lt; /FileType /TrueType /Path (f:/WIN2000/Fonts/mshei.ttf) /SubfontID 0 /CSI [(Japan1) 2] &gt;&gt; ;

The effect is indeterministic.
When I build GS with regenerate gs_init.c,
it crashed if run in same session of Developer Studio.
But if I close-open the Developer Studio and run GS,
it doesn't crash.

The patch should enlarge the array, which was written outside
the index range. The problem looks gone.
Meanwhile the CID/GID logics in gxcopy.c to be revised someday.
</pre></blockquote>

<p><strong><a name="2003-02-16_1728"></a>
2003-02-16 17:28 Igor Melichev</strong></p>
<blockquote><pre>
Fix : Improving the seekability of the init string file.

DETAILS :

See comment in code.

This problem was found while developing a dead branch.
Rather it will not go to the mainstream development,
I'd like to keep track on it.
If the patch causes a problem, it can be safely unwinded.
</pre></blockquote>

<p><strong><a name="2003-02-15_2237"></a>
2003-02-15 22:37 Ray Johnston</strong></p>
<blockquote><pre>
Change the fixed point precision for device coordinates to 8 bits. The
previous 12 bits was too large to accomodate large format inkjet printers
at modern resolutions of 720 and 1200 dpi.
</pre></blockquote>

<p><strong><a name="2003-02-14_0134"></a>
2003-02-14 01:34 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : hmtx was wrongly written with CIDFontType 2 subset.

DETAILS:

Source Forge bug #683690.
</pre></blockquote>

<p><strong><a name="2003-02-13_2226"></a>
2003-02-13 22:26 Igor Melichev</strong></p>
<blockquote><pre>
Fix : Replacing UTC-16 with correct UTF-16 in documentation and comments.
</pre></blockquote>

<p><strong><a name="2003-02-13_2005"></a>
2003-02-13 20:05 Ralph Giles</strong></p>
<blockquote><pre>
Improve wording and sentence structure for some recent documentation
additions.
</pre></blockquote>

<p><strong><a name="2003-02-13_1119"></a>
2003-02-13 11:19 Igor Melichev</strong></p>
<blockquote><pre>
Adding a documentation about Decoding and CIDDecoding resource categories.
</pre></blockquote>

<p><strong><a name="2003-02-13_0924"></a>
2003-02-13 09:24 Igor Melichev</strong></p>
<blockquote><pre>
Fix : The condition in .pdf_hook_DSC_Creator was too general.
Restricting the Type 32 font disabling with pdfwrite device only.
</pre></blockquote>

<p><strong><a name="2003-02-13_0753"></a>
2003-02-13 07:53 Dan Coby</strong></p>
<blockquote><pre>
Partial fix for 684340.  Remove the macro gx_color_device_must_halftone
and its one (incorrect use).

DETAILS:
The macro gx_color_device_was meant for situations in which the device
was known to be a color device and it was needed to know if halftoning
was required.  With the 8.00 changes in the graphics library, the
one situation that it was being used is incorrect.  The macro was also
wrong since it was checking dev-&gt;color_info.max_gray.  It should have
been checking color_info.max_color.  The macro was removed.  Please
use gx_device_must_halftone in its place.
</pre></blockquote>

<p><strong><a name="2003-02-13_0154"></a>
2003-02-13 01:54 Igor Melichev</strong></p>
<blockquote><pre>
Fix : Stack balance in .pdf_hook_DSC_Creator .
</pre></blockquote>

<p><strong><a name="2003-02-12_2306"></a>
2003-02-12 23:06 Igor Melichev</strong></p>
<blockquote><pre>
Adding a documentation about GlyphNames2Unicode.
</pre></blockquote>

<p><strong><a name="2003-02-12_2231"></a>
2003-02-12 22:31 Igor Melichev</strong></p>
<blockquote><pre>
Fix : Removing an unused procedure.
</pre></blockquote>

<p><strong><a name="2003-02-12_1457"></a>
2003-02-12 14:57 Ralph Giles</strong></p>
<blockquote><pre>
Add the new jbig2 filter sources to the file listing.
</pre></blockquote>

<p><strong><a name="2003-02-12_1430"></a>
2003-02-12 14:30 Igor Melichev</strong></p>
<blockquote><pre>
pdfwrite : Disable 32 /FontType resource while processing a document
created with PScript5.dll .

DETAILS:

This patch completes the previous one. See details in there.
Also see comment in .pdf_hook_DSC_Creator defined by this patch.

This patch may be insufficiently safe for the case when
several documents are being united while a distillation.
We would like to restore the redefinition of 'resourcestatus'
after a document completes, but we don't know how to do
(exactly, where to call the restoring action from ?).
In general, what happens with

     gs -sDEVICE=pdfwrite -OutputFile=1.pdf document1.ps document2.ps -c quit

?
</pre></blockquote>

<p><strong><a name="2003-02-12_1429"></a>
2003-02-12 14:29 Igor Melichev</strong></p>
<blockquote><pre>
pdfwrite : Account GlyphNames2Unicode while creating ToUnicode CMaps for simple fonts.

DETAILS:

This patch improves the previous one.
It generalizes the GlyphNames2Unicode processing for any simple font.

GlyphNames2Unicode is an undocumented facility, which Adobe Postscript
printer driver PScript5.dll Version 5.2 uses to communicate with
Adobe Distiller. Adobe applies it to Type 3 and Type 42 fonts.

Adobe uses Type 3 with GlyphNames2Unicode only for compatibility
with interpreters, which cannot handle Type 32. With other
interpreters (including Ghostscript) the generated PS program
skips GlyphNames2Unicode data. Therefore the feature
is now implemented for Type 3 but it is not involved while
processing such documents. Need to patch "32 /FontType findresource"
to involve it. Probably with pdfwrite the DSC parser should recognize
the creator and exclude 32 from /FontType resource category.

This patch unwinds the enhanced functionality of gs_font_procs::glyph_info
with GLYPH_INFO_UTC16, which was done with the previous patch,
and introduces a new virtual function gs_font_procs::decode_glyph.
Doing so because GLYPH_INFO_UTC16 causes multiple redundant code
for various font types due to dependence on interpreter structures.

SF bug #684120 tracks additional issues.
</pre></blockquote>

<p><strong><a name="2003-02-12_0216"></a>
2003-02-12 02:16 Ralph Giles</strong></p>
<blockquote><pre>
Initial implementation of the /JBIG2Decode filter. This adds a '&#36;(PSD)jbig2.dev'
FEATURE_DEV which links in the libjbig2dec decoder library. This version does
not support the optional /JBIG2GLOBALS parameter for sharing information between
page images. However, it is still useful as this parameter has been empty in
the files we've seen. The feature in enabled for the autoconf build if the
decoder library is found on the system, and remains optional with the other builds.
</pre></blockquote>

<p><strong><a name="2003-02-11_2221"></a>
2003-02-11 22:21 Igor Melichev</strong></p>
<blockquote><pre>
pdfwrite : Account GlyphNames2Unicode while creating ToUnicode CMaps
for Type 42 fonts.

DETAILS:

GlyphNames2Unicode is an undocumented facility, which Adobe Postscript
printer driver PScript5.dll Version 5.2 uses to communicate with
Adobe Distiller. Adobe applies it to Type 3 and Type 42 fonts.

Type 3 with GlyphNames2Unicode is used only for compatibility
with interpreters, which cannot handle Type 32.
Since Ghostscript is not such, there is no need to implement
Type 3 with GlyphNames2Unicode. We don't do that.

This patch enhances the functionality of gs_font_procs::glyph_info
with retrieving Unicode UTC-16 code for a glyph. This enhancement
is implemented for practically useful cases only, which are
restricted with Type 42.

The gs_font_dir::glyph_to_unicode
callback is now removed because it is not longer useful.

SF bug #684120 tracks additional issues.

Working on this patch, I tried put the Unicode Decoding table
as a default value to FontInfo.GlyphNames2Unicode and remove the unicode_decoder.
But it appears not working, because test.ps for SF bug #529103 needs to
collect substitutions from both FontInfo.GlyphNames2Unicode and Unicode Decoding.

I removed the "WARNING: /Unicode /Decoding resource in not accessible",
because the flag for preventing its repetitions is not accessible from
gs_font_procs::glyph_info. A similar warning in lib/gs_pdfwr.ps still works.
</pre></blockquote>

<p><strong><a name="2003-02-10_2243"></a>
2003-02-10 22:43 Dan Coby</strong></p>
<blockquote><pre>
The display device (src/gdevdsp.c) was displaying pure magenta as
white when using the DISPLAY_UNUSED_LAST mode.

DETAILS:
The cause of the problem was a sign bit extention in a 32 to 64
bit conversion (long to gx_color_index).  The fix was to add casts
to force the conversion to gx_color_index (which is unsigned) earlier
in the assigment.
</pre></blockquote>

<p><strong><a name="2003-02-10_1847"></a>
2003-02-10 18:47 Alex Cherepanov</strong></p>
<blockquote><pre>
Added link to a new file: pfbtopfa.bat
</pre></blockquote>

<p><strong><a name="2003-02-10_1739"></a>
2003-02-10 17:39 Ray Johnston</strong></p>
<blockquote><pre>
Fix a stack problem when doing small-caps substitution on a substituted
font referenced from a PDF file. Problem seen with Adobe's PDF 1.2 spec.

SourceForge bug# 683997 for Artifex customer #150.
</pre></blockquote>

<p><strong><a name="2003-02-10_1701"></a>
2003-02-10 17:01 Ralph Giles</strong></p>
<blockquote><pre>
Document that pdfwrite and pswrite do not support the '%d' file-per-page
convention for -sOutputFile. Partial fix for Sourceforge bug 645677.

DETAILS:

Ghostscript actually segfaults when an output file name containing %d
is passed to pdfwrite or pswrite. This remains to be resolved.
</pre></blockquote>

<p><strong><a name="2003-02-10_1653"></a>
2003-02-10 16:53 Igor Melichev</strong></p>
<blockquote><pre>
Fix: Some compiler warnings.
</pre></blockquote>

<p><strong><a name="2003-02-10_1631"></a>
2003-02-10 16:31 Igor Melichev</strong></p>
<blockquote><pre>
Improving gs_font_procs interface functions glyph_info and glyph_outline.

DETAILS:

The old interface definition provided insufficient data for pdfwrite.
Several hacks was used in pdfwrite to recover the luck of data.
This patch slightly enhances the interface and removes the hacks.
See new comments in gxfont.h about the enhancement.

The interface could be more complete - see comments in gxfont.h .
Now we do not apply efforts for refinishing it, because
there is no practical need and we have no tests for it.

This patch improves glyph positions with pdfwrite for fonts with
vertical CMaps. comparefiles do not test this case.

Minor change : fixed compiler warnings in gdevpdtd.c .
</pre></blockquote>

<p><strong><a name="2003-02-07_1543"></a>
2003-02-07 15:43 Igor Melichev</strong></p>
<blockquote><pre>
The CID to TT mapping : Implementing a glyph data cache.

DETAILS:

The implementation of the CID font emulator is completed.

Minor changes :

- Fixed a compiler warning in gdevpdfu.c .
</pre></blockquote>

<p><strong><a name="2003-02-07_0031"></a>
2003-02-07 00:31 Igor Melichev</strong></p>
<blockquote><pre>
Fix : Improving comments in map file samples.
</pre></blockquote>

<p><strong><a name="2003-02-07_0023"></a>
2003-02-07 00:23 Igor Melichev</strong></p>
<blockquote><pre>
Improving a documentation about emulating CID fonts with True Type fonts.
</pre></blockquote>

<p><strong><a name="2003-02-06_1743"></a>
2003-02-06 17:43 Alex Cherepanov</strong></p>
<blockquote><pre>
Default CRD name is /DefaultColorRendering , not /Default
Fixes SourceForge bug #667351 from customer #150
</pre></blockquote>

<p><strong><a name="2003-02-06_1302"></a>
2003-02-06 13:02 Igor Melichev</strong></p>
<blockquote><pre>
Fix (FAPI) : A portability bug about arithmetic shift.
</pre></blockquote>

<p><strong><a name="2003-02-06_0940"></a>
2003-02-06 09:40 Igor Melichev</strong></p>
<blockquote><pre>
pdfwrite : Generating ToUnicode CMaps for simple fonts.
For fonts with random encoding it allows to Copy-Paste text
from viewers and to search a text.

DETAILS:

This code requires /Unicode /Decoding resource.
If the resource is absent, PDF will be written without ToUnicode CMap,
a warning is written to stdout explaining that the resource may be useful,
and another warning may be written to stderr if the resource is actually
useful for the document.

To access the resource I introduced a special operator .setupUnicodeDecoder .
It is called from gs_pdfwr.ps and stores the resource to gs_font_dir,
together with a callback which performs the decoding.
This is only a way to pass the resource through the graphics library.
It is definitely not a device parameter, and converting it to
C structures would be hard.

I don't like the big stuff added into zfont.c, but I haven't got
a better idea where to put it.

Minor change : fixed Cygwin/gcc compiler warnings.
</pre></blockquote>

<p><strong><a name="2003-02-06_0609"></a>
2003-02-06 06:09 Alex Cherepanov</strong></p>
<blockquote><pre>
Created for completeness and convenience to Windows users.
</pre></blockquote>

<p><strong><a name="2003-02-05_1345"></a>
2003-02-05 13:45 Ralph Giles</strong></p>
<blockquote><pre>
Remove documentation about the Pn() macros for K&amp;R compatibility. They
were entirely removed prior to the 8.00 release.
</pre></blockquote>

<p><strong><a name="2003-02-05_0740"></a>
2003-02-05 07:40 Igor Melichev</strong></p>
<blockquote><pre>
Fix (FAPI) : Improving error messages.
</pre></blockquote>

<p><strong><a name="2003-02-04_2313"></a>
2003-02-04 23:13 Igor Melichev</strong></p>
<blockquote><pre>
(pdfwrite) : Fixing glyph width with WMode=1.

DETAILS:

Expecting a progression with 093-01.ps .
</pre></blockquote>

<p><strong><a name="2003-02-04_1650"></a>
2003-02-04 16:50 Igor Melichev</strong></p>
<blockquote><pre>
(pdfwrite) : Fixing a check for NULL pointer pdf_attached_font_resource,
and propagating return codes from there.
</pre></blockquote>

<p><strong><a name="2003-02-04_1546"></a>
2003-02-04 15:46 Igor Melichev</strong></p>
<blockquote><pre>
(pdfwrite) : Improving the safety of pdf_font_cache_elem arrays.

DETAILS :

The patch should not change any behavior.
It only inserts some index range checks while accessing arrays.
It was not neccessary, but it helped to locate a different problem.
</pre></blockquote>

<p><strong><a name="2003-02-04_1524"></a>
2003-02-04 15:24 Igor Melichev</strong></p>
<blockquote><pre>
Fix (new Type 1 hinter) : Exported an excessive moveto when hints are disabled.

DETAILS:

This only affects pdfwrite.
Debugged with 401-01.ps .

Minor change :
Added some visual trace commands for the case of disabled hinting.
</pre></blockquote>

<p><strong><a name="2003-02-04_1505"></a>
2003-02-04 15:05 Igor Melichev</strong></p>
<blockquote><pre>
Fixing a garbager problem in pdfwrite.

DETAILS :

The patch
http://www.ghostscript.com/pipermail/gs-cvs/2003-February/002891.html
is incorrect and caused multiple regressions.
Replacing it with a better patch.

Releasing pdf_font_cache_elem while device finalization,
the structure lefts in heap due to memory manager is disabled,
but it's pointers become invalid if they point to a huge area,
which was allocated in a separate chunk with another allocator.
Reset the pointers to prevent the garbager's attempt to relocate them
after the huge chunk is released.
</pre></blockquote>

<p><strong><a name="2003-02-03_1935"></a>
2003-02-03 19:35 Igor Melichev</strong></p>
<blockquote><pre>
Fixing a garbager problem with gs_cmap_adobe1.
</pre></blockquote>

<p><strong><a name="2003-02-03_1632"></a>
2003-02-03 16:32 Igor Melichev</strong></p>
<blockquote><pre>
Fix (FAPI) : SubstNWP erroneusely used with non-CID fonts.
</pre></blockquote>

<p><strong><a name="2003-02-03_1606"></a>
2003-02-03 16:06 Igor Melichev</strong></p>
<blockquote><pre>
Fix (FAPI) : Improving the default value for the subpixel grid.
</pre></blockquote>

<p><strong><a name="2003-02-03_1559"></a>
2003-02-03 15:59 Igor Melichev</strong></p>
<blockquote><pre>
(pdfwrite) : Copying a composite True Type glyph, components were indexed wrongly.

DETAILS :

It applyed CIDMap to subglyph indices, rather it must not.
</pre></blockquote>

<p><strong><a name="2003-02-03_1400"></a>
2003-02-03 14:00 Igor Melichev</strong></p>
<blockquote><pre>
Fixing a garbager problem in pdfwrite.

DETAILS :

Releasing pdf_font_cache_elem while device finalization,
the structure lefts in heap due to memory manager is disabled,
but it's pointers become invalid. Reset the pointers
to prevent the garbager's attempt to relocate them later.
</pre></blockquote>

<p><strong><a name="2003-02-03_1253"></a>
2003-02-03 12:53 Igor Melichev</strong></p>
<blockquote><pre>
Fixing problems with AlignToPixels.

DETAILS :

1. Keys for character cache were incorrect, causing an excessive
   memory consumption (see the change to gxchar.c).
2. Subpixel grid and AlignToPixels were not passed to FAPI.

ifapi.h changed the prototype of get_scaled_font.
Therefore most changes are just a data re-srtucturization.
</pre></blockquote>

<p><strong><a name="2003-02-03_0927"></a>
2003-02-03 09:27 Igor Melichev</strong></p>
<blockquote><pre>
CID font emulation : Comply with FAPI.

DETAILS :

This patch allows to redirect emulated CID fonts to FAPI.
It is not neccessary, but I like this feature.
</pre></blockquote>

<p><strong><a name="2003-02-03_0832"></a>
2003-02-03 08:32 Igor Melichev</strong></p>
<blockquote><pre>
CID font emulation : Resolving relative paths.

DETAILS :

The implementation of the CID font emulator is now complete.
Perhaps an optimization is wanted for gs_type42_get_outline_from_TT_file.
See comment in there.
</pre></blockquote>

<p><strong><a name="2003-02-03_0759"></a>
2003-02-03 07:59 Jouk Jansen</strong></p>
<blockquote><pre>

 Committing in .

 OpenVMS patches

 Modified Files:
 	gs/src/gp_vms.c gs/src/gsfcid.c gs/src/openvms.mmk
 ----------------------------------------------------------------------
</pre></blockquote>

<p><strong><a name="2003-02-02_2143"></a>
2003-02-02 21:43 Igor Melichev</strong></p>
<blockquote><pre>
A documentation about emulating CID fonts with True Type fonts.
</pre></blockquote>

<p><strong><a name="2003-02-01_1856"></a>
2003-02-01 18:56 Igor Melichev</strong></p>
<blockquote><pre>
The CID to TT mapping : Providing a single map file
for both the CID font to CID font substitution and
True Type font to CID font substitution.

DETAILS:

Minor changes :

- Allowed a mapped category redefinition with no map file.
  The map file may be delayed until a later redefinition.
- Changed the order of CIDFont category redefinitions in int.mak .
- Removed the usage of gs/lib/cidttmap.
- Improved a comment in gs/lib/cidfmap about its format.
- Provided an automatic choice of SubstNWP.
- Added an idle entry into the SubstNWP collection.
- Added a comment in zfapi.c . It's a problem.

The implementation of the CID font emulator is almost complete except 2 features :

1. Relative paths are not allowed in the gs/lib/cidfmap file.
2. An optimization is wanted for gs_type42_get_outline_from_TT_file.
   See comment in there.
</pre></blockquote>

<p><strong><a name="2003-01-31_1739"></a>
2003-01-31 17:39 Igor Melichev</strong></p>
<blockquote><pre>
Fix : Removing some unused variables.
</pre></blockquote>

<p><strong><a name="2003-01-31_1628"></a>
2003-01-31 16:28 Igor Melichev</strong></p>
<blockquote><pre>
The CID to TT mapping : Building CIDMap with SubstNWP.

DETAILS:

This patch should not change any behavior if a new file
gs/lib/cidttmap is not added. Normally it is not.

With this patch narrow, wide and proportional Romans
may substitute each another while emulating a CJK CID font
with True Type font. Usually True Types contain insufficient
glyph to render all them. The substitution prevents missed glyphs.

This patch introduces a new special operator .fillCIDMap .
It composes a CID map from a Decoding, a True Type cmap,
and SubstNWP. PS code would be too big and slow for this purpose.

The implementation of the CID font emulator is almost complete except 2 features :

1. The CID font to CID font mapper and
   the True Type to CID font mapper use different map files -
   cidfmap and cidttmap.

2. An optimization is wanted for gs_type42_get_outline_from_TT_file.
   See comment in there.

Minor changes :

- Fixed a bug in gs_cidfn.ps which tried to store a local
  FontMatrix to a global font dictionary.

- A portion of code is factored out from zfapi.c to share with  .fillCIDMap
</pre></blockquote>

<p><strong><a name="2003-01-31_1257"></a>
2003-01-31 12:57 Ralph Giles</strong></p>
<blockquote><pre>
Remove a spurious include for MAXPATHLEN. Discovered fixing SF bug 675847.
</pre></blockquote>

<p><strong><a name="2003-01-31_1254"></a>
2003-01-31 12:54 Igor Melichev</strong></p>
<blockquote><pre>
CID font emulation : Choosing a cmap with gs/lib/xlatmap.

DETAILS:

This patch only changes a code which work for
FAPI or for CID font emulation. Regular GS invocation
should not change a behavior.

This is a next step of the CID font emulation.
Now it can handle all Windows JCK charsets, including Unicode-16.
In other words, a CJK font with any Windows charset can be used for emulation.
To handle other CJK charsets one should create an appropriate
CIDDecoding resource and add it into gs/lib/xlatmap.

Minor changes :

- Speeded up the TT file parser using the 'setfileposition'.

- Improved some diagnostic messages.

The implementation of the CID font emulator is still incomplete :

1. The CID font to CID font mapper and
   the True Type to CID font mapper use different map files -
   cidfmap and cidttmap.

2. SubstNWP is being ignored.

3. An optimization is wanted for gs_type42_get_outline_from_TT_file.
   See comment in there.
</pre></blockquote>

<p><strong><a name="2003-01-31_1251"></a>
2003-01-31 12:51 Ralph Giles</strong></p>
<blockquote><pre>
Fixup makefile dependencies after changing header includes in gp_unifs.h.
Part of the fix for SF bug 675847.
</pre></blockquote>

<p><strong><a name="2003-01-31_1248"></a>
2003-01-31 12:48 Ralph Giles</strong></p>
<blockquote><pre>
Use the ANSI-standard FILENAME_MAX from stdio.h instead of MAXPATHLEN from
sys/param.h for unix path buffers. Fixes SF bug 675847.

DETAILS:

We should actually be using gp_file_name_sizeof here, but it's currently
a static define to a lowest common denominator, and we prefer a more
unix-friendly default. This can of course be changed if the _sizeof is
properly configured per platform.
</pre></blockquote>

<p><strong><a name="2003-01-31_0936"></a>
2003-01-31 09:36 Igor Melichev</strong></p>
<blockquote><pre>
The CID to TT mapping :
1. Providing an access to glyphs on demand.
2. Handle TTC font format.

DETAILS:

This patch should not change any behavior if a new file
gs/lib/cidttmap is not added. Normally it is not.

With this patch glyf and loca tables are being skipped while loading
a True Type into RAM. An access by demand is provided instead
(This works for CIDFontType 2; it is not used for Type 42).

Map file may contain records with SubfontID, which
specifies a font number in a TTC collection.
TTC format is implemented for disk files only,
because embedded fonts never use it.

To provide the on-demand access, the patch introduces a special
extension of the Postscript language.
A CIDFontType 2 dictionary may contain /File with a file value.
It should be a positionable file of the TTF or TTC format.
When it presents, the dictionary must contain /file_table_pos,
which's value is a dictionary of 2-element arrays, which specify
position and length of a TT table in the file. 2 arrays
must present with keys /loca and /glyph.

We would like to optimize this implementation.
See comment in gs_type42_get_outline_from_TT_file.
</pre></blockquote>

<p><strong><a name="2003-01-31_0905"></a>
2003-01-31 09:05 Dan Coby</strong></p>
<blockquote><pre>
Fix for 673108.  The test file has a stream which contains an invalid
stream length.  However Acrobat handles the file.

Details:
The invalid stream length was bad enough that we were positioning beyond
the end of the file when we searched for the endstream.  A check was
added for this case and if so then we ignore repositioning the file
before searching for the endstream.  Note:  There is already logic in
the code which emits a warning message if the endstream is not found.
A second part of this fix was to clean up the stack if the endstream
is not found.
</pre></blockquote>

<p><strong><a name="2003-01-30_1044"></a>
2003-01-30 10:44 Igor Melichev</strong></p>
<blockquote><pre>
CID font emulation : Adding a code for CIDMap generation,
and moving the xlatmap scanner to gs_fntem.ps .

DETAILS:

This patch only changes a code which work for
FAPI or for CID font emulation. Regular GS invocation
should not change a behavior.

This is a next step of the CID font emulation.
Now it correctly maps most CIDs to Unicode fonts.

Secondary changes :

- I made xlatmap accessible from gs_ttf.c .
  It should be used choosing a cmap.

- improving some comments and function names.

- Removed a redundant definition of a CIDFont,
  which was unintentionally introduced with the previous patch.

The implementation of the CID font emulator is still incomplete :

1. Entire True Type fonts are loaded into VM.

2. SubfontID is being ignored.

3. The CID font to CID font mapper and
   the True Type to CID font mapper use different map files -
   cidfmap and cidttmap.

4. Access to glyphs by demand is not done.

5. SubstNWP is being ignored.

6. The choice the Unicode cmap is hardcoded.
   Should use xlatmap instead.

The previous log message recommends to use PMINGLIU.TTF.
Actually it requires a True Type bytecode interpreter,
which GS doesn't provide. The font mshei.ttf does not.
</pre></blockquote>

<p><strong><a name="2003-01-29_2024"></a>
2003-01-29 20:24 Ray Johnston</strong></p>
<blockquote><pre>
Fix for incorrect colors with pswrite device when painting rectangles.
SF bug 677009.

DETAILS:

The call to gdev_vector_update_clip_path followed the update_fill call
which set the color, but the clip path performed a 'Q q' (grestore gsave)
which reverted to whatever color was part of the previous saved gstate.
Changing the order of the calls fixes the problem.
</pre></blockquote>

<p><strong><a name="2003-01-29_1100"></a>
2003-01-29 11:00 Igor Melichev</strong></p>
<blockquote><pre>
Enhancing the resource machinery with mapping CID fonts to True Types.

DETAILS:

This patch should not change any behavior if a new file
gs/lib/cidttmap is not added. Normally it is not.

Adding 2 new files gs_fntem.ps and gs_cidtt.ps and reorganizing
old files gs_cidfn.ps, gs_fapi.ps, gs_resmp.ps with them.
This moves a part of FAPI support to a more general level.
The moved stuff is shared with the FAPI and the new CID font mapper.

After this change Ghostscript can load Unicode True Type fonts
as a substitution to a CIDFontType 2 and render it.
At least the Windows font PMINGLIU.TTF succeeds.
But the implementation is very incomplete :

1. The CID to GID mapping is fully wrong.

2. Entire True Type fonts are loaded into VM.

3. The CID font to CID font mapper and
   the True Type to CID font mapper use different map files -
   cidfmap and cidttmap.

All these 3 solutions are temporary and to be improved later.

To involve the new feature, create a new file gs/lib/cidttmap,
and put records to there of the following format :

/ShinGo-Bold  &lt;&lt; /FileType /TrueType /Path (F:/WIN2000/Fonts/PMINGLIU.TTF) /CSI [(Japan1) 2] /SubstNWP /Japan1 &gt;&gt; ;

It is similar to gs/lib/FAPIcidfmap, see Use.htm about the latter.

This patch does not include a change to documentation,
because it is too early to announce it to users.
</pre></blockquote>

<p><strong><a name="2003-01-29_0923"></a>
2003-01-29 09:23 Igor Melichev</strong></p>
<blockquote><pre>
FAPI : Removing unuseful includes.
</pre></blockquote>

<p><strong><a name="2003-01-29_0919"></a>
2003-01-29 09:19 Igor Melichev</strong></p>
<blockquote><pre>
FAPI : A further improvement for the GS/FreeType bridge.
Patch from Graham Asher.

DETAILS :

Without FAPI plugins this patch doesn't change any behaviour.

Minor improvements by igorm :

- fixed a spelling;
- FAPI_METRICS_ADD was buggy - a fixed overflow (thanks to Graham).
- removed unuseful dependencies from makefile.
</pre></blockquote>

<p><strong><a name="2003-01-29_0853"></a>
2003-01-29 08:53 Igor Melichev</strong></p>
<blockquote><pre>
Fix : Eliminate .forceput from gs_resmp.ps .

DETAILS:

This patch should not change any behavior.

A mapped category used an array to store a set of procedures.
Sometimes the set grows, and the old implementation
used .forceput to replace the array with a bigger one
in the category dictionary, which is read-only.

The new code represents the set as a dictionary,
so that .forceput is not longer needed.
</pre></blockquote>

<p><strong><a name="2003-01-29_0850"></a>
2003-01-29 08:50 Igor Melichev</strong></p>
<blockquote><pre>
pdfwrite : Implementing DW2 and W2.

DETAILS :

This feature is not tested with comparefiles and should
not cause regressions. But the test file 093-01.ps may render
differently due to a bug the test file. See SF bug #674418.
</pre></blockquote>

<p><strong><a name="2003-01-28_1909"></a>
2003-01-28 19:09 Ray Johnston</strong></p>
<blockquote><pre>
Fix regression of 119-01.ps caused by previous patch while retaining the
fix for #667658 when CR and/or LF comes between the '~' and the '&gt;'.

DETAILS:

The logic was also fixed so that if the end of buffer is reached while
searching for the '&gt;' character (past CR and/or LF) no error would be
issued unless we have the 'last' condition indicating that no more data
is available.

Thanks to Igor M. for spotting the above potential problem during code
review.
</pre></blockquote>

<p><strong><a name="2003-01-27_1729"></a>
2003-01-27 17:29 Ralph Giles</strong></p>
<blockquote><pre>
Switching to the new type 1 hinter and the new filling algorithm.
THIS IS INCOMPATIBLE CHANGE.
Most documents render better.

DETAILS:

Rudiments of old code to be kept until beta-testing is completed.
Patch from Igor Melichev.
</pre></blockquote>

<p><strong><a name="2003-01-27_1621"></a>
2003-01-27 16:21 Ralph Giles</strong></p>
<blockquote><pre>
Improve the wording of and clarify the documentation for AlignToPixels.
Also restores the documentation for -dPDFFitPage removed by the initial
commit of the AlignToPixels feature.
</pre></blockquote>

<p><strong><a name="2003-01-26_1145"></a>
2003-01-26 11:45 jeong</strong></p>
<blockquote><pre>
If s_A85D_process encounters CR/LF between '~' and '&gt;', it returns ioerror.
Now it is changed to ignore CR and/or LF before '&gt;', and works fine.
Fixes SF#667658.
</pre></blockquote>

<p><strong><a name="2003-01-26_0858"></a>
2003-01-26 08:58 Igor Melichev</strong></p>
<blockquote><pre>
Fix : Removing an unused variable from set_cache_device.
</pre></blockquote>

<p><strong><a name="2003-01-26_0824"></a>
2003-01-26 08:24 Igor Melichev</strong></p>
<blockquote><pre>
Implementing a new user parameter AlignToPixels and
a new command line argument AlignToPixels.
They allow to choose the alignment of glyphs to
integral pixels or to subpixels while a text rendering.

DETAILS:

This patch should not change any behavior except
-dAlignToPixels=0 is specified.

A change to documentation about the new parameter is included.

With NEW_TYPE1_HINTER = 1 the value 0 of AlignToPixels implies :

1. Caching a glyph raster, fractional glyph origins
give different images, which are stored
in individual slots. The space consumption in the
character cache increases. This happens for all font types.

2. While hinting a Type 1 or 2 font, glyph origins and widths
are rounded to subpixels rather than to pixels, and the grid fitting
is done to the subpixel grid.

CIDFontType 0 descendents had NULL pointer to gs_font_dir.
The new code needs to access the font directory,
so the pointer is now set.

The new code needs glyph origin and log2_scale to lookup
a glyph in cache. Therefore show_proceed and
set_cache_device were reorganized with a new function
compute_glyph_raster_params. The new algorithm uses a
slightly different (and more complicated) logics
for computation and initialization of penum-&gt;origin.
It was well tested, but in case of problems please
consider it as a weak point.
</pre></blockquote>

<p><strong><a name="2003-01-25_2250"></a>
2003-01-25 22:50 Ralph Giles</strong></p>
<blockquote><pre>
Universally prefer the __MACOS__ platform predefined symbol used by recent
releases of Metrowerks CodeWarrior to the older __MACINTOSH__.
</pre></blockquote>

<p><strong><a name="2003-01-25_1632"></a>
2003-01-25 16:32 Igor Melichev</strong></p>
<blockquote><pre>
Fix (dropout prevention) : Insetred a check for VMerror.

DETAILS:

This patch cheanges a disabled code only.
</pre></blockquote>

<p><strong><a name="2003-01-25_0109"></a>
2003-01-25 01:09 Ralph Giles</strong></p>
<blockquote><pre>
Supply local macros to replace non-portable min() and max() functions from MSVC.
</pre></blockquote>

<p><strong><a name="2003-01-24_2230"></a>
2003-01-24 22:30 Dan Coby</strong></p>
<blockquote><pre>
This is a temporary backout of rev 1.12 while its changes are being
investigated.  This is being done to prevenet interference with some
other efforts.
</pre></blockquote>

<p><strong><a name="2003-01-24_2053"></a>
2003-01-24 20:53 Ray Johnston</strong></p>
<blockquote><pre>
Add a new feature to scale PDF images to the current page size (rather
than selecting a PageSize corresponding to the document CropBox or
MediaBox). The command line option is -dPDFFitPage and will also position
the image to the printable area of the page (inside .HWMargins).
</pre></blockquote>

<p><strong><a name="2003-01-24_1939"></a>
2003-01-24 19:39 Ray Johnston</strong></p>
<blockquote><pre>
Fix inconsistent type on QueryUser -- get_param was returning a 'bool' but
set_param required an 'int'. Error was /typecheck in setpagedevice or
could be /rangecheck in .installpagedevice after a page was processed.
</pre></blockquote>

<p><strong><a name="2003-01-24_1932"></a>
2003-01-24 19:32 Ray Johnston</strong></p>
<blockquote><pre>
Correct typo (missing space) in previous change.
</pre></blockquote>

<p><strong><a name="2003-01-24_1928"></a>
2003-01-24 19:28 Ray Johnston</strong></p>
<blockquote><pre>
Change to use ECHOGS_XE instead of system echo to avoid problems if an
echo is found on the PATH that expands wildcards '*' character. Problem
found by Torsten Erler when Cygwin echo caused a problem.
</pre></blockquote>

<p><strong><a name="2003-01-24_1334"></a>
2003-01-24 13:34 Igor Melichev</strong></p>
<blockquote><pre>
New Type 1 hinter : Fixing a bug in alignment to (non-sub)pixels.

DETAILS:

This patch changes a disabled code only.

Also improving the debug drawing of grid.
</pre></blockquote>

<p><strong><a name="2003-01-24_0725"></a>
2003-01-24 07:25 Igor Melichev</strong></p>
<blockquote><pre>
Fix (dropout prevention) : Did not work with -dNOCACHE.

DETAILS:

bbox_width was taken from a clipped bbox.
</pre></blockquote>

<p><strong><a name="2003-01-24_0503"></a>
2003-01-24 05:03 Igor Melichev</strong></p>
<blockquote><pre>
New Type 1 hinter : Fixing glyph widths.

DETAILS:

This patch changes a disabled code only.

See comment in code.

Also improved a comment and C-style.
</pre></blockquote>

<p><strong><a name="2003-01-24_0039"></a>
2003-01-24 00:39 Igor Melichev</strong></p>
<blockquote><pre>
New Type 1 hinter : (1) It did not work with pdfwrite because
gx_path_init_bbox_accumulator doesn't provide a memory.
(2) Coded an alignment to subpixels.
(3) Removed a hack about suppressing a microscopic segment.

DETAILS:

This patch changes a disabled code only.

It codes an alignment to subpixels, but for a while
it is permanently turned off.

gx_path_init_bbox_accumulator is used by gs_default_glyph_info for
computing a bounding box for a glyph. It does not
store segments to memory, therefore a reference to memory manager
is not provided. But the new hinter accesses it
if a stack-allocated array overflows.

Implementing an immediate transfer of outline poles to
the output path without storing them intermediately in arrays.
This mode works when a grid fitting is not required.
Only exception is flex poles : up to 9 of them
are stored in arrays while flex accumulates.
It must not overflow arrays.

The hack about microscopic segment was a rudiment of old code.
gs_op1_closepath was unintentionally called while
exporting an outline from the hinter. I believe that
the hack is incorrect and should not be applied.
Some outlines render differently.

I'm sorry for mixing 3 things in a single patch.
I've started the subpixel alignment, and
then occasionally discovered other problems.
It's hard to separate changes after they are done,
and I don't think that the separation is so important.
</pre></blockquote>

<p><strong><a name="2003-01-23_2011"></a>
2003-01-23 20:11 Igor Melichev</strong></p>
<blockquote><pre>
Fix : A misprint in the recent patch to default_get_outline.
</pre></blockquote>

<p><strong><a name="2003-01-23_0514"></a>
2003-01-23 05:14 Dan Coby</strong></p>
<blockquote><pre>
Fix for [ 662117 ] uniprint produces black pages, with bugfix.
This fixes several problems created in the uniprint device when the
device API was changed for 8.0.  This includes changes from Stefan Scherer,
the originator of the report, plus some changes for monochrome devices.
</pre></blockquote>

<p><strong><a name="2003-01-22_1736"></a>
2003-01-22 17:36 Ray Johnston</strong></p>
<blockquote><pre>
Pulled unneeded #undef jcdp, there was no matching define. Original patch
by Henry Stiles for GhostPCL version.
</pre></blockquote>

<p><strong><a name="2003-01-22_1546"></a>
2003-01-22 15:46 Igor Melichev</strong></p>
<blockquote><pre>
FAPI project : fixing a problem about preparation renderer's
font data for non-disk CIDFontType 0 fonts.

DETAILS:

Without FAPI renderers this patch doesn't change any behavior.

The old code crashed with Free Type because it misinterpreted
gs_font_cid0_data as gs_type1_data. Improving the protocol for
font data preparation : the new code now tells to a renderer about
a top-level CID font, then about it's descendents (which are Type 1),
then again about the top level font. A new type FAPI_descendent_code
represents a type of request. See comments, which this patch adds to code.
</pre></blockquote>

<p><strong><a name="2003-01-22_0854"></a>
2003-01-22 08:54 Russell Lang</strong></p>
<blockquote><pre>
Improve gsapi examples for Windows to not require _Windows on MSVC.
</pre></blockquote>

<p><strong><a name="2003-01-22_0751"></a>
2003-01-22 07:51 Russell Lang</strong></p>
<blockquote><pre>
Update DSC parser to current Ghostgum Software version.
Fixes SourceForge bug #657289, SEGV on Alpha in DSC parser.

DETAILS:
A %%Page line with mismatched parentheses around the page label
was ignored, but parser state was updated to scanning pages, not
setup section.  This resulted in access to dsc-&gt;page[-1] which
is invalid and caused a SEGV on Alpha.  The updated code now
checks that dsc-&gt;page_count is non-zero before accessing
dsc- &gt;page[dsc-&gt;page_count-1].  It also makes a second attempt
at finding the page ordinal at the end of a line like:
%%Page: (label with closing parentheses 1
Other parser updates include support for DCS2 files (which is
not quite compliant with DSC), removing a few compiler warnings,
%%HiResBoundingBox, %%CropBox, %%PageCropBox, and being more
resilient to incorrect DSC.
</pre></blockquote>

<p><strong><a name="2003-01-22_0738"></a>
2003-01-22 07:38 Russell Lang</strong></p>
<blockquote><pre>
Treat files starting with %Pxxx as PostScript, not PDF.  Process
empty files without error.  Fixes SourceForge bug #663150, Some
PS files half-recognized as PDF files

DETAILS:
Changes for the 8.00 release to allow reading of PDF files from
stdin caused files starting with %Pxxx to be half recognised as
PDF files.  This patch simplifies the PDF recognition code and
makes it treat only files starting with "%PDF-" as PDF.  Testing
of this code found that zero length input files caused a
PostScript error.  This was an existing error which is fixed by
the gs_epsf.ps patch and last line of the pdf_main.ps patch.
</pre></blockquote>

<p><strong><a name="2003-01-22_0734"></a>
2003-01-22 07:34 Russell Lang</strong></p>
<blockquote><pre>
Add the ijs device to the MSVC Windows build.
</pre></blockquote>

<p><strong><a name="2003-01-22_0042"></a>
2003-01-22 00:42 Igor Melichev</strong></p>
<blockquote><pre>
pdfwrite : Implementing widthshow and xshow for composite and CID fonts.
The old (default) implementation converted to raster fonts
and gave inaccurate glyph positions. The new implementation doesn't
convert fonts to raster except for Type 3.

DETAILS:

This also closes the Source Forge bug
"[ 663635 ] ps2pdf cannot tune spacing by xshow for CJK text".
and provides better glyph positions with ashow for WMode 1.

There are small changes to graphics library :

1. Added interface function gx_current_char, which retrieves
   a code of current character from a gs_text_enum_t instance.
   The function was factored out from an old code.

2. Provided a default metrics for CID fonts for WMode 1.
   This is done pretty roughly, because the interface
   function glyph_info cannot pass some necessary information (WMode).

Minor changes :

1. Removed the comment "We know that the Tw and Tc values are zero",
   It was wrong a long time ago.

2. Inserted a comment about unimplemented DW2. An old code near the
   comment depends on the fact that DW2 is not implemented.

This patch brings more access to gs_text_enum_t::fstack
around the defined interface functions.
The list of gs_text_enum_t interface functions to be revised.

Expecting progressions with pdfwrite :

327-01.ps
Altona.Page_3.2002-09-27.pdf
CIDembedded.pdf
Openhuis_pdf_zw.pdf
RodinCIDEmbed.pdf
</pre></blockquote>

<p><strong><a name="2003-01-21_2357"></a>
2003-01-21 23:57 Igor Melichev</strong></p>
<blockquote><pre>
Fixing gcc compiter warnings in gxfill.c, gxdtfill.h .
</pre></blockquote>

<p><strong><a name="2003-01-20_2241"></a>
2003-01-20 22:41 Dan Coby</strong></p>
<blockquote><pre>
Fix for [ 664473 ] 64bit color indexes break X driver.
This fix corrects some problems found with the X window
driver and 64 bit gx_color_indexes found by customer 1110.

DETAILS:

The problems were found on Sparc workstations running the
Solaris 8.0.  The problem has not been reported on other
systems.  However the fix is simple (and contributed by
customer 1110) and should work on all systems.  The fix
is simply to use "long" for values passed to X windows
system routines.  This is done via a combination of casts
or local variables depending upon the situation.  The use
of "long" for gx_color_index was the default prior to the
8.0 release.  The X windows device does not need the extra
size for color values.
</pre></blockquote>

<p><strong><a name="2003-01-19_2304"></a>
2003-01-19 23:04 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Improving a comment about ashow, awidthshow.

DETAILS:

This patch does not change any behavior.
</pre></blockquote>

<p><strong><a name="2003-01-19_1959"></a>
2003-01-19 19:59 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : With CID fonts 'show' set up cache devive and
inconsistently skipped any rendering to it. It must not set up cache device.
Thanks to Toshia Suzuki for spotting the problem.

DETAILS:

This problem was not tested with comparefiles.
Requesting to add a new test showopsH.ps from Toshia Suzuki.
</pre></blockquote>

<p><strong><a name="2003-01-19_1817"></a>
2003-01-19 18:17 Igor Melichev</strong></p>
<blockquote><pre>
Fix (Dropout prevention) : Returning the gx_adjust_if_empty hack
for cases when dropout prevention is not applied. It was removed erroneously.

DETAILS:

This patch changes a disabled code only.

Debugged with -r72 with smdf.90441.102.pdf, test2.pdf .
</pre></blockquote>

<p><strong><a name="2003-01-19_1017"></a>
2003-01-19 10:17 Russell Lang</strong></p>
<blockquote><pre>
Within the display device, correctly allocate the memory device
with the correct structure descriptor.

DETAILS:
The display device was allocating a memory device by taking a
memory device prototype from gdev_mem_device_for_bits and then
using gs_copydevice on it.  This allocates the wrong size
because the prototype does not have a structure descriptor.  The
correct way is to allocate it with gs_alloc_struct with
st_device_memory as an argument.  This bug was found when using
the display device in GhostPCL, which was complaining on
shutdown about the unfreed structure descriptors left behind by
gs_copydevice.
</pre></blockquote>

<p><strong><a name="2003-01-18_0952"></a>
2003-01-18 09:52 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : When pdfwrite text buffer overflows, it wrote an
extra text positioning command with wrong arguments.

DETAILS:

See comment in code.

Source Forge bug "[ 667271 ] text position scrambled".

This patch causes 2 progressions with pdfwrite :
comparefiles\Altona.Page_3.2002-09-27.pdf
comparefiles\Testform.v1.0.2.pdf
</pre></blockquote>

<p><strong><a name="2003-01-17_1732"></a>
2003-01-17 17:32 Igor Melichev</strong></p>
<blockquote><pre>
Fix (Type 42 interpreter) : Providing a tolerance to bytecode segmentation with sfnts string.

DETAILS:

Source Forge bug "[ 667362 ] /rangecheck in --.type42execchar--", Customer #411.

According to Type 42 specifications, the segmentation is not allowed.
Perhaps the test file has it. IMO it is easier to fix than to prove to the customer.

This slightly changes the interface function gs_type42_data::string_proc .
See comments in code.

By the way, added a check for absenting vmtx/hmtx (gstype42.c ln 530).
The old code was not safe.
</pre></blockquote>

<p><strong><a name="2003-01-16_2136"></a>
2003-01-16 21:36 Igor Melichev</strong></p>
<blockquote><pre>
Fix (Free Type bridge) : A new revision with MetricsCount handling.

DETAILS:

This patch has no effect for regular GS build (with no Free Type).
</pre></blockquote>

<p><strong><a name="2003-01-16_1849"></a>
2003-01-16 18:49 Ray Johnston</strong></p>
<blockquote><pre>
Add a message for filters (such as JBIG2Decode) that we can't handle and
continue processing the file as much as we can without the problem data.
This is related to SourceForge bug #668580.

DETAILS:

The Repaired flag is preserved across the 'pdfformaterror' calls so that
we don't squawk about the Creator of the PDF (its our fault, not theirs).

Also a special utility filter was created to /.EOFDecode that gives an
immediate EOF without consuming any data from its input.
</pre></blockquote>

<p><strong><a name="2003-01-16_1829"></a>
2003-01-16 18:29 Ray Johnston</strong></p>
<blockquote><pre>
Restructure the PDF top level processing (runpdf) to factor out a 'begin',
'do', and 'end' procedures. These can be used by clients to open a PDF
then access information from the PDF interpreter dictionaries about the
document or pages prior to actually processing pages with 'dopdfpages'.

DETAILS:

This will allow information to be accessed such as Dests, Names and Annots.
For example, to get the Names info, use:

  (somefile.pdf) (r) file runpdfbegin
  Trailer /Root oget /Names knownoget

Similarly, Annotations for a page (page 3 in the example below) can be
accessed using:

  (somefile.pdf) (r) file runpdfbegin
  3 pdffindpage /Resources oget /Annots knownoget {
    % process Annots
  } if
</pre></blockquote>

<p><strong><a name="2003-01-16_1625"></a>
2003-01-16 16:25 Igor Melichev</strong></p>
<blockquote><pre>
Fix (New Type 1 hinter) : A bug computing a stem width.

DETAILS:

This patch changes a disabled code only.

Also fixing a bug in debug drawing the imported outline,
and disabling it by default.
Debugged with comparefiles/455690.pdf .
</pre></blockquote>

<p><strong><a name="2003-01-16_1520"></a>
2003-01-16 15:20 Igor Melichev</strong></p>
<blockquote><pre>
Fix (Dropout prevention) : Sometimes active lines were not ordered,
causing a dropout.

DETAILS:

This patch changes a disabled code only.

The filling algorithm consider 2 cases :
when an Y-gap contains pixel centers and when it doesn't.
The old algorithm used a trick for better performance,
which skips the line ordering for the case of no pixel centers.
Perhaps the order is important for dropout prevention.
Disabling the trick when dropout prevention is on.

Here are some files which are sensitive to it with 72 dpi
and with the new hinter :

000040cf.000_60.pdf
017-01.ps
159.pdf
268-10.ps
281-01.ps
86554321.pdf
acrobat.pdf
(39 files total).
</pre></blockquote>

<p><strong><a name="2003-01-16_1259"></a>
2003-01-16 12:59 Igor Melichev</strong></p>
<blockquote><pre>
Fix (New type 1 hinter) : Removing hint complexes and fixing bugs.

DETAILS:

This patch changes a disabled code only.
1. An optimization : hint complexes are replaced with hint_range.
   The old code was overcomplicated.
2. A bug in t1_hinter__compute_type1_stem_ranges -
   an extra pole was added at range end.
3. A bug in t1_hinter__align_stem_poles -
   Some offcurve poles were erroneously grid fitted with a wrong hint.

This change causes multiple differences in hinted outlines,
almost all files render few differently.
</pre></blockquote>

<p><strong><a name="2003-01-16_1037"></a>
2003-01-16 10:37 Igor Melichev</strong></p>
<blockquote><pre>
Fix (New type 1 hinter) : A bug in t1_hinter__interpolate_other_poles.

DETAILS:

This patch changes a disabled code only.

The old implementation missed some outline extremes,
and the interpolation was wrong. This change causes multiple
differences in hinted outlines, almost all files render differently.
</pre></blockquote>

<p><strong><a name="2003-01-15_1820"></a>
2003-01-15 18:20 Raph Levien</strong></p>
<blockquote><pre>
Fix: Correctly initialize private cmyk_cs as returned from
gx_concrete_space_CIE(). Fixes SF bug #667322.
</pre></blockquote>

<p><strong><a name="2003-01-15_1632"></a>
2003-01-15 16:32 Igor Melichev</strong></p>
<blockquote><pre>
Fix (New type 1 hinter) : A bug calling the hinter.

DETAILS:

This patch changes a disabled code only.
</pre></blockquote>

<p><strong><a name="2003-01-15_0812"></a>
2003-01-15 08:12 Dan Coby</strong></p>
<blockquote><pre>
Modifies pick_cell_size to make a more accurate, and less round-off
error dependent, selection of screen cell size.

DETAILS

The prior code in pick_cell_size used an unusual metric for
measuring the "closeness of fit" of an actual screen cell to the
requested frequency and angle. If the angle variation was 0 (quite
likely for the common 0/45/90 degree angles), the frequency
variation was ignored. In addition, this metric was very sensitive
to floating-point arithmetic round-off errors. The new metric is
both more reasonable and less round-off error dependent.
</pre></blockquote>

<p><strong><a name="2003-01-14_1909"></a>
2003-01-14 19:09 Jack Moffitt</strong></p>
<blockquote><pre>
Add src/gxdtfill.h to whitelist for double inclusion protection test.
</pre></blockquote>

<p><strong><a name="2003-01-14_1906"></a>
2003-01-14 19:06 Jack Moffitt</strong></p>
<blockquote><pre>
Fix timezone information for CVS timestamps.
</pre></blockquote>

<p><strong><a name="2003-01-14_1210"></a>
2003-01-14 12:10 Igor Melichev</strong></p>
<blockquote><pre>
Fix (New type 1 hinter) : Removing unused variables.

DETAILS:

This patch changes a disabled code only.
</pre></blockquote>

<p><strong><a name="2003-01-14_1151"></a>
2003-01-14 11:51 Igor Melichev</strong></p>
<blockquote><pre>
New type 1 hinter : Round glyph origin to integral pixels.

DETAILS:

This patch changes a disabled code only.

See comment in code.
</pre></blockquote>

<p><strong><a name="2003-01-14_0800"></a>
2003-01-14 08:00 Igor Melichev</strong></p>
<blockquote><pre>
New type 1 hinter : Implementing the type 1 flex feature.

DETAILS:

This patch changes a disabled code only.

Debugged with comparefiles/chess.ps with -r72  and -r30 (sic!).
</pre></blockquote>

<p><strong><a name="2003-01-14_0001"></a>
2003-01-14 00:01 Jack Moffitt</strong></p>
<blockquote><pre>
Added documentation about new configuration mechanisms in the testing
framework.
</pre></blockquote>

<p><strong><a name="2003-01-13_2343"></a>
2003-01-13 23:43 Jack Moffitt</strong></p>
<blockquote><pre>
Convert configuration options to use a configuration file, and move
config options from run_nightly into the normal config framework.

Also, add regression checkpoint time to the daily report.  Fixes
SF #657178.
</pre></blockquote>

<p><strong><a name="2003-01-13_1103"></a>
2003-01-13 11:03 Igor Melichev</strong></p>
<blockquote><pre>
Fix (New type 1 hinter) : A bug in complex_link.

DETAILS:

This patch changes a disabled code only.
</pre></blockquote>

<p><strong><a name="2003-01-12_1958"></a>
2003-01-12 19:58 Igor Melichev</strong></p>
<blockquote><pre>
New type 1 hinter : Implementing alpha bits, and fixing bugs.

DETAILS:

This patch changes a disabled code only.

Changes :

1. A bug in t1_hinter__drop_hints;
2. A bug in t1_hinter__can_add_pole;
3. Rename initialization routines;
4. Align to pixels rather than to subpixels;
5. Dynamic allocation of stem_snap.
</pre></blockquote>

<p><strong><a name="2003-01-12_1955"></a>
2003-01-12 19:55 Igor Melichev</strong></p>
<blockquote><pre>
Fix (dropout prevention) : wrong number of alphs bits was
passed to dev_proc(dev, copy_alpha).

DETAILS:

This patch changes a disabled code only.

See also "Correctly compute depth for cached character images",
Fri, 3 Jan 2003 08:39:33 -0800,
http://www.ghostscript.com/pipermail/gs-cvs/2003-January/002751.html
</pre></blockquote>

<p><strong><a name="2003-01-12_1203"></a>
2003-01-12 12:03 Igor Melichev</strong></p>
<blockquote><pre>
Fix (New type 1 hinter) : A bug in t1_hinter__hint_mask .

DETAILS:

This patch changes a disabled code only.
</pre></blockquote>

<p><strong><a name="2003-01-11_1921"></a>
2003-01-11 19:21 Igor Melichev</strong></p>
<blockquote><pre>
New type 1 hinter : Fixing gcc compiler errors.

DETAILS:

This patch changes a disabled code only.
</pre></blockquote>

<p><strong><a name="2003-01-11_1847"></a>
2003-01-11 18:47 Igor Melichev</strong></p>
<blockquote><pre>
zchar1.c revision 1.23 appears wrong (an inaccurate type cast, compiler warnings).
Unwinding the patch.
</pre></blockquote>

<p><strong><a name="2003-01-11_1826"></a>
2003-01-11 18:26 Igor Melichev</strong></p>
<blockquote><pre>
New type 1 hinter : Fixing types for import function prototypes.

DETAILS:

This patch doesn't change any behavior.

In import functions prototypes 't1_glyph_space_coord'
was erroneously used instead 'fixed'.
</pre></blockquote>

<p><strong><a name="2003-01-11_1820"></a>
2003-01-11 18:20 Igor Melichev</strong></p>
<blockquote><pre>
New type 1 hinter : Enable the grid fitting separately for X and Y.

DETAILS:

With NEW_TYPE1_HINTER = 0 the new code must be equivalent to old one.

We disable grid fitting if an axis is too sloped
(if tan(angle) &gt; 1/10 ).
</pre></blockquote>

<p><strong><a name="2003-01-11_1746"></a>
2003-01-11 17:46 Igor Melichev</strong></p>
<blockquote><pre>
Removing redundant code from zchar1.c .

DETAILS:

This is completion for the patch
"Reducing the C stack consumption in ztype1execchar".

The new code must be equivalent to the old one.
</pre></blockquote>

<p><strong><a name="2003-01-11_1555"></a>
2003-01-11 15:55 Igor Melichev</strong></p>
<blockquote><pre>
New type 1 hinter : Attaching it to type 2 interpreter.
With NEW_TYPE1_HINTER = 0 the new code must be equivalent to old one.

DETAILS:

1. Attaching the new hinter to gstype2.c .
2. Reorganizing the nationalization of the new hinter for better performance.
3. Adding vdtrace instructions for drawing the hinter import on-fly.
4. Implementing alignment priorities. It improves quality for comparefiles/dave.pdf,
   and makes the alignment logics some simpler.
3. Fixing a bug about the trailing moveto. Fonts with no Metrics
   got a wrong advance width.
</pre></blockquote>

<p><strong><a name="2003-01-11_1420"></a>
2003-01-11 14:20 Igor Melichev</strong></p>
<blockquote><pre>
Fix: A bag in the visual trace implementation.
</pre></blockquote>

<p><strong><a name="2003-01-11_0439"></a>
2003-01-11 04:39 Ralph Giles</strong></p>
<blockquote><pre>
Revert changes accidentally included in the last commit.
</pre></blockquote>

<p><strong><a name="2003-01-11_0438"></a>
2003-01-11 04:38 Ralph Giles</strong></p>
<blockquote><pre>
Revert to the default gcc (3.1) on MacOS X. We had switched to 2.95 to
work around a bug in Apple's first shipped gcc3. The issue has been resolved
in the December 2002 Apple Developer Tools release.
</pre></blockquote>

<p><strong><a name="2003-01-11_0427"></a>
2003-01-11 04:27 Ralph Giles</strong></p>
<blockquote><pre>
Revert to the default gcc (3.1) on MacOS X. We had switched to 2.95 to
work around a bug in Apple's first shipped gcc3. The issue has been resolved
in the December 2002 Apple Developer Tools release.
</pre></blockquote>

<p><strong><a name="2003-01-10_0817"></a>
2003-01-10 08:17 Igor Melichev</strong></p>
<blockquote><pre>
Reducing the C stack consumption in ztype1execchar.
The new code must be equivalent to the old one.

DETAILS:

The new type 1 hinter (with NEW_TYPE1_HINTER = 1 in gx.h)
puts more 11K of data to C stack. Perhaps due to a recursion
in bbox_draw 2 instances of the hinter were placed in C stack
simultaneously, causing C stack overflow with gswin32c.exe on
Windows NT 4.0 (but not on Windows 2000).

Perhaps the recursion is not necessary.
Reorganizing the sequence of calls to avoid the recursion.
New argument 'exec_cont' was added to several
functions for transferring the call request to clients.
Corresponding comments are added in code.

Also z1_glyph_info prototype was added in ichar1.h .
It was missed a long time ago, Cygwin/gcc warned.

A further improvement may be done with factoring out
a common code from bbox_finish_fill, bbox_finish_stroke,
bbox_fill, bbox_stroke. Delaying it until a regression testing.
</pre></blockquote>

<p><strong><a name="2003-01-10_0056"></a>
2003-01-10 00:56 Jack Moffitt</strong></p>
<blockquote><pre>
Allow tests to run without modifying the daily tracking database.
run_regression now takes the --track option to create and update daily
tracking databases, and runs normally otherwise.
</pre></blockquote>

<p><strong><a name="2003-01-09_2358"></a>
2003-01-09 23:58 Jack Moffitt</strong></p>
<blockquote><pre>
Small formatting improvement.
</pre></blockquote>

<p><strong><a name="2003-01-09_2249"></a>
2003-01-09 22:49 Jack Moffitt</strong></p>
<blockquote><pre>
Factor out gscheck_raster.py from run_regression.
</pre></blockquote>

<p><strong><a name="2003-01-09_2239"></a>
2003-01-09 22:39 Jack Moffitt</strong></p>
<blockquote><pre>
Fixes another Python 2.2 compatibility error.
</pre></blockquote>

<p><strong><a name="2003-01-09_2135"></a>
2003-01-09 21:35 Jack Moffitt</strong></p>
<blockquote><pre>
Fixes check for exception instances by using isinstance() instead of
issubclass().  This is required for Python 2.2 compatibility.
</pre></blockquote>

<p><strong><a name="2003-01-09_2133"></a>
2003-01-09 21:33 Jack Moffitt</strong></p>
<blockquote><pre>
Increase maximum memory restrictions on Ghostscript for regression tests.
</pre></blockquote>

<p><strong><a name="2003-01-09_2112"></a>
2003-01-09 21:12 Ralph Giles</strong></p>
<blockquote><pre>
Include libz in the autoconf test for libpng.

DETAILS:

This is a fix for systems without interlibrary dependencies. We don't use
the LIBS variable constructed by default by the AC_CHECK_LIB macro and
did not maintain it in our previous zlib test, thus -lz was not included
on the link line in the libpng test.

Our primary test systems for the autoconf build (Debian GNU/Linux and MacOS X + fink)
include an interlibrary dependency, so this did not cause a problem. On
systems where this is not the case, it results in a confusing error.

Patch from Peter Breitenlohner.
</pre></blockquote>

<p><strong><a name="2003-01-09_0433"></a>
2003-01-09 04:33 Ralph Giles</strong></p>
<blockquote><pre>
Correct warnings in the display device. Removes two unused declarations
and marks a local function private. After a patch by Peter Breitenlohner.
</pre></blockquote>

<p><strong><a name="2003-01-09_0431"></a>
2003-01-09 04:31 Ralph Giles</strong></p>
<blockquote><pre>
Add a missing header file.

DETAILS:

This corrects a missing prototype warning for gs_get_colorname_string,
declared in zht2.h. iname.h was also added to the dependencies for zht2.c.
After a patch by Peter Breitenlohner.
</pre></blockquote>

<p><strong><a name="2003-01-08_2139"></a>
2003-01-08 21:39 Ralph Giles</strong></p>
<blockquote><pre>
Correct a nesting error in the libpng detection code.

DETAILS:

This does not change actually behavior, because of the way M4 works,
the literal loop end was just interchanged with the implicit one from
the AC_CHECK_LIB() macro with no code inbetween, which is why the mistake
went undetected.

Thanks to Peter Breitenlohner for catching this.
</pre></blockquote>

<p><strong><a name="2003-01-08_1657"></a>
2003-01-08 16:57 Igor Melichev</strong></p>
<blockquote><pre>
New type 1 hinter : Implementing dynamic array allocation;
Skipping degenerate path segments; Renaming configuration flags.
This patch changes a disabled code only.
</pre></blockquote>

<p><strong><a name="2003-01-08_1644"></a>
2003-01-08 16:44 Igor Melichev</strong></p>
<blockquote><pre>
Dropout prevention : Self-intersections must not contribute peaks.
Also removed the LOOP_FILL_TRAPEZOID_FIXED macro.
This patch must not change any behavior.
</pre></blockquote>

<p><strong><a name="2003-01-08_0539"></a>
2003-01-08 05:39 Dan Coby</strong></p>
<blockquote><pre>
1.  Added documentation for the PSD, XCF, and spotcmyk devices.
2.  Corrected various minor spelling problems.
</pre></blockquote>

<p><strong><a name="2003-01-08_0251"></a>
2003-01-08 02:51 Ralph Giles</strong></p>
<blockquote><pre>
Add source files for the new type 1 hinter to the index in the developer documentation.
</pre></blockquote>

<p><strong><a name="2003-01-07_1754"></a>
2003-01-07 17:54 Igor Melichev</strong></p>
<blockquote><pre>
Dropout prevention : (1) Replace the horizontal line processing.
(2) Returning the hack about horizontal lines for non-character fills.
This patch changes a disabled code only.

DETAILS:

With the old type 1 hinter, hinted outlines get
self-intersections at small resolution. It's a problem
of the old hinter. Perhaps it discovered a defect
in horizontal line handling.

With self-intersections, the side of spot interior
may be different for different parts of same line.
This patch completely replaces the handling of
horizontal lines. It maintains 2 lists of
horizontal lines, which correspond to y and y1
in fill_loop_by_trapezoids. Then we intersect those
lines with margins and add corresponding segments
of boundaries separately for each part delimited
with an intersection.

The
     "* This is a hack to make sure that isolated horizontal
      * lines get stroked."
was erroneously disabled for non-character fills,
causing a regression with QA_Inv.pdf .
Restoring it now, except for characters.

This patch removes the contour area computation,
which was introduced in revision 1.19 .
</pre></blockquote>

<p><strong><a name="2003-01-07_1632"></a>
2003-01-07 16:32 Igor Melichev</strong></p>
<blockquote><pre>
fuzzy.c : Add writing the fuzzy difference to PPM or BMP file.

DETAILS:

Additional (optional) argument added to specify the result file path.
We did not take care about compression.

BMP files usually store image upside down.
Rather negative BITMAPINFOHEADER::biHeight specify "upside up"
representation, Windows Paint cannot handle it.
Therefore we write BMP file in reverse order.
</pre></blockquote>

<p><strong><a name="2003-01-06_2337"></a>
2003-01-06 23:37 Ralph Giles</strong></p>
<blockquote><pre>
Add standard license banners to some macos-specific header files.
</pre></blockquote>

<p><strong><a name="2003-01-06_2331"></a>
2003-01-06 23:31 Ralph Giles</strong></p>
<blockquote><pre>
Add standard copyright banner and RCS id line.

DETAILS:

This change is made with the contributor's permission. His verification is recorded here:

    http://www.ghostscript.com/pipermail/gs-devel/2003-January/002326.html

Thanks to Brett Smith at the FSF for pointing out the non-standard header.
</pre></blockquote>

<p><strong><a name="2003-01-06_1957"></a>
2003-01-06 19:57 Igor Melichev</strong></p>
<blockquote><pre>
Dropout prevention : A better marking of margin interior.
This patch changes a disabled code only.
</pre></blockquote>

<p><strong><a name="2003-01-06_1743"></a>
2003-01-06 17:43 Igor Melichev</strong></p>
<blockquote><pre>
Initial commit for a new type 1 hinter.
This patch must not change any behavior.

DETAILS:

This is a porting from HINTER branch.

The old hinter cannot handle overlapping hints,
but real fonts do use them.

The handling of overlapped hints cannot be done within
a single-pass algorithm. Therefore we intend to replace entire thing.
Besides, it should fix a set of known problems :

- stem degradation at small resolutions;
- stem missing or misrecognition;
- proper adjustment of dependent stems;
- suppress overshoots closer to Adobe;

This patch introduces a couple of new macros,
which will be removed later.

For switching to the new hinter, change the definition of
NEW_TYPE1_HINTER in gx.h . It is not well debugged yet.

New files added : gxhintn.c, gxhintn.h .
</pre></blockquote>

<p><strong><a name="2003-01-06_1700"></a>
2003-01-06 17:00 Igor Melichev</strong></p>
<blockquote><pre>
Dropout prevention : Removing unused variables.
This patch changes a disabled code only.
</pre></blockquote>

<p><strong><a name="2003-01-05_2113"></a>
2003-01-05 21:13 Igor Melichev</strong></p>
<blockquote><pre>
Dropout prevention : A bug in continue_margin_common.
This patch changes a disabled code only.
</pre></blockquote>

<p><strong><a name="2003-01-05_2048"></a>
2003-01-05 20:48 Igor Melichev</strong></p>
<blockquote><pre>
Dropout prevention : Better compute the spot contiguity,
and improve the peak cut-off.
This patch changes a disabled code only.
</pre></blockquote>

<p><strong><a name="2003-01-05_1729"></a>
2003-01-05 17:29 Igor Melichev</strong></p>
<blockquote><pre>
Dropout prevention : Computing a contour area with fixed point arithmetics.
This patch changes a disabled code only.

DETAILS:

For debugging enable both CONTOUR_AREA_WITH_FIXED_POINT and
CONTOUR_AREA_WITH_FLOATING_POINT.
</pre></blockquote>

<p><strong><a name="2003-01-04_1637"></a>
2003-01-04 16:37 Igor Melichev</strong></p>
<blockquote><pre>
Dropout prevention : Improving the predicate about adding horizontal lines to Y list.
This patch changes a disabled code only.

DETAILS:

The predicate was inaccurately duplicated.
</pre></blockquote>

<p><strong><a name="2003-01-04_1504"></a>
2003-01-04 15:04 Igor Melichev</strong></p>
<blockquote><pre>
Dropout prevention : (1) Fixing a problem with improper contour direction
in some (wrong) fonts. (2) Improving the CHECK_SPOT_CONTIGUITY feature.
This patch changes a disabled code only.

DETAILS:

See comment in code about (1).
</pre></blockquote>

<p><strong><a name="2003-01-03_1734"></a>
2003-01-03 17:34 Igor Melichev</strong></p>
<blockquote><pre>
Dropout prevention : Adding a serif adjustment.
This patch changes disabled code only.

DETAILS:

See big comment in code.
</pre></blockquote>

<p><strong><a name="2003-01-03_1729"></a>
2003-01-03 17:29 Igor Melichev</strong></p>
<blockquote><pre>
Dropout prevention : Correctly compute depth for cached character images.
</pre></blockquote>

<p><strong><a name="2003-01-02_1811"></a>
2003-01-02 18:11 Igor Melichev</strong></p>
<blockquote><pre>
Fix (gswin32) : Improving the image window title for debug technology.
</pre></blockquote>

<p><strong><a name="2003-01-01_0655"></a>
2003-01-01 06:55 Ray Johnston</strong></p>
<blockquote><pre>
Revert previous commit. This version is now back to the same as 1.22.
</pre></blockquote>

<p><strong><a name="2002-12-31_2308"></a>
2002-12-31 23:08 Ray Johnston</strong></p>
<blockquote><pre>
Handle copying arrays (and their composite elements that are in VM) to
global VM when processing the ***params functions such as currentuserparams
Fixes SourceForge #647685 that impacted .setsafe usage.
</pre></blockquote>

<p><strong><a name="2002-12-31_1952"></a>
2002-12-31 19:52 Ralph Giles</strong></p>
<blockquote><pre>
Add new dropout prevention source files to the documentation.
</pre></blockquote>

<p><strong><a name="2002-12-30_2231"></a>
2002-12-30 22:31 Igor Melichev</strong></p>
<blockquote><pre>
Fix (dropout prevention) : A bug in store_margin.
This patch changes disabled code only.
</pre></blockquote>

<p><strong><a name="2002-12-30_1921"></a>
2002-12-30 19:21 Igor Melichev</strong></p>
<blockquote><pre>
Fix (dropout prevention) : Direction of horizontal lines was computed wrongly.

DETAILS:

This patch changes disabled code only.
Debugged with character 's' in the 1st page of 033-52-5873.pdf .
</pre></blockquote>

<p><strong><a name="2002-12-30_1824"></a>
2002-12-30 18:24 Igor Melichev</strong></p>
<blockquote><pre>
Fix (FAPI) : Don't try to get a glyph name for CID fonts.
Thanks for Graham Asher for spotting it.
DETAILS:

It was an inaccurate coding. I'm sorry.
</pre></blockquote>

<p><strong><a name="2002-12-30_0551"></a>
2002-12-30 05:51 Ray Johnston</strong></p>
<blockquote><pre>
Reduce state.width delta radius calculation for shadings that was made too
large by the previous commit.

DETAILS:
Previous commit mistakenly included the state.dr value as both the X and
Y component in the distance transform that produced the dev_dr vector.
The hypot is actually all that is required to handle getting the correct
scaled radius distance independent of the CTM rotation.

The use of state.dr for both X and Y preceded the use of hypot on dev_dr
and wasn't taken out when the hypot function use was added.

This should eliminate most, if not all regressions caused by the 12/24
1.18 patch to this module.
</pre></blockquote>

<p><strong><a name="2002-12-29_1942"></a>
2002-12-29 19:42 Igor Melichev</strong></p>
<blockquote><pre>
Fix (Type 1 interpreter) : setcurrentpoint missed the vstem3 shift.

DETAILS:

Detected with character 'm' in -r150 comparefiles/NIL_0003.pdf .

The missed vs_offset erroneously shifted a part of path coordinates
relatively to stem hint coordinates so that stems could not recognize.
The character rendered unhinted.

This patch causes differences in character rendering.
Regression test on Windows detects a difference with
-r300 comparefiles/NIL_0003.pdf only, which looks unimportant.
</pre></blockquote>

<p><strong><a name="2002-12-28_1235"></a>
2002-12-28 12:35 Igor Melichev</strong></p>
<blockquote><pre>
Improving the dropout prevention algorithm
This patch changes disabled code only.

DETAILS:

In zchar42.c I set path adjustment to zero.
It is the correct value with dropout prevention.

The last revision of dropout prevention algorithm
appears buggy : the order of margins in margin_list
can be wrong and causes dropouts. This is essentially
important with CJK True Types, which have thing horizontal
stems and no hinting with GS.

This revision replaces the representation of margins
with a simpler one. It is not optimized for bold
characters, perhaps the optimization is not hard.
See comment in code about "bold".

A good advantage is the removal of insert_pseudo_margin.
It appears done due to insufficient knowledge of the old algorithm.
</pre></blockquote>

<p><strong><a name="2002-12-26_1126"></a>
2002-12-26 11:26 Igor Melichev</strong></p>
<blockquote><pre>
Fix : fuzzy.c wrongly compared images.

DETAILS:

It didn't compare w/2 rows near the upper edge of the image.
MSVC release build compared an uninitialized data instead them.
</pre></blockquote>

<p><strong><a name="2002-12-24_1900"></a>
2002-12-24 19:00 Ray Johnston</strong></p>
<blockquote><pre>
Radial shading did not work if the CTM was rotated (mat.xx == mat.yy ==0).

DETAILS:

The state.width calculation would end up 0 if the circles were concentric
and the CTM was rotated. Revised calculation should work even for other
non-orthogonal CTMs. File added to the regression suite.
Fixes SF bug #658286 for Artifex customer #190.
</pre></blockquote>

<p><strong><a name="2002-12-24_1420"></a>
2002-12-24 14:20 Igor Melichev</strong></p>
<blockquote><pre>
Improving and optimizing the dropout prevention algorithm
with splitting gx_default_fill_parallelogram into 2 variants.

DETAILS:

This patch almost changes a disabled code.
A simple reorganization of some enabled code should not
cause a behavior difference.

Filling a "small" character, we always subdivide trapezoids into
rectangles instead passing them to device virtual function.
It allows :

1. Not passing narrow trapezoids to applications
which implement fill_trapezoid with own means;
Narrow trapezoids could cause dropouts in there.

2. Optimize variants of fill_trapezoid algorithm which
are used for different purposes (preventing about 10% slowdown
with shadings).

We believe this change isn't harmful because
regularly we render small characters to cache device,
which simply forwards trapezoids to default implementation.
Alternatively we could insert a check for narrow trapezoids
into loop_fill_trap, but such check appears complex and
it would sensibly reduce performance.

New files added : gdevddrw.h, gxdtfill.h .
Change to lib.mak accounts them.

Besides that, with dropout prevention we now skip empty paths
in characters, because Adobe doesn't paint them.
</pre></blockquote>

<p><strong><a name="2002-12-23_1817"></a>
2002-12-23 18:17 Igor Melichev</strong></p>
<blockquote><pre>
Fix : Fixing a typo in comment.
</pre></blockquote>

<p><strong><a name="2002-12-23_1227"></a>
2002-12-23 12:27 Igor Melichev</strong></p>
<blockquote><pre>
Initial commit for the dropout prevention code in rasterizer.
It doesn't not change any behavior.

DETAILS:

Switching to new code is being controlled with DROPOUT_PREVENTION
macro defined in gx.h . Now it is set to "use old code".

This patch :
1. Ports the "margin" algorithm from HINTER branch.
   Now the algorithm renamed to "pseudo-rasterization".

2. Ports the dropout prevention to gx_default_fill_trapezoid from HINTER branch,
   providing a contiguous fill for slightly slanted trapezoids.

3. Adds CONNECT_RECTANGLES into gx_default_fill_trapezoid
   providing a contiguous fill for highly slanted trapezoids.

4. Fixes some problems in the "pseudo-rasterization".

5. Disables all hacks about path adjustment and oversampling
   when DROPOUT_PREVENTION is on. Those hacks were attempts
   to fix dropouts for small characters, but they do not solve
   the problem completely.

6. Provide visual trace instructions for debugging purpose.

Changes to gxpcopy.c and gxpflat.c only insert visual trace instructions for
debugging purpose. Currently all them compile to empty code.

Changes to gdevddrw.c, gxchar.c, gxtype1.c, gx.h
are protected with DROPOUT_PREVENTION. With current settings they
compile to old code.

Changes to gxfill.c are not so obvious. I was unhappy with duplicating
a thousand of lines in #if...#else...#endif. Therefore
I've inserted some dynamic checks. They are controlled with
'pseudo_rasterization' flag. Currently it always false,
so that inserted sections are either bypassed or immediately
return from subroutines.

Changes to lib.mak only add some dependences on vdtrace.h .

In local testing the patch caused no difference with
Comparefiles (if DROPOUT_PREVENTION is 0).

If someone wants to try new code, DROPOUT_PREVENTION to be modified in gx.h .
In this case all old hacks about path adjustment are disabled,
and therefore characters render some lighter.
Visual trace may be activated with -Tf option in gs command line.
Note that it paints a big draft for any character rendered,
so you should run only simple PS files with a single character.
Also the draft scale is hardcoded in VD_SCALE constants,
so it may give an unuseful result with big character rasters.
At last please remember that visual trace window is implemented
only for Windows - other platforms will not paint anything.
The visual trace window does not implement a regeneration of painting,
therefore windows must not overlap. Run gswin32.exe with no file,
move windows and then perform 'quit' to store window layout to system Registry.

here is a simple test, which visualize improvements when
DROPOUT_PREVENTION is on :

	%!
	100 350 moveto
	/Courier findfont 2 scalefont [5 0 0 1 0 0] makefont setfont
	(/) show
	showpage

With 72dpi the old code paints nothing.
The (DROPOUT_PREVENTION=1) paints a spot.

Testing the new code with -r300 001.01.ps, the box 001-12 renders better :
no dropouts in "4", characters look better.

In gx.h I've added FILL_TRAP_WITH_SWAPPED_AXES flag. The goal is to archive
and document a dead branch of the development. I'd like to store it into
archive and then remove it in the next revision.

Two temporary configuration switches added for benchmarking purpose :

- PSEUDO_RASTERIZATION in gxfill.c disables the pseudo-rasterization
  separately from other changes.

- CONTIGUOUS_FILL disables additional checks in gdevddrw.c
  separately from other changes.

With text documents performance change is almost invisible.
With Coons01.ps each of these flags give a 10% slowdown.
I guess the reason is that the code becomes too complex for
global optimization with MSVC 6.0 for Intel Pentium 3.
Other compilers/processors may give different results.

Thanks to Ray Johnston and Raph Levien for useful remarks.
This patch accounts them.
</pre></blockquote>

<p><strong><a name="2002-12-23_1059"></a>
2002-12-23 10:59 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Removing a rudiment about writing /Name to font resources.
It is not longer useful since revision 1.50 of lib/pdf_font.ps .
</pre></blockquote>

<p><strong><a name="2002-12-20_1717"></a>
2002-12-20 17:17 Ray Johnston</strong></p>
<blockquote><pre>
Accumulate CVS log instead of only having one night's worth of change info.
It used to work that way but that "feature" got dropped inadvertently.
</pre></blockquote>

<p><strong><a name="2002-12-20_1139"></a>
2002-12-20 11:39 Igor Melichev</strong></p>
<blockquote><pre>
Initial commit for the dropout prevention code in rasterizer.
It doesn't not change any behavior.

DETAILS:

Switching to new code is being controlled with DROPOUT_PREVENTION
macro defined in gx.h . Now it is set to "use old code".

This patch :
1. Ports the "margin" algorithm from HINTER branch.
   Now the algorithm renamed to "pseudo-rasterization".

2. Ports the dropout prevention to gx_default_fill_trapezoid from HINTER branch,
   providing a contiguous fill for slightly slanted trapezoids.

3. Adds CONNECT_RECTANGLES into gx_default_fill_trapezoid
   providing a contiguous fill for highly slanted trapezoids.

4. Fixes some problems in the "pseudo-rasterization".

5. Disables all hacks about path adjustment and oversampling
   when DROPOUT_PREVENTION is on. Those hacks were attempts
   to fix dropouts for small characters, but they do not solve
   the problem completely.

6. Provide visual trace instructions for debugging purpose.

Changes to gxpcopy.c and gxpflat.c only insert visual trace instructions for
debugging purpose. Currently all them compile to empty code.

Changes to gdevddrw.c, gxchar.c, gxtype1.c, gx.h
are protected with DROPOUT_PREVENTION. With current settings they
compile to old code.

Changes to gxfill.c are not so obvious. I was unhappy with duplicating
a thousand of lines in #if...#else...#endif. Therefore
I've inserted some dynamic checks. They are controlled with
'pseudo_rasterization' flag. Currently it always false,
so that inserted sections are either bypassed or immediately
return from subroutines.

Changes to lib.mak only add some dependences on vdtrace.h .

In local testing the patch caused no difference with
Comparefiles (if DROPOUT_PREVENTION is 0).

If someone wants to try new code, DROPOUT_PREVENTION to be modified in gx.h .
In this case all old hacks about path adjustment are disabled,
and therefore characters render some lighter.
Visual trace may be activated with -Tf option in gs command line.
Note that it paints a big draft for any character rendered,
so you should run only simple PS files with a single character.
Also the draft scale is hardcoded in VD_SCALE constants,
so it may give an unuseful result with big character rasters.
At last please remember that visual trace window is implemented
only for Windows - other platforms will not paint anything.
The visual trace window does not implement a regeneration of painting,
therefore windows must not overlap. Run gswin32.exe with no file,
move windows and then perform 'quit' to store window layout to system Registry.

here is a simple test, which visualize improvements when
DROPOUT_PREVENTION is on :

	%!
	100 350 moveto
	/Courier findfont 2 scalefont [5 0 0 1 0 0] makefont setfont
	(/) show
	showpage

With 72dpi the old code paints nothing.
The (DROPOUT_PREVENTION=1) paints a spot.

Testing the new code with -r300 001.01.ps, the box 001-12 renders better :
no dropouts in "4", characters look better.

In gx.h I've added FILL_TRAP_WITH_SWAPPED_AXES flag. The goal is to archive
and document a dead branch of the development. I'd like to store it into
archive and then remove it in the next revision.

Two temporary configuration switches added for benchmarking purpose :

- PSEUDO_RASTERIZATION in gxfill.c disables the pseudo-rasterization
  separately from other changes.

- CONTIGUOUS_FILL disables additional checks in gdevddrw.c
  separately from other changes.

With text documents performance change is almost invisible.
With Coons01.ps each of these flags give a 10% slowdown.
I guess the reason is that the code becomes too complex for
global optimization with MSVC 6.0 for Intel Pentium 3.
Other compilers/processors may give different results.

Thanks to Ray Johnston and Raph Levien for useful remarks.
This patch accounts them.
</pre></blockquote>

<p><strong><a name="2002-12-19_2044"></a>
2002-12-19 20:44 Igor Melichev</strong></p>
<blockquote><pre>
More optimizations are enabled with MSVC_VERSION != 5.
Using them MSVC 6.0 creates 1.5 times faster code.
Thanks to Russell Lang and to Pierre Arnaud.
</pre></blockquote>

<p><strong><a name="2002-12-19_0927"></a>
2002-12-19 09:27 Russell Lang</strong></p>
<blockquote><pre>
Prevent the bbox put_params from using the color mapping
functions before the device is opened.
Fixes Sourceforge bug #645531 "seg fault: bbox device + PAPERSIZE".

DETAILS:
Using "-sPAPERSIZE=a4 -sDEVICE=bbox" crashes in GS 8 when the
device parameters are being set prior to opening the bbox device.
bbox_put_params calls bbox_copy_params, gx_device_black
then the bbox encode_color which is NULL.
This is wrong because encode_color must not be called before
the device is open.  See doc/Drivers.htm#Life_cycle for details.
Prior to the DeviceN changes this did not matter because
the map_rgb_color function was valid.  Post DeviceN the
encode_color procedure is called and this is NULL until
just before the bbox device is opened.

The fix prevents bbox_copy_params from calling the
encode_color procedure while the device is closed.
</pre></blockquote>

<p><strong><a name="2002-12-18_1730"></a>
2002-12-18 17:30 Alex Cherepanov</strong></p>
<blockquote><pre>
Following MS Windows practice "Ok" is changed to "OK" in dialog controls.
Fixes SourceForge bug #655623 '"Ok" should be "OK"'
</pre></blockquote>

<p><strong><a name="2002-12-18_1359"></a>
2002-12-18 13:59 Igor Melichev</strong></p>
<blockquote><pre>
Fix : Improving the portability of the vd_trace interface.
</pre></blockquote>

<p><strong><a name="2002-12-17_1824"></a>
2002-12-17 18:24 Jack Moffitt</strong></p>
<blockquote><pre>
Update test scripts to omit -rXXX parameter for pdfwrite, instead of using
-r720 explicitly, so that it uses the default behavior.
</pre></blockquote>

<p><strong><a name="2002-12-17_1754"></a>
2002-12-17 17:54 Jack Moffitt</strong></p>
<blockquote><pre>
Always run pdfwrite with the default resolution of 720, since that is the
common use case.
</pre></blockquote>

<p><strong><a name="2002-12-16_1231"></a>
2002-12-16 12:31 Igor Melichev</strong></p>
<blockquote><pre>
Fix : Improving the vd_trace interface.

DETAILS:

It is some simplification and optimization.
It doesn't affect the current GS build because vtrace.h is currently never included.
</pre></blockquote>

<p><strong><a name="2002-12-15_1904"></a>
2002-12-15 19:04 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Text matrix was wrongly computed.
Source Forge bug "[ 651643 ] PS-&gt;PDF changes font slant".

DETAILS:

The bug is visible if FontMatrix for a base PS font is slanted
with findfont...copydict...ReplaceFontMatrix...definefont.

I don't know whether we need to canonize FontMatrix embedding a font.
Delaying this until we get more tests which help to choose a right decision.

EXPECTED PROGRESSIONS :

CompareFiles\455690.pdf
CompareFiles\Altona.Page_3.2002-09-27.pdf
</pre></blockquote>

<p><strong><a name="2002-12-15_1320"></a>
2002-12-15 13:20 Igor Melichev</strong></p>
<blockquote><pre>
Fix (FAPI) : Don't request decodingID for embedded fonts,
because it is only useful for disk fonts.
</pre></blockquote>

<p><strong><a name="2002-12-14_1906"></a>
2002-12-14 19:06 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : 'cmap' was written wrongly with subsetted True Type fonts.
Source Forge bug "[ 651148 ] pdfwrite embeds bad font".
</pre></blockquote>

<p><strong><a name="2002-12-14_0039"></a>
2002-12-14 00:39 Ralph Giles</strong></p>
<blockquote><pre>
Add the display device (for the gsapi client interface) to the default
MacOS build.
</pre></blockquote>

<p><strong><a name="2002-12-12_0144"></a>
2002-12-12 01:44 Dan Coby</strong></p>
<blockquote><pre>
Fix for [ 652147 ] overprintmode not boolean.  Adobe TN5145 defines
the paramters to/from setoverprintmode/currentoverprintmode as being
boolean.  This change modifies the implementation to match the TN.

DETAILS:

Previously the operators setoverprintmode and currentoverprintmode had
been defined to match the requirements of PDF which uses an integer for
the parameter.  However Adobe TN5145 defines the postscript implementation
as using a boolean value.  This change modifies the definition of these
operators in lib/gs_ll3.ps to convert the parameter type.  The internal
operators .setoverprintmode/.curentoverprintmode still use the PDF integer
parameter.  The postscript code in lib/gs_ll3.ps converts the parameter
type.
</pre></blockquote>

<p><strong><a name="2002-12-11_2031"></a>
2002-12-11 20:31 Ray Johnston</strong></p>
<blockquote><pre>
Handle TrueType fonts that contain poorly formatted 'post' tables.
These were seen as font subsets embedded in PDF files.
Fixes SourceForge bug #651164 for customer #150.

DETAILS:

The file contains an embedded TT font subset that has a badly formatted
'post' table. This table is used to replace names in the standard encoding
for specific glyphs. The 'post' table in question maps a bunch of glyphs
that are not part of the subset to the first name in glyphnames section,
but the glyphnames section is empty. It should have at least a single byte
of 0x00 to form a zero length Pascal string.

I also added a warning that prints if the DEBUG is enabled. Since the
'postglyphs' string is automatically extended with a 0x00 byte when the
problem is detected, the warning only prints once for the font.

This file was created by:
	/Producer (OneVision PDF Writer \(Build 05.950\))
	/Creator (Solvero Version 4.5 \(SR 4\))
</pre></blockquote>

<p><strong><a name="2002-12-10_1749"></a>
2002-12-10 17:49 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Removing erroneous declarations from gdevpdfx.h .
</pre></blockquote>

<p><strong><a name="2002-12-10_1518"></a>
2002-12-10 15:18 Ralph Giles</strong></p>
<blockquote><pre>
Fix (FAPI) : Rename round() to fapi_round() to avoid shadowing the C99 call of the same name.

DETAILS:

In particular, the redeclaration of round() causes a compiler error under
Apple's gcc (October 2002 Developer Tools, MacOS X 10.2.2). MSVC doesn't
implement the C99 round() and in any case we don't need the full behaviour,
so a private implementation seems the best portable option.
</pre></blockquote>

<p><strong><a name="2002-12-10_1352"></a>
2002-12-10 13:52 Igor Melichev</strong></p>
<blockquote><pre>
(pdfwrite) : Implementing /PAGELABEL pdfmark.
Code from Joerg Baumann with minor improvements.
</pre></blockquote>

<p><strong><a name="2002-12-10_1133"></a>
2002-12-10 11:33 Igor Melichev</strong></p>
<blockquote><pre>
Fix (FAPI) : Correcting the implementation of fapi_round.
</pre></blockquote>

<p><strong><a name="2002-12-10_0821"></a>
2002-12-10 08:21 Igor Melichev</strong></p>
<blockquote><pre>
Fix (FAPI) : Work around MSVC bug which doesn't define 'round' in math.h .
</pre></blockquote>

<p><strong><a name="2002-12-09_1142"></a>
2002-12-09 11:42 Igor Melichev</strong></p>
<blockquote><pre>
Fix (FAPI) : Remove dependency on interpreter structures from fapi_ft.c .
Code from Graham Asher.
</pre></blockquote>

<p><strong><a name="2002-12-09_1105"></a>
2002-12-09 11:05 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Allow to convert CIEBasedA with non-identity MatrixA to ICCBased.
Source Forge bug "[ 647124 ] gs 8.00 makes a large and slow PDF file".
</pre></blockquote>

<p><strong><a name="2002-12-08_1054"></a>
2002-12-08 10:54 Igor Melichev</strong></p>
<blockquote><pre>
Changing copyright banner in Free Type bridge modules.
</pre></blockquote>

<p><strong><a name="2002-12-08_1050"></a>
2002-12-08 10:50 Igor Melichev</strong></p>
<blockquote><pre>
Fix (FAPI) : Passing the replaced metrics to renderer.

DETAILS

FAPI client provides replaced metrics data in all cases.

UFST bridge now provides a minimal handling for replaced metrics -
for fonts with MetricsCount only. Other cases require
to implement a new feature to UFST.

Free Type is not fixed with this patch.
Need to implement a new feature in Free Type.
</pre></blockquote>

<p><strong><a name="2002-12-08_1040"></a>
2002-12-08 10:40 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Fixing a spelling in a comment.
</pre></blockquote>

<p><strong><a name="2002-12-06_1928"></a>
2002-12-06 19:28 Ralph Giles</strong></p>
<blockquote><pre>
Increment version number and date after 8.00 release.
</pre></blockquote>

<p><strong><a name="2002-12-06_1602"></a>
2002-12-06 16:02 Igor Melichev</strong></p>
<blockquote><pre>
Free Type integration. Code from Graham Asher.
</pre></blockquote>

<p><strong><a name="2002-12-06_0845"></a>
2002-12-06 08:45 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Improving documentation about compression choice.
</pre></blockquote>

<p><strong><a name="2002-12-06_0111"></a>
2002-12-06 01:11 Alex Cherepanov</strong></p>
<blockquote><pre>
Avoid the stack overflow. Don't put all CID values on the
operand stack at once during identity CMap generation.
Fixes SourceForge bug #646809 "/stackoverflow"
DETAILS:
The sample file pushed about 50K numbers to the operand stack
causing /stackoverflow. Since the numbers are always sequential
the new procedure takes a range of numbers. The range is defined
by the initial value and string length.
</pre></blockquote>

<p><strong><a name="2002-12-05_2348"></a>
2002-12-05 23:48 Alex Cherepanov</strong></p>
<blockquote><pre>
Work around a common error in PDF files when the length of the xref entry
is nor equal to 20 bytes. Use readline to advance to the next entry instead
of seeking 20 bytes forward.
Fixes SourceForge bug #646809, customer #1060 "/typecheck in --add--" 
Fixes SourceForge bug #641280, customer  #780 "/typecheck in --add--"
</pre></blockquote>

<p><strong><a name="2002-12-05_0029"></a>
2002-12-05 00:29 Ray Johnston</strong></p>
<blockquote><pre>
Adjust comments to reflect the current status (which FDSelect format can
possibly overflow the operand stack) and add comments to identify which
format corresponds to each procedure.

DETAILS:

A test case that used Format 0 was not available, so no change was made to
avoid large operand stack usage for Format 0, but the previous comment
placement may have left the impression that Format 3 still had the problem.
</pre></blockquote>

<p><strong><a name="2002-12-04_1950"></a>
2002-12-04 19:50 Ray Johnston</strong></p>
<blockquote><pre>
Handling of OpenType (OTTO) fonts with CFF fonts inside would fail if the
CFF table was not the first table in the table directory. Also stack
overflow could occur when building the FDSelect array. Now Asian fonts
sold by Adobe (as OpenType .otf fonts) can be used with Ghostscript.

DETAILS:

The initial table scanning checked the 32-bit table type against the
(CFF ) string, but then failed to skip the following 12 bytes if the table
was not CFF. Since the initial table is usually BASE, most OTTO fonts were
not usable.

Also the FDSelect array construction used the stack, so could easily
overflow if there was a largest glyph index in the font was too large. The
method used creates a 65535 element array, then fills it using the info
from the font's FDSelect info. The extra elements of the array are 'trimmed'
using getinterval.
</pre></blockquote>

<p><strong><a name="2002-12-04_1445"></a>
2002-12-04 14:45 Jack Moffitt</strong></p>
<blockquote><pre>
Fixed another typo in pdf tests.
</pre></blockquote>

<p><strong><a name="2002-12-04_1435"></a>
2002-12-04 14:35 Jack Moffitt</strong></p>
<blockquote><pre>
Fixed a bug in previous patch.
</pre></blockquote>

<p><strong><a name="2002-12-04_0905"></a>
2002-12-04 09:05 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Phase was missed writing a pattern.
Source Forge bug "[ 646062 ] (pdfwrite) Wrong pattern phase(270-01.ps".
</pre></blockquote>

<p><strong><a name="2002-12-04_0745"></a>
2002-12-04 07:45 Igor Melichev</strong></p>
<blockquote><pre>
Changing copyright banner in Free Type bridge modules.
</pre></blockquote>

<p><strong><a name="2002-12-03_1643"></a>
2002-12-03 16:43 Jack Moffitt</strong></p>
<blockquote><pre>
Fix: Turn logging on where it was overlooked.
</pre></blockquote>

<p><strong><a name="2002-12-03_1455"></a>
2002-12-03 14:55 Igor Melichev</strong></p>
<blockquote><pre>
Fix (FAPI) : Implementing MetricsCount.

DETAILS:

This fixes FAPI client, but still there are
problems with renderers. Both FreeType and UFST cannot
properly handle a replaced metrics. This problem
is not in Ghostscript.

The FAPI client also has problems with replaced metrics.
See the big comment added into zfapi.c .
Need to fix UFST and Free Type first.
</pre></blockquote>

<p><strong><a name="2002-12-03_1354"></a>
2002-12-03 13:54 Ralph Giles</strong></p>
<blockquote><pre>
Remove references to deprecated bug-gs-dev, bug-gs-beta, and mac-gs-* lists.
</pre></blockquote>

<p><strong><a name="2002-12-03_1336"></a>
2002-12-03 13:36 Ralph Giles</strong></p>
<blockquote><pre>
Document that UseFlateCompression is treated as always on. Thanks to mpsuzuki
for noticing this change.
</pre></blockquote>

<p><strong><a name="2002-12-03_0740"></a>
2002-12-03 07:40 Russell Lang</strong></p>
<blockquote><pre>

When adding a missing showpage to an EPS file,
don't bind showpage to allow user to override it.

DETAILS:
The EPS encapsulation code in ghostscript adds a showpage
if one is not present, so that displaying, printing and
converting all behave the same.  Some users are feeding
multiple EPS files to ghostscript, intending to print them
on a single page.  The current code will print each EPS file
on a single page.  For example following code would print
three pages:
  save
   /showpage {} def
   save (file1.eps) run restore
   save (file2.eps) run restore
  restore
  showpage
With this fix, it will print a single page.

Other ways to avoid this problem are to use -dNOEPS,
or (file.eps) (r) file cvx exec
</pre></blockquote>

<p><strong><a name="2002-12-03_0617"></a>
2002-12-03 06:17 Igor Melichev</strong></p>
<blockquote><pre>
Free Type integration. Code from Graham Asher.

DETAILS:

New files added :

fapi_ft.c
wrfont.c
write_t1.c
write_t2.c
wrfont.h
write_t1.h
write_t2.h

The Free Type bridge (fapi_ft.c and dependents) needs to be rewritten with
replacing all access to interpreter's data with FAPI_font callbacks.
Committing it now to allow other developers to work on it.

File names to be improved.
</pre></blockquote>

<p><strong><a name="2002-12-03_0600"></a>
2002-12-03 06:00 Igor Melichev</strong></p>
<blockquote><pre>
Free Type integration. Code from Graham Asher.

DETAILS:

New files added :

fapi_ft.c
wrfont.c
write_t1.c
write_t2.c
wrfont.h
write_t1.h
write_t2.h

The Free Type bridge (fapi_ft.c and dependents) needs to be rewritten with
replacing all access to interpreter's data with FAPI_font callbacks.
Committing it now to allow other developers to work on it.

File names to be improved.
</pre></blockquote>

<p><strong><a name="2002-12-03_0241"></a>
2002-12-03 02:41 Dan Coby</strong></p>
<blockquote><pre>
Fix:  Partial fix for [ 600288 ] /undefined in --setcolorspace--.
This fix consists of two parts.  1.  Resolve and substitute the alternate
color space for an ICCBased color space.  2.  Correct a reference counting
problem with the same alternate color space.
</pre></blockquote>

<p><strong><a name="2002-12-02_1959"></a>
2002-12-02 19:59 Jack Moffitt</strong></p>
<blockquote><pre>
Fix: Report useful error information when updating, building, or installing
fails.  Fixes SF bug #484752.
</pre></blockquote>

<p><strong><a name="2002-12-02_1921"></a>
2002-12-02 19:21 Jack Moffitt</strong></p>
<blockquote><pre>
Fix: Make sure all test code checks and reacts appropriate to the exit status
of Ghostscript.
</pre></blockquote>

<p><strong><a name="2002-12-02_1502"></a>
2002-12-02 15:02 Igor Melichev</strong></p>
<blockquote><pre>
Fix : Use GetTempFileName for creating temporary files on Windows.
SourceForge bug "[ 592925 ] Unable to open initial device (winXP)".
Code from Russell Lang with minor improvements.

DETAILS:

See comment in code. Further improvements with FILE_FLAG_DELETE_ON_CLOSE
require experimenting with multiple platforms to find a consistent
logics for clist and other temporary files with automatic removal.
In this connection see
http://www.ghostscript.com/pipermail/gs-code-review/2002-November/003437.html
and other messages in the thread.
</pre></blockquote>

<p><strong><a name="2002-12-02_1330"></a>
2002-12-02 13:30 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Names preceded with two null characters were not handled properly.
SourceForge bug "[ 641697 ] gs 7.33 regression".

DETAILS:

pdf_write_value did not recognize names being preceded with two null characters.
Such names were introduced to pdfmark implementation with the patch
http://www.ghostscript.com/pipermail/gs-code-review/2002-January/001737.html
for SF bug #505877. The patch appears incomplete : pdf_write_value
did not recognize such names as names, and as a consequence special characters
in them were not encodes with #-escape.
</pre></blockquote>

<p><strong><a name="2002-11-29_1624"></a>
2002-11-29 16:24 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Skip the obsolete Type 1 charstring command code 15,
because Acrobat Reader 5 on Linux chokes with it.
SourceForge bug "[ 641296 ] acrobat generates bad ps from gs pdf".

DETAILS:

GS ignores the command 15. Now skipping it while converting to CFF.
Printing a file with such font, AR5 on Linux generates an incomplete eexec section.
</pre></blockquote>

<p><strong><a name="2002-11-27_2036"></a>
2002-11-27 20:36 Alex Cherepanov</strong></p>
<blockquote><pre>
Fix: Use "\n" line endings instead of "\r\n".
MS-DOS line endings were introduced in some lines with my earier fix.
</pre></blockquote>

<p><strong><a name="2002-11-27_1557"></a>
2002-11-27 15:57 Igor Melichev</strong></p>
<blockquote><pre>
Fix (pdfwrite) : Skip redundant clipping paths.
SourceForge bug "[ 624168 ] poor performance on patterns".

DETAILS:

Besides others, the document "a)page Afrique(VECTO).eps"
creates multiple redundant clip paths with any AI "pattern"
(actually it doesn't use PS patterns). The old code was
too conservative, using only a comparison of path identifiers.

The patch creates a stable copy of clipping path written to PDF,
and compares it when PS clip path changes.  The old comparison
is left unchanged for better performance.

Also fixes return codes from pdf_put_clip_path and
improved the initializer of gx_device_pdf.
</pre></blockquote>

<p><strong><a name="2002-11-27_1537"></a>
2002-11-27 15:37 Igor Melichev</strong></p>
<blockquote><pre>
Fix : gx_clip_path::outer_box was wrongly computed with empty path.

DETAILS:

It's a prtial fix for SourceForge bug "[ 624168 ] poor performance on patterns".
</pre></blockquote>

<p><strong><a name="2002-11-27_1525"></a>
2002-11-27 15:25 Igor Melichev</strong></p>
<blockquote><pre>
Fix : A partial fix for Source Forge bug "[ 592925 ] Unable to open initial device (winXP)".
Providing a diagnostics when failed to open temporary file or the device output file.

DETAILS:

This change provides an explanation to user about the problem, rather than fixes it.
An improvement about the failure will be a separate patch.

gp_macio.c and gp_unifs.c contained C-style.htm problems.
This patch doesn't fix them for simplifying the History.
To be done separately.
</pre></blockquote>

<p><strong><a name="2002-11-27_1447"></a>
2002-11-27 14:47 Ralph Giles</strong></p>
<blockquote><pre>
Correct a non-portable symbol after #endif.
</pre></blockquote>

<p><strong><a name="2002-11-26_1515"></a>
2002-11-26 15:15 Ralph Giles</strong></p>
<blockquote><pre>
Remove some unused variables.
</pre></blockquote>

<p><strong><a name="2002-11-26_1438"></a>
2002-11-26 14:38 Ralph Giles</strong></p>
<blockquote><pre>
Adapt MacOS port to build under Metrowerks CodeWarrior 8.3. These changes
maintain compatibility with CW7. CW6 has not been tested. Also clean up
some of the mac-specific sources, removing dead and unnecessary code
and improving header includes.
</pre></blockquote>

<p><strong><a name="2002-11-26_1255"></a>
2002-11-26 12:55 Ralph Giles</strong></p>
<blockquote><pre>
Correct changelog typos. Thanks to William Bader for spotting this.
</pre></blockquote>

<p><strong><a name="2002-11-26_0237"></a>
2002-11-26 02:37 Ralph Giles</strong></p>
<blockquote><pre>
Remove echogs as part of the mostlyclean makefile target. After a patch by William Bader.
</pre></blockquote>

<p><strong><a name="2002-11-22_0049"></a>
2002-11-22 00:49 Ray Johnston</strong></p>
<blockquote><pre>
Fix: Descriptions of the regression testing script did not correspond to
the script header. Thanks to Russell Lang of GSView fame for spotting this
(someone finally read at least part of this document!).
</pre></blockquote>

<p><strong><a name="2002-11-21_1029"></a>
2002-11-21 10:29 Raph Levien</strong></p>
<blockquote><pre>
Change GS_DOT_VERSION to use two-digit minor version number, which is
our new policy.
</pre></blockquote>

<p><strong><a name="2002-11-21_0940"></a>
2002-11-21 09:40 Russell Lang</strong></p>
<blockquote><pre>
When processing EPS files, empty the path after checking the
page size.
</pre></blockquote>

<p><strong><a name="2002-11-21_0851"></a>
2002-11-21 08:51 Russell Lang</strong></p>
<blockquote><pre>
Update copyright date in Windows installer.
</pre></blockquote>

<p><strong><a name="2002-11-21_0826"></a>
2002-11-21 08:26 Raph Levien</strong></p>
<blockquote><pre>
Second commit of 8.00 release: autogen change logs and history file
(note new History8.htm file).
</pre></blockquote>


<h1><a name="Version8.00"></a>Version 8.00 (2002-11-21)</h1>

<p>
This is the 8.00 release of AFPL Ghostscript. The most significant new
feature since 7.0x is support for DeviceN colorspaces, up to 8
colorants total at 8 bits per component. Also, pdfwrite has seen
considerable improvement in font handling, and many other bug fixes.

<p>
The following SourceForge bug numbers were open at the time of this release:
405342,
407342,
414947,
414985,
446344,
458261,
458775,
458780,
459647,
465936,
484752,
484753,
487953,
493348,
505429,
510808,
526099,
526491,
530011,
535366,
535752,
535836,
538033,
539239,
546823,
554076,
558151,
558435,
563287,
569573,
570772,
573744,
578838,
578865,
584990,
592160,
592837,
592841,
592925,
592930,
595760,
596009,
600288,
601255,
601336,
601694,
603934,
605830,
607425,
607850,
610356,
610478,
610727,
611694,
611701,
611727,
611898,
612801,
614298,
615165,
616970,
616976,
617077,
617523,
621246,
623292,
624515,
625085,
626059,
626295,
626358,
626419,
626464,
627545,
628110,
629335,
633299,
634036,
634358,
634514,
636210,
640159,
641278,
641280,
641283,
641296,
641490.

<h3><a name="8.00_Incompatible_changes"></a>Incompatible changes</h3>

<p>No incompatible changes in this release.

<pre>
</pre>


<h2><a name="8.00-Documentation"></a>Documentation</h2><pre>

First commit of 8.0 process: update versions and dates, update to News.htm.
(doc/API.htm [1.29], doc/Bug-form.htm [1.33], doc/Bug-info.htm [1.32],
doc/C-style.htm [1.39], doc/Commprod.htm [1.26], doc/Copying.htm [1.25],
doc/DLL.htm [1.27], doc/Deprecated.htm [1.6], doc/Develop.htm [1.101],
doc/Devices.htm [1.58], doc/Drivers.htm [1.37], doc/Fonts.htm [1.35],
doc/Helpers.htm [1.29], doc/History1.htm [1.25], doc/History2.htm [1.25],
doc/History3.htm [1.25], doc/History4.htm [1.25], doc/History5.htm [1.27],
doc/History6.htm [1.42], doc/History7.htm [1.29], doc/Htmstyle.htm [1.30],
doc/Install.htm [1.39], doc/Issues.htm [1.33], doc/Language.htm [1.58],
doc/Lib.htm [1.27], doc/Maintain.htm [1.36], doc/Make.htm [1.62],
doc/New-user.htm [1.44], doc/News.htm [1.121], doc/Projects.htm [1.49],
doc/Ps-style.htm [1.23], doc/Ps2epsi.htm [1.27], doc/Ps2pdf.htm [1.49],
doc/Psfiles.htm [1.40], doc/Readme.htm [1.47], doc/Release.htm [1.74],
doc/Source.htm [1.25], doc/Tester.htm [1.24], doc/Testing.htm [1.14],
doc/Unix-lpr.htm [1.25], doc/Use.htm [1.71], doc/Xfonts.htm [1.25],
doc/gs-vms.hlp [1.24], man/dvipdf.1 [1.22], man/font2c.1 [1.22],
man/gs.1 [1.23], man/gslp.1 [1.22], man/gsnd.1 [1.22], man/pdf2dsc.1 [1.21],
man/pdf2ps.1 [1.23], man/pdfopt.1 [1.21], man/pf2afm.1 [1.22],
man/pfbtopfa.1 [1.23], man/printafm.1 [1.22], man/ps2ascii.1 [1.21],
man/ps2epsi.1 [1.20], man/ps2pdf.1 [1.27], man/ps2pdfwr.1 [1.26],
man/ps2ps.1 [1.29], man/wftopfa.1 [1.22]: 2002/11/21 07:12:16 raph)

</pre><h2><a name="8.00-Procedures"></a>Procedures</h2><pre>

First commit of 8.0 process: update versions and dates, update to News.htm.
(version.mak [1.58]: 2002/11/21 07:12:17 raph)

</pre><h2><a name="8.00-Utilities"></a>Utilities</h2><pre>

Fixes problems:
	- Don't overwrite source file when ps2pdf.bat is used with 1
argument and the argument has no ".ps" extension. (Fixed by Moritz Barsnick)
Bug #631974 (lib/ps2pdfxx.bat [1.13]: 2002/11/20 03:01:23 alexcher)

</pre><h2><a name="8.00-Drivers"></a>Drivers</h2><pre>

Documents the old macos output device as deprecated. This is superceeded by
the gdevdsp. (gdevmac.c [1.7]: 2002/11/20 18:24:44 giles)

</pre><h2><a name="8.00-PDF_writer"></a>PDF writer</h2><pre>

Fixes problems:
	- Fix (pdfwrite) : pdf_put_colored_pattern wrongly accessed pattern
mask. SourceForge bugs "[ 623989 ] (pdfwrite) wrong colors with 269-01.ps",
"[ 602995 ] (pdfwrite) 269-01.ps limitcheck". (gdevpdfv.c [1.20]: 2002/11/18
22:23:40 igor)
	- Fix (pdfwrite) : Providing additional documentation about embedded
fonts. (gdevpdtb.c [1.12]: 2002/11/20 10:21:15 igor)
	- Fix (pdfwrite) : Encoding Differences were not written for
embedded Type 1,2 fonts that have a very instandard Encoding. Discovered
with SF bug "[ 641296 ] acrobat generates bad ps from gs pdf".
(gdevpdtt.c [1.24]: 2002/11/21 00:05:06 igor)
	- Fix (pdfwrite) : The previous patch about Encoding Differences was
inaccurate about True Types and CID fonts. Improving it with a better
condition. (gdevpdtt.c [1.25]: 2002/11/21 03:44:11 igor)

</pre><h2><a name="8.00-PDF_Interpreter"></a>PDF Interpreter</h2><pre>

Fixes problems:
	- Pattern stream was copied to the string failing with rangecheck
for long streams. The patch uses strings when possible and switches to
reusable streams for longer streams. Bug #634080, customer #561
(lib/pdf_draw.ps [1.63]: 2002/11/21 01:29:07 alexcher)

</pre><h2><a name="8.00-Interpreter"></a>Interpreter</h2><pre>

Fixes problems:
	- Correction for 637954 dina3_watermark.pdf fails on GS 7.33. This
forces the color space to /DeviceGray whenever the initgraphics operator is
called. Previously if color space substitution was active and the last
colorspace was /DeviceGray then its substituted colorspace would remain
active. (lib/gs_cspace.ps [1.5]: 2002/11/18 23:42:18 dan)
	- Packed array is accepted now as an encoded user path in insideness
testing operators. Bug #640855 (zupath.c [1.7]: 2002/11/20 18:17:28
alexcher)
	- Fix : (1) gc_status.requested was not initialized for stable
memories, but used by alloc_acquire_chunk. (2) setting
gc_status.vm_threshold and gc_status.enabled for stable memories
synchronously with non-stable ones. This allows to control stable memories
with setvmthreshold and vmreclaim. With default settings pdfwrite now works
faster. SourceForge bug "[ 621243 ] (pdfwrite) slow mahle.pdf"
(zvmem2.c [1.7]: 2002/11/20 18:56:56 igor)
	- Bring /SubstituteFont procedure prototype up to the standard:
&lt;name&gt; SubstituteFont &lt;name&gt; . Do traditional GS font
substitution after the standard font substitution. Use no-op standard font
substitution for backward compatibility. Bug #637424 Customer #71
(lib/gs_fonts.ps [1.24]: 2002/11/21 04:43:58 alexcher)

When processing multiple EPS files, call showpage if necessary for
subsequent files. (lib/gs_epsf.ps [1.10]: 2002/11/19 20:14:01 ghostgum)

Corrects a small typo in the api documentation. (gdevdsp.h [1.7]: 2002/11/20
17:46:26 giles)

First commit of 8.0 process: update versions and dates, update to News.htm.
(lib/gs_init.ps [1.74]: 2002/11/21 07:12:17 raph)

</pre><h2><a name="8.00-Library"></a>Library</h2><pre>

Fixes problems:
	- Fix : lsb must not apply to True Type subglyphs. The offset to be
taken from composite only. SourceForge bugs "[ 623122 ] component shift in
TrueType composites", "[ 536863 ] Type11 layout bugs". (gstype42.c [1.25]:
2002/11/20 09:55:26 igor)
	- Fix : (1) gc_status.requested was not initialized for stable
memories, but used by alloc_acquire_chunk. (2) setting
gc_status.vm_threshold and gc_status.enabled for stable memories
synchronously with non-stable ones. This allows to control stable memories
with setvmthreshold and vmreclaim. With default settings pdfwrite now works
faster. SourceForge bug "[ 621243 ] (pdfwrite) slow mahle.pdf"
(gsalloc.c [1.18]: 2002/11/20 18:56:43 igor)
	- Fix : (1) gc_status.requested was not initialized for stable
memories, but used by alloc_acquire_chunk. (2) setting
gc_status.vm_threshold and gc_status.enabled for stable memories
synchronously with non-stable ones. This allows to control stable memories
with setvmthreshold and vmreclaim. With default settings pdfwrite now works
faster. SourceForge bug "[ 621243 ] (pdfwrite) slow mahle.pdf"
(gsalloc.h [1.6]: 2002/11/20 18:57:10 igor)

First commit of 8.0 process: update versions and dates, update to News.htm.
(gscdef.c [1.32]: 2002/11/21 07:12:17 raph)

</pre>

<!-- [2.0 end contents] ==================================================== -->

<!-- [3.0 begin visible trailer] =========================================== -->
<hr>

<p>
<small>Copyright &copy; 2000-2006 Artifex Software, Inc.  All rights reserved.</small>

<p>
This software is provided AS-IS with no warranty, either express or
implied.

This software is distributed under license and may not be copied, modified
or distributed except as expressly authorized under the terms of that
license.  Refer to licensing information at http://www.artifex.com/
or contact Artifex Software, Inc.,  7 Mt. Lassen Drive - Suite A-134,
San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.

<p>
<small>Ghostscript version 9.06, 8 August 2012

<!-- [3.0 end visible trailer] ============================================= -->

</body>
</html>