Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4680 right-hear 1
#include "fitz.h"
2
#include "mupdf.h"
3
 
4
#ifdef NOCJK
5
#define NOCJKFONT
6
#endif
7
 
8
#include "../generated/font_base14.h"
9
 
10
#ifndef NODROIDFONT
11
#include "../generated/font_droid.h"
12
#endif
13
 
14
#ifndef NOCJKFONT
15
#include "../generated/font_cjk.h"
16
#endif
17
 
18
unsigned char *
19
pdf_find_builtin_font(char *name, unsigned int *len)
20
{
21
	if (!strcmp("Courier", name)) {
22
		*len = sizeof pdf_font_NimbusMonL_Regu;
23
		return (unsigned char*) pdf_font_NimbusMonL_Regu;
24
	}
25
	if (!strcmp("Courier-Bold", name)) {
26
		*len = sizeof pdf_font_NimbusMonL_Bold;
27
		return (unsigned char*) pdf_font_NimbusMonL_Bold;
28
	}
29
	if (!strcmp("Courier", name)) {
30
		*len = sizeof pdf_font_NimbusMonL_Regu;
31
		return (unsigned char*) pdf_font_NimbusMonL_Regu;
32
	}
33
	if (!strcmp("Courier-Bold", name)) {
34
		*len = sizeof pdf_font_NimbusMonL_Bold;
35
		return (unsigned char*) pdf_font_NimbusMonL_Bold;
36
	}
37
	if (!strcmp("Courier-Oblique", name)) {
38
		*len = sizeof pdf_font_NimbusMonL_ReguObli;
39
		return (unsigned char*) pdf_font_NimbusMonL_ReguObli;
40
	}
41
	if (!strcmp("Courier-BoldOblique", name)) {
42
		*len = sizeof pdf_font_NimbusMonL_BoldObli;
43
		return (unsigned char*) pdf_font_NimbusMonL_BoldObli;
44
	}
45
	if (!strcmp("Helvetica", name)) {
46
		*len = sizeof pdf_font_NimbusSanL_Regu;
47
		return (unsigned char*) pdf_font_NimbusSanL_Regu;
48
	}
49
	if (!strcmp("Helvetica-Bold", name)) {
50
		*len = sizeof pdf_font_NimbusSanL_Bold;
51
		return (unsigned char*) pdf_font_NimbusSanL_Bold;
52
	}
53
	if (!strcmp("Helvetica-Oblique", name)) {
54
		*len = sizeof pdf_font_NimbusSanL_ReguItal;
55
		return (unsigned char*) pdf_font_NimbusSanL_ReguItal;
56
	}
57
	if (!strcmp("Helvetica-BoldOblique", name)) {
58
		*len = sizeof pdf_font_NimbusSanL_BoldItal;
59
		return (unsigned char*) pdf_font_NimbusSanL_BoldItal;
60
	}
61
	if (!strcmp("Times-Roman", name)) {
62
		*len = sizeof pdf_font_NimbusRomNo9L_Regu;
63
		return (unsigned char*) pdf_font_NimbusRomNo9L_Regu;
64
	}
65
	if (!strcmp("Times-Bold", name)) {
66
		*len = sizeof pdf_font_NimbusRomNo9L_Medi;
67
		return (unsigned char*) pdf_font_NimbusRomNo9L_Medi;
68
	}
69
	if (!strcmp("Times-Italic", name)) {
70
		*len = sizeof pdf_font_NimbusRomNo9L_ReguItal;
71
		return (unsigned char*) pdf_font_NimbusRomNo9L_ReguItal;
72
	}
73
	if (!strcmp("Times-BoldItalic", name)) {
74
		*len = sizeof pdf_font_NimbusRomNo9L_MediItal;
75
		return (unsigned char*) pdf_font_NimbusRomNo9L_MediItal;
76
	}
77
	if (!strcmp("Symbol", name)) {
78
		*len = sizeof pdf_font_StandardSymL;
79
		return (unsigned char*) pdf_font_StandardSymL;
80
	}
81
	if (!strcmp("ZapfDingbats", name)) {
82
		*len = sizeof pdf_font_Dingbats;
83
		return (unsigned char*) pdf_font_Dingbats;
84
	}
85
	*len = 0;
86
	return NULL;
87
}
88
 
89
unsigned char *
90
pdf_find_substitute_font(int mono, int serif, int bold, int italic, unsigned int *len)
91
{
92
#ifdef NODROIDFONT
93
	if (mono) {
94
		if (bold) {
95
			if (italic) return pdf_find_builtin_font("Courier-BoldOblique", len);
96
			else return pdf_find_builtin_font("Courier-Bold", len);
97
		} else {
98
			if (italic) return pdf_find_builtin_font("Courier-Oblique", len);
99
			else return pdf_find_builtin_font("Courier", len);
100
		}
101
	} else if (serif) {
102
		if (bold) {
103
			if (italic) return pdf_find_builtin_font("Times-BoldItalic", len);
104
			else return pdf_find_builtin_font("Times-Bold", len);
105
		} else {
106
			if (italic) return pdf_find_builtin_font("Times-Italic", len);
107
			else return pdf_find_builtin_font("Times-Roman", len);
108
		}
109
	} else {
110
		if (bold) {
111
			if (italic) return pdf_find_builtin_font("Helvetica-BoldOblique", len);
112
			else return pdf_find_builtin_font("Helvetica-Bold", len);
113
		} else {
114
			if (italic) return pdf_find_builtin_font("Helvetica-Oblique", len);
115
			else return pdf_find_builtin_font("Helvetica", len);
116
		}
117
	}
118
#else
119
	if (mono) {
120
		*len = sizeof pdf_font_DroidSansMono;
121
		return (unsigned char*) pdf_font_DroidSansMono;
122
	} else {
123
		*len = sizeof pdf_font_DroidSans;
124
		return (unsigned char*) pdf_font_DroidSans;
125
	}
126
#endif
127
}
128
 
129
unsigned char *
130
pdf_find_substitute_cjk_font(int ros, int serif, unsigned int *len)
131
{
132
#ifndef NOCJKFONT
133
	*len = sizeof pdf_font_DroidSansFallback;
134
	return (unsigned char*) pdf_font_DroidSansFallback;
135
#else
136
	*len = 0;
137
	return NULL;
138
#endif
139
}