| // 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 |