% % wmode.ps - define /setmetrics2 operator % % Aug.28,1991 Programmed by N.Katayama % % Akira Tanaka modified for gs4.03/VFlib support. 1996/10/17 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Metrics Utility Operator % Execute this in the BuildChar procedure instead of setcachedevice2 % %/SETMETRICS2 14 dict def % private dictionary % % w0x w0y llx lly urx ury w1x w1y vx vy char setmetrics2 - % /setmetrics2 { currentdict 14 dict begin /font exch def /char exch def /vy exch def /vx exch def /w1y exch def /w1x exch def /ury exch def /urx exch def /lly exch def /llx exch def /w0y exch def /w0x exch def /old-llx llx def /old-lly lly def % Metrics font /Metrics 2 copy known { get char 2 copy known { get dup type dup /integertype eq { /w0x 2 index def } if dup /realtype eq { /w0x 2 index def } if dup /arraytype eq { 1 index dup length 2 eq { /llx 1 index 0 get def /urx llx old-llx sub urx add def /w0x 1 index 1 get def } if dup length 4 eq { /llx 1 index 0 get def /lly 1 index 1 get def /urx llx old-llx sub urx add def /ury lly old-lly sub ury add def /w0x 1 index 2 get def /w0y 1 index 3 get def } if pop } if pop pop }{ pop pop } ifelse }{ pop pop } ifelse % Metrics2 font /Metrics2 2 copy known { get char 2 copy known { get dup 0 get /w1x exch def dup 1 get /w1y exch def dup 2 get /vx exch def dup 3 get /vy exch def pop }{ pop pop } ifelse }{ pop pop } ifelse % CDevProc font /CDevProc 2 copy known { get w0x w0y llx lly urx ury w1x w1y vx vy char 12 -1 roll exec /vy exch def /vx exch def /w1y exch def /w1x exch def /ury exch def /urx exch def /lly exch def /llx exch def /w0y exch def /w0x exch def }{ pop pop } ifelse % setcachedevice2 w0x w0y llx lly urx ury w1x w1y vx vy setcachedevice2 % translate llx old-llx sub lly old-lly sub translate end } bind def