kolibrios/contrib/media/updf/pdf/pdf_fontfile.c

140 lines
3.9 KiB
C
Raw Permalink Normal View History

#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
}