diff options
author | Reinhard Kotucha <reinhard.kotucha@web.de> | 2017-04-23 22:15:25 +0000 |
---|---|---|
committer | Reinhard Kotucha <reinhard.kotucha@web.de> | 2017-04-23 22:15:25 +0000 |
commit | 54448d6ab44d2033482fafa56ddc40d42a6815eb (patch) | |
tree | d4fdfff7b7f75c367a76f872e2986af75c5f81a3 /Master/tlpkg/tlgs/Resource/Init/gs_typ32.ps | |
parent | f2a947f3017b82f1dfa1058d1d720fe11d298e92 (diff) |
Add files needed for CJK to tlgs, adapt runscript.tlu accordingly.
git-svn-id: svn://tug.org/texlive/trunk@43997 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/tlgs/Resource/Init/gs_typ32.ps')
-rw-r--r-- | Master/tlpkg/tlgs/Resource/Init/gs_typ32.ps | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_typ32.ps b/Master/tlpkg/tlgs/Resource/Init/gs_typ32.ps new file mode 100644 index 00000000000..1ed1a2c0eeb --- /dev/null +++ b/Master/tlpkg/tlgs/Resource/Init/gs_typ32.ps @@ -0,0 +1,133 @@ +% Copyright (C) 2001-2012 Artifex Software, Inc. +% All Rights Reserved. +% +% This software is provided AS-IS with no warranty, either express or +% implied. +% +% This software is distributed under license and may not be copied, +% modified or distributed except as expressly authorized under the terms +% of the license contained in the file LICENSE in this distribution. +% +% Refer to licensing information at http://www.artifex.com or contact +% Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, San Rafael, +% CA 94903, U.S.A., +1(415)492-9861, for further information. +% + +% Initialization file for Type 32 fonts. + +% ------ Type 32 fonts ------ % + +% We need LanguageLevel 2 or higher in order to have defineresource. +languagelevel dup 2 .max .setlanguagelevel + +/BitmapFontInit mark + +/.makeglyph32 systemdict /.makeglyph32 get +systemdict /.makeglyph32 .undef + +/addglyph { % ([wx wy llx lly urx ury] | + % [w0x w0y llx lly urx ury w1x w1y vx vy]) + % <bitmap> <cid> <type32font> addglyph - + 1 index dup 2 index .removeglyphs + 22 string .makeglyph32 + % Stack: metrics bitmap cid font metstr + 3 index () ne { + % Use G4 encoding to compress the bitmap. + % Define a string large enough to hold the metrics, + % an uncompressed bitmap (worst case = 5x expansion), + % and the 2 RTC codes (3 bytes). + dup length 4 index length 5 mul add 10 add + 65535 .min string + % Stack: metrics bitmap cid font metstr buffer + dup 0 3 index putinterval + dup 2 index length 1 index length 1 index sub getinterval + % Stack: metrics bitmap cid font metstr buffer bitbuf + mark /Columns 8 index dup 4 get exch 2 get sub + /Rows 10 index dup 5 get exch 3 get sub + /K -1 /EndOfBlock //true /BlackIs1 //true + .dicttomark /CCITTFaxEncode filter + % Stack: metrics bitmap cid font metstr buffer filter + dup 6 index writestring closefile + % Find the end of the data by scanning backwards for the RTC. + % There are 2 RTCs x 12 bits = 3 bytes to remove. + { + dup dup length 1 sub get 0 ne { exit } if + 0 1 index length 1 sub getinterval + } loop + 0 1 index length 3 sub getinterval + exch pop % metstr + } if + 1 index /CharStrings get 3 index 3 -1 roll put + pop pop pop pop +} obind + +/removeall { % <type32font> removeall - + 0 65535 2 index removeglyphs pop +} obind + +/.removeglyphs systemdict /.removeglyphs get +systemdict /.removeglyphs .undef + +/removeglyphs { % <cid_min> <cid_max> <type32font> .removeglyphs - + 3 copy .removeglyphs + dup /CharStrings get dup { + % Stack: cidmin cidmax font CharStrings cid bitmap + pop dup 5 index ge { dup 4 index le { 2 copy undef } if } if pop + } forall pop pop pop pop +} obind + +.dicttomark /ProcSet defineresource pop + +/.cidfonttypes where { pop } { /.cidfonttypes 6 dict def } ifelse +.cidfonttypes begin + +4 % CIDFontType 4 = FontType 32 +{ dup /FontType 32 .forceput + dup /CharStrings 20 dict .forceput + 1 index exch .buildfont32 exch pop +} bind def + +end % .cidfonttypes + +% Define the BuildGlyph procedure. +% Since Type 32 fonts are indexed by CID, there is no BuildChar procedure. +% The name %Type32BuildGlyph is known to the interpreter. +(%Type32BuildGlyph) cvn { % <font> <cid> %Type32BuildGlyph - + 1 index /CharStrings get + % Stack: font cid CharStrings + dup 2 index .knownget { + exch pop + } { + 0 .knownget not { + exch pop % Stack: cid + .getshowoperator /invalidfont signalerror + } if + } ifelse + % Stack: font cid cstr + dup //.getmetrics32 % use // because of .undef below + dup 14 gt { + 8 index 8 index 13 3 roll setcachedevice2 + } { + 4 index 4 index 9 3 roll setcachedevice + } ifelse + % Stack: font cid cstr w h nmetrics llx lly + 6 -1 roll 4 -1 roll 1 index length 1 index sub getinterval + % Stack: font cid w h llx lly bitstr + dup () eq { + pop pop pop + } { + mark /Columns 6 index /Rows 7 index /K -1 /EndOfBlock //false /BlackIs1 //true + .dicttomark /CCITTFaxDecode filter 4 index 4 index //true + % Stack: font cid w h llx lly filter w h //true + [ 1 0 0 1 11 -2 roll exch neg exch neg ] 5 -1 roll imagemask + } ifelse + pop pop pop pop +} .bind def + +systemdict /.getmetrics32 .undef + +buildfontdict 32 /.buildfont32 cvx put + +32 dup /FontType defineresource pop + +.setlanguagelevel |