diff options
author | Norbert Preining <preining@logic.at> | 2017-01-14 06:01:42 +0000 |
---|---|---|
committer | Norbert Preining <preining@logic.at> | 2017-01-14 06:01:42 +0000 |
commit | 68082f953b9c1da98b2b9365067d2ef2b0aa3d11 (patch) | |
tree | a8b03f347db8d643f8e97ffa2878adda54bbe657 /Master/texmf-dist/source/ptex-fontmaps/jis04cmap_exp/cmapdec.lua | |
parent | 9e0d0700275803bccc3827b089cdf3a54b2b7446 (diff) |
add ptex-fontmaps
git-svn-id: svn://tug.org/texlive/trunk@42944 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/ptex-fontmaps/jis04cmap_exp/cmapdec.lua')
-rw-r--r-- | Master/texmf-dist/source/ptex-fontmaps/jis04cmap_exp/cmapdec.lua | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/ptex-fontmaps/jis04cmap_exp/cmapdec.lua b/Master/texmf-dist/source/ptex-fontmaps/jis04cmap_exp/cmapdec.lua new file mode 100644 index 00000000000..3438b1f9e61 --- /dev/null +++ b/Master/texmf-dist/source/ptex-fontmaps/jis04cmap_exp/cmapdec.lua @@ -0,0 +1,54 @@ +local line, fh -- line, file handler +local tt -- 作業用 table + +local function load_cid_char() + local cid, ucs, ucsa + line = fh:read("*l") + while line do + if string.find(line, "end...?char") then + line = fh:read("*l"); return + else -- WMA l is in the form "<%x+>%s%d+" + ucs, cid = string.match(line, "<(%x+)>%s+<?(%x+)>?") + cid = tonumber(cid); ucs = tonumber(ucs, 16); + tt[ucs] = cid + end + line = fh:read("*l") + end +end + +local function load_cid_range() + local bucs, eucs, cid + line = fh:read("*l") + while line do + if string.find(line, "end...?range") then + line = fh:read("*l"); return + else -- WMA l is in the form "<%x+>%s+<%x+>" + bucs, eucs, cid = string.match(line, "<(%x+)>%s+<(%x+)>%s+<?(%x+)>?") + cid = tonumber(cid); + bucs = tonumber(bucs, 16); eucs = tonumber(eucs, 16) + for ucs = bucs, eucs do + tt[ucs], cid = cid, cid + 1 + end + end + line = fh:read("*l") + end + end + +local function open_cmap_file(cmap_name, out_table) + fh = io.open(kpse.find_file(cmap_name, 'cmap files'), "r") + if not out_table then tt = {} else tt = out_table end + line = fh:read("*l") + while line do + if string.find(line, "%x+%s+begin...?char") then + load_cid_char() + elseif string.find(line, "%x+%s+begin...?range") then + load_cid_range() + else + line = fh:read("*l") + end + end + fh:close(); + return tt +end + +return { open_cmap_file = open_cmap_file };
\ No newline at end of file |