summaryrefslogtreecommitdiff
path: root/gs/doc/Details.htm
blob: 719fa6912a2001ab2e514ae1784ca6389f77e242 (plain)
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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"   "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Ghostscript change history (detailed)</title></title>
<!-- generated by split_changelog.py from the output of cvs2cl.pl -->
<!-- $Id$ -->
<link rel=stylesheet type="text/css" href="gs.css">
</head>
<body>

<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 < 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))) < max_ulong


equivalent to :

    new_height * mem_space + new_height * new_height * raster * NUM_PDF14_BUFFERS < 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->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
>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->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 :

<<
  /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
  } 
>>
[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->cropping_min, cdev->cropping_max],
and then by [0, cdev->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->cropping_min, cdev->cropping_max]
in any case. Initially it is [0, cdev->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>
</body>
</html>