|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T r
Length: 3988 (0xf94) Types: TextFile Names: »reencode.psr«
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12 └─⟦af5ba6c8e⟧ »unix3.0/DVIWARE.tar.Z« └─⟦ca79c7339⟧ └─⟦this⟧ »DVIware/laser-setters/dvi-to-ps/TeXPS/dvitps/psr/reencode.psr«
% Copyright (c) 1988 Stephan v. Bechtolsheim % This file is part of the TeXPS Software Package. % The TeXPS Software Package is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY. No author or distributor % accepts responsibility to anyone for the consequences of using it % or for whether it serves any particular purpose or works at all, % unless he says so in writing. Refer to the TeXPS Software Package % General Public License for full details. % Everyone is granted permission to copy, modify and redistribute % the TeXPS Software Package, but only under the conditions described in the % TeXPS Software Package General Public License. A copy of this license is % supposed to have been given to you along with TeXPS Software Package so you % can know your rights and responsibilities. It should be in a % file named CopyrightLong. Among other things, the copyright notice % and this notice must be preserved on all copies. % Program 18 of the PostScript Cookbook, Page 211 % Modified for the needs of including it into the PostScript % stuff of TeX. /reencodedict 20 dict def % get us a temporary directory % @ReEncodeSmall % ============== % font-name new-font-name encoding-names-vector encoding-codes-vector % @ReEncodeSmall % % An encoding change vector looks as follows: % [ 8#code-1 /name-1 % 8#code-2 /name-2 % 8#code-3 /name-3 % ..... % ] % We have to build it from the encoding-names-vector and % the encoding-codes-vector. /@ReEncodeSmall { reencodedict begin /encoding-codes-vector exch def /encoding-names-vector exch def /new-font-name exch def /base-font-name exch def #ifdef DEBUG encoding-codes-vector length encoding-names-vector length ne {(@ReEncodeSmall: unequal length of names and codes\n) print flush quit} if #endif % Allocate the encodings-change-vector /encoding-change-vector encoding-codes-vector length 2 mul array def % prepare arguments for 'for' loop 0 1 encoding-codes-vector length 1 sub { /LoopCounter exch def % Now we can access the loop counter easier encoding-codes-vector LoopCounter get encoding-change-vector LoopCounter 2 mul 3 -1 roll put encoding-names-vector LoopCounter get encoding-change-vector LoopCounter 2 mul 1 add 3 -1 roll put } for % /encoding-change-vector exch def #ifdef DEBUG (@ReEncodeSmall: name of new font: ) print new-font-name 50 string cvs print (\n) print flush #endif /base-fontdict base-font-name findfont def % get font dictionary you % start out with /newfont base-fontdict maxlength dict def % Create a new dictionary, % same length base-fontdict { exch dup /FID ne % (Looping\n) print flush { % dup % duplicate Key for printing % (Key being copied: ) print % ( ) cvs print % (\n) print flush dup /Encoding eq { exch dup length array copy % make a COPY of the % encoding vector elements newfont 3 1 roll put }{ exch newfont 3 1 roll put % the rest is easy to copy } ifelse }{ pop pop % do not copy FID } ifelse } forall newfont /FontName new-font-name put % put in the new name % Now we start to modify the encoding vector % The following four lines are the original code, which was in here % encoding-change-vector aload pop % encoding-change-vector length 2 idiv % { newfont /Encoding get 3 1 roll put } % repeat % Somebody's PS printer stack was overflowing, so this is the % new code instead, which should work for everybody. encoding-change-vector length 2 idiv 1 sub -1 0 { newfont /Encoding get exch 2 mul dup encoding-change-vector exch get exch 1 add encoding-change-vector exch get put } for % That's it as far as this modification is concerned. new-font-name newfont definefont % Declare the new font new-font-name end % Dictionary from define font still on stack exch def % @PrintFontDicts } def