X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=src%2Fltj-rmlgbm.lua;h=64024ca8778bfcb4d6d9e7483513b1a2358bea16;hb=a0ffd5dbaec0228dfd21a7a0f82b5aa8fc14b52a;hp=702761ac2a1dc95b070f250bf746e423f38eeab7;hpb=3b10cee2b6fca5c5c60d55601d4720975456ee97;p=luatex-ja%2Fluatexja.git diff --git a/src/ltj-rmlgbm.lua b/src/ltj-rmlgbm.lua index 702761a..64024ca 100644 --- a/src/ltj-rmlgbm.lua +++ b/src/ltj-rmlgbm.lua @@ -5,12 +5,12 @@ luatexja.load_module('base'); local ltjb = luatexja.base local cidfont_data = {} local cache_chars = {} -local cache_ver = 7 +local cache_ver = 8 local identifiers = fonts.hashes.identifiers local cid_reg, cid_order, cid_supp, cid_name local cid_replace = { - ["Adobe-Japan1"] = {"UniJIS2004-UTF32", 23057, 6, + ["Adobe-Japan1"] = {"UniJIS2004-UTF32", 23059, 7, function (i) if (231<=i and i<=632) or (8718<=i and i<=8719) or (12063<=i and i<=12087) then @@ -35,12 +35,16 @@ local cid_replace = { return 327680 -- 655360/2 end end}, - ["Adobe-CNS1"] = {"UniCNS-UTF32", 19155, 6, + ["Adobe-CNS1"] = {"UniCNS-UTF32", 19178, 7, function (i) if (13648<=i and i<=13742) or (i==17603) then return 327680 -- 655360/2 end end}, + ["Adobe-KR"] = {"UniAKR-UTF32", 22896, 9, + function (i) + -- ?? + end}, } -- reading CID maps @@ -106,6 +110,13 @@ do local function entry(a) return {index = a} end + local feat_dummy_vert = { gsub={vert={dflt={dflt=true}}} } + local seq_dummy_vert={{ + features={vert={dflt={dflt=true}}}, + --flags={false,false,false,false}, + --index=1, name="s_s_0", skiphash=false, steps={coverage={},index=1}, + ["type"]="gsub_single", order='vert', + }} make_cid_font = function () local kx = cid_replace[cid_name] if not kx then return end @@ -146,14 +157,17 @@ do cidinfo= k.cidinfo, verbose = false, shared = { featuredata = {}, }, }, - dynamics = {}, features = {}, processes = {}, - --rawdata = { descriptions = {} }, + dynamics = {}, processes = {}, + rawdata = {}, features={}, } - k.resources = { - unicodes = ttu, - features = { dummy={dummy={dflt=true}} } + k.resources = { + unicodes = ttu, + features = feat_dummy_vert, + sequences = seq_dummy_vert, } k.descriptions = {} + k.shared.rawdata.resources=k.resources + k.shared.rawdata.descriptions=k.descriptions cache_chars[cid_name] = { [655360] = k.characters } -- 縦書用字形 @@ -199,16 +213,21 @@ end -- local cidf_vert_processor do - local traverse_id = node.traverse_id + local traverse_id, is_node = node.direct.traverse_id, node.is_node + local to_direct = node.direct.todirect local id_glyph = node.id('glyph') + local getfont = node.direct.getfont + local getchar = node.direct.getchar + local setchar = node.direct.setchar cidf_vert_processor = { function (head, fnum) local fontdata = identifiers[fnum] - if luatexja.jfont.font_metric_table[fnum].vert_activated then - local vt = fontdata.shared.ltj_vert_table + if head and luatexja.jfont.font_metric_table[fnum].vert_activated then + local vt = fontdata.shared.ltj_vert_table + local nh = is_node(head) and to_direct(head) or head for n in traverse_id(id_glyph, head) do - if n.font==fnum then - n.char = vt[n.char] or n.char + if getfont(n)==fnum then + local c = getchar(n); setchar(n, vt[c] or c) end end return head, false @@ -252,7 +271,12 @@ local function mk_rml(name, size, id) local specification = definers.analyze(name,size) --specification = definers.resolve(specification) (not needed) specification.detail = specification.detail or '' - + do + local n = specification.name + if n:sub(1,1)=="{" then n=n:sub(2) end + if n:sub(-1)=="}" then n=n:sub(1,-2) end + specification.name=n + end local fontdata = {} local cachedata = {} local s = cidfont_data[cid_name]