summaryrefslogtreecommitdiff
path: root/Build/source/libs/xpdf/xpdf-src/xpdf/WebFont.h
blob: a967e2e490a6b551a8f5d1ce9de199048d743159 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//========================================================================
//
// WebFont.h
//
// Modify/convert embedded PDF fonts to a form usable by web browsers.
//
// Copyright 2019 Glyph & Cog, LLC
//
//========================================================================

#ifndef WEBFONT_H
#define WEBFONT_H

#include <aconf.h>

#ifdef USE_GCC_PRAGMAS
#pragma interface
#endif

#include "gtypes.h"
#include "GfxFont.h"

class FoFiTrueType;
class FoFiType1C;
class XRef;

//------------------------------------------------------------------------

class WebFont {
public:

  WebFont(GfxFont *gfxFontA, XRef *xref);

  ~WebFont();

  // Returns true if the font is, or can be converted to, a TrueType
  // font.
  GBool canWriteTTF();

  // Returns true if the font is, or can be converted to, an OpenType
  // font.
  GBool canWriteOTF();

  // Write a TrueType (.ttf) file to [fontFilePath].  This can only be
  // called if canWriteTTF() returns true.  Returns true on success.
  GBool writeTTF(const char *fontFilePath);

  // Write an OpenType (.otf) file to [fontFilePath].  This can only
  // be called if canWriteOTF() returns true.  Returns true on
  // success.
  GBool writeOTF(const char *fontFilePath);

private:

  Gushort *makeType1CWidths(int *codeToGID, int nCodes, int *nWidths);
  Gushort *makeCIDType0CWidths(int *codeToGID, int nCodes, int *nWidths);
  Guchar *makeUnicodeCmapTable(int *codeToGID, int nCodes,
			       int *unicodeCmapLength);
  int *makeUnicodeToGID(int *codeToGID, int nCodes, int *unicodeToGIDLength);

  GfxFont *gfxFont;
  char *fontBuf;
  int fontLength;
  FoFiTrueType *ffTrueType;
  FoFiType1C *ffType1C;
  GBool isOpenType;
};

#endif