You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
159 lines
5.8 KiB
159 lines
5.8 KiB
/******************************** MODULE HEADER *****************************
|
|
* fontinst.h
|
|
* Structures used to determine the file layout of files generated
|
|
* by any font installers, and then read by us.
|
|
*
|
|
* HISTORY:
|
|
* 15:53 on Mon 02 Mar 1992 -by- Lindsay Harris [lindsayh]
|
|
* First version.
|
|
*
|
|
* Copyright (C) 1992 Microsoft Corporation.
|
|
*
|
|
****************************************************************************/
|
|
|
|
|
|
/*
|
|
* 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 */
|
|
|
|
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 font */
|
|
DWORD dwCDDeselect;
|
|
DWORD dwWidthTab; /* Width vector (proportional font) else 0 */
|
|
DWORD dwIdentStr; /* Identification string */
|
|
|
|
union
|
|
{
|
|
short sCTTid; /* Index into CTT data */
|
|
DWORD dwCTT; /* Offset here to mapping data of some sort */
|
|
} u;
|
|
|
|
WORD wXRes; /* Resolution used for font metrics numbers */
|
|
WORD wYRes; /* Ditto for the y coordinates */
|
|
|
|
short sYAdjust; /* Adjust Y position before output - for */
|
|
/* double height characters on dot matrix */
|
|
short sYMoved; /* Cursor has shifted after printing font */
|
|
|
|
short fCaps; /* Capabilities flags */
|
|
|
|
WORD wPrivateData; /* Special purpose: e.g. DeskJet permutations */
|
|
|
|
WORD wFontType; /* Type of Device font */
|
|
|
|
WORD wReserved; /* reserved for future use */
|
|
|
|
DWORD dwETM; /* offset to ETM for this font 0 if there are none*/
|
|
|
|
DWORD dwMBZ[ EXP_SIZE ]; /* Must Be Zero: in case we need space */
|
|
|
|
} FI_DATA_HEADER;
|
|
|
|
/*
|
|
* The version ID.
|
|
*/
|
|
|
|
#define FDH_VER 0x100 /* 1.00 in BCD */
|
|
|
|
/*
|
|
* Flags bits.
|
|
*/
|
|
#define FDH_SOFT 0x0001 /* Softfont, thus needs downloading */
|
|
#define FDH_CART 0x0002 /* This is a cartridge font */
|
|
#define FDH_CART_MAIN 0x0004 /* Main (first) entry for this cartridge */
|
|
|
|
/*
|
|
* 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 orientation */
|
|
#define FDH_PORTRAIT 0x00000002 /* Font is portrait */
|
|
#define FDH_OR_REVERSE 0x00000004 /* 180 degree rotation of above */
|
|
#define FDH_BITMAP 0x00000008 /* Bitmap font */
|
|
#define FDH_COMPRESSED 0x00000010 /* Data is compressed bitmap */
|
|
#define FDH_SCALABLE 0x00000020 /* Font is scalable */
|
|
#define FDH_CONTOUR 0x00000040 /* Intellifont contour */
|
|
|
|
#define FDH_ERROR 0x80000000 /* Set if some error condition */
|
|
|
|
|
|
/*
|
|
* 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
|
|
{
|
|
void *pvData; /* Address of data of importance */
|
|
int cBytes; /* Number of bytes in the above */
|
|
} DATA_SUM;
|
|
|
|
typedef struct
|
|
{
|
|
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;
|
|
|
|
/*
|
|
* RELATED FUNCTION PROTOTYPES.
|
|
*/
|
|
|
|
|
|
/*
|
|
* The function used to take an FI_DATA structure and write its contents
|
|
* to the file whose handle is passed in. The data is written out as
|
|
* an FI_DATA_HEADER structure.
|
|
*/
|
|
|
|
int iWriteFDH( HANDLE, FI_DATA * );
|