windows-nt/Source/XPSP1/NT/printscan/print/drivers/usermode/inc/fmoldfm.h

173 lines
5.3 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1996 - 1999 Microsoft Corporation
Module Name:
fmoldmf.h
Abstract:
NT4.0 Font metrics file format.
Structures used to determine the file layout of files generated
by any font installers, and then read by us.
Environment:
Windows NT printer drivers
Revision History:
11/11/96 -eigos-
From NT4.0 header file.
mm/dd/yy -eigos-
Description
--*/
//
// Define the structure that heads each record in the font installer
// files. Basically it contains selection information and offsets
// to the remaining data in this record.
// This structure is actually written to the file. It is also the header
// employed in the font resources in minidrivers - each font has one of these
// at the beginning.
//
//
// Reduced from 4 to three as WFontType is added.
// Reducde from three to two when dwETM was added
//
#define EXP_SIZE 2 // DWORDS allowed for future expansion
//
// Font installer header.
//
typedef struct
{
WORD cjThis; // Our size, for consistency checking
WORD wFlags; // Miscellaneous information
DWORD dwSelBits; // Font availability information
DWORD dwIFIMet; // Offset to the IFIMETRICS for this font
DWORD dwCDSelect; // How to select/deselect this fontg
DWORD dwCDDeselect;
DWORD dwWidthTab; // Width vector (proportional font) else 0g
DWORD dwIdentStr; // Identification stringg
union
{
short sCTTid; // Index into CTT datag
DWORD dwCTT; // Offset here to mapping data of some sortg
} u;
WORD wXRes; // Resolution used for font metrics numbersg
WORD wYRes; // Ditto for the y coordinatesg
short sYAdjust; // Adjust Y position before output - for g
// double height characters on dot matrixg
short sYMoved; // Cursor has shifted after printing fontg
short fCaps; // Capabilities flagsg
WORD wPrivateData; // Special purpose: e.g. DeskJet permutationsg
WORD wFontType; // Type of Device fontg
WORD wReserved; // reserved for future useg
DWORD dwETM; // offset to ETM for this font. Could be NULL.
DWORD dwMBZ[ EXP_SIZE ]; // Must Be Zero: in case we need spaceg
} FI_DATA_HEADER;
//
// The version ID.
//
#define FDH_VER 0x100 // 1.00 in BCD
//
// Flags bits.
//
#define FDH_SOFT 0x0001 // Softfont, thus needs downloadingg
#define FDH_CART 0x0002 // This is a cartridge fontg
#define FDH_CART_MAIN 0x0004 // Main (first) entry for this cartridgeg
//
// Selection criteria bits: dwSelBits. These bits are used as
// follows. During font installation, the installer set the following
// values as appropriate. During initialisation, the driver sets
// up a mask of these bits, depending upon the printer's abilities.
// For example, the FDH_SCALABLE bit is set only if the printer can
// handle scalable fonts. When the fonts are examined to see if
// they are usable, the following test is applied:
//
// (font.dwSelBits & printer.dwSelBits) == font.dwSelBits
//
// If true, the font is usable.
//
#define FDH_LANDSCAPE 0x00000001 // Font is landscape orientationg
#define FDH_PORTRAIT 0x00000002 // Font is portraitg
#define FDH_OR_REVERSE 0x00000004 // 180 degree rotation of aboveg
#define FDH_BITMAP 0x00000008 // Bitmap fontg
#define FDH_COMPRESSED 0x00000010 // Data is compressed bitmapg
#define FDH_SCALABLE 0x00000020 // Font is scalableg
#define FDH_CONTOUR 0x00000040 // Intellifont contourg
#define FDH_ERROR 0x80000000 // Set if some error conditiong
//
// The following structure should be returned from the specific
// minidriver to the common font installer code. It is used by
// the common font installer code to generate the above structure
// which is then placed in the font file.
//
typedef struct _DATA_SUM
{
void *pvData; // Address of data of importanceg
int cBytes; // Number of bytes in the aboveg
} DATA_SUM;
//
// Font file header.
//
typedef struct _FI_DATA
{
DATA_SUM dsIFIMet; // IFIMETRICS
DATA_SUM dsSel; // Selection string/whatever
DATA_SUM dsDesel; // Deselection string
DATA_SUM dsWidthTab; // Width tables (proportional font)
DATA_SUM dsCTT; // Translation data
DATA_SUM dsIdentStr; // Identification string (Dialog box etc)
DATA_SUM dsETM; // EXTENDED TEXT METRICS
DWORD dwSelBits; // Font availability information
WORD wVersion; // Version ID
WORD wFlags; // Miscellaneous information
WORD wXRes; // X resolution of font
WORD wYRes; // Y resolution
short sYAdjust; // Adjust Y position before output - for
// double height characters on dot matrix
short sYMoved; // Cursor has shifted after printing font
WORD fCaps; // Font/device caps
WORD wFontType; // Type of Device font
WORD wPrivateData; // Pad to DWORD multiple
} FI_DATA;