summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Jamfile2
-rw-r--r--apps/Jamfile2
-rw-r--r--include/mupdf/rsrc.h10
-rw-r--r--mupdf/Jamfile1
-rw-r--r--mupdf/pdf_cmap.c106
-rw-r--r--mupdf/pdf_cmapfile.c441
6 files changed, 504 insertions, 58 deletions
diff --git a/Jamfile b/Jamfile
index f4fc1cf1..851379d2 100644
--- a/Jamfile
+++ b/Jamfile
@@ -11,6 +11,7 @@ SubDir TOP ;
HDRS = [ FDirName $(TOP) include ] ;
Main hexdump : hexdump.c ;
+Main strdump : strdump.c ;
SubInclude TOP base ;
SubInclude TOP stream ;
@@ -18,6 +19,7 @@ SubInclude TOP world ;
SubInclude TOP raster ;
SubInclude TOP fonts ;
+SubInclude TOP cmaps ;
SubInclude TOP mupdf ;
SubInclude TOP apps ;
diff --git a/apps/Jamfile b/apps/Jamfile
index e6a72bfd..84c02f2c 100644
--- a/apps/Jamfile
+++ b/apps/Jamfile
@@ -1,6 +1,6 @@
#
-FITZLIBS = libmupdf libbase libstream libworld libraster libfonts ;
+FITZLIBS = libmupdf libbase libstream libworld libraster libfonts libcmaps ;
SubDir TOP apps ;
Main mupdftool : pdftool.c ;
diff --git a/include/mupdf/rsrc.h b/include/mupdf/rsrc.h
index 65f9e536..738919b4 100644
--- a/include/mupdf/rsrc.h
+++ b/include/mupdf/rsrc.h
@@ -148,6 +148,16 @@ fz_error *pdf_loadtile(fz_image *image, fz_pixmap *tile);
typedef struct pdf_cmap_s pdf_cmap;
+struct pdf_cmapentry_s
+{
+ const char *name;
+ const char *buf;
+ const int *len;
+ pdf_cmap *cmap;
+};
+
+extern struct pdf_cmapentry_s pdf_cmaptable[]; /* list of builtin system cmaps */
+
fz_error *pdf_newcmap(pdf_cmap **cmapp);
pdf_cmap *pdf_keepcmap(pdf_cmap *cmap);
void pdf_dropcmap(pdf_cmap *cmap);
diff --git a/mupdf/Jamfile b/mupdf/Jamfile
index a96f4d30..2d7902cd 100644
--- a/mupdf/Jamfile
+++ b/mupdf/Jamfile
@@ -22,6 +22,7 @@ Library libmupdf :
# fonts
pdf_fontagl.c
pdf_fontenc.c
+ pdf_cmapfile.c
pdf_cmap.c
pdf_unicode.c
pdf_font.c
diff --git a/mupdf/pdf_cmap.c b/mupdf/pdf_cmap.c
index f435f9ec..b961e4fd 100644
--- a/mupdf/pdf_cmap.c
+++ b/mupdf/pdf_cmap.c
@@ -1151,73 +1151,65 @@ cleanup:
}
/*
- * Load predefined CMap from system
+ * Load predefined CMap from system. We keep these files
+ * embedded in the executable, and parse them when needed,
+ * and cache the parsed copy for later reuse.
*/
fz_error *
-pdf_loadsystemcmap(pdf_cmap **cmapp, char *name)
+pdf_loadsystemcmap(pdf_cmap **cmapp, char *cmapname)
{
- fz_error *error = fz_okay;
- fz_stream *file;
- char *cmapdir;
- char *usecmapname;
- pdf_cmap *usecmap;
- pdf_cmap *cmap;
- char path[1024];
-
- cmap = nil;
- file = nil;
-
- pdf_logfont("load system cmap %s {\n", name);
-
- cmapdir = getenv("CMAPDIR");
- if (!cmapdir)
- return fz_throw("ioerror: CMAPDIR environment not set");
-
- strlcpy(path, cmapdir, sizeof path);
- strlcat(path, "/", sizeof path);
- strlcat(path, name, sizeof path);
+ fz_error *error;
+ fz_stream *file;
+ pdf_cmap *usecmap;
+ pdf_cmap *cmap;
+ int i;
+
+ for (i = 0; pdf_cmaptable[i].name; i++)
+ if (!strcmp(cmapname, pdf_cmaptable[i].name))
+ goto found;
+
+ return fz_throw("cannot find cmap: %s", cmapname);
+
+found:
+ if (pdf_cmaptable[i].cmap)
+ {
+ pdf_logfont("reuse system cmap %s\n", cmapname);
+ pdf_keepcmap(pdf_cmaptable[i].cmap);
+ *cmapp = pdf_cmaptable[i].cmap;
+ return fz_okay;
+ }
- error = fz_openrfile(&file, path);
- if (error)
- {
- error = fz_rethrow(error, "cannot open cmap file '%s'", name);
- goto cleanup;
- }
+ pdf_logfont("load system cmap %s\n", cmapname);
- error = pdf_parsecmap(&cmap, file);
- if (error)
- {
- error = fz_rethrow(error, "cannot parse cmap file");
- goto cleanup;
- }
+ error = fz_openrmemory(&file, pdf_cmaptable[i].buf, *pdf_cmaptable[i].len);
+ if (error)
+ return fz_rethrow(error, "cannot create stream to read cmap from memory");
+ error = pdf_parsecmap(&pdf_cmaptable[i].cmap, file);
+ if (error)
+ {
fz_dropstream(file);
+ return fz_rethrow(error, "cannot parse system cmap '%s'", cmapname);
+ }
- usecmapname = cmap->usecmapname;
- if (usecmapname[0])
- {
- pdf_logfont("usecmap %s\n", usecmapname);
- error = pdf_loadsystemcmap(&usecmap, usecmapname);
- if (error)
- {
- error = fz_rethrow(error, "cannot load system usecmap '%s'", usecmapname);
- goto cleanup;
- }
- pdf_setusecmap(cmap, usecmap);
- pdf_dropcmap(usecmap);
- }
+ fz_dropstream(file);
- pdf_logfont("}\n");
+ /* Keep an extra reference, since we have it cached */
+ pdf_keepcmap(pdf_cmaptable[i].cmap);
- *cmapp = cmap;
- return fz_okay;
-
-cleanup:
- if (cmap)
- pdf_dropcmap(cmap);
- if (file)
- fz_dropstream(file);
- return error; /* already rethrown */
+ if (pdf_cmaptable[i].cmap->usecmapname[0])
+ {
+ pdf_logfont("usecmap %s\n", pdf_cmaptable[i].cmap->usecmapname);
+ error = pdf_loadsystemcmap(&usecmap, pdf_cmaptable[i].cmap->usecmapname);
+ if (error)
+ return fz_rethrow(error, "cannot load usecmap '%s'", pdf_cmaptable[i].cmap->usecmapname);
+ pdf_setusecmap(pdf_cmaptable[i].cmap, usecmap);
+ pdf_dropcmap(usecmap);
+ }
+
+ pdf_keepcmap(pdf_cmaptable[i].cmap);
+ *cmapp = pdf_cmaptable[i].cmap;
+ return fz_okay;
}
/*
diff --git a/mupdf/pdf_cmapfile.c b/mupdf/pdf_cmapfile.c
new file mode 100644
index 00000000..b511ad9b
--- /dev/null
+++ b/mupdf/pdf_cmapfile.c
@@ -0,0 +1,441 @@
+/*
+ * A mostly grep-generated file.
+ */
+
+#include "fitz.h"
+#include "mupdf.h"
+
+extern const char cmaps_chinese_s_Adobe_GB1_4_name[];
+extern const char cmaps_chinese_s_Adobe_GB1_4_buf[];
+extern const int cmaps_chinese_s_Adobe_GB1_4_len;
+extern const char cmaps_chinese_s_Adobe_GB1_UCS2_name[];
+extern const char cmaps_chinese_s_Adobe_GB1_UCS2_buf[];
+extern const int cmaps_chinese_s_Adobe_GB1_UCS2_len;
+extern const char cmaps_chinese_s_GB_EUC_H_name[];
+extern const char cmaps_chinese_s_GB_EUC_H_buf[];
+extern const int cmaps_chinese_s_GB_EUC_H_len;
+extern const char cmaps_chinese_s_GB_EUC_V_name[];
+extern const char cmaps_chinese_s_GB_EUC_V_buf[];
+extern const int cmaps_chinese_s_GB_EUC_V_len;
+extern const char cmaps_chinese_s_GBK_EUC_H_name[];
+extern const char cmaps_chinese_s_GBK_EUC_H_buf[];
+extern const int cmaps_chinese_s_GBK_EUC_H_len;
+extern const char cmaps_chinese_s_GBK_EUC_UCS2_name[];
+extern const char cmaps_chinese_s_GBK_EUC_UCS2_buf[];
+extern const int cmaps_chinese_s_GBK_EUC_UCS2_len;
+extern const char cmaps_chinese_s_GBK_EUC_V_name[];
+extern const char cmaps_chinese_s_GBK_EUC_V_buf[];
+extern const int cmaps_chinese_s_GBK_EUC_V_len;
+extern const char cmaps_chinese_s_GBK2K_H_name[];
+extern const char cmaps_chinese_s_GBK2K_H_buf[];
+extern const int cmaps_chinese_s_GBK2K_H_len;
+extern const char cmaps_chinese_s_GBK2K_V_name[];
+extern const char cmaps_chinese_s_GBK2K_V_buf[];
+extern const int cmaps_chinese_s_GBK2K_V_len;
+extern const char cmaps_chinese_s_GBKp_EUC_H_name[];
+extern const char cmaps_chinese_s_GBKp_EUC_H_buf[];
+extern const int cmaps_chinese_s_GBKp_EUC_H_len;
+extern const char cmaps_chinese_s_GBKp_EUC_V_name[];
+extern const char cmaps_chinese_s_GBKp_EUC_V_buf[];
+extern const int cmaps_chinese_s_GBKp_EUC_V_len;
+extern const char cmaps_chinese_s_GBT_EUC_H_name[];
+extern const char cmaps_chinese_s_GBT_EUC_H_buf[];
+extern const int cmaps_chinese_s_GBT_EUC_H_len;
+extern const char cmaps_chinese_s_GBT_EUC_V_name[];
+extern const char cmaps_chinese_s_GBT_EUC_V_buf[];
+extern const int cmaps_chinese_s_GBT_EUC_V_len;
+extern const char cmaps_chinese_s_GBpc_EUC_H_name[];
+extern const char cmaps_chinese_s_GBpc_EUC_H_buf[];
+extern const int cmaps_chinese_s_GBpc_EUC_H_len;
+extern const char cmaps_chinese_s_GBpc_EUC_UCS2_name[];
+extern const char cmaps_chinese_s_GBpc_EUC_UCS2_buf[];
+extern const int cmaps_chinese_s_GBpc_EUC_UCS2_len;
+extern const char cmaps_chinese_s_GBpc_EUC_UCS2C_name[];
+extern const char cmaps_chinese_s_GBpc_EUC_UCS2C_buf[];
+extern const int cmaps_chinese_s_GBpc_EUC_UCS2C_len;
+extern const char cmaps_chinese_s_GBpc_EUC_V_name[];
+extern const char cmaps_chinese_s_GBpc_EUC_V_buf[];
+extern const int cmaps_chinese_s_GBpc_EUC_V_len;
+extern const char cmaps_chinese_s_UniGB_UCS2_H_name[];
+extern const char cmaps_chinese_s_UniGB_UCS2_H_buf[];
+extern const int cmaps_chinese_s_UniGB_UCS2_H_len;
+extern const char cmaps_chinese_s_UniGB_UCS2_V_name[];
+extern const char cmaps_chinese_s_UniGB_UCS2_V_buf[];
+extern const int cmaps_chinese_s_UniGB_UCS2_V_len;
+extern const char cmaps_chinese_t_Adobe_CNS1_3_name[];
+extern const char cmaps_chinese_t_Adobe_CNS1_3_buf[];
+extern const int cmaps_chinese_t_Adobe_CNS1_3_len;
+extern const char cmaps_chinese_t_Adobe_CNS1_UCS2_name[];
+extern const char cmaps_chinese_t_Adobe_CNS1_UCS2_buf[];
+extern const int cmaps_chinese_t_Adobe_CNS1_UCS2_len;
+extern const char cmaps_chinese_t_B5pc_H_name[];
+extern const char cmaps_chinese_t_B5pc_H_buf[];
+extern const int cmaps_chinese_t_B5pc_H_len;
+extern const char cmaps_chinese_t_B5pc_UCS2_name[];
+extern const char cmaps_chinese_t_B5pc_UCS2_buf[];
+extern const int cmaps_chinese_t_B5pc_UCS2_len;
+extern const char cmaps_chinese_t_B5pc_UCS2C_name[];
+extern const char cmaps_chinese_t_B5pc_UCS2C_buf[];
+extern const int cmaps_chinese_t_B5pc_UCS2C_len;
+extern const char cmaps_chinese_t_B5pc_V_name[];
+extern const char cmaps_chinese_t_B5pc_V_buf[];
+extern const int cmaps_chinese_t_B5pc_V_len;
+extern const char cmaps_chinese_t_CNS_EUC_H_name[];
+extern const char cmaps_chinese_t_CNS_EUC_H_buf[];
+extern const int cmaps_chinese_t_CNS_EUC_H_len;
+extern const char cmaps_chinese_t_CNS_EUC_V_name[];
+extern const char cmaps_chinese_t_CNS_EUC_V_buf[];
+extern const int cmaps_chinese_t_CNS_EUC_V_len;
+extern const char cmaps_chinese_t_ETen_B5_H_name[];
+extern const char cmaps_chinese_t_ETen_B5_H_buf[];
+extern const int cmaps_chinese_t_ETen_B5_H_len;
+extern const char cmaps_chinese_t_ETen_B5_UCS2_name[];
+extern const char cmaps_chinese_t_ETen_B5_UCS2_buf[];
+extern const int cmaps_chinese_t_ETen_B5_UCS2_len;
+extern const char cmaps_chinese_t_ETen_B5_V_name[];
+extern const char cmaps_chinese_t_ETen_B5_V_buf[];
+extern const int cmaps_chinese_t_ETen_B5_V_len;
+extern const char cmaps_chinese_t_HKscs_B5_H_name[];
+extern const char cmaps_chinese_t_HKscs_B5_H_buf[];
+extern const int cmaps_chinese_t_HKscs_B5_H_len;
+extern const char cmaps_chinese_t_HKscs_B5_V_name[];
+extern const char cmaps_chinese_t_HKscs_B5_V_buf[];
+extern const int cmaps_chinese_t_HKscs_B5_V_len;
+extern const char cmaps_chinese_t_UniCNS_UCS2_H_name[];
+extern const char cmaps_chinese_t_UniCNS_UCS2_H_buf[];
+extern const int cmaps_chinese_t_UniCNS_UCS2_H_len;
+extern const char cmaps_chinese_t_UniCNS_UCS2_V_name[];
+extern const char cmaps_chinese_t_UniCNS_UCS2_V_buf[];
+extern const int cmaps_chinese_t_UniCNS_UCS2_V_len;
+extern const char cmaps_japanese_83pv_RKSJ_H_name[];
+extern const char cmaps_japanese_83pv_RKSJ_H_buf[];
+extern const int cmaps_japanese_83pv_RKSJ_H_len;
+extern const char cmaps_japanese_90ms_RKSJ_H_name[];
+extern const char cmaps_japanese_90ms_RKSJ_H_buf[];
+extern const int cmaps_japanese_90ms_RKSJ_H_len;
+extern const char cmaps_japanese_90ms_RKSJ_UCS2_name[];
+extern const char cmaps_japanese_90ms_RKSJ_UCS2_buf[];
+extern const int cmaps_japanese_90ms_RKSJ_UCS2_len;
+extern const char cmaps_japanese_90ms_RKSJ_V_name[];
+extern const char cmaps_japanese_90ms_RKSJ_V_buf[];
+extern const int cmaps_japanese_90ms_RKSJ_V_len;
+extern const char cmaps_japanese_90msp_RKSJ_H_name[];
+extern const char cmaps_japanese_90msp_RKSJ_H_buf[];
+extern const int cmaps_japanese_90msp_RKSJ_H_len;
+extern const char cmaps_japanese_90msp_RKSJ_V_name[];
+extern const char cmaps_japanese_90msp_RKSJ_V_buf[];
+extern const int cmaps_japanese_90msp_RKSJ_V_len;
+extern const char cmaps_japanese_90pv_RKSJ_H_name[];
+extern const char cmaps_japanese_90pv_RKSJ_H_buf[];
+extern const int cmaps_japanese_90pv_RKSJ_H_len;
+extern const char cmaps_japanese_90pv_RKSJ_UCS2_name[];
+extern const char cmaps_japanese_90pv_RKSJ_UCS2_buf[];
+extern const int cmaps_japanese_90pv_RKSJ_UCS2_len;
+extern const char cmaps_japanese_90pv_RKSJ_UCS2C_name[];
+extern const char cmaps_japanese_90pv_RKSJ_UCS2C_buf[];
+extern const int cmaps_japanese_90pv_RKSJ_UCS2C_len;
+extern const char cmaps_japanese_Add_RKSJ_H_name[];
+extern const char cmaps_japanese_Add_RKSJ_H_buf[];
+extern const int cmaps_japanese_Add_RKSJ_H_len;
+extern const char cmaps_japanese_Add_RKSJ_V_name[];
+extern const char cmaps_japanese_Add_RKSJ_V_buf[];
+extern const int cmaps_japanese_Add_RKSJ_V_len;
+extern const char cmaps_japanese_Adobe_Japan1_4_name[];
+extern const char cmaps_japanese_Adobe_Japan1_4_buf[];
+extern const int cmaps_japanese_Adobe_Japan1_4_len;
+extern const char cmaps_japanese_Adobe_Japan1_UCS2_name[];
+extern const char cmaps_japanese_Adobe_Japan1_UCS2_buf[];
+extern const int cmaps_japanese_Adobe_Japan1_UCS2_len;
+extern const char cmaps_japanese_EUC_H_name[];
+extern const char cmaps_japanese_EUC_H_buf[];
+extern const int cmaps_japanese_EUC_H_len;
+extern const char cmaps_japanese_EUC_V_name[];
+extern const char cmaps_japanese_EUC_V_buf[];
+extern const int cmaps_japanese_EUC_V_len;
+extern const char cmaps_japanese_Ext_RKSJ_H_name[];
+extern const char cmaps_japanese_Ext_RKSJ_H_buf[];
+extern const int cmaps_japanese_Ext_RKSJ_H_len;
+extern const char cmaps_japanese_Ext_RKSJ_V_name[];
+extern const char cmaps_japanese_Ext_RKSJ_V_buf[];
+extern const int cmaps_japanese_Ext_RKSJ_V_len;
+extern const char cmaps_japanese_H_name[];
+extern const char cmaps_japanese_H_buf[];
+extern const int cmaps_japanese_H_len;
+extern const char cmaps_japanese_UniJIS_UCS2_H_name[];
+extern const char cmaps_japanese_UniJIS_UCS2_H_buf[];
+extern const int cmaps_japanese_UniJIS_UCS2_H_len;
+extern const char cmaps_japanese_UniJIS_UCS2_HW_H_name[];
+extern const char cmaps_japanese_UniJIS_UCS2_HW_H_buf[];
+extern const int cmaps_japanese_UniJIS_UCS2_HW_H_len;
+extern const char cmaps_japanese_UniJIS_UCS2_HW_V_name[];
+extern const char cmaps_japanese_UniJIS_UCS2_HW_V_buf[];
+extern const int cmaps_japanese_UniJIS_UCS2_HW_V_len;
+extern const char cmaps_japanese_UniJIS_UCS2_V_name[];
+extern const char cmaps_japanese_UniJIS_UCS2_V_buf[];
+extern const int cmaps_japanese_UniJIS_UCS2_V_len;
+extern const char cmaps_japanese_V_name[];
+extern const char cmaps_japanese_V_buf[];
+extern const int cmaps_japanese_V_len;
+extern const char cmaps_korean_Adobe_Korea1_2_name[];
+extern const char cmaps_korean_Adobe_Korea1_2_buf[];
+extern const int cmaps_korean_Adobe_Korea1_2_len;
+extern const char cmaps_korean_Adobe_Korea1_UCS2_name[];
+extern const char cmaps_korean_Adobe_Korea1_UCS2_buf[];
+extern const int cmaps_korean_Adobe_Korea1_UCS2_len;
+extern const char cmaps_korean_KSC_EUC_H_name[];
+extern const char cmaps_korean_KSC_EUC_H_buf[];
+extern const int cmaps_korean_KSC_EUC_H_len;
+extern const char cmaps_korean_KSC_EUC_V_name[];
+extern const char cmaps_korean_KSC_EUC_V_buf[];
+extern const int cmaps_korean_KSC_EUC_V_len;
+extern const char cmaps_korean_KSCms_UHC_H_name[];
+extern const char cmaps_korean_KSCms_UHC_H_buf[];
+extern const int cmaps_korean_KSCms_UHC_H_len;
+extern const char cmaps_korean_KSCms_UHC_HW_H_name[];
+extern const char cmaps_korean_KSCms_UHC_HW_H_buf[];
+extern const int cmaps_korean_KSCms_UHC_HW_H_len;
+extern const char cmaps_korean_KSCms_UHC_HW_V_name[];
+extern const char cmaps_korean_KSCms_UHC_HW_V_buf[];
+extern const int cmaps_korean_KSCms_UHC_HW_V_len;
+extern const char cmaps_korean_KSCms_UHC_UCS2_name[];
+extern const char cmaps_korean_KSCms_UHC_UCS2_buf[];
+extern const int cmaps_korean_KSCms_UHC_UCS2_len;
+extern const char cmaps_korean_KSCms_UHC_V_name[];
+extern const char cmaps_korean_KSCms_UHC_V_buf[];
+extern const int cmaps_korean_KSCms_UHC_V_len;
+extern const char cmaps_korean_KSCpc_EUC_H_name[];
+extern const char cmaps_korean_KSCpc_EUC_H_buf[];
+extern const int cmaps_korean_KSCpc_EUC_H_len;
+extern const char cmaps_korean_KSCpc_EUC_UCS2_name[];
+extern const char cmaps_korean_KSCpc_EUC_UCS2_buf[];
+extern const int cmaps_korean_KSCpc_EUC_UCS2_len;
+extern const char cmaps_korean_KSCpc_EUC_UCS2C_name[];
+extern const char cmaps_korean_KSCpc_EUC_UCS2C_buf[];
+extern const int cmaps_korean_KSCpc_EUC_UCS2C_len;
+extern const char cmaps_korean_UniKS_UCS2_H_name[];
+extern const char cmaps_korean_UniKS_UCS2_H_buf[];
+extern const int cmaps_korean_UniKS_UCS2_H_len;
+extern const char cmaps_korean_UniKS_UCS2_V_name[];
+extern const char cmaps_korean_UniKS_UCS2_V_buf[];
+extern const int cmaps_korean_UniKS_UCS2_V_len;
+
+struct pdf_cmapentry_s pdf_cmaptable[] =
+{
+
+ { cmaps_chinese_s_Adobe_GB1_4_name,
+ cmaps_chinese_s_Adobe_GB1_4_buf,
+ &cmaps_chinese_s_Adobe_GB1_4_len, 0 },
+ { cmaps_chinese_s_Adobe_GB1_UCS2_name,
+ cmaps_chinese_s_Adobe_GB1_UCS2_buf,
+ &cmaps_chinese_s_Adobe_GB1_UCS2_len, 0 },
+ { cmaps_chinese_s_GB_EUC_H_name,
+ cmaps_chinese_s_GB_EUC_H_buf,
+ &cmaps_chinese_s_GB_EUC_H_len, 0 },
+ { cmaps_chinese_s_GB_EUC_V_name,
+ cmaps_chinese_s_GB_EUC_V_buf,
+ &cmaps_chinese_s_GB_EUC_V_len, 0 },
+ { cmaps_chinese_s_GBK_EUC_H_name,
+ cmaps_chinese_s_GBK_EUC_H_buf,
+ &cmaps_chinese_s_GBK_EUC_H_len, 0 },
+ { cmaps_chinese_s_GBK_EUC_UCS2_name,
+ cmaps_chinese_s_GBK_EUC_UCS2_buf,
+ &cmaps_chinese_s_GBK_EUC_UCS2_len, 0 },
+ { cmaps_chinese_s_GBK_EUC_V_name,
+ cmaps_chinese_s_GBK_EUC_V_buf,
+ &cmaps_chinese_s_GBK_EUC_V_len, 0 },
+ { cmaps_chinese_s_GBK2K_H_name,
+ cmaps_chinese_s_GBK2K_H_buf,
+ &cmaps_chinese_s_GBK2K_H_len, 0 },
+ { cmaps_chinese_s_GBK2K_V_name,
+ cmaps_chinese_s_GBK2K_V_buf,
+ &cmaps_chinese_s_GBK2K_V_len, 0 },
+ { cmaps_chinese_s_GBKp_EUC_H_name,
+ cmaps_chinese_s_GBKp_EUC_H_buf,
+ &cmaps_chinese_s_GBKp_EUC_H_len, 0 },
+ { cmaps_chinese_s_GBKp_EUC_V_name,
+ cmaps_chinese_s_GBKp_EUC_V_buf,
+ &cmaps_chinese_s_GBKp_EUC_V_len, 0 },
+ { cmaps_chinese_s_GBT_EUC_H_name,
+ cmaps_chinese_s_GBT_EUC_H_buf,
+ &cmaps_chinese_s_GBT_EUC_H_len, 0 },
+ { cmaps_chinese_s_GBT_EUC_V_name,
+ cmaps_chinese_s_GBT_EUC_V_buf,
+ &cmaps_chinese_s_GBT_EUC_V_len, 0 },
+ { cmaps_chinese_s_GBpc_EUC_H_name,
+ cmaps_chinese_s_GBpc_EUC_H_buf,
+ &cmaps_chinese_s_GBpc_EUC_H_len, 0 },
+ { cmaps_chinese_s_GBpc_EUC_UCS2_name,
+ cmaps_chinese_s_GBpc_EUC_UCS2_buf,
+ &cmaps_chinese_s_GBpc_EUC_UCS2_len, 0 },
+ { cmaps_chinese_s_GBpc_EUC_UCS2C_name,
+ cmaps_chinese_s_GBpc_EUC_UCS2C_buf,
+ &cmaps_chinese_s_GBpc_EUC_UCS2C_len, 0 },
+ { cmaps_chinese_s_GBpc_EUC_V_name,
+ cmaps_chinese_s_GBpc_EUC_V_buf,
+ &cmaps_chinese_s_GBpc_EUC_V_len, 0 },
+ { cmaps_chinese_s_UniGB_UCS2_H_name,
+ cmaps_chinese_s_UniGB_UCS2_H_buf,
+ &cmaps_chinese_s_UniGB_UCS2_H_len, 0 },
+ { cmaps_chinese_s_UniGB_UCS2_V_name,
+ cmaps_chinese_s_UniGB_UCS2_V_buf,
+ &cmaps_chinese_s_UniGB_UCS2_V_len, 0 },
+ { cmaps_chinese_t_Adobe_CNS1_3_name,
+ cmaps_chinese_t_Adobe_CNS1_3_buf,
+ &cmaps_chinese_t_Adobe_CNS1_3_len, 0 },
+ { cmaps_chinese_t_Adobe_CNS1_UCS2_name,
+ cmaps_chinese_t_Adobe_CNS1_UCS2_buf,
+ &cmaps_chinese_t_Adobe_CNS1_UCS2_len, 0 },
+ { cmaps_chinese_t_B5pc_H_name,
+ cmaps_chinese_t_B5pc_H_buf,
+ &cmaps_chinese_t_B5pc_H_len, 0 },
+ { cmaps_chinese_t_B5pc_UCS2_name,
+ cmaps_chinese_t_B5pc_UCS2_buf,
+ &cmaps_chinese_t_B5pc_UCS2_len, 0 },
+ { cmaps_chinese_t_B5pc_UCS2C_name,
+ cmaps_chinese_t_B5pc_UCS2C_buf,
+ &cmaps_chinese_t_B5pc_UCS2C_len, 0 },
+ { cmaps_chinese_t_B5pc_V_name,
+ cmaps_chinese_t_B5pc_V_buf,
+ &cmaps_chinese_t_B5pc_V_len, 0 },
+ { cmaps_chinese_t_CNS_EUC_H_name,
+ cmaps_chinese_t_CNS_EUC_H_buf,
+ &cmaps_chinese_t_CNS_EUC_H_len, 0 },
+ { cmaps_chinese_t_CNS_EUC_V_name,
+ cmaps_chinese_t_CNS_EUC_V_buf,
+ &cmaps_chinese_t_CNS_EUC_V_len, 0 },
+ { cmaps_chinese_t_ETen_B5_H_name,
+ cmaps_chinese_t_ETen_B5_H_buf,
+ &cmaps_chinese_t_ETen_B5_H_len, 0 },
+ { cmaps_chinese_t_ETen_B5_UCS2_name,
+ cmaps_chinese_t_ETen_B5_UCS2_buf,
+ &cmaps_chinese_t_ETen_B5_UCS2_len, 0 },
+ { cmaps_chinese_t_ETen_B5_V_name,
+ cmaps_chinese_t_ETen_B5_V_buf,
+ &cmaps_chinese_t_ETen_B5_V_len, 0 },
+ { cmaps_chinese_t_HKscs_B5_H_name,
+ cmaps_chinese_t_HKscs_B5_H_buf,
+ &cmaps_chinese_t_HKscs_B5_H_len, 0 },
+ { cmaps_chinese_t_HKscs_B5_V_name,
+ cmaps_chinese_t_HKscs_B5_V_buf,
+ &cmaps_chinese_t_HKscs_B5_V_len, 0 },
+ { cmaps_chinese_t_UniCNS_UCS2_H_name,
+ cmaps_chinese_t_UniCNS_UCS2_H_buf,
+ &cmaps_chinese_t_UniCNS_UCS2_H_len, 0 },
+ { cmaps_chinese_t_UniCNS_UCS2_V_name,
+ cmaps_chinese_t_UniCNS_UCS2_V_buf,
+ &cmaps_chinese_t_UniCNS_UCS2_V_len, 0 },
+ { cmaps_japanese_83pv_RKSJ_H_name,
+ cmaps_japanese_83pv_RKSJ_H_buf,
+ &cmaps_japanese_83pv_RKSJ_H_len, 0 },
+ { cmaps_japanese_90ms_RKSJ_H_name,
+ cmaps_japanese_90ms_RKSJ_H_buf,
+ &cmaps_japanese_90ms_RKSJ_H_len, 0 },
+ { cmaps_japanese_90ms_RKSJ_UCS2_name,
+ cmaps_japanese_90ms_RKSJ_UCS2_buf,
+ &cmaps_japanese_90ms_RKSJ_UCS2_len, 0 },
+ { cmaps_japanese_90ms_RKSJ_V_name,
+ cmaps_japanese_90ms_RKSJ_V_buf,
+ &cmaps_japanese_90ms_RKSJ_V_len, 0 },
+ { cmaps_japanese_90msp_RKSJ_H_name,
+ cmaps_japanese_90msp_RKSJ_H_buf,
+ &cmaps_japanese_90msp_RKSJ_H_len, 0 },
+ { cmaps_japanese_90msp_RKSJ_V_name,
+ cmaps_japanese_90msp_RKSJ_V_buf,
+ &cmaps_japanese_90msp_RKSJ_V_len, 0 },
+ { cmaps_japanese_90pv_RKSJ_H_name,
+ cmaps_japanese_90pv_RKSJ_H_buf,
+ &cmaps_japanese_90pv_RKSJ_H_len, 0 },
+ { cmaps_japanese_90pv_RKSJ_UCS2_name,
+ cmaps_japanese_90pv_RKSJ_UCS2_buf,
+ &cmaps_japanese_90pv_RKSJ_UCS2_len, 0 },
+ { cmaps_japanese_90pv_RKSJ_UCS2C_name,
+ cmaps_japanese_90pv_RKSJ_UCS2C_buf,
+ &cmaps_japanese_90pv_RKSJ_UCS2C_len, 0 },
+ { cmaps_japanese_Add_RKSJ_H_name,
+ cmaps_japanese_Add_RKSJ_H_buf,
+ &cmaps_japanese_Add_RKSJ_H_len, 0 },
+ { cmaps_japanese_Add_RKSJ_V_name,
+ cmaps_japanese_Add_RKSJ_V_buf,
+ &cmaps_japanese_Add_RKSJ_V_len, 0 },
+ { cmaps_japanese_Adobe_Japan1_4_name,
+ cmaps_japanese_Adobe_Japan1_4_buf,
+ &cmaps_japanese_Adobe_Japan1_4_len, 0 },
+ { cmaps_japanese_Adobe_Japan1_UCS2_name,
+ cmaps_japanese_Adobe_Japan1_UCS2_buf,
+ &cmaps_japanese_Adobe_Japan1_UCS2_len, 0 },
+ { cmaps_japanese_EUC_H_name,
+ cmaps_japanese_EUC_H_buf,
+ &cmaps_japanese_EUC_H_len, 0 },
+ { cmaps_japanese_EUC_V_name,
+ cmaps_japanese_EUC_V_buf,
+ &cmaps_japanese_EUC_V_len, 0 },
+ { cmaps_japanese_Ext_RKSJ_H_name,
+ cmaps_japanese_Ext_RKSJ_H_buf,
+ &cmaps_japanese_Ext_RKSJ_H_len, 0 },
+ { cmaps_japanese_Ext_RKSJ_V_name,
+ cmaps_japanese_Ext_RKSJ_V_buf,
+ &cmaps_japanese_Ext_RKSJ_V_len, 0 },
+ { cmaps_japanese_H_name,
+ cmaps_japanese_H_buf,
+ &cmaps_japanese_H_len, 0 },
+ { cmaps_japanese_UniJIS_UCS2_H_name,
+ cmaps_japanese_UniJIS_UCS2_H_buf,
+ &cmaps_japanese_UniJIS_UCS2_H_len, 0 },
+ { cmaps_japanese_UniJIS_UCS2_HW_H_name,
+ cmaps_japanese_UniJIS_UCS2_HW_H_buf,
+ &cmaps_japanese_UniJIS_UCS2_HW_H_len, 0 },
+ { cmaps_japanese_UniJIS_UCS2_HW_V_name,
+ cmaps_japanese_UniJIS_UCS2_HW_V_buf,
+ &cmaps_japanese_UniJIS_UCS2_HW_V_len, 0 },
+ { cmaps_japanese_UniJIS_UCS2_V_name,
+ cmaps_japanese_UniJIS_UCS2_V_buf,
+ &cmaps_japanese_UniJIS_UCS2_V_len, 0 },
+ { cmaps_japanese_V_name,
+ cmaps_japanese_V_buf,
+ &cmaps_japanese_V_len, 0 },
+ { cmaps_korean_Adobe_Korea1_2_name,
+ cmaps_korean_Adobe_Korea1_2_buf,
+ &cmaps_korean_Adobe_Korea1_2_len, 0 },
+ { cmaps_korean_Adobe_Korea1_UCS2_name,
+ cmaps_korean_Adobe_Korea1_UCS2_buf,
+ &cmaps_korean_Adobe_Korea1_UCS2_len, 0 },
+ { cmaps_korean_KSC_EUC_H_name,
+ cmaps_korean_KSC_EUC_H_buf,
+ &cmaps_korean_KSC_EUC_H_len, 0 },
+ { cmaps_korean_KSC_EUC_V_name,
+ cmaps_korean_KSC_EUC_V_buf,
+ &cmaps_korean_KSC_EUC_V_len, 0 },
+ { cmaps_korean_KSCms_UHC_H_name,
+ cmaps_korean_KSCms_UHC_H_buf,
+ &cmaps_korean_KSCms_UHC_H_len, 0 },
+ { cmaps_korean_KSCms_UHC_HW_H_name,
+ cmaps_korean_KSCms_UHC_HW_H_buf,
+ &cmaps_korean_KSCms_UHC_HW_H_len, 0 },
+ { cmaps_korean_KSCms_UHC_HW_V_name,
+ cmaps_korean_KSCms_UHC_HW_V_buf,
+ &cmaps_korean_KSCms_UHC_HW_V_len, 0 },
+ { cmaps_korean_KSCms_UHC_UCS2_name,
+ cmaps_korean_KSCms_UHC_UCS2_buf,
+ &cmaps_korean_KSCms_UHC_UCS2_len, 0 },
+ { cmaps_korean_KSCms_UHC_V_name,
+ cmaps_korean_KSCms_UHC_V_buf,
+ &cmaps_korean_KSCms_UHC_V_len, 0 },
+ { cmaps_korean_KSCpc_EUC_H_name,
+ cmaps_korean_KSCpc_EUC_H_buf,
+ &cmaps_korean_KSCpc_EUC_H_len, 0 },
+ { cmaps_korean_KSCpc_EUC_UCS2_name,
+ cmaps_korean_KSCpc_EUC_UCS2_buf,
+ &cmaps_korean_KSCpc_EUC_UCS2_len, 0 },
+ { cmaps_korean_KSCpc_EUC_UCS2C_name,
+ cmaps_korean_KSCpc_EUC_UCS2C_buf,
+ &cmaps_korean_KSCpc_EUC_UCS2C_len, 0 },
+ { cmaps_korean_UniKS_UCS2_H_name,
+ cmaps_korean_UniKS_UCS2_H_buf,
+ &cmaps_korean_UniKS_UCS2_H_len, 0 },
+ { cmaps_korean_UniKS_UCS2_V_name,
+ cmaps_korean_UniKS_UCS2_V_buf,
+ &cmaps_korean_UniKS_UCS2_V_len, 0 },
+
+ { 0, 0, 0, 0 }
+};
+