Variable: ebnf-eps-prologue
ebnf-eps-prologue is a variable defined in ebnf2ps.el.gz.
Value
"\n/#ebnf2ps#dict 230 dict def\n#ebnf2ps#dict begin\n\n% Initialize variables to avoid name-conflicting with document variables.\n% This is the case when using `bind' operator.\n/-fillp- 0 def /h 0 def\n/-ox- 0 def /half 0 def\n/-oy- 0 def /height 0 def\n/-save- 0 def /ow 0 def\n/Ascent 0 def /quarter 0 def\n/Descent 0 def /rXX 0 def\n/Effect 0 def /rYY 0 def\n/FontHeight 0 def /rwidth 0 def\n/LineThickness 0 def /rxx 0 def\n/OverlinePosition 0 def /ryy 0 def\n/SpaceBackground 0 def /shadow 0 def\n/StrikeoutPosition 0 def /shape 0 def\n/UnderlinePosition 0 def /shapecolor 0 def\n/XBox 0 def /space 0 def\n/XX 0 def /st 1 string def\n/Xshadow 0 def /w 0 def\n/YBox 0 def /width 0 def\n/YY 0 def /xi 0 def\n/Yshadow 0 def /xo 0 def\n/arrow 0 def /xp 0 def\n/bg false def /xt 0 def\n/bgcolor 0 def /xw 0 def\n/bordercolor 0 def /xx 0 def\n/borderwidth 0 def /yi 0 def\n/dd 0 def /yo 0 def\n/entry 0 def /yp 0 def\n/foreground 0 def /yt 0 def\n /yy 0 def\n\n\n% ISOLatin1Encoding stolen from ps_init.ps in GhostScript 2.6.1.4:\n/ISOLatin1Encoding where\n{pop}\n{% -- The ISO Latin-1 encoding vector isn't known, so define it.\n % -- The first half is the same as the standard encoding,\n % -- except for minus instead of hyphen at code 055.\n /ISOLatin1Encoding\n StandardEncoding 0 45 getinterval aload pop\n /minus\n StandardEncoding 46 82 getinterval aload pop\n %*** NOTE: the following are missing in the Adobe documentation,\n %*** but appear in the displayed table:\n %*** macron at 0225, dieresis at 0230, cedilla at 0233, space at 0240.\n % 0200 (128)\n /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef\n /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef\n /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent\n /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron\n % 0240 (160)\n /space /exclamdown /cent /sterling\n /currency /yen /brokenbar /section\n /dieresis /copyright /ordfeminine /guillemotleft\n /logicalnot /hyphen /registered /macron\n /degree /plusminus /twosuperior /threesuperior\n /acute /mu /paragraph /periodcentered\n /cedilla /onesuperior /ordmasculine /guillemotright\n /onequarter /onehalf /threequarters /questiondown\n % 0300 (192)\n /Agrave /Aacute /Acircumflex /Atilde\n /Adieresis /Aring /AE /Ccedilla\n /Egrave /Eacute /Ecircumflex /Edieresis\n /Igrave /Iacute /Icircumflex /Idieresis\n /Eth /Ntilde /Ograve /Oacute\n /Ocircumflex /Otilde /Odieresis /multiply\n /Oslash /Ugrave /Uacute /Ucircumflex\n /Udieresis /Yacute /Thorn /germandbls\n % 0340 (224)\n /agrave /aacute /acircumflex /atilde\n /adieresis /aring /ae /ccedilla\n /egrave /eacute /ecircumflex /edieresis\n /igrave /iacute /icircumflex /idieresis\n /eth /ntilde /ograve /oacute\n /ocircumflex /otilde /odieresis /divide\n /oslash /ugrave /uacute /ucircumflex\n /udieresis /yacute /thorn /ydieresis\n 256 packedarray def\n}ifelse\n\n/reencodeFontISO %def\n{dup\n length 12 add dict % Make a new font (a new dict the same size\n % as the old one) with room for our new symbols.\n\n begin % Make the new font the current dictionary.\n {1 index /FID ne\n {def}{pop pop}ifelse\n }forall % Copy each of the symbols from the old dictionary\n % to the new one except for the font ID.\n\n currentdict /FontType get 0 ne\n {/Encoding ISOLatin1Encoding def}if % Override the encoding with\n % the ISOLatin1 encoding.\n\n % Use the font's bounding box to determine the ascent, descent,\n % and overall height; don't forget that these values have to be\n % transformed using the font's matrix.\n\n % ^ (x2 y2)\n % | |\n % | v\n % | +----+ - -\n % | | | ^\n % | | | | Ascent (usually > 0)\n % | | | |\n % (0 0) -> +--+----+-------->\n % | | |\n % | | v Descent (usually < 0)\n % (x1 y1) --> +----+ - -\n\n currentdict /FontType get 0 ne\n {/FontBBox load aload pop % -- x1 y1 x2 y2\n FontMatrix transform /Ascent exch def pop\n FontMatrix transform /Descent exch def pop}\n {/PrimaryFont FDepVector 0 get def\n PrimaryFont /FontBBox get aload pop\n PrimaryFont /FontMatrix get transform /Ascent exch def pop\n PrimaryFont /FontMatrix get transform /Descent exch def pop\n }ifelse\n\n /FontHeight Ascent Descent sub def % use `sub' because descent < 0\n\n % Define these in case they're not in the FontInfo\n % (also, here they're easier to get to).\n /UnderlinePosition Descent 0.70 mul def\n /OverlinePosition Descent UnderlinePosition sub Ascent add def\n /StrikeoutPosition Ascent 0.30 mul def\n /LineThickness FontHeight 0.05 mul def\n /Xshadow FontHeight 0.08 mul def\n /Yshadow FontHeight -0.09 mul def\n /SpaceBackground Descent neg UnderlinePosition add def\n /XBox Descent neg def\n /YBox LineThickness 0.7 mul def\n\n currentdict % Leave the new font on the stack\n end % Stop using the font as the current dictionary\n definefont % Put the font into the font dictionary\n pop % Discard the returned font\n}bind def\n\n% Font definition\n/DefFont{findfont exch scalefont reencodeFontISO}def\n\n% Font selection\n/F\n{findfont\n dup /Ascent get /Ascent exch def\n dup /Descent get /Descent exch def\n dup /FontHeight get /FontHeight exch def\n dup /UnderlinePosition get /UnderlinePosition exch def\n dup /OverlinePosition get /OverlinePosition exch def\n dup /StrikeoutPosition get /StrikeoutPosition exch def\n dup /LineThickness get /LineThickness exch def\n dup /Xshadow get /Xshadow exch def\n dup /Yshadow get /Yshadow exch def\n dup /SpaceBackground get /SpaceBackground exch def\n dup /XBox get /XBox exch def\n dup /YBox get /YBox exch def\n setfont\n}def\n\n/BG\n{dup /bg exch def\n {mark 4 1 roll ]}\n {[ 1.0 1.0 1.0 ]}\n ifelse\n /bgcolor exch def\n}def\n\n% stack: --\n/FillBgColor{bgcolor aload pop setrgbcolor fill}bind def\n\n% stack: fill-or-not lower-x lower-y upper-x upper-y |- --\n/doRect\n{/rYY exch def\n /rXX exch def\n /ryy exch def\n /rxx exch def\n gsave\n newpath\n rXX rYY moveto\n rxx rYY lineto\n rxx ryy lineto\n rXX ryy lineto\n closepath\n % top of stack: fill-or-not\n {FillBgColor}\n {LineThickness setlinewidth stroke}\n ifelse\n grestore\n}bind def\n\n% stack: string fill-or-not |- --\n/doOutline\n{/-fillp- exch def\n /-ox- currentpoint /-oy- exch def def\n gsave\n LineThickness setlinewidth\n {st 0 3 -1 roll put\n st dup true charpath\n -fillp- {gsave FillBgColor grestore}if\n stroke stringwidth\n -oy- add /-oy- exch def\n -ox- add /-ox- exch def\n -ox- -oy- moveto\n }forall\n grestore\n -ox- -oy- moveto\n}bind def\n\n% stack: fill-or-not delta |- --\n/doBox\n{/dd exch def\n xx XBox sub dd sub yy YBox sub dd sub\n XX XBox add dd add YY YBox add dd add\n doRect\n}bind def\n\n% stack: string |- --\n/doShadow\n{gsave\n Xshadow Yshadow rmoveto\n false doOutline\n grestore\n}bind def\n\n% stack: position |- --\n/Hline\n{currentpoint exch pop add dup\n gsave\n newpath\n xx exch moveto\n XX exch lineto\n closepath\n LineThickness setlinewidth stroke\n grestore\n}bind def\n\n% stack: string |- --\n% effect: 1 - underline 2 - strikeout 4 - overline\n% 8 - shadow 16 - box 32 - outline\n/S\n{/xx currentpoint dup Descent add /yy exch def\n Ascent add /YY exch def def\n dup stringwidth pop xx add /XX exch def\n Effect 8 and 0 ne\n {/yy yy Yshadow add def\n /XX XX Xshadow add def\n }if\n bg\n {true\n Effect 16 and 0 ne\n {SpaceBackground doBox}\n {xx yy XX YY doRect}\n ifelse\n }if % background\n Effect 16 and 0 ne{false 0 doBox}if % box\n Effect 8 and 0 ne{dup doShadow}if % shadow\n Effect 32 and 0 ne\n {true doOutline} % outline\n {show} % normal text\n ifelse\n Effect 1 and 0 ne{UnderlinePosition Hline}if % underline\n Effect 2 and 0 ne{StrikeoutPosition Hline}if % strikeout\n Effect 4 and 0 ne{OverlinePosition Hline}if % overline\n}bind def\n\n"
Documentation
EBNF EPS prologue.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/ebnf2ps.el.gz
(defconst ebnf-eps-prologue
"
/#ebnf2ps#dict 230 dict def
#ebnf2ps#dict begin
% Initialize variables to avoid name-conflicting with document variables.
% This is the case when using `bind' operator.
/-fillp- 0 def /h 0 def
/-ox- 0 def /half 0 def
/-oy- 0 def /height 0 def
/-save- 0 def /ow 0 def
/Ascent 0 def /quarter 0 def
/Descent 0 def /rXX 0 def
/Effect 0 def /rYY 0 def
/FontHeight 0 def /rwidth 0 def
/LineThickness 0 def /rxx 0 def
/OverlinePosition 0 def /ryy 0 def
/SpaceBackground 0 def /shadow 0 def
/StrikeoutPosition 0 def /shape 0 def
/UnderlinePosition 0 def /shapecolor 0 def
/XBox 0 def /space 0 def
/XX 0 def /st 1 string def
/Xshadow 0 def /w 0 def
/YBox 0 def /width 0 def
/YY 0 def /xi 0 def
/Yshadow 0 def /xo 0 def
/arrow 0 def /xp 0 def
/bg false def /xt 0 def
/bgcolor 0 def /xw 0 def
/bordercolor 0 def /xx 0 def
/borderwidth 0 def /yi 0 def
/dd 0 def /yo 0 def
/entry 0 def /yp 0 def
/foreground 0 def /yt 0 def
/yy 0 def
% ISOLatin1Encoding stolen from ps_init.ps in GhostScript 2.6.1.4:
/ISOLatin1Encoding where
{pop}
{% -- The ISO Latin-1 encoding vector isn't known, so define it.
% -- The first half is the same as the standard encoding,
% -- except for minus instead of hyphen at code 055.
/ISOLatin1Encoding
StandardEncoding 0 45 getinterval aload pop
/minus
StandardEncoding 46 82 getinterval aload pop
%*** NOTE: the following are missing in the Adobe documentation,
%*** but appear in the displayed table:
%*** macron at 0225, dieresis at 0230, cedilla at 0233, space at 0240.
% 0200 (128)
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent
/dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron
% 0240 (160)
/space /exclamdown /cent /sterling
/currency /yen /brokenbar /section
/dieresis /copyright /ordfeminine /guillemotleft
/logicalnot /hyphen /registered /macron
/degree /plusminus /twosuperior /threesuperior
/acute /mu /paragraph /periodcentered
/cedilla /onesuperior /ordmasculine /guillemotright
/onequarter /onehalf /threequarters /questiondown
% 0300 (192)
/Agrave /Aacute /Acircumflex /Atilde
/Adieresis /Aring /AE /Ccedilla
/Egrave /Eacute /Ecircumflex /Edieresis
/Igrave /Iacute /Icircumflex /Idieresis
/Eth /Ntilde /Ograve /Oacute
/Ocircumflex /Otilde /Odieresis /multiply
/Oslash /Ugrave /Uacute /Ucircumflex
/Udieresis /Yacute /Thorn /germandbls
% 0340 (224)
/agrave /aacute /acircumflex /atilde
/adieresis /aring /ae /ccedilla
/egrave /eacute /ecircumflex /edieresis
/igrave /iacute /icircumflex /idieresis
/eth /ntilde /ograve /oacute
/ocircumflex /otilde /odieresis /divide
/oslash /ugrave /uacute /ucircumflex
/udieresis /yacute /thorn /ydieresis
256 packedarray def
}ifelse
/reencodeFontISO %def
{dup
length 12 add dict % Make a new font (a new dict the same size
% as the old one) with room for our new symbols.
begin % Make the new font the current dictionary.
{1 index /FID ne
{def}{pop pop}ifelse
}forall % Copy each of the symbols from the old dictionary
% to the new one except for the font ID.
currentdict /FontType get 0 ne
{/Encoding ISOLatin1Encoding def}if % Override the encoding with
% the ISOLatin1 encoding.
% Use the font's bounding box to determine the ascent, descent,
% and overall height; don't forget that these values have to be
% transformed using the font's matrix.
% ^ (x2 y2)
% | |
% | v
% | +----+ - -
% | | | ^
% | | | | Ascent (usually > 0)
% | | | |
% (0 0) -> +--+----+-------->
% | | |
% | | v Descent (usually < 0)
% (x1 y1) --> +----+ - -
currentdict /FontType get 0 ne
{/FontBBox load aload pop % -- x1 y1 x2 y2
FontMatrix transform /Ascent exch def pop
FontMatrix transform /Descent exch def pop}
{/PrimaryFont FDepVector 0 get def
PrimaryFont /FontBBox get aload pop
PrimaryFont /FontMatrix get transform /Ascent exch def pop
PrimaryFont /FontMatrix get transform /Descent exch def pop
}ifelse
/FontHeight Ascent Descent sub def % use `sub' because descent < 0
% Define these in case they're not in the FontInfo
% (also, here they're easier to get to).
/UnderlinePosition Descent 0.70 mul def
/OverlinePosition Descent UnderlinePosition sub Ascent add def
/StrikeoutPosition Ascent 0.30 mul def
/LineThickness FontHeight 0.05 mul def
/Xshadow FontHeight 0.08 mul def
/Yshadow FontHeight -0.09 mul def
/SpaceBackground Descent neg UnderlinePosition add def
/XBox Descent neg def
/YBox LineThickness 0.7 mul def
currentdict % Leave the new font on the stack
end % Stop using the font as the current dictionary
definefont % Put the font into the font dictionary
pop % Discard the returned font
}bind def
% Font definition
/DefFont{findfont exch scalefont reencodeFontISO}def
% Font selection
/F
{findfont
dup /Ascent get /Ascent exch def
dup /Descent get /Descent exch def
dup /FontHeight get /FontHeight exch def
dup /UnderlinePosition get /UnderlinePosition exch def
dup /OverlinePosition get /OverlinePosition exch def
dup /StrikeoutPosition get /StrikeoutPosition exch def
dup /LineThickness get /LineThickness exch def
dup /Xshadow get /Xshadow exch def
dup /Yshadow get /Yshadow exch def
dup /SpaceBackground get /SpaceBackground exch def
dup /XBox get /XBox exch def
dup /YBox get /YBox exch def
setfont
}def
/BG
{dup /bg exch def
{mark 4 1 roll ]}
{[ 1.0 1.0 1.0 ]}
ifelse
/bgcolor exch def
}def
% stack: --
/FillBgColor{bgcolor aload pop setrgbcolor fill}bind def
% stack: fill-or-not lower-x lower-y upper-x upper-y |- --
/doRect
{/rYY exch def
/rXX exch def
/ryy exch def
/rxx exch def
gsave
newpath
rXX rYY moveto
rxx rYY lineto
rxx ryy lineto
rXX ryy lineto
closepath
% top of stack: fill-or-not
{FillBgColor}
{LineThickness setlinewidth stroke}
ifelse
grestore
}bind def
% stack: string fill-or-not |- --
/doOutline
{/-fillp- exch def
/-ox- currentpoint /-oy- exch def def
gsave
LineThickness setlinewidth
{st 0 3 -1 roll put
st dup true charpath
-fillp- {gsave FillBgColor grestore}if
stroke stringwidth
-oy- add /-oy- exch def
-ox- add /-ox- exch def
-ox- -oy- moveto
}forall
grestore
-ox- -oy- moveto
}bind def
% stack: fill-or-not delta |- --
/doBox
{/dd exch def
xx XBox sub dd sub yy YBox sub dd sub
XX XBox add dd add YY YBox add dd add
doRect
}bind def
% stack: string |- --
/doShadow
{gsave
Xshadow Yshadow rmoveto
false doOutline
grestore
}bind def
% stack: position |- --
/Hline
{currentpoint exch pop add dup
gsave
newpath
xx exch moveto
XX exch lineto
closepath
LineThickness setlinewidth stroke
grestore
}bind def
% stack: string |- --
% effect: 1 - underline 2 - strikeout 4 - overline
% 8 - shadow 16 - box 32 - outline
/S
{/xx currentpoint dup Descent add /yy exch def
Ascent add /YY exch def def
dup stringwidth pop xx add /XX exch def
Effect 8 and 0 ne
{/yy yy Yshadow add def
/XX XX Xshadow add def
}if
bg
{true
Effect 16 and 0 ne
{SpaceBackground doBox}
{xx yy XX YY doRect}
ifelse
}if % background
Effect 16 and 0 ne{false 0 doBox}if % box
Effect 8 and 0 ne{dup doShadow}if % shadow
Effect 32 and 0 ne
{true doOutline} % outline
{show} % normal text
ifelse
Effect 1 and 0 ne{UnderlinePosition Hline}if % underline
Effect 2 and 0 ne{StrikeoutPosition Hline}if % strikeout
Effect 4 and 0 ne{OverlinePosition Hline}if % overline
}bind def
"
"EBNF EPS prologue.")