| // 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_ |
| |
| // clang-format off |
| // 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 |
| #define FXFONT_GREEK_CHARSET 161 |
| #define FXFONT_VIETNAMESE_CHARSET 163 |
| #define FXFONT_HEBREW_CHARSET 177 |
| #define FXFONT_ARABIC_CHARSET 178 |
| #define FXFONT_CYRILLIC_CHARSET 204 |
| #define FXFONT_THAI_CHARSET 222 |
| #define FXFONT_EASTERNEUROPEAN_CHARSET 238 |
| |
| /* 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 |
| * Parameters: |
| * pThis - Pointer to the interface structure itself |
| * Return Value: |
| * None |
| * Comments: |
| * Called by PDFium during the final cleanup process. |
| */ |
| void (*Release)(struct _FPDF_SYSFONTINFO* pThis); |
| |
| /* |
| * Method: EnumFonts |
| * Enumerate all fonts installed on the system |
| * Interface Version: |
| * 1 |
| * Implementation Required: |
| * No |
| * Parameters: |
| * pThis - Pointer to the interface structure itself |
| * pMapper - An opaque pointer to internal font mapper, used |
| * when calling FPDF_AddInstalledFont(). |
| * Return Value: |
| * None |
| * Comments: |
| * Implementations should call FPDF_AddIntalledFont() function for |
| * each font found. Only TrueType/OpenType and Type1 fonts are accepted |
| * by PDFium. |
| */ |
| 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: |
| * Required if GetFont method is not implemented. |
| * 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 - Obsolete: this parameter is now ignored. |
| * Return Value: |
| * An opaque pointer for font handle, or NULL if system mapping is |
| * not supported. |
| * Comments: |
| * If the system supports native font mapper (like Windows), |
| * implementation can implement this method to get a font handle. |
| * Otherwise, PDFium will do the mapping and then call GetFont |
| * method. Only TrueType/OpenType and Type1 fonts are accepted |
| * by PDFium. |
| */ |
| 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: |
| * Required if MapFont method is not implemented. |
| * Return Value: |
| * An opaque pointer for font handle. |
| * Parameters: |
| * pThis - Pointer to the interface structure itself |
| * face - Typeface name in system local encoding. |
| * Comments: |
| * If the system mapping not supported, PDFium will do the font |
| * mapping and use this method to get a 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 |
| * 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), or 0 for the whole 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. |
| * Comments: |
| * Can read either the full font file, or a particular |
| * TrueType/OpenType table. |
| */ |
| 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 PDFium. |
| * 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 PDFium |
| * Parameters: |
| * pFontInfo - Pointer to a FPDF_SYSFONTINFO structure |
| * Return Value: |
| * None |
| * Comments: |
| * Platform support implementation should implement required methods of |
| * FFDF_SYSFONTINFO interface, then call this function during PDFium |
| * initialization process. |
| */ |
| FPDF_EXPORT void FPDF_CALLCONV |
| FPDF_SetSystemFontInfo(FPDF_SYSFONTINFO* pFontInfo); |
| |
| /* |
| * Function: FPDF_GetDefaultSystemFontInfo |
| * Get default system font info interface for current platform |
| * 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. |
| * Comments: |
| * For some platforms, PDFium implements a default version of system |
| * font info interface. The default implementation can be passed to |
| * FPDF_SetSystemFontInfo(). |
| */ |
| FPDF_EXPORT FPDF_SYSFONTINFO* FPDF_CALLCONV FPDF_GetDefaultSystemFontInfo(); |
| |
| /* |
| * Function: FPDF_FreeDefaultSystemFontInfo |
| * Free a default system font info interface |
| * Parameters: |
| * pFontInfo - Pointer to a FPDF_SYSFONTINFO structure |
| * Return Value: |
| * None |
| * Comments: |
| * This function should be called on the output from |
| * FPDF_SetSystemFontInfo() once it is no longer needed. |
| */ |
| FPDF_EXPORT void FPDF_CALLCONV |
| FPDF_FreeDefaultSystemFontInfo(FPDF_SYSFONTINFO* pFontInfo); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif // PUBLIC_FPDF_SYSFONTINFO_H_ |