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. #ifndef NOCJK
  5. #include "../generated/cmap_cns.h"
  6. #include "../generated/cmap_gb.h"
  7. #include "../generated/cmap_japan.h"
  8. #include "../generated/cmap_korea.h"
  9. #endif
  10.  
  11. static const struct { char *name; pdf_cmap *cmap; } cmap_table[] =
  12. {
  13. #ifndef NOCJK
  14.         {"78-EUC-H",&cmap_78_EUC_H},
  15.         {"78-EUC-V",&cmap_78_EUC_V},
  16.         {"78-H",&cmap_78_H},
  17.         {"78-RKSJ-H",&cmap_78_RKSJ_H},
  18.         {"78-RKSJ-V",&cmap_78_RKSJ_V},
  19.         {"78-V",&cmap_78_V},
  20.         {"78ms-RKSJ-H",&cmap_78ms_RKSJ_H},
  21.         {"78ms-RKSJ-V",&cmap_78ms_RKSJ_V},
  22.         {"83pv-RKSJ-H",&cmap_83pv_RKSJ_H},
  23.         {"90ms-RKSJ-H",&cmap_90ms_RKSJ_H},
  24.         {"90ms-RKSJ-V",&cmap_90ms_RKSJ_V},
  25.         {"90msp-RKSJ-H",&cmap_90msp_RKSJ_H},
  26.         {"90msp-RKSJ-V",&cmap_90msp_RKSJ_V},
  27.         {"90pv-RKSJ-H",&cmap_90pv_RKSJ_H},
  28.         {"90pv-RKSJ-V",&cmap_90pv_RKSJ_V},
  29.         {"Add-H",&cmap_Add_H},
  30.         {"Add-RKSJ-H",&cmap_Add_RKSJ_H},
  31.         {"Add-RKSJ-V",&cmap_Add_RKSJ_V},
  32.         {"Add-V",&cmap_Add_V},
  33.         {"Adobe-CNS1-0",&cmap_Adobe_CNS1_0},
  34.         {"Adobe-CNS1-1",&cmap_Adobe_CNS1_1},
  35.         {"Adobe-CNS1-2",&cmap_Adobe_CNS1_2},
  36.         {"Adobe-CNS1-3",&cmap_Adobe_CNS1_3},
  37.         {"Adobe-CNS1-4",&cmap_Adobe_CNS1_4},
  38.         {"Adobe-CNS1-5",&cmap_Adobe_CNS1_5},
  39.         {"Adobe-CNS1-6",&cmap_Adobe_CNS1_6},
  40.         {"Adobe-CNS1-UCS2",&cmap_Adobe_CNS1_UCS2},
  41.         {"Adobe-GB1-0",&cmap_Adobe_GB1_0},
  42.         {"Adobe-GB1-1",&cmap_Adobe_GB1_1},
  43.         {"Adobe-GB1-2",&cmap_Adobe_GB1_2},
  44.         {"Adobe-GB1-3",&cmap_Adobe_GB1_3},
  45.         {"Adobe-GB1-4",&cmap_Adobe_GB1_4},
  46.         {"Adobe-GB1-5",&cmap_Adobe_GB1_5},
  47.         {"Adobe-GB1-UCS2",&cmap_Adobe_GB1_UCS2},
  48.         {"Adobe-Japan1-0",&cmap_Adobe_Japan1_0},
  49.         {"Adobe-Japan1-1",&cmap_Adobe_Japan1_1},
  50.         {"Adobe-Japan1-2",&cmap_Adobe_Japan1_2},
  51.         {"Adobe-Japan1-3",&cmap_Adobe_Japan1_3},
  52.         {"Adobe-Japan1-4",&cmap_Adobe_Japan1_4},
  53.         {"Adobe-Japan1-5",&cmap_Adobe_Japan1_5},
  54.         {"Adobe-Japan1-6",&cmap_Adobe_Japan1_6},
  55.         {"Adobe-Japan1-UCS2",&cmap_Adobe_Japan1_UCS2},
  56.         {"Adobe-Japan2-0",&cmap_Adobe_Japan2_0},
  57.         {"Adobe-Korea1-0",&cmap_Adobe_Korea1_0},
  58.         {"Adobe-Korea1-1",&cmap_Adobe_Korea1_1},
  59.         {"Adobe-Korea1-2",&cmap_Adobe_Korea1_2},
  60.         {"Adobe-Korea1-UCS2",&cmap_Adobe_Korea1_UCS2},
  61.         {"B5-H",&cmap_B5_H},
  62.         {"B5-V",&cmap_B5_V},
  63.         {"B5pc-H",&cmap_B5pc_H},
  64.         {"B5pc-V",&cmap_B5pc_V},
  65.         {"CNS-EUC-H",&cmap_CNS_EUC_H},
  66.         {"CNS-EUC-V",&cmap_CNS_EUC_V},
  67.         {"CNS1-H",&cmap_CNS1_H},
  68.         {"CNS1-V",&cmap_CNS1_V},
  69.         {"CNS2-H",&cmap_CNS2_H},
  70.         {"CNS2-V",&cmap_CNS2_V},
  71.         {"ETHK-B5-H",&cmap_ETHK_B5_H},
  72.         {"ETHK-B5-V",&cmap_ETHK_B5_V},
  73.         {"ETen-B5-H",&cmap_ETen_B5_H},
  74.         {"ETen-B5-V",&cmap_ETen_B5_V},
  75.         {"ETenms-B5-H",&cmap_ETenms_B5_H},
  76.         {"ETenms-B5-V",&cmap_ETenms_B5_V},
  77.         {"EUC-H",&cmap_EUC_H},
  78.         {"EUC-V",&cmap_EUC_V},
  79.         {"Ext-H",&cmap_Ext_H},
  80.         {"Ext-RKSJ-H",&cmap_Ext_RKSJ_H},
  81.         {"Ext-RKSJ-V",&cmap_Ext_RKSJ_V},
  82.         {"Ext-V",&cmap_Ext_V},
  83.         {"GB-EUC-H",&cmap_GB_EUC_H},
  84.         {"GB-EUC-V",&cmap_GB_EUC_V},
  85.         {"GB-H",&cmap_GB_H},
  86.         {"GB-V",&cmap_GB_V},
  87.         {"GBK-EUC-H",&cmap_GBK_EUC_H},
  88.         {"GBK-EUC-V",&cmap_GBK_EUC_V},
  89.         {"GBK2K-H",&cmap_GBK2K_H},
  90.         {"GBK2K-V",&cmap_GBK2K_V},
  91.         {"GBKp-EUC-H",&cmap_GBKp_EUC_H},
  92.         {"GBKp-EUC-V",&cmap_GBKp_EUC_V},
  93.         {"GBT-EUC-H",&cmap_GBT_EUC_H},
  94.         {"GBT-EUC-V",&cmap_GBT_EUC_V},
  95.         {"GBT-H",&cmap_GBT_H},
  96.         {"GBT-V",&cmap_GBT_V},
  97.         {"GBTpc-EUC-H",&cmap_GBTpc_EUC_H},
  98.         {"GBTpc-EUC-V",&cmap_GBTpc_EUC_V},
  99.         {"GBpc-EUC-H",&cmap_GBpc_EUC_H},
  100.         {"GBpc-EUC-V",&cmap_GBpc_EUC_V},
  101.         {"H",&cmap_H},
  102.         {"HKdla-B5-H",&cmap_HKdla_B5_H},
  103.         {"HKdla-B5-V",&cmap_HKdla_B5_V},
  104.         {"HKdlb-B5-H",&cmap_HKdlb_B5_H},
  105.         {"HKdlb-B5-V",&cmap_HKdlb_B5_V},
  106.         {"HKgccs-B5-H",&cmap_HKgccs_B5_H},
  107.         {"HKgccs-B5-V",&cmap_HKgccs_B5_V},
  108.         {"HKm314-B5-H",&cmap_HKm314_B5_H},
  109.         {"HKm314-B5-V",&cmap_HKm314_B5_V},
  110.         {"HKm471-B5-H",&cmap_HKm471_B5_H},
  111.         {"HKm471-B5-V",&cmap_HKm471_B5_V},
  112.         {"HKscs-B5-H",&cmap_HKscs_B5_H},
  113.         {"HKscs-B5-V",&cmap_HKscs_B5_V},
  114.         {"Hankaku",&cmap_Hankaku},
  115.         {"Hiragana",&cmap_Hiragana},
  116.         {"Hojo-EUC-H",&cmap_Hojo_EUC_H},
  117.         {"Hojo-EUC-V",&cmap_Hojo_EUC_V},
  118.         {"Hojo-H",&cmap_Hojo_H},
  119.         {"Hojo-V",&cmap_Hojo_V},
  120.         {"KSC-EUC-H",&cmap_KSC_EUC_H},
  121.         {"KSC-EUC-V",&cmap_KSC_EUC_V},
  122.         {"KSC-H",&cmap_KSC_H},
  123.         {"KSC-Johab-H",&cmap_KSC_Johab_H},
  124.         {"KSC-Johab-V",&cmap_KSC_Johab_V},
  125.         {"KSC-V",&cmap_KSC_V},
  126.         {"KSCms-UHC-H",&cmap_KSCms_UHC_H},
  127.         {"KSCms-UHC-HW-H",&cmap_KSCms_UHC_HW_H},
  128.         {"KSCms-UHC-HW-V",&cmap_KSCms_UHC_HW_V},
  129.         {"KSCms-UHC-V",&cmap_KSCms_UHC_V},
  130.         {"KSCpc-EUC-H",&cmap_KSCpc_EUC_H},
  131.         {"KSCpc-EUC-V",&cmap_KSCpc_EUC_V},
  132.         {"Katakana",&cmap_Katakana},
  133.         {"NWP-H",&cmap_NWP_H},
  134.         {"NWP-V",&cmap_NWP_V},
  135.         {"RKSJ-H",&cmap_RKSJ_H},
  136.         {"RKSJ-V",&cmap_RKSJ_V},
  137.         {"Roman",&cmap_Roman},
  138.         {"UniCNS-UCS2-H",&cmap_UniCNS_UCS2_H},
  139.         {"UniCNS-UCS2-V",&cmap_UniCNS_UCS2_V},
  140.         {"UniCNS-UTF16-H",&cmap_UniCNS_UTF16_H},
  141.         {"UniCNS-UTF16-V",&cmap_UniCNS_UTF16_V},
  142.         {"UniGB-UCS2-H",&cmap_UniGB_UCS2_H},
  143.         {"UniGB-UCS2-V",&cmap_UniGB_UCS2_V},
  144.         {"UniGB-UTF16-H",&cmap_UniGB_UTF16_H},
  145.         {"UniGB-UTF16-V",&cmap_UniGB_UTF16_V},
  146.         {"UniHojo-UCS2-H",&cmap_UniHojo_UCS2_H},
  147.         {"UniHojo-UCS2-V",&cmap_UniHojo_UCS2_V},
  148.         {"UniHojo-UTF16-H",&cmap_UniHojo_UTF16_H},
  149.         {"UniHojo-UTF16-V",&cmap_UniHojo_UTF16_V},
  150.         {"UniJIS-UCS2-H",&cmap_UniJIS_UCS2_H},
  151.         {"UniJIS-UCS2-HW-H",&cmap_UniJIS_UCS2_HW_H},
  152.         {"UniJIS-UCS2-HW-V",&cmap_UniJIS_UCS2_HW_V},
  153.         {"UniJIS-UCS2-V",&cmap_UniJIS_UCS2_V},
  154.         {"UniJIS-UTF16-H",&cmap_UniJIS_UTF16_H},
  155.         {"UniJIS-UTF16-V",&cmap_UniJIS_UTF16_V},
  156.         {"UniJISPro-UCS2-HW-V",&cmap_UniJISPro_UCS2_HW_V},
  157.         {"UniJISPro-UCS2-V",&cmap_UniJISPro_UCS2_V},
  158.         {"UniKS-UCS2-H",&cmap_UniKS_UCS2_H},
  159.         {"UniKS-UCS2-V",&cmap_UniKS_UCS2_V},
  160.         {"UniKS-UTF16-H",&cmap_UniKS_UTF16_H},
  161.         {"UniKS-UTF16-V",&cmap_UniKS_UTF16_V},
  162.         {"V",&cmap_V},
  163.         {"WP-Symbol",&cmap_WP_Symbol},
  164. #endif
  165. };
  166.  
  167. pdf_cmap *
  168. pdf_find_builtin_cmap(char *cmap_name)
  169. {
  170.         int l = 0;
  171.         int r = nelem(cmap_table) - 1;
  172.         while (l <= r)
  173.         {
  174.                 int m = (l + r) >> 1;
  175.                 int c = strcmp(cmap_name, cmap_table[m].name);
  176.                 if (c < 0)
  177.                         r = m - 1;
  178.                 else if (c > 0)
  179.                         l = m + 1;
  180.                 else
  181.                         return cmap_table[m].cmap;
  182.         }
  183.         return NULL;
  184. }
  185.