Appendix C Printer Font Metric Data Structure for the Universal Printer Driver
The following structure is used by all Printer Font Metrics (PFM) files
used by drivers that are supported by the Microsoft Windows Universal
Driver.
typedef struct
{
short sSize; // size of this structure.
short iVersion; // version number.
WORD fCaps; // members describing capabilities.
short iFontID; // unique font ID defined by the driver.
short sYAdjust; // adjust y position before output character
// used by double height character.
short sYMoved; // cursor moved after printing this font.
short iTransTab; // index to translation table resource.
short sUnderlinePos;
short sDoubleUnderlinePos;
short sStrikeThruPos;
LOCD locdSelect; // long offset to command descriptor.
LOCD locdUnSelect;// long offset to command descriptor to
// cancel selection.
WORD wPrivateData;// private data to be used by minidriver.
short sShift; // number of pixels to shift each character.
} DRIVERINFO;
Member Description
---------------------------------------------------------------------------
sSize Specifies the size of the structure.
iVersion Specifies the version number of this structure. This
specification describes version 0x0100 (implied
decimal for version 1.00).
fCaps Specifies the bit flags describing capabilities.
Value Meaning
-----------------------------------------------------
DF_NOITALIC This font cannot be italicized
using FONTSIMULATION.
DF_NOUNDER This font cannot be underlined
using FONTSIMULATION.
DF_XM_CR A carriage return is sent after
using this font.
DF_NOBOLD This font cannot be made bold using
FONTSIMULATION.
DF_NO2UNDERLINE This font cannot produce double
underlines using FONTSIMULATION.
DF_NOSTRIKETHRU This font cannot be struck through
using FONTSIMULATION.
DF_BKSP_OK This fonts uses a CTT_WTYPE_PAIRED
character-translation table to
determine how to overstrike
characters. If it is set, it is
assumed that a single backspace
character can be used to move the
cursor to the start of the bounding
box of the previous character prior
to overstriking. If it is not set,
it is assumed that explicit
x-movement commands are required to
position the cursor for an
overstrike. If the font does not
use a CTT_WTYPE_PAIRED translation
table, this flag is ignored.
iFontID Reserved; do not use.
sYAdjust Specifies the distance to move the current y
position, as expressed in master units, before
printing characters in this font and size. This
member is primarily used for double-height
characters, and the specified distance to align the
baseline accurately.
sYMoved Specifies the distance to move the y position, as
expressed in master units, after printing with this
font and size. This member is also used to compensate
for fonts that do not restore the cursor to the
correct y position. It is primarily used for
double-height characters.
iTransTab Specifies the index to character-translation table
resource for this font. This may zero, a positive, or
negative number. If this is zero, use the
character-translation table referred to in the
ModelData dialog box for this model. If this is a
negative number, the Universal Printer Driver will
take the absolute value and use its own
character-translation table resource with this ID. If
this is a positive value, the Universal Printer
Driver will use the driver-defined
character-translation table resource with this ID
value.
sUnderlinePos Specifies the position of the hardware underline
created by FS_OCD_ST_UNDERLINE_ON from the bottom of
the character-bounding box. This member is measured
in master units.
sDoubleUnderlinePos Specifies the position of the hardware double
underline created by FS_OCD_ST_DOUBLEUNDERLINE_ON
from the bottom of the character-bounding box. This
member is measured in master units.
sStrikeThruPos Specifies the position of the hardware strikethrough
created by FS_OCD_ST_STRIKETHRU from the bottom of
the character-bounding box. This member is measured
in master units.
locdSelect Specifies the long offset to the command descriptor
to select this font.
locdUnSelect Specifies the long offset to the command descriptor
to cancel the selection of this font. This member is
NOOCD if not used.
wPrivateData Specifies the private data to be used by the
minidriver.
sShift Specifies the number of pixels to shift each
character to the left or right. Negative numbers
shift to the right; positive numbers shift to the
left.