blob: 424441b03928ed4c8338a80a4e45de06c53a4a02 (
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
|
diff -ruN ghostscript-7.07.orig/lib/gs_ttf.ps ghostscript-7.07/lib/gs_ttf.ps
--- ghostscript-7.07.orig/lib/gs_ttf.ps 2003-07-29 16:51:55.000000000 +0900
+++ ghostscript-7.07/lib/gs_ttf.ps 2003-07-29 17:44:43.000000000 +0900
@@ -1117,50 +1117,77 @@
/gsubh2v null def
tabdict /GSUB .knownget { % if
dup /gsubver exch 0 getu32 def
- %dup /gsubosl exch 4 getu16 12 add def
- %dup /gsubofl exch 6 getu16 12 add def
- dup /gsuboll exch 8 getu16 12 add def
+ %dup /gsubosl exch 4 getu16 def
+ %dup /gsubofl exch 6 getu16 def
+ dup /gsuboll exch 8 getu16 def
DEBUG {
(gsubver: ) print gsubver =
%(gsubosl: ) print gsubosl =
%(gsubofl: ) print gsubofl =
(gsuboll: ) print gsuboll =
} if
- dup /gsubfmt exch gsuboll 0 add getu16 def
+ % /gsuboll should be pointed out the LookupList table, but not Lookup table.
+ % so this is wrong:
+ % dup /gsubfmt exch gsuboll 0 add getu16 def
+ dup /gsublc exch gsuboll 0 add getu16 def
DEBUG {
- (gsubfmt: ) print gsubfmt =
+ (gsublc: ) print gsublc =
} if
-% gsubver 16#00010000 eq { % ifelse
- gsubfmt 2 eq { % ifelse
- dup /gsubocv exch gsuboll 2 add getu16 def
- dup /gsubglc exch gsuboll 4 add getu16 def
- % hacked by suzuki toshiya at 2001/3/6
- %dup /gsubvog exch gsuboll 6 add gsubglc getinterval def
- %dup /gsubhog exch gsuboll gsubocv add 4 add gsubglc getinterval def
- dup /gsubvog exch gsuboll 6 add gsubglc 2 mul getinterval def
- dup /gsubhog exch gsuboll gsubocv add 4 add gsubglc 2 mul getinterval def
+ gsublc 0 ne {
+ 0 1 gsublc 1 sub {
+ 2 mul /gsubolt exch 2 index exch gsuboll 2 add add getu16 gsuboll add def
+ dup /gsubltype exch gsubolt 0 add getu16 def
+ dup /gsublflag exch gsubolt 2 add getu16 def
+ dup /gsubsubc exch gsubolt 4 add getu16 def
DEBUG {
- (gsubocv: ) print gsubocv =
- (gsubglc: ) print gsubglc =
-
- (gsubhog->gsubvog ) =
- 0 2 gsubhog length 2 sub { % for
- dup
- gsubhog exch getu16 =only
- (->) =only
- gsubvog exch getu16 =
+ (gsubolt: ) print gsubolt =
+ (gsubltype: ) print gsubltype =
+ (gsublflag: ) print gsublflag =
+ (gsubsubc: ) print gsubsubc =
+ } if
+ gsubsubc 0 ne {
+ 0 1 gsubsubc 1 sub {
+ 2 mul /gsubost exch 2 index exch gsubolt 6 add add getu16 gsubolt add def
+ dup /substfmt exch gsubost 0 add getu16 def
+ DEBUG {
+ (gsubost: ) print gsubost =
+ (substfmt: ) print substfmt =
+ } if
+% gsubver 16#00010000 eq { % ifelse
+ gsubltype 1 eq substfmt 2 eq and { % ifelse
+ dup /gsubocv exch gsubost 2 add getu16 def
+ dup /gsubglc exch gsubost 4 add getu16 def
+ % hacked by suzuki toshiya at 2001/3/6
+ %dup /gsubvog exch gsubost 6 add gsubglc getinterval def
+ %dup /gsubhog exch gsubost gsubocv add 4 add gsubglc getinterval def
+ dup /gsubvog exch gsubost 6 add gsubglc 2 mul getinterval def
+ dup /gsubhog exch gsubost gsubocv add 4 add gsubglc 2 mul getinterval def
+ DEBUG {
+ (gsubocv: ) print gsubocv =
+ (gsubglc: ) print gsubglc =
+
+ (gsubhog->gsubvog ) =
+ 0 2 gsubhog length 2 sub { % for
+ dup
+ gsubhog exch getu16 =only
+ (->) =only
+ gsubvog exch getu16 =
+ } for
+ } if
+ /gsubh2v << 0 2 gsubhog length 2 sub {
+ dup gsubhog exch getu16
+ exch gsubvog exch getu16
+ } for >> def
+ } {
+ %(UNKNOWN GSUB FORMAT.) = flush
+ } ifelse
+% } {
+% (ILLEGAL GSUB VERSION.) = flush
+% } ifelse
} for
} if
- /gsubh2v << 0 2 gsubhog length 2 sub {
- dup gsubhog exch getu16
- exch gsubvog exch getu16
- } for >> def
- } {
- %(UNKNOWN GSUB FORMAT.) = flush
- } ifelse
-% } {
-% (ILLEGAL GSUB VERSION.) = flush
-% } ifelse
+ } for
+ } if
pop
} if
} bind def
|