xpmgr/BuildTools/Include/fontsub.h

179 lines
8.4 KiB
C

/*************************************************************************
* *
* fontsub.h -- font subsetting services (fontsub.dll) *
* *
* (c) Microsoft Corporation. All Rights Reserved. *
* *
*************************************************************************/
#ifndef FONTSUB_DOT_H_DEFINED
#define FONTSUB_DOT_H_DEFINED
#ifdef __cplusplus
extern "C" {
#endif
#ifndef CONST
#define CONST const
#endif
typedef void *(__cdecl *CFP_ALLOCPROC)(size_t);
typedef void *(__cdecl *CFP_REALLOCPROC)(void *, size_t);
typedef void (__cdecl *CFP_FREEPROC)(void *);
unsigned long __cdecl CreateFontPackage(
CONST unsigned char * puchSrcBuffer, /* input TTF or TTC buffer */
CONST unsigned long ulSrcBufferSize, /* size of input TTF or TTC buffer data */
unsigned char ** ppuchFontPackageBuffer, /* output package buffer */
unsigned long * pulFontPackageBufferSize, /* output package buffer size */
unsigned long * pulBytesWritten, /* output package buffer data length */
CONST unsigned short usFlag, /* subset, compress, or both, TTF or TTC, Chars or Glyphs */
CONST unsigned short usTTCIndex, /* TTC Index, only used if TTC bit set */
CONST unsigned short usSubsetFormat, /* Old Subset, Subset or Delta */
CONST unsigned short usSubsetLanguage, /* Language in Name table to keep */
CONST unsigned short usSubsetPlatform, /* if ListType is Character, Platform of cmap to use for glyph list */
CONST unsigned short usSubsetEncoding, /* if ListType is Character, Encoding of cmap to use for glyph list */
CONST unsigned short *pusSubsetKeepList, /* List of Characters or Glyphs to keep */
CONST unsigned short usSubsetListCount, /* number of elements in list */
CFP_ALLOCPROC lpfnAllocate, /* call back function to allocate temp buffers and output buffers */
CFP_REALLOCPROC lpfnReAllocate, /* call back function to reallocate temp and output buffers */
CFP_FREEPROC lpfnFree, /* call back function to free buffer allocated with lpfnAllocate and lpfnReAllocate */
void * lpvReserved);
/* for usSubsetFormat */
#define TTFCFP_SUBSET 0 /* Straight Subset Font - Backward compatibility */
#define TTFCFP_SUBSET1 1 /* Subset font with full TTO and Kern tables. For later merge */
#define TTFCFP_DELTA 2 /* Delta font, for merge with a subset1 font */
/* for usSubsetPlatform ID values */
#define TTFCFP_UNICODE_PLATFORMID 0
#define TTFCFP_APPLE_PLATFORMID 1
#define TTFCFP_ISO_PLATFORMID 2
#define TTFCFP_MS_PLATFORMID 3
/* for usSubsetEncoding values */
#define TTFCFP_STD_MAC_CHAR_SET 0 /* goes with TTFSUB_APPLE_PLATFORMID */
#define TTFCFP_SYMBOL_CHAR_SET 0 /* goes with TTFSUB_MS_PLATFORMID */
#define TTFCFP_UNICODE_CHAR_SET 1 /* goes with TTFSUB_MS_PLATFORMID */
#define TTFCFP_DONT_CARE 0xFFFF
/* for usSubsetLanguage values */
#define TTFCFP_LANG_KEEP_ALL 0
/* for usFlags values */
#define TTFCFP_FLAGS_SUBSET 0x0001 /* if bit off, don't subset */
#define TTFCFP_FLAGS_COMPRESS 0x0002 /* if bit off, don't compress */
#define TTFCFP_FLAGS_TTC 0x0004 /* if bit off, its a TTF */
#define TTFCFP_FLAGS_GLYPHLIST 0x0008 /* if bit off, list is characters */
unsigned long __cdecl MergeFontPackage(CONST unsigned char * puchMergeFontBuffer, /* buffer containing font to merge with */
CONST unsigned long ulMergeFontBufferSize, /* size of buffer containing font to merge with */
CONST unsigned char * puchFontPackageBuffer, /* buffer containing a font package to merge with the MergeFontBuffer */
CONST unsigned long ulFontPackageBufferSize, /* length of FontPakageBuffer */
unsigned char **ppuchDestBuffer, /* output: pointer to output buffer containing a TTF to install */
unsigned long *pulDestBufferSize, /* output: length of output buffer containing TTF to install */
unsigned long *pulBytesWritten, /* output: number of bytes in buffer used for TTF */
CONST unsigned short usMode, /* kind of action to perform, see #defines below */
CFP_ALLOCPROC lpfnAllocate, /* call back function to allocate output and intermediate buffers */
CFP_REALLOCPROC lpfnReAllocate, /* call back function to allocate or reallocate output and intermediate buffers */
CFP_FREEPROC lpfnFree, /* call back function to free buffer allocated with lpfnReAllocate */
void *lpvReserved);
/* for usModes */
#define TTFMFP_SUBSET 0 /* copy a Straight Subset Font package to Dest buffer */
#define TTFMFP_SUBSET1 1 /* Expand a format 1 font into a format 3 font */
#define TTFMFP_DELTA 2 /* Merge a format 2 with a format 3 font */
/* Error codes */
#ifndef NO_ERROR
#define NO_ERROR 0
#endif
#ifndef ERR_GENERIC
#define ERR_GENERIC 1000
#define ERR_READOUTOFBOUNDS 1001 /* trying to read from memory not allowed - data error? */
#define ERR_WRITEOUTOFBOUNDS 1002 /* trying to write to memory not allowed - data error? */
#define ERR_READCONTROL 1003 /* read control structure does not match data */
#define ERR_WRITECONTROL 1004 /* write control structure does not match data */
#define ERR_MEM 1005 /* error allocating memory */
#define ERR_FORMAT 1006 /* input data format error */
#define ERR_WOULD_GROW 1007 /* action would cause data to grow. use original data */
#define ERR_VERSION 1008 /* major dttf.version of the input data is greater than the version this program can read */
#define ERR_NO_GLYPHS 1009
#define ERR_INVALID_MERGE_FORMATS 1010 /* trying to merge fonts with the wrong dttf formats */
#define ERR_INVALID_MERGE_CHECKSUMS 1011 /* trying to merge 2 fonts from different mother font */
#define ERR_INVALID_MERGE_NUMGLYPHS 1012 /* trying to merge 2 fonts from different mother font */
#define ERR_INVALID_DELTA_FORMAT 1013 /* trying to subset a format 1 or 2 font */
#define ERR_NOT_TTC 1014
#define ERR_INVALID_TTC_INDEX 1015
#define ERR_MISSING_CMAP 1030
#define ERR_MISSING_GLYF 1031
#define ERR_MISSING_HEAD 1032
#define ERR_MISSING_HHEA 1033
#define ERR_MISSING_HMTX 1034
#define ERR_MISSING_LOCA 1035
#define ERR_MISSING_MAXP 1036
#define ERR_MISSING_NAME 1037
#define ERR_MISSING_POST 1038
#define ERR_MISSING_OS2 1039
#define ERR_MISSING_VHEA 1040
#define ERR_MISSING_VMTX 1041
#define ERR_MISSING_HHEA_OR_VHEA 1042
#define ERR_MISSING_HMTX_OR_VMTX 1043
#define ERR_MISSING_EBDT 1044
#define ERR_INVALID_CMAP 1060
#define ERR_INVALID_GLYF 1061
#define ERR_INVALID_HEAD 1062
#define ERR_INVALID_HHEA 1063
#define ERR_INVALID_HMTX 1064
#define ERR_INVALID_LOCA 1065
#define ERR_INVALID_MAXP 1066
#define ERR_INVALID_NAME 1067
#define ERR_INVALID_POST 1068
#define ERR_INVALID_OS2 1069
#define ERR_INVALID_VHEA 1070
#define ERR_INVALID_VMTX 1071
#define ERR_INVALID_HHEA_OR_VHEA 1072
#define ERR_INVALID_HMTX_OR_VMTX 1073
#define ERR_INVALID_TTO 1080
#define ERR_INVALID_GSUB 1081
#define ERR_INVALID_GPOS 1082
#define ERR_INVALID_GDEF 1083
#define ERR_INVALID_JSTF 1084
#define ERR_INVALID_BASE 1085
#define ERR_INVALID_EBLC 1086
#define ERR_INVALID_LTSH 1087
#define ERR_INVALID_VDMX 1088
#define ERR_INVALID_HDMX 1089
#define ERR_PARAMETER0 1100 /* calling function argument 0 is invalid */
#define ERR_PARAMETER1 1101 /* calling function argument 1 is invalid */
#define ERR_PARAMETER2 1102 /* calling function argument 2 is invalid */
#define ERR_PARAMETER3 1103 /* calling function argument 3 is invalid */
#define ERR_PARAMETER4 1104 /* calling function argument 4 is invalid */
#define ERR_PARAMETER5 1105 /* calling function argument 5 is invalid */
#define ERR_PARAMETER6 1106 /* calling function argument 6 is invalid */
#define ERR_PARAMETER7 1107 /* calling function argument 7 is invalid */
#define ERR_PARAMETER8 1108 /* calling function argument 8 is invalid */
#define ERR_PARAMETER9 1109 /* calling function argument 9 is invalid */
#define ERR_PARAMETER10 1110 /* calling function argument 10 is invalid */
#define ERR_PARAMETER11 1111 /* calling function argument 11 is invalid */
#define ERR_PARAMETER12 1112 /* calling function argument 12 is invalid */
#define ERR_PARAMETER13 1113 /* calling function argument 13 is invalid */
#define ERR_PARAMETER14 1114 /* calling function argument 14 is invalid */
#define ERR_PARAMETER15 1115 /* calling function argument 15 is invalid */
#define ERR_PARAMETER16 1116 /* calling function argument 16 is invalid */
#endif /* ERR_GENERIC */
#ifdef __cplusplus
}
#endif
#endif /* FONTSUB_DOT_H_DEFINED */