| // Copyright 2014 The PDFium Authors |
| // 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_ |
| |
| #include <stddef.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_AddInstalledFont() 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. |
| // Note: |
| // Once FPDF_GetDefaultTTFMapCount() and FPDF_GetDefaultTTFMapEntry() are no |
| // longer experimental, this API will be marked as deprecated. |
| // See https://crbug.com/348468114 |
| FPDF_EXPORT const FPDF_CharsetFontMap* FPDF_CALLCONV FPDF_GetDefaultTTFMap(); |
| |
| // Experimental API. |
| // |
| // Function: FPDF_GetDefaultTTFMapCount |
| // Returns the number of entries in the default character set to TT Font name |
| // map. |
| // Parameters: |
| // None. |
| // Return Value: |
| // The number of entries in the map. |
| FPDF_EXPORT size_t FPDF_CALLCONV FPDF_GetDefaultTTFMapCount(); |
| |
| // Experimental API. |
| // |
| // Function: FPDF_GetDefaultTTFMapEntry |
| // Returns an entry in the default character set to TT Font name map. |
| // Parameters: |
| // index - The index to the entry in the map to retrieve. |
| // Return Value: |
| // A pointer to the entry, if it is in the map, or NULL if the index is out |
| // of bounds. |
| FPDF_EXPORT const FPDF_CharsetFontMap* FPDF_CALLCONV |
| FPDF_GetDefaultTTFMapEntry(size_t index); |
| |
| // 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. |
| // |
| // Call this with NULL to tell PDFium to stop using a previously set |
| // |FPDF_SYSFONTINFO|. |
| 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_GetDefaultSystemFontInfo() once it is no longer needed. |
| FPDF_EXPORT void FPDF_CALLCONV |
| FPDF_FreeDefaultSystemFontInfo(FPDF_SYSFONTINFO* pFontInfo); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif // PUBLIC_FPDF_SYSFONTINFO_H_ |