Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 87097 Details for
Bug 133842
app-text/ghostscript-*-8 cjk patch
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
files/ghostscript-esp-8.15.1_p20060430-big-cmap-post-table.patch
ghostscript-esp-8.15.1_p20060430-big-cmap-post-table.patch (text/plain), 7.61 KB, created by
MATSUU Takuto (RETIRED)
on 2006-05-19 22:05:15 UTC
(
hide
)
Description:
files/ghostscript-esp-8.15.1_p20060430-big-cmap-post-table.patch
Filename:
MIME Type:
Creator:
MATSUU Takuto (RETIRED)
Created:
2006-05-19 22:05:15 UTC
Size:
7.61 KB
patch
obsolete
>diff -Naur espgs-8.15.1_p20060430.orig/lib/gs_ttf.ps espgs-8.15.1_p20060430/lib/gs_ttf.ps >--- espgs-8.15.1_p20060430.orig/lib/gs_ttf.ps 2006-04-30 17:59:22.000000000 +0900 >+++ espgs-8.15.1_p20060430/lib/gs_ttf.ps 2006-05-16 17:51:34.000000000 +0900 >@@ -261,6 +261,54 @@ > } for pop exch pop > } bind def > >+/.biglength { % <str>|<array of str> .biglength <integer> >+ dup type /arraytype eq { 0 exch { length add } forall } { length } ifelse >+} bind def >+ >+/concats { % [str ...] concats str >+ () exch dup length 1 sub -1 0 { >+ 1 index exch get dup type /stringtype ne { dup length string cvs } if >+ 3 -1 roll exch dup length 2 index length add string >+ dup dup 4 2 roll copy length 4 -1 roll putinterval exch >+ } for pop >+} bind def >+ >+% <str>|<array of str> <index> <count> .biggetinterval <str>|<array of str> >+/.biggetinterval { >+ 3 dict begin >+ 2 index type /arraytype eq { >+ /c exch def >+ /i exch def >+ [ exch { >+ dup length /l exch def >+ i c add l gt { >+ i l lt { >+ i l i sub getinterval >+ /c i c add l sub def >+ /i 0 def >+ } { >+ pop >+ /i i l sub def >+ } ifelse >+ } { >+ i c getinterval exit >+ } ifelse >+ } forall >+ ] dup .biglength 65535 le { concats } if >+ } { getinterval } ifelse >+ end >+} bind def >+ >+% <str>|<array of str> <index> getu16 <integer> >+/.biggetu16 { >+ 2 .biggetinterval 0 getu16 >+} bind def >+ >+% <str>|<array of str> <index> getu32 <integer> >+/.biggetu32 { >+ 4 .biggetinterval 0 getu32 >+} bind def >+ > % Each procedure in this dictionary is called as follows: > % <encodingtable> proc <glypharray> > /cmapformats mark >@@ -351,14 +399,14 @@ > } bind > 4 { % Microsoft/Adobe segmented mapping. > /etab exch def >- /nseg2 etab 6 getu16 def >- 14 /endc etab 2 index nseg2 getinterval def >+ /nseg2 etab 6 .biggetu16 def >+ 14 /endc etab 2 index nseg2 .biggetinterval def > % The Apple TrueType documentation omits the 2-byte > % 'reserved pad' that follows the endCount vector! > 2 add >- nseg2 add /startc etab 2 index nseg2 getinterval def >- nseg2 add /iddelta etab 2 index nseg2 getinterval def >- nseg2 add /idroff etab 2 index nseg2 getinterval def >+ nseg2 add /startc etab 2 index nseg2 .biggetinterval def >+ nseg2 add /iddelta etab 2 index nseg2 .biggetinterval def >+ nseg2 add /idroff etab 2 index nseg2 .biggetinterval def > % The following hack allows us to properly handle > % idiosyncratic fonts that start at 0xf000: > pop >@@ -370,8 +418,8 @@ > /numcodes 0 def /glyphs 0 0 2 nseg2 3 sub { > % Stack: /glyphs numglyphs i2 > /i2 exch def >- /scode startc i2 getu16 def >- /ecode endc i2 getu16 def >+ /scode startc i2 .biggetu16 def >+ /ecode endc i2 .biggetu16 def > numcodes scode firstcode sub > % Hack for fonts that have only 0x0000 and 0xf000 ranges > %dup 16#e000 ge { 255 and } if >@@ -392,8 +440,8 @@ > /numcodes 0 def /code 0 def > 0 2 nseg2 3 sub { > /i2 exch def >- /scode startc i2 getu16 def >- /ecode endc i2 getu16 def >+ /scode startc i2 .biggetu16 def >+ /ecode endc i2 .biggetu16 def > numcodes scode firstcode sub > % Hack for fonts that have only 0x0000 and 0xf000 ranges > %dup 16#e000 ge { 255 and } if >@@ -405,15 +453,15 @@ > (scode=) print scode =only > ( ecode=) print ecode =only > ( delta=) print delta =only >- ( droff=) print idroff i2 getu16 = >+ ( droff=) print idroff i2 .biggetu16 = > } if >- idroff i2 getu16 dup 0 eq { >+ idroff i2 .biggetu16 dup 0 eq { > pop scode delta add 65535 and 1 ecode delta add 65535 and > { putglyph } for > } { % The +2 is for the 'reserved pad'. > /gloff exch 14 nseg2 3 mul add 2 add i2 add add def > 0 1 ecode scode sub { >- 2 mul gloff add etab exch getu16 >+ 2 mul gloff add etab exch .biggetu16 > dup 0 ne { delta add 65535 and } if putglyph > } for > } ifelse >@@ -436,12 +484,12 @@ > > % <cmaptab> cmaparray <glypharray> > /cmaparray { >- dup 0 getu16 cmapformats exch .knownget { >+ dup 0 .biggetu16 cmapformats exch .knownget { > TTFDEBUG { >- (cmap: format ) print 1 index 0 getu16 = flush >+ (cmap: format ) print 1 index 0 .biggetu16 = flush > } if exec > } { >- (Can't handle format ) print 0 getu16 = flush >+ (Can't handle format ) print 0 .biggetu16 = flush > 0 1 255 { } for 256 packedarray > } ifelse > TTFDEBUG { >@@ -513,13 +561,13 @@ > % Adobe requirement that each sfnts entry have even length. > /readtables mark > % Ordinary tables >- (cmap) { .readtable } >+ (cmap) { .readbigtable } > (head) 1 index > (hhea) 1 index > (maxp) 1 index > (name) 1 index > (OS/2) 1 index >- (post) 1 index >+ (post) { .readbigtable } > %(vhea) 1 index > systemdict /DEVICE .knownget { (pdfwrite) ne } {true} ifelse { > (vhea) 1 index % better to be ignored for vertical writing in pdfwrite >@@ -867,10 +915,17 @@ > } ifelse > % Stack: ... /FontInfo mark key1 value1 ... > post null ne { >- /ItalicAngle post 4 gets32 65536.0 div >- /isFixedPitch post 12 getu32 0 ne >- /UnderlinePosition post 8 gets16 upem div >- /UnderlineThickness post 10 gets16 upem div >+ post type /arraytype eq { >+ % this post table is a big table. /post should be [(...) ...] >+ % data we actually need here should be first one in array. >+ /posttable post 1 get def >+ } { >+ /posttable post def >+ } ifelse >+ /ItalicAngle posttable 4 gets32 65536.0 div >+ /isFixedPitch posttable 12 getu32 0 ne >+ /UnderlinePosition posttable 8 gets16 upem div >+ /UnderlineThickness posttable 10 gets16 upem div > } if > counttomark 0 ne { .dicttomark } { pop pop } ifelse > /XUID [orgXUID 42 curxuid] >@@ -929,22 +984,22 @@ > } if > tabdict /cmap get % bool [] i PlatID SpecID (cmap) > dup /cmaptab exch def % temporary >- 0 1 2 index 2 getu16 1 sub { % bool [] i PlatID SpecID (cmap) j >- 8 mul 4 add 1 index exch 8 getinterval % bool [] i PlatID SpecID (cmap) (cmapsub) >+ 0 1 2 index 2 .biggetu16 1 sub { % bool [] i PlatID SpecID (cmap) j >+ 8 mul 4 add 1 index exch 8 .biggetinterval % bool [] i PlatID SpecID (cmap) (cmapsub) > TTFDEBUG { >- (cmap: platform ) print dup 0 getu16 =only >- ( encoding ) print dup 2 getu16 = flush >+ (cmap: platform ) print dup 0 .biggetu16 =only >+ ( encoding ) print dup 2 .biggetu16 = flush > } if >- dup 0 getu16 4 index eq { >- dup 2 getu16 3 index eq { % bool [] i PlatID SpecID (cmap) (cmapsub) >+ dup 0 .biggetu16 4 index eq { >+ dup 2 .biggetu16 3 index eq { % bool [] i PlatID SpecID (cmap) (cmapsub) > TTFDEBUG { > (Choosen a cmap for platform=) print 3 index =only > ( encoding=) print 2 index = > } if > /cmapsub 1 index def >- dup 4 getu32 % bool [] i PlatID SpecID (cmap) (cmapsub) p >- cmaptab length 1 index sub % bool [] i PlatID SpecID (cmap) (cmapsub) p l >- cmaptab 3 1 roll getinterval >+ dup 4 .biggetu32 % bool [] i PlatID SpecID (cmap) (cmapsub) p >+ cmaptab .biglength 1 index sub % bool [] i PlatID SpecID (cmap) (cmapsub) p l >+ cmaptab 3 1 roll .biggetinterval > /cmaptab exch def % bool [] i PlatID SpecID (cmap) (cmapsub) > 5 index 5 index 1 add get % bool [] i PlatID SpecID (cmap) (cmapsub) /Decoding > /Decoding exch def % bool [] i PlatID SpecID (cmap) (cmapsub)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 133842
:
87096
| 87097 |
87098
|
87099
|
87989
|
87990