Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
7643 views
1
#include "mupdf/pdf.h"
2
3
#include "pdf-encodings.h"
4
#include "pdf-glyphlist.h"
5
6
void
7
pdf_load_encoding(char **estrings, char *encoding)
8
{
9
char **bstrings = NULL;
10
int i;
11
12
if (!strcmp(encoding, "StandardEncoding"))
13
bstrings = (char**) pdf_standard;
14
if (!strcmp(encoding, "MacRomanEncoding"))
15
bstrings = (char**) pdf_mac_roman;
16
if (!strcmp(encoding, "MacExpertEncoding"))
17
bstrings = (char**) pdf_mac_expert;
18
if (!strcmp(encoding, "WinAnsiEncoding"))
19
bstrings = (char**) pdf_win_ansi;
20
21
if (bstrings)
22
for (i = 0; i < 256; i++)
23
estrings[i] = bstrings[i];
24
}
25
26
int
27
pdf_lookup_agl(char *name)
28
{
29
char buf[64];
30
char *p;
31
int l = 0;
32
int r = nelem(agl_name_list) - 1;
33
34
fz_strlcpy(buf, name, sizeof buf);
35
36
/* kill anything after first period and underscore */
37
p = strchr(buf, '.');
38
if (p) p[0] = 0;
39
p = strchr(buf, '_');
40
if (p) p[0] = 0;
41
42
while (l <= r)
43
{
44
int m = (l + r) >> 1;
45
int c = strcmp(buf, agl_name_list[m]);
46
if (c < 0)
47
r = m - 1;
48
else if (c > 0)
49
l = m + 1;
50
else
51
return agl_code_list[m];
52
}
53
54
if (strstr(buf, "uni") == buf)
55
return strtol(buf + 3, NULL, 16);
56
else if (strstr(buf, "u") == buf)
57
return strtol(buf + 1, NULL, 16);
58
else if (strstr(buf, "a") == buf && strlen(buf) >= 3)
59
return strtol(buf + 1, NULL, 10);
60
61
return 0;
62
}
63
64
static const char *empty_dup_list[] = { 0 };
65
66
const char **
67
pdf_lookup_agl_duplicates(int ucs)
68
{
69
int l = 0;
70
int r = nelem(agl_dup_offsets) / 2 - 1;
71
while (l <= r)
72
{
73
int m = (l + r) >> 1;
74
if (ucs < agl_dup_offsets[m << 1])
75
r = m - 1;
76
else if (ucs > agl_dup_offsets[m << 1])
77
l = m + 1;
78
else
79
return agl_dup_names + agl_dup_offsets[(m << 1) + 1];
80
}
81
return empty_dup_list;
82
}
83
84