|  | // 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_ARABIC_CHARSET 178 | 
|  | #define FXFONT_CYRILLIC_CHARSET 204 | 
|  | #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_ |