Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  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. }
  140.