|  | // Copyright 2014 PDFium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 
|  |  | 
|  | #ifndef _FPDF_SYSFONTINFO_H | 
|  | #define _FPDF_SYSFONTINFO_H | 
|  |  | 
|  | #include "fpdfview.h" | 
|  |  | 
|  | /* Character sets for the font */ | 
|  | #define FXFONT_ANSI_CHARSET		0 | 
|  | #define FXFONT_DEFAULT_CHARSET	1 | 
|  | #define FXFONT_SYMBOL_CHARSET	2 | 
|  | #define FXFONT_SHIFTJIS_CHARSET	128 | 
|  | #define FXFONT_HANGEUL_CHARSET	129 | 
|  | #define FXFONT_GB2312_CHARSET	134 | 
|  | #define FXFONT_CHINESEBIG5_CHARSET	136 | 
|  |  | 
|  | /* Font pitch and family flags */ | 
|  | #define FXFONT_FF_FIXEDPITCH	1 | 
|  | #define FXFONT_FF_ROMAN			(1<<4) | 
|  | #define FXFONT_FF_SCRIPT		(4<<4) | 
|  |  | 
|  | /* Typical weight values */ | 
|  | #define FXFONT_FW_NORMAL		400 | 
|  | #define FXFONT_FW_BOLD			700 | 
|  |  | 
|  | // Exported Functions | 
|  | #ifdef __cplusplus | 
|  | extern "C" { | 
|  | #endif | 
|  |  | 
|  |  | 
|  | /** | 
|  | * Interface: FPDF_SYSFONTINFO | 
|  | *			Interface for getting system font information and font mapping | 
|  | */ | 
|  | typedef struct _FPDF_SYSFONTINFO { | 
|  | /** | 
|  | * Version number of the interface. Currently must be 1. | 
|  | **/ | 
|  | int	version; | 
|  |  | 
|  | /** | 
|  | * Method: Release | 
|  | *			Give implementation a chance to release any data after the interface is no longer used | 
|  | * Interface Version: | 
|  | *			1 | 
|  | * Implementation Required: | 
|  | *			No | 
|  | * Comments: | 
|  | *			Called by Foxit SDK during the final cleanup process. | 
|  | * Parameters: | 
|  | *			pThis		-	Pointer to the interface structure itself | 
|  | * Return Value: | 
|  | *			None | 
|  | */ | 
|  | void (*Release)(struct _FPDF_SYSFONTINFO* pThis); | 
|  |  | 
|  | /** | 
|  | * Method: EnumFonts | 
|  | *			Enumerate all fonts installed on the system | 
|  | * Interface Version: | 
|  | *			1 | 
|  | * Implementation Required: | 
|  | *			No | 
|  | * Comments: | 
|  | *			Implementation should call FPDF_AddIntalledFont() function for each font found. | 
|  | *			Only TrueType/OpenType and Type1 fonts are accepted by Foxit SDK. | 
|  | * Parameters: | 
|  | *			pThis		-	Pointer to the interface structure itself | 
|  | *			pMapper		-	An opaque pointer to internal font mapper, used when calling FPDF_AddInstalledFont | 
|  | * Return Value: | 
|  | *			None | 
|  | */ | 
|  | void (*EnumFonts)(struct _FPDF_SYSFONTINFO* pThis, void* pMapper); | 
|  |  | 
|  | /** | 
|  | * Method: MapFont | 
|  | *			Use the system font mapper to get a font handle from requested parameters | 
|  | * Interface Version: | 
|  | *			1 | 
|  | * Implementation Required: | 
|  | *			Yes only if GetFont method is not implemented. | 
|  | * Comments: | 
|  | *			If the system supports native font mapper (like Windows), implementation can implement this method to get a font handle. | 
|  | *			Otherwise, Foxit SDK will do the mapping and then call GetFont method. | 
|  | *			Only TrueType/OpenType and Type1 fonts are accepted by Foxit SDK. | 
|  | * Parameters: | 
|  | *			pThis		-	Pointer to the interface structure itself | 
|  | *			weight		-	Weight of the requested font. 400 is normal and 700 is bold. | 
|  | *			bItalic		-	Italic option of the requested font, TRUE or FALSE. | 
|  | *			charset		-	Character set identifier for the requested font. See above defined constants. | 
|  | *			pitch_family -	A combination of flags. See above defined constants. | 
|  | *			face		-	Typeface name. Currently use system local encoding only. | 
|  | *			bExact		-	Pointer to an boolean value receiving the indicator whether mapper found the exact match. | 
|  | *							If mapper is not sure whether it's exact match, ignore this paramter. | 
|  | * Return Value: | 
|  | *			An opaque pointer for font handle, or NULL if system mapping is not supported. | 
|  | **/ | 
|  | void* (*MapFont)(struct _FPDF_SYSFONTINFO* pThis, int weight, int bItalic, int charset, int pitch_family, | 
|  | const char* face, int* bExact); | 
|  |  | 
|  | /** | 
|  | * Method: GetFont | 
|  | *			Get a handle to a particular font by its internal ID | 
|  | * Interface Version: | 
|  | *			1 | 
|  | * Implementation Required: | 
|  | *			Yes only if MapFont method is not implemented. | 
|  | * Comments: | 
|  | *			If the system mapping not supported, Foxit SDK will do the font mapping and use this method to get a font handle. | 
|  | * Parameters: | 
|  | *			pThis		-	Pointer to the interface structure itself | 
|  | *			face		-	Typeface name. Currently use system local encoding only. | 
|  | * Return Value: | 
|  | *			An opaque pointer for font handle. | 
|  | **/ | 
|  | void* (*GetFont)(struct _FPDF_SYSFONTINFO* pThis, const char* face); | 
|  |  | 
|  | /** | 
|  | * Method: GetFontData | 
|  | *			Get font data from a font | 
|  | * Interface Version: | 
|  | *			1 | 
|  | * Implementation Required: | 
|  | *			Yes | 
|  | * Comments: | 
|  | *			Can read either full font file, or a particular TrueType/OpenType table | 
|  | * Parameters: | 
|  | *			pThis		-	Pointer to the interface structure itself | 
|  | *			hFont		-	Font handle returned by MapFont or GetFont method | 
|  | *			table		-	TrueType/OpenType table identifier (refer to TrueType specification). | 
|  | *							0 for the whole font file. | 
|  | *			buffer		-	The buffer receiving the font data. Can be NULL if not provided | 
|  | *			buf_size	-	Buffer size, can be zero if not provided | 
|  | * Return Value: | 
|  | *			Number of bytes needed, if buffer not provided or not large enough, | 
|  | *			or number of bytes written into buffer otherwise. | 
|  | **/ | 
|  | unsigned long (*GetFontData)(struct _FPDF_SYSFONTINFO* pThis, void* hFont, | 
|  | unsigned int table, unsigned char* buffer, unsigned long buf_size); | 
|  |  | 
|  | /** | 
|  | * Method: GetFaceName | 
|  | *			Get face name from a font handle | 
|  | * Interface Version: | 
|  | *			1 | 
|  | * Implementation Required: | 
|  | *			No | 
|  | * Parameters: | 
|  | *			pThis		-	Pointer to the interface structure itself | 
|  | *			hFont		-	Font handle returned by MapFont or GetFont method | 
|  | *			buffer		-	The buffer receiving the face name. Can be NULL if not provided | 
|  | *			buf_size	-	Buffer size, can be zero if not provided | 
|  | * Return Value: | 
|  | *			Number of bytes needed, if buffer not provided or not large enough, | 
|  | *			or number of bytes written into buffer otherwise. | 
|  | **/ | 
|  | unsigned long (*GetFaceName)(struct _FPDF_SYSFONTINFO* pThis, void* hFont, char* buffer, unsigned long buf_size); | 
|  |  | 
|  | /** | 
|  | * Method: GetFontCharset | 
|  | *			Get character set information for a font handle | 
|  | * Interface Version: | 
|  | *			1 | 
|  | * Implementation Required: | 
|  | *			No | 
|  | * Parameters: | 
|  | *			pThis		-	Pointer to the interface structure itself | 
|  | *			hFont		-	Font handle returned by MapFont or GetFont method | 
|  | * Return Value: | 
|  | *			Character set identifier. See defined constants above. | 
|  | **/ | 
|  | int (*GetFontCharset)(struct _FPDF_SYSFONTINFO* pThis, void* hFont); | 
|  |  | 
|  | /** | 
|  | * Method: DeleteFont | 
|  | *			Delete a font handle | 
|  | * Interface Version: | 
|  | *			1 | 
|  | * Implementation Required: | 
|  | *			Yes | 
|  | * Parameters: | 
|  | *			pThis		-	Pointer to the interface structure itself | 
|  | *			hFont		-	Font handle returned by MapFont or GetFont method | 
|  | * Return Value: | 
|  | *			None | 
|  | **/ | 
|  | void (*DeleteFont)(struct _FPDF_SYSFONTINFO* pThis, void* hFont); | 
|  | } FPDF_SYSFONTINFO; | 
|  |  | 
|  | /** | 
|  | * Function: FPDF_AddInstalledFont | 
|  | *			Add a system font to the list in Foxit SDK. | 
|  | * Comments: | 
|  | *			This function is only called during the system font list building process. | 
|  | * Parameters: | 
|  | *			mapper			-	Opaque pointer to Foxit font mapper | 
|  | *			face			-	The font face name | 
|  | *			charset			-	Font character set. See above defined constants. | 
|  | * Return Value: | 
|  | *			None. | 
|  | **/ | 
|  | DLLEXPORT void STDCALL FPDF_AddInstalledFont(void* mapper, const char* face, int charset); | 
|  |  | 
|  | /** | 
|  | * Function: FPDF_SetSystemFontInfo | 
|  | *			Set the system font info interface into Foxit SDK | 
|  | * Comments: | 
|  | *			Platform support implementation should implement required methods of FFDF_SYSFONTINFO interface, | 
|  | *			then call this function during SDK initialization process. | 
|  | * Parameters: | 
|  | *			pFontInfo		-	Pointer to a FPDF_SYSFONTINFO structure | 
|  | * Return Value: | 
|  | *			None | 
|  | **/ | 
|  | DLLEXPORT void STDCALL FPDF_SetSystemFontInfo(FPDF_SYSFONTINFO* pFontInfo); | 
|  |  | 
|  | /** | 
|  | * Function: FPDF_GetDefaultSystemFontInfo | 
|  | *			Get default system font info interface for current platform | 
|  | * Comments: | 
|  | *			For some platforms Foxit SDK implement a default version of system font info interface. | 
|  | *			The default implementation can be used in FPDF_SetSystemFontInfo function. | 
|  | * Parameters: | 
|  | *			None | 
|  | * Return Value: | 
|  | *			Pointer to a FPDF_SYSFONTINFO structure describing the default interface. | 
|  | *			Or NULL if the platform doesn't have a default interface. | 
|  | *			Application should call FPDF_FreeMemory to free the returned pointer. | 
|  | **/ | 
|  | DLLEXPORT FPDF_SYSFONTINFO* STDCALL FPDF_GetDefaultSystemFontInfo(); | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | }; | 
|  | #endif | 
|  |  | 
|  | #endif // _FPDF_SYSFONTINFO_H |