Mercurial > emacs
view etc/ps-prin0.ps @ 29004:383e4e21306a
(LEADING_CODE_8_BIT_CONTROL, CHARSET_8_BIT_CONTROL,
CHARSET_8_BIT_GRAPHIC): New macros.
(SINGLE_BYTE_CHAR_P): Make it faster by using casting.
(CHARSET_ISO_GRAPHIC_PLANE): Use XINT instead of XFASTINT.
(CHARSET_REVERSE_CHARSET): Likewise.
(CHARSET_VALID_P): Handle new charsets; eight-bit-control and
eight-bit-graphic.
(BYTES_BY_CHAR_HEAD, WIDTH_BY_CHAR_HEAD): Optimize for ASCII.
(CHAR_CHARSET, MAKE_CHAR, SPLIT_CHAR, CHAR_BYTES): Likewise.
(PARSE_MULTIBYTE_SEQ) [BYTE_COMBINING_DEBUG]: Abort if we
encounter an invalid multibyte sequence.
(PARSE_MULTIBYTE_SEQ) [not BYTE_COMBINING_DEBUG]: Assume multibyte
sequence is always valid.
(MAKE_NON_ASCII_CHAR, SPLIT_NON_ASCII_CHAR): These macros Deleted.
(UNIBYTE_STR_AS_MULTIBYTE_P, MULTIBYTE_STR_AS_UNIBYTE_P): New
macros.
(CHAR_STRING): For 8-bit characters, call char_to_string.
(INC_POS) [not BYTE_COMBINING_DEBUG]: Faster version. Assume
multibyte sequence is always valid.
(BUF_INC_POS) [not BYTE_COMBINING_DEBUG]: Likewise.
(parse_str_as_multibyte, str_as_multibyte, str_to_multibyte,
str_as_unibyte): Extern them.
(BCOPY_SHORT): Fix a bug.
(CHAR_LEN): This macro deleted. Callers changed to use
CHAR_BYTES.
(FETCH_STRING_CHAR_ADVANCE): Check multibyteness of STRING.
(FETCH_STRING_CHAR_ADVANCE_NO_CHECK): New macro.
(FETCH_CHAR_ADVANCE): Check multibyteness of the current buffer.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Fri, 19 May 2000 23:54:05 +0000 |
parents | a94b3ce0fa8c |
children | 0763a6ed0743 |
line wrap: on
line source
% === BEGIN ps-print prologue 0 %%BeginProcSet: ErrorHandler % Downloaded Error Break-page handler % Adapted from: % PostScript Language Program Design, % Adobe Systems Incorporated. % Appendix A, pages 217-219 /ps$brkpage where{pop} { /ps$brkpage 64 dict def ps$brkpage begin /tx 0 def /ty 0 def /toy 0 def /tox 0 def /prnt{ dup type /stringtype ne{=string cvs}if dup length 6 mul /tx exch def /ty 10 def currentpoint /toy exch def /tox exch def 1 setgray newpath tox toy 2 sub moveto 0 ty rlineto tx 0 rlineto 0 ty neg rlineto closepath fill tox toy moveto 0 setgray show }bind def /nl{currentpoint exch pop lmargin exch moveto 0 -10 rmoveto}def /=={/cp 0 def typeprint nl}def /typeprint{dup type dup currentdict exch known{exec}{unknowntype}ifelse}readonly def /lmargin 72 def /rmargin 72 def /tprint{ dup length cp add rmargin gt{nl /cp 0 def}if dup length cp add /cp exch def prnt }readonly def /cvsprint{=string cvs tprint( )tprint}readonly def /unknowntype{exch pop cvlit(??)tprint cvsprint}readonly def /integertype{cvsprint}readonly def /realtype{cvsprint}readonly def /booleantype{cvsprint}readonly def /operatortype{(//)tprint cvsprint}readonly def /marktype{pop(-mark-)tprint}readonly def /dicttype{pop(-dictionary-)tprint}readonly def /nulltype{pop(-null-)tprint}readonly def /filetype{pop(-filestream-)tprint}readonly def /savetype{pop(-savelevel-)tprint}readonly def /fonttype{pop(-fontid-)tprint}readonly def /nametype{dup xcheck not{(/)tprint}if cvsprint}readonly def /stringtype{ dup rcheck {(\()tprint tprint(\))tprint} {pop(-string-)tprint}ifelse}readonly def /arraytype{ dup rcheck {dup xcheck {({)tprint{typeprint}forall(})tprint} {([)tprint{typeprint}forall(])tprint}ifelse} {pop(-array-)tprint}ifelse}readonly def /packedarraytype{ dup rcheck {dup xcheck {({)tprint{typeprint}forall(})tprint} {([)tprint{typeprint}forall(])tprint}ifelse} {pop(-packedarray-)tprint}ifelse}readonly def /courier /Courier findfont 10 scalefont def /OLDhandleerror errordict /handleerror get def end %ps$brkpage /handleerror{ systemdict begin $error begin ps$brkpage begin newerror {/newerror false store vmstatus pop pop 0 ne{grestoreall}if initgraphics ErrorMessage 1 and 0 ne{ % print on paper courier setfont lmargin 720 moveto (# ERROR: )prnt errorname prnt nl (# OFFENDING COMMAND: )prnt /command load prnt $error /ostack known {nl nl(# STACK:)prnt nl nl $error /ostack get aload length{==}repeat}if $error /errorinfo known {nl nl(# ERRORINFO:)prnt nl nl $error /errorinfo get aload length{==}repeat}if systemdict /showpage get exec}if ErrorMessage 2 and 0 ne{ % send back to printing system (\%\%[ Error: )print errorname =print (; OffendingCommand: )print/command load =print $error /errorinfo known {(; ErrorInfo:)print $error /errorinfo get aload length{( )=print =print}repeat}if ( ]\%\%)= flush (\%\%[ Rest of job is ignored ]\%\%)= flush}if /newerror true store}if end end end stop } % handleerror dup 0 systemdict put % replace name by actual dict object dup 4 ps$brkpage put % replace name by dict object bind readonly errordict 3 1 roll put % put proc in errordict as /handleerror }ifelse %%EndProcSet % operators for language level 2 only (<<)cvn where % << operator {pop/BMark(<<)cvn load def} {/BMark{mark}bind def}ifelse (>>)cvn where % >> operator {pop/EMark(>>)cvn load def} {/EMark{counttomark 2 idiv dup dict begin{def}repeat pop currentdict end}bind def}ifelse /setpagedevice where % setpagedevice {pop} {/setpagedevice{pop}bind def}ifelse /packedarray where % packedarray {pop} {/packedarray{array astore readonly}bind def}ifelse % device dependent operators /DefOp{ dup where{pop pop pop} {exch dup where{pop}{pop/pop}ifelse load def}ifelse}def /duplexmode /setduplexmode DefOp /tumble /settumble DefOp % === END ps-print prologue 0