forked from KolibriOS/kolibrios
140 lines
3.9 KiB
C
140 lines
3.9 KiB
C
#include "fitz.h"
|
|
#include "mupdf.h"
|
|
|
|
#ifdef NOCJK
|
|
#define NOCJKFONT
|
|
#endif
|
|
|
|
#include "../generated/font_base14.h"
|
|
|
|
#ifndef NODROIDFONT
|
|
#include "../generated/font_droid.h"
|
|
#endif
|
|
|
|
#ifndef NOCJKFONT
|
|
#include "../generated/font_cjk.h"
|
|
#endif
|
|
|
|
unsigned char *
|
|
pdf_find_builtin_font(char *name, unsigned int *len)
|
|
{
|
|
if (!strcmp("Courier", name)) {
|
|
*len = sizeof pdf_font_NimbusMonL_Regu;
|
|
return (unsigned char*) pdf_font_NimbusMonL_Regu;
|
|
}
|
|
if (!strcmp("Courier-Bold", name)) {
|
|
*len = sizeof pdf_font_NimbusMonL_Bold;
|
|
return (unsigned char*) pdf_font_NimbusMonL_Bold;
|
|
}
|
|
if (!strcmp("Courier", name)) {
|
|
*len = sizeof pdf_font_NimbusMonL_Regu;
|
|
return (unsigned char*) pdf_font_NimbusMonL_Regu;
|
|
}
|
|
if (!strcmp("Courier-Bold", name)) {
|
|
*len = sizeof pdf_font_NimbusMonL_Bold;
|
|
return (unsigned char*) pdf_font_NimbusMonL_Bold;
|
|
}
|
|
if (!strcmp("Courier-Oblique", name)) {
|
|
*len = sizeof pdf_font_NimbusMonL_ReguObli;
|
|
return (unsigned char*) pdf_font_NimbusMonL_ReguObli;
|
|
}
|
|
if (!strcmp("Courier-BoldOblique", name)) {
|
|
*len = sizeof pdf_font_NimbusMonL_BoldObli;
|
|
return (unsigned char*) pdf_font_NimbusMonL_BoldObli;
|
|
}
|
|
if (!strcmp("Helvetica", name)) {
|
|
*len = sizeof pdf_font_NimbusSanL_Regu;
|
|
return (unsigned char*) pdf_font_NimbusSanL_Regu;
|
|
}
|
|
if (!strcmp("Helvetica-Bold", name)) {
|
|
*len = sizeof pdf_font_NimbusSanL_Bold;
|
|
return (unsigned char*) pdf_font_NimbusSanL_Bold;
|
|
}
|
|
if (!strcmp("Helvetica-Oblique", name)) {
|
|
*len = sizeof pdf_font_NimbusSanL_ReguItal;
|
|
return (unsigned char*) pdf_font_NimbusSanL_ReguItal;
|
|
}
|
|
if (!strcmp("Helvetica-BoldOblique", name)) {
|
|
*len = sizeof pdf_font_NimbusSanL_BoldItal;
|
|
return (unsigned char*) pdf_font_NimbusSanL_BoldItal;
|
|
}
|
|
if (!strcmp("Times-Roman", name)) {
|
|
*len = sizeof pdf_font_NimbusRomNo9L_Regu;
|
|
return (unsigned char*) pdf_font_NimbusRomNo9L_Regu;
|
|
}
|
|
if (!strcmp("Times-Bold", name)) {
|
|
*len = sizeof pdf_font_NimbusRomNo9L_Medi;
|
|
return (unsigned char*) pdf_font_NimbusRomNo9L_Medi;
|
|
}
|
|
if (!strcmp("Times-Italic", name)) {
|
|
*len = sizeof pdf_font_NimbusRomNo9L_ReguItal;
|
|
return (unsigned char*) pdf_font_NimbusRomNo9L_ReguItal;
|
|
}
|
|
if (!strcmp("Times-BoldItalic", name)) {
|
|
*len = sizeof pdf_font_NimbusRomNo9L_MediItal;
|
|
return (unsigned char*) pdf_font_NimbusRomNo9L_MediItal;
|
|
}
|
|
if (!strcmp("Symbol", name)) {
|
|
*len = sizeof pdf_font_StandardSymL;
|
|
return (unsigned char*) pdf_font_StandardSymL;
|
|
}
|
|
if (!strcmp("ZapfDingbats", name)) {
|
|
*len = sizeof pdf_font_Dingbats;
|
|
return (unsigned char*) pdf_font_Dingbats;
|
|
}
|
|
*len = 0;
|
|
return NULL;
|
|
}
|
|
|
|
unsigned char *
|
|
pdf_find_substitute_font(int mono, int serif, int bold, int italic, unsigned int *len)
|
|
{
|
|
#ifdef NODROIDFONT
|
|
if (mono) {
|
|
if (bold) {
|
|
if (italic) return pdf_find_builtin_font("Courier-BoldOblique", len);
|
|
else return pdf_find_builtin_font("Courier-Bold", len);
|
|
} else {
|
|
if (italic) return pdf_find_builtin_font("Courier-Oblique", len);
|
|
else return pdf_find_builtin_font("Courier", len);
|
|
}
|
|
} else if (serif) {
|
|
if (bold) {
|
|
if (italic) return pdf_find_builtin_font("Times-BoldItalic", len);
|
|
else return pdf_find_builtin_font("Times-Bold", len);
|
|
} else {
|
|
if (italic) return pdf_find_builtin_font("Times-Italic", len);
|
|
else return pdf_find_builtin_font("Times-Roman", len);
|
|
}
|
|
} else {
|
|
if (bold) {
|
|
if (italic) return pdf_find_builtin_font("Helvetica-BoldOblique", len);
|
|
else return pdf_find_builtin_font("Helvetica-Bold", len);
|
|
} else {
|
|
if (italic) return pdf_find_builtin_font("Helvetica-Oblique", len);
|
|
else return pdf_find_builtin_font("Helvetica", len);
|
|
}
|
|
}
|
|
#else
|
|
if (mono) {
|
|
*len = sizeof pdf_font_DroidSansMono;
|
|
return (unsigned char*) pdf_font_DroidSansMono;
|
|
} else {
|
|
*len = sizeof pdf_font_DroidSans;
|
|
return (unsigned char*) pdf_font_DroidSans;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
unsigned char *
|
|
pdf_find_substitute_cjk_font(int ros, int serif, unsigned int *len)
|
|
{
|
|
#ifndef NOCJKFONT
|
|
*len = sizeof pdf_font_DroidSansFallback;
|
|
return (unsigned char*) pdf_font_DroidSansFallback;
|
|
#else
|
|
*len = 0;
|
|
return NULL;
|
|
#endif
|
|
}
|