173 lines
5.3 KiB
C
173 lines
5.3 KiB
C
|
/*++
|
||
|
|
||
|
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;
|
||
|
|