blob: a893385808052da16a38c553d4bb38614cbcd836 [file] [log] [blame]
//========================================================================
//
// 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