--
luatexbase.provides_module({
name = 'luatexja.otf',
- date = '2011/09/09',
- version = '0.1',
+ date = '2013/05/11',
description = 'The OTF Lua module for LuaTeX-ja',
})
-module('luatexja.otf', package.seeall)
luatexja.load_module('base'); local ltjb = luatexja.base
luatexja.load_module('jfont'); local ltjf = luatexja.jfont
local OTF = luatexja.userid_table.OTF
-function get_ucs_from_rmlgbm(c)
- local v = ltjr_cidfont_data["Adobe-Japan1"].unicodes["Japan1." .. tostring(c)]
+local function get_ucs_from_rmlgbm(c)
+ local v = ltjr_cidfont_data["Adobe-Japan1"].resources.unicodes["Japan1." .. tostring(c)]
if not v then -- AJ1 範囲外
return 0
elseif v<0xF0000 then -- 素直に Unicode にマップ可能
return 0
end
end
- --print(c, v, w)
end
end
-- Append a whatsit node to the list.
-- This whatsit node will be extracted to a glyph_node
-function append_jglyph(char)
+local function append_jglyph(char)
local p = node_new(id_whatsit,sid_user)
local v = tex.attribute[attr_curjfnt]
p.user_id=OTF; p.type=100; p.value=char
node.write(p)
end
-function cid(key)
+local function cid(key)
+ if key==0 then return append_jglyph(char) end
local curjfnt = fonts.ids[tex.attribute[attr_curjfnt]]
- if curjfnt.cidinfo.ordering ~= "Japan1" and
- curjfnt.cidinfo.ordering ~= "GB1" and
- curjfnt.cidinfo.ordering ~= "CNS1" and
- curjfnt.cidinfo.ordering ~= "Korea1" then
- ltjb.package_warning('luatexja-otf',
- 'Current Japanese font (or other CJK font) "'
- ..curjfnt.psname..'" is not a CID-Keyed font (Adobe-Japan1 etc.)')
- return append_jglyph(get_ucs_from_rmlgbm(key))
+ if not curjfnt.cidinfo or
+ curjfnt.cidinfo.ordering ~= "Japan1" and
+ curjfnt.cidinfo.ordering ~= "GB1" and
+ curjfnt.cidinfo.ordering ~= "CNS1" and
+ curjfnt.cidinfo.ordering ~= "Korea1" then
+-- ltjb.package_warning('luatexja-otf',
+-- 'Current Japanese font (or other CJK font) "'
+-- ..curjfnt.psname..'" is not a CID-Keyed font (Adobe-Japan1 etc.)')
+ return append_jglyph(get_ucs_from_rmlgbm(key))
end
- local char = curjfnt.unicodes[curjfnt.cidinfo.ordering..'.'..tostring(key)]
+ local char = curjfnt.resources.unicodes[curjfnt.cidinfo.ordering..'.'..tostring(key)]
if not char then
ltjb.package_warning('luatexja-otf',
'Current Japanese font (or other CJK font) "'
..tostring(key)..')',
'Use a font including the specified CID character.')
char = 0
- return
end
- append_jglyph(char)
+ return append_jglyph(char)
end
-function extract(head)
+local function extract(head)
local p = head
local v
while p do
for i, v in pairs(fmtable.chars) do
local j = string.match(i, "^AJ1%-([0-9]*)")
if j then
- j = tonumber(fi.unicodes['Japan1.'..tostring(j)])
+ j = tonumber(fi.resources.unicodes['Japan1.'..tostring(j)])
if j then
fmtable.cid_char_type[j] = v
end
cid_set_char_class, "ltj.otf.find_char_class", 1)
-------------------- all done
+luatexja.otf = {
+ append_jglyph = append_jglyph,
+ cid = cid,
+}
+
-- EOF