-->
Page 232
HNB | Helvetica-Narrow-Bold |
HNBI | Helvetica-Narrow-BoldOblique |
NR | NewCenturySchlbk-Roman |
NI | NewCenturySchlbk-Italic |
NB | NewCenturySchlbk-Bold |
NBI | NewCenturySchlbk-BoldItalic |
PR | Palatino-Roman |
PI | Palatino-Italic |
PB | Palatino-Bold |
PBI | Palatino-BoldItalic |
TR | Times-Roman |
TI | Times-Italic |
TB | Times-Bold |
TBI | Times-BoldItalic |
There is also the following font which is not a member of a family:
ZCMI | ZapfChancery-MediumItalic |
There are also some special fonts called SS and S. Zapf Dingbats is available as ZD and a reversed version of ZapfDingbats (with symbols pointing in the opposite direction) is available as ZDR; most characters in these fonts are unnamed and must be accessed using \N.
grops understands various X commands produced using the \X escape sequence; grops will only interpret commands that begin with a ps: tag.
\X'ps:execcode' | This executes the arbitrary PostScript commands in code. The PostScript currentpoint will be set to the position of the \nX command before executing code. The origin will be at the top left corner of the page, and y coordinates will increase down the page. A procedure u will be defined that converts groff units to the coordinate system in effect. For example, |
\X'ps: exec \nx u 0 rlineto stroke' | |
will draw a horizontal line one inch long.
code may make changes to the graphics state, but
any changes will persist only to the end of the page. A dictionary containing the definitions specified
by def and mdef will be on top of the dictionary stack. If your code adds definitions to this
dictionary, you should allocate space for them using
\X'psmdefn'. Anyefinitions will persist only until the
end of the page. If you use the \Y escape sequence with an argument that names a macro,
code can extend over multiple lines. For example,
.nr x 1i .de y ps: exec \nx u 0 rlineto stroke .. \Yy | |
is another way to draw a horizontal line one inch long. | |
\X'ps:filename' | This is the same as the exec command except that the PostScript code is read from file name. |
\X'ps:defcode' | Place a PostScript definition contained in code in the prologue. There should be at most one definition per \X command. Long definitions can be split over several \X commands; all the code arguments are simply joined together separated by newlines. The definitions are placed in a dictionary which is automatically pushed on the dictionary stack when an exec command is executed. If you use the \Y escape sequence with an argument that names a macro, code can extend over multiple lines. |
Page 233
\X'ps:mdefncode' | Like def, except that code may contain up to n definitions. grops needs to know how many definitions code contains so that it can create an appropriately sized PostScript dictionary to contain them. |
\X'ps:importfile | Import a PostScript graphic from file. The arguments llx, lly, urx, and ury give the bounding box |
llxllyurxurywidth | of the graphic in the default PostScript coordinate system; they should all be integers; llx and lly |
[height]' | are the x and y coordinates of the lower-left corner of the graphic; urx and ury are the x and y coordinates of the upper-right corner of the graphic; width and height are integers that give the desired width and height in groff units of the graphic. The graphic will be scaled so that it has this width and height and translated so that the lower-left corner of the graphic is located at the position associated with \X command. If the height argument is omitted, it will be scaled uniformly in the x and y directions so that it has the specified width. Note that the contents of the \X command are not interpreted by troff; so vertical space for the graphic is not automatically added, and the width and height arguments are not allowed to have attached scaling indicators. If the PostScript file complies with the Adobe Document Structuring Conventions and contains a %%BoundingBox comment, then the bounding box can be automatically extracted from within groff by using the sy request to run the psbb command. |
The _mps macros (which are automatically loaded when grops is run by the groff command) include a PSPIC macro that allows a picture to be easily imported. This has the format:
.PSPIC file [ _L j -R j _I n ][width [ height ]]
file is the name of the file containing the illustration; width and height give the desired width and height of the graphic. The width and height arguments may have scaling indicators attached; the default scaling indicator is i. This macro will scale the graphic uniformly in the x and y directions so that it is no more than width wide and height high. By default, the graphic will be horizontally centered. The _L and _R cause the graphic to be left-aligned and right-aligned, respectively. The _I option causes the graphic to be indented by n.
\X'ps: invis', \X'ps: endinvis' | No output will be generated for text and drawing commands that are bracketed with these \X commands. These commands are intended for use when output from troff will be previewed before being processed with grops; if the previewer is unable to display certain characters or other constructs, then other substitute characters or constructs can be used for previewing by bracketing them with these \X commands. |
For example, gxditview is not able to display a proper \(em character because the standard X11 fonts do not provide it; this problem can be overcome by executing the following request:
.char \(em \X'ps: invis'\ \Z'\v'-.25m'\h'.05m'\D'l .9m 0'\h'.05m"\ \X'ps: endinvis'\(em
In this case, gxditview will be unable to display the \(em character and will draw the line, whereas grops will print the \(em character and ignore the line.
The input to grops must be in the format output by gtroff(1). This is described in groff_out(1). In addition, the device and font description files for the device used must meet certain requirements. The device and font description files supplied for ps device meet all these requirements. afmtodit(1) can be used to create font files from AFM files. The resolution must be an integer multiple of 72 times the sizescale. The ps device uses a resolution of 72000 and a sizescale of 1000. The device description file should contain a command:
paperlengthn
which says that output should be generated that is suitable for printing on a page whose length is n machine units. Each font description file must contain a command:
internalnamepsname
which says that the PostScript name of the font is psname. It may also contain a command:
encodingenc file