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
70
71
72
73
74
75
76
|
//========================================================================
//
// 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>
#include "gtypes.h"
#include "FoFiBase.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);
// Return the TrueType file as a string. This can only be called if
// canWriteTTF() returns true. Returns null on error.
GString *getTTFData();
// 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);
// Return the OpenType file as a string. This can only be called if
// canWriteOTF() returns true. Returns null on error.
GString *getOTFData();
private:
GBool generateTTF(FoFiOutputFunc outFunc, void *stream);
GBool generateOTF(FoFiOutputFunc outFunc, void *stream);
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
|