//======================================================================== // // BuiltinFont.h // // Copyright 2001-2003 Glyph & Cog, LLC // //======================================================================== //======================================================================== // // Modified under the Poppler project - http://poppler.freedesktop.org // // All changes made under the Poppler project to this file are licensed // under GPL version 2 or later // // Copyright (C) 2018, 2020 Albert Astals Cid // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git // //======================================================================== #ifndef BUILTINFONT_H #define BUILTINFONT_H #include "BuiltinFontWidth.h" //------------------------------------------------------------------------ using GetWidthFunction = const BuiltinFontWidth *(*)(const char *str, size_t len); struct BuiltinFont { const char *name; const char **defaultBaseEnc; short ascent; short descent; short bbox[4]; GetWidthFunction f; bool getWidth(const char *n, unsigned short *w) const { const struct BuiltinFontWidth *bfw = f(n, strlen(n)); if (!bfw) { return false; } *w = bfw->width; return true; } }; //------------------------------------------------------------------------ extern "C" { // define the gperf generated Lookup functions const struct BuiltinFontWidth *CourierWidthsLookup(const char *str, size_t len); const struct BuiltinFontWidth *CourierBoldWidthsLookup(const char *str, size_t len); const struct BuiltinFontWidth *CourierBoldObliqueWidthsLookup(const char *str, size_t len); const struct BuiltinFontWidth *CourierObliqueWidthsLookup(const char *str, size_t len); const struct BuiltinFontWidth *HelveticaWidthsLookup(const char *str, size_t len); const struct BuiltinFontWidth *HelveticaBoldWidthsLookup(const char *str, size_t len); const struct BuiltinFontWidth *HelveticaBoldObliqueWidthsLookup(const char *str, size_t len); const struct BuiltinFontWidth *HelveticaObliqueWidthsLookup(const char *str, size_t len); const struct BuiltinFontWidth *SymbolWidthsLookup(const char *str, size_t len); const struct BuiltinFontWidth *TimesBoldWidthsLookup(const char *str, size_t len); const struct BuiltinFontWidth *TimesBoldItalicWidthsLookup(const char *str, size_t len); const struct BuiltinFontWidth *TimesItalicWidthsLookup(const char *str, size_t len); const struct BuiltinFontWidth *TimesRomanWidthsLookup(const char *str, size_t len); const struct BuiltinFontWidth *ZapfDingbatsWidthsLookup(const char *str, size_t len); } static const BuiltinFont builtinFonts[] = { { "Courier", standardEncoding, 629, -157, { -23, -250, 715, 805 }, &CourierWidthsLookup }, { "Courier-Bold", standardEncoding, 629, -157, { -113, -250, 749, 801 }, &CourierBoldWidthsLookup }, { "Courier-BoldOblique", standardEncoding, 629, -157, { -57, -250, 869, 801 }, &CourierBoldObliqueWidthsLookup }, { "Courier-Oblique", standardEncoding, 629, -157, { -27, -250, 849, 805 }, &CourierObliqueWidthsLookup }, { "Helvetica", standardEncoding, 718, -207, { -166, -225, 1000, 931 }, &HelveticaWidthsLookup }, { "Helvetica-Bold", standardEncoding, 718, -207, { -170, -228, 1003, 962 }, &HelveticaBoldWidthsLookup }, { "Helvetica-BoldOblique", standardEncoding, 718, -207, { -174, -228, 1114, 962 }, &HelveticaBoldObliqueWidthsLookup }, { "Helvetica-Oblique", standardEncoding, 718, -207, { -170, -225, 1116, 931 }, &HelveticaObliqueWidthsLookup }, { "Symbol", symbolEncoding, 1010, -293, { -180, -293, 1090, 1010 }, &SymbolWidthsLookup }, { "Times-Bold", standardEncoding, 683, -217, { -168, -218, 1000, 935 }, &TimesBoldWidthsLookup }, { "Times-BoldItalic", standardEncoding, 683, -217, { -200, -218, 996, 921 }, &TimesBoldItalicWidthsLookup }, { "Times-Italic", standardEncoding, 683, -217, { -169, -217, 1010, 883 }, &TimesItalicWidthsLookup }, { "Times-Roman", standardEncoding, 683, -217, { -168, -218, 1000, 898 }, &TimesRomanWidthsLookup }, { "ZapfDingbats", zapfDingbatsEncoding, 820, -143, { -1, -143, 981, 820 }, &ZapfDingbatsWidthsLookup } }; static const BuiltinFont *builtinFontSubst[] = { &builtinFonts[0], &builtinFonts[3], &builtinFonts[1], &builtinFonts[2], &builtinFonts[4], &builtinFonts[7], &builtinFonts[5], &builtinFonts[6], &builtinFonts[12], &builtinFonts[11], &builtinFonts[9], &builtinFonts[10] }; //------------------------------------------------------------------------ #endif