| // 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 PUBLIC_FPDF_SYSFONTINFO_H_ |
| #define PUBLIC_FPDF_SYSFONTINFO_H_ |
| |
| // NOLINTNEXTLINE(build/include) |
| #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 << 0) |
| #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 a 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, |
| FPDF_BOOL bItalic, |
| int charset, |
| int pitch_family, |
| const char* face, |
| FPDF_BOOL* 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; |
| |
| /** |
| * Struct: FPDF_CharsetFontMap |
| * Provides the name of a font to use for a given charset value. |
| **/ |
| typedef struct FPDF_CharsetFontMap_ { |
| int charset; // Character Set Enum value, see FXFONT_*_CHARSET above. |
| const char* fontname; // Name of default font to use with that charset. |
| } FPDF_CharsetFontMap; |
| |
| /** |
| * Function: FPDF_GetDefaultTTFMap |
| * Returns a pointer to the default character set to TT Font name map. The |
| * map is an array of FPDF_CharsetFontMap structs, with its end indicated |
| * by a { -1, NULL } entry. |
| * Parameters: |
| * None. |
| * Return Value: |
| * Pointer to the Charset Font Map. |
| **/ |
| FPDF_EXPORT const FPDF_CharsetFontMap* FPDF_CALLCONV FPDF_GetDefaultTTFMap(); |
| |
| /** |
| * 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. |
| **/ |
| FPDF_EXPORT void FPDF_CALLCONV 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 |
| **/ |
| FPDF_EXPORT void FPDF_CALLCONV |
| 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_FreeDefaultSystemFontInfo to free the |
| *returned pointer. |
| **/ |
| FPDF_EXPORT FPDF_SYSFONTINFO* FPDF_CALLCONV FPDF_GetDefaultSystemFontInfo(); |
| |
| /** |
| * Function: FPDF_FreeDefaultSystemFontInfo |
| * Free a default system font info interface |
| * Comments: |
| * This function should be called on the output from |
| *FPDF_SetSystemFontInfo once it is no longer needed by the client. |
| * Parameters: |
| * pFontInfo - Pointer to a FPDF_SYSFONTINFO structure |
| * Return Value: |
| * None |
| **/ |
| FPDF_EXPORT void FPDF_CALLCONV |
| FPDF_FreeDefaultSystemFontInfo(FPDF_SYSFONTINFO* pFontInfo); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif // PUBLIC_FPDF_SYSFONTINFO_H_ |