| //======================================================================== |
| // |
| // 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 <aacid@kde.org> |
| // |
| // 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 |