diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/xcjk2uni/xCJK2uni-make.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/xcjk2uni/xCJK2uni-make.tex | 324 |
1 files changed, 324 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/xcjk2uni/xCJK2uni-make.tex b/Master/texmf-dist/tex/latex/xcjk2uni/xCJK2uni-make.tex new file mode 100644 index 00000000000..5cb30f30619 --- /dev/null +++ b/Master/texmf-dist/tex/latex/xcjk2uni/xCJK2uni-make.tex @@ -0,0 +1,324 @@ +%% +%% This is file `xCJK2uni-make.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% xCJK2uni.dtx (with options: `make') +%% +%% Copyright (C) 2013-2014 by Qing Lee <sobenlee@gmail.com> +%% -------------------------------------------------------------------------- +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% The Current Maintainer of this work is Qing Lee. +%% +\input expl3-generic % +\GetIdInfo$Id: xCJK2uni.dtx 691 2014-06-20 09:20:07Z sobenlee $ + {Convert CJK character to Unicode.} +\ExplSyntaxOn +\cs_if_exist:NF \ProvidesExplFile + { + \group_begin: + \cs_set_nopar:Npn \ProvidesExplFile #1#2#3#4 + { \iow_log:x { File:~#1~#2~v#3~#4 } } + \exp_after:wN \group_end: + } +\ProvidesExplFile{xCJK2uni-make.tex} + {\ExplFileDate}{0.4}{\ExplFileDescription} +\msg_new:nnn { xCJK2uni } { file-not-found } + { + SFD file~`#2'~for~encoding~`#1'~not~found.\\ + xCJK2uni~will~not~work! + } +\ior_new:N \g__CJKtu_sfd_ior +\tl_new:N \g__CJKtu_path_str +\luatex_if_engine:TF + { + \tl_gset:Nx \g__CJKtu_path_str + { + \luatex_directlua:D + { + kpse.set_program_name("luatex") ~ + local ~ sfd = kpse.find_file("UGBK.sfd", "subfont~definition~files") ~ + if ~ sfd ~ then ~ + tex.write(sfd) ~ + end + } + } + } + { + \ior_open:NnTF \g__CJKtu_sfd_ior { |kpsewhich ~ UGBK.sfd } + { + \ior_get_str:NN \g__CJKtu_sfd_ior \g__CJKtu_path_str + \ior_close:N \g__CJKtu_sfd_ior + } + { \msg_fatal:nnnn { xCJK2uni } { file-not-found } { GBK } { UGBK.sfd } } + } +\tl_if_blank:oTF { \g__CJKtu_path_str } + { \msg_fatal:nnnn { xCJK2uni } { file-not-found } { GBK } { UGBK.sfd } } + { + \seq_set_split:NnV \l_tmpa_seq { / } \g__CJKtu_path_str + \seq_pop_right:NN \l_tmpa_seq \g__CJKtu_path_str + \tl_gset:Nx \g__CJKtu_path_str { \seq_use:Nn \l_tmpa_seq { / } } + } +\tl_const:Nx \c__CJKtu_hash_str { \iow_char:N \# } +\tl_const:Nx \c__CJKtu_lbrace_str { \iow_char:N \{ } +\tl_const:Nx \c__CJKtu_rbrace_str { \iow_char:N \} } +\tl_const:Nx \c__CJKtu_backslash_str { \iow_char:N \\ } +\tl_const:Nx \c__CJKtu_indent_str + { \c_catcode_other_space_tl \c_catcode_other_space_tl } +\iow_new:N \g__CJKtu_sfd_map_iow +\iow_new:N \g__CJKtu_sfd_cmap_iow +\seq_new:N \l__CJKtu_sfd_plane_seq +\seq_new:N \l__CJKtu_sfd_line_seq +\tl_new:N \l__CJKtu_sfd_plane_tl +\tl_new:N \l__CJKtu_cmap_block_tl +\int_new:N \l__CJKtu_sfd_index_int +\prop_new:N \c__CJKtu_sfd_map_prop +\prop_gput:Nnn \c__CJKtu_sfd_map_prop { GB } { { 10 } { UGB } } +\prop_gput:Nnn \c__CJKtu_sfd_map_prop { JIS } { { 40 } { UJIS } } +\prop_gput:Nnn \c__CJKtu_sfd_map_prop { KS } { { 60 } { UKS } } +\prop_gput:Nnn \c__CJKtu_sfd_map_prop { Bg5 } { { 00 } { UBig5 } } +\prop_gput:Nnn \c__CJKtu_sfd_map_prop { Bg5+ } { { 09 } { UBg5plus } } +\prop_gput:Nnn \c__CJKtu_sfd_map_prop { GBK } { { 19 } { UGBK } } +\cs_new_protected_nopar:Npn \__CJKtu_write_file:nnn #1#2#3 + { + \group_begin: + \file_path_include:n { \g__CJKtu_path_str / } + \ior_open:NnTF \g__CJKtu_sfd_ior { #3.sfd } + { + \group_end: + \seq_clear:N \l__CJKtu_sfd_plane_seq + \__CJKtu_write_sfd_map_header:n {#1} + \ior_str_map_inline:Nn \g__CJKtu_sfd_ior + { \str_if_eq:nnT {##1} { 00 ~ 0x0000_0x00FF } { \ior_map_break: } } + \ior_str_map_inline:Nn \g__CJKtu_sfd_ior + { + \tl_if_blank:nTF {##1} + { + \ior_map_break:n + { + \__CJKtu_write_sfd_map_trailer:n {#1} + \__CJKtu_write_cmap_file:n {#2} + } + } + { \__CJKtu_read_sfd_line:nnn {##1} {#1} {#2} } + } + \iow_close:N \g__CJKtu_sfd_cmap_iow + \ior_close:N \g__CJKtu_sfd_ior + \seq_clear:N \l__CJKtu_sfd_plane_seq + \seq_clear:N \l__CJKtu_sfd_line_seq + } + { + \group_end: + \msg_critical:nnxx { xCJK2uni } { file-not-found } {#1} { #3.sfd } + } + } +\group_begin: +\char_set_lccode:nn { \c_zero } { `\\ } +\char_set_lccode:nn { \c_one } { `\x } +\char_set_catcode_other:n { \c_zero } +\char_set_catcode_other:n { \c_one } +\tl_to_lowercase:n + { + \group_end: + \cs_new_protected_nopar:Npn \__CJKtu_read_sfd_line:nnn #1#2#3 + { \__CJKtu_read_sfd_line:nwnn #1 ^^00 \q_nil \q_stop {#2} {#3} } + \cs_new_protected_nopar:Npn \__CJKtu_read_sfd_line:nwnn + #1 0^^01 #2 ^^00 #3 \q_stop #4#5 + { \__CJKtu_read_sfd_line:nnnnn {#1} { 0^^01 } {#2} {#4} {#5} } + } +\cs_new_protected_nopar:Npn \__CJKtu_read_sfd_line:nnnnn #1#2#3#4#5 + { + \tl_if_blank:nF {#1} + { + \seq_if_empty:NF \l__CJKtu_sfd_plane_seq + { + \iow_now:Nx \g__CJKtu_sfd_map_iow + { + \c__CJKtu_indent_str \c__CJKtu_indent_str + \token_to_str:N \fi: \iow_newline: + \c__CJKtu_indent_str \c__CJKtu_rbrace_str + } + \__CJKtu_write_cmap_file:n {#5} + } + \__CJKtu_write_plane_map:nn {#1} {#4} + \tl_set:Nx \l__CJKtu_sfd_plane_tl { \tl_trim_spaces:n {#1} } + } + \seq_set_split:Nnn \l__CJKtu_sfd_line_seq {#2} {#3} + \seq_concat:NNN \l__CJKtu_sfd_plane_seq + \l__CJKtu_sfd_plane_seq \l__CJKtu_sfd_line_seq + \iow_now:Nx \g__CJKtu_sfd_map_iow + { + \c__CJKtu_indent_str \c__CJKtu_indent_str \c__CJKtu_indent_str + \seq_use:Nn \l__CJKtu_sfd_line_seq { \or: } + \token_to_str:N \or: + } + } +\cs_new_protected_nopar:Npn \__CJKtu_write_plane_map:nn #1#2 + { + \iow_now:Nx \g__CJKtu_sfd_map_iow + { + \cs_new_nopar:cpn { ~ __CJKtu_ #2 _sfd_map_ \int_eval:n {#1} :n ~ } ~ + \c__CJKtu_hash_str 1 \iow_newline: + \c__CJKtu_indent_str \c__CJKtu_lbrace_str \iow_newline: + \c__CJKtu_indent_str \c__CJKtu_indent_str + \exp_not:N \if_case:w \etex_numexpr:D + \c__CJKtu_hash_str 1 ~ \token_to_str:N \scan_stop: + } + } +\cs_new_protected_nopar:Npn \__CJKtu_write_cmap_file:n #1 + { + \tl_clear:N \l__CJKtu_cmap_block_tl + \int_zero:N \l__CJKtu_sfd_index_int + \iow_open:Nn \g__CJKtu_sfd_cmap_iow { c #1 \l__CJKtu_sfd_plane_tl .cmap } + \__CJKtu_write_cmap_header:nn { C #1 } { \l__CJKtu_sfd_plane_tl } + \iow_now:Nx \g__CJKtu_sfd_cmap_iow + { + \iow_newline: + 1~begincodespacerange \iow_newline: + \c__CJKtu_indent_str < 00 > ~ + < + \int_to_Hex:n + { \seq_count:N \l__CJKtu_sfd_plane_seq - \c_one } + > \iow_newline: + endcodespacerange + } + \seq_map_function:NN \l__CJKtu_sfd_plane_seq \__CJKtu_write_cmap_body:n + \tl_if_empty:NF \l__CJKtu_cmap_block_tl + { + \iow_now:Nx \g__CJKtu_sfd_cmap_iow + { + \iow_newline: + \int_mod:nn { \l__CJKtu_sfd_index_int } { \c_one_hundred } ~ + beginbfchar \iow_newline: + \l__CJKtu_cmap_block_tl + endbfchar + } + } + \__CJKtu_write_cmap_trailer: + \seq_clear:N \l__CJKtu_sfd_plane_seq + } +\cs_new_protected_nopar:Npn \__CJKtu_write_cmap_body:n #1 + { + \int_case:nnTF { \l__CJKtu_sfd_index_int } + { { 99 } { } { 199 } { } } + { + \iow_now:Nx \g__CJKtu_sfd_cmap_iow + { + \iow_newline: + 100 ~ beginbfchar \iow_newline: + \l__CJKtu_cmap_block_tl + < \int_to_Hex:n { \l__CJKtu_sfd_index_int } > ~ + <#1> \iow_newline: + endbfchar + } + \tl_clear:N \l__CJKtu_cmap_block_tl + } + { + \tl_put_right:Nx \l__CJKtu_cmap_block_tl + { + < + \int_compare:nNnF \l__CJKtu_sfd_index_int > \c_fifteen { 0 } + \int_to_Hex:n { \l__CJKtu_sfd_index_int } + > ~ <#1> \iow_newline: + } + } + \int_incr:N \l__CJKtu_sfd_index_int + } +\group_begin: +\char_set_catcode_other:N \% +\cs_new_protected_nopar:Npn \__CJKtu_write_sfd_map_header:n #1 + { + \iow_now:Nx \g__CJKtu_sfd_map_iow + { + %<*#1> \iow_newline: + \cs_new_nopar:cpn { ~ CJKtu_#1_sfd_map:nn ~ } ~ \c__CJKtu_hash_str 1 + \iow_newline: \c__CJKtu_indent_str \c__CJKtu_lbrace_str \iow_newline: + \c__CJKtu_indent_str \c__CJKtu_indent_str + \token_to_str:N \cs_if_exist_use:cF + \iow_newline: \c__CJKtu_indent_str \c__CJKtu_indent_str \c__CJKtu_indent_str + { ~ __CJKtu_#1_sfd_map_ ~ \exp_not:N \int_eval:n { \c__CJKtu_hash_str 1 } ~ :n ~} + \iow_newline: \c__CJKtu_indent_str \c__CJKtu_indent_str \c__CJKtu_indent_str + { ~ \exp_not:N \use_none:n } \iow_newline: + \c__CJKtu_indent_str \c__CJKtu_rbrace_str + } + } +\cs_new_protected_nopar:Npn \__CJKtu_write_sfd_map_trailer:n #1 + { + \iow_now:Nx \g__CJKtu_sfd_map_iow + { + \c__CJKtu_indent_str \c__CJKtu_indent_str + \token_to_str:N \fi: \iow_newline: + \c__CJKtu_indent_str \c__CJKtu_rbrace_str \iow_newline: + %</#1> + } + } +\cs_new_protected_nopar:Npn \__CJKtu_write_cmap_header:nn #1#2 + { + \iow_now:Nx \g__CJKtu_sfd_cmap_iow + { + %!PS-Adobe-3.0~Resource-CMap \iow_newline: + %%DocumentNeededResources:~ProcSet~(CIDInit) \iow_newline: + %%IncludeResource:~ProcSet~(CIDInit) \iow_newline: + %%BeginResource:~CMap~(TeX-#1-#2-0) \iow_newline: + %%Title:~(TeX-#1-#2-0~TeX~#1-#2~0) \iow_newline: + %%Version:~1.000 \iow_newline: + %%EndComments \iow_newline: \iow_newline: + /CIDInit~/ProcSet~findresource~begin \iow_newline: \iow_newline: + 12~dict~begin \iow_newline: \iow_newline: + begincmap \iow_newline: \iow_newline: + /CIDSystemInfo~3~dict~dup~begin \iow_newline: + \c__CJKtu_indent_str /Registry~(TeX)~def \iow_newline: + \c__CJKtu_indent_str /Ordering~(#1-#2)~def \iow_newline: + \c__CJKtu_indent_str /Supplement~0~def \iow_newline: + end~def \iow_newline: \iow_newline: + /CMapName~/TeX-#1-#2-0~def \iow_newline: + /CMapVersion~1.000~def \iow_newline: + /CMapType~2~def \iow_newline: \iow_newline: + /WMode~0~def + } + } +\cs_new_protected_nopar:Npx \__CJKtu_write_cmap_trailer: + { + \iow_now:Nn \g__CJKtu_sfd_cmap_iow + { + \iow_newline: + endcmap \iow_newline: + CMapName~currentdict~/CMap~defineresource~pop \iow_newline: + end \iow_newline: + end \iow_newline: \iow_newline: + %%EndResource \iow_newline: + %%EOF + } + } +\group_end: +\iow_open:Nn \g__CJKtu_sfd_map_iow { xCJK2uni-sfd.def } +\prop_map_inline:Nn \c__CJKtu_sfd_map_prop + { \__CJKtu_write_file:nnn {#1} #2 } +\iow_close:N \g__CJKtu_sfd_map_iow +\cs_if_exist_use:NF \CJKtuend { \tex_end:D } +%% +%% This package consists of the file xCJK2uni.dtx, +%% and the derived files xCJK2uni.pdf, +%% xCJK2uni.sty, +%% xCJK2uni.ins, +%% xCJK2uni-make.tex, +%% xCJK2uni-sfd.def, +%% xCJK2uni-UBg5plus.def, +%% xCJK2uni-UBig5.def, +%% xCJK2uni-UGB.def, +%% xCJK2uni-UGBK.def, +%% xCJK2uni-UJIS.def, +%% xCJK2uni-UKS.def, +%% c****.cmap, and +%% README. +%% +%% End of file `xCJK2uni-make.tex'. |