summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua')
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua28
1 files changed, 16 insertions, 12 deletions
diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua
index abadb63b39d..1b4d04df4e7 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua
+++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua
@@ -3,8 +3,7 @@
--
luatexbase.provides_module({
name = 'luatexja.jfont',
- date = '2011/06/27',
- version = '0.1',
+ date = '2011/05/11',
description = 'Loader for Japanese fonts',
})
module('luatexja.jfont', package.seeall)
@@ -16,6 +15,7 @@ local node_new = node.new
local has_attr = node.has_attribute
local set_attr = node.set_attribute
local round = tex.round
+local getfont = font.getfont
local attr_icflag = luatexbase.attributes['ltj@icflag']
local attr_curjfnt = luatexbase.attributes['ltj@curjfnt']
@@ -173,8 +173,6 @@ luatexbase.create_callback("luatexja.find_char_class", "data",
function find_char_class(c,m)
-- c: character code, m:
if not m then return 0 end
--- print("**")
--- for i,v in pairs(m) do print(i,v) end
return m.chars[c] or
luatexbase.call_callback("luatexja.find_char_class", 0, m, c)
end
@@ -220,7 +218,7 @@ luatexbase.create_callback("luatexja.define_jfont", "data", function (ft, fn) re
function jfontdefY() -- for horizontal font
local j = load_jfont_metric()
local fn = font.id(cstemp)
- local f = font.fonts[fn]
+ local f = getfont(fn)
if not j then
ltjb.package_error('luatexja',
"bad JFM `" .. jfm_file_name .. "'",
@@ -237,6 +235,7 @@ function jfontdefY() -- for horizontal font
chars = sz.chars, char_type = sz.char_type,
kanjiskip = sz.kanjiskip, xkanjiskip = sz.xkanjiskip,
}
+
fmtable = luatexbase.call_callback("luatexja.define_jfont", fmtable, fn)
font_metric_table[fn]=fmtable
tex.sprint(cat_lp, luatexja.is_global .. '\\protected\\expandafter\\def\\csname '
@@ -290,17 +289,17 @@ local function extract_metric(name)
end
-- replace fonts.define.read()
-local ljft_dr_orig = fonts.define.read
-function fonts.define.read(name, size, id)
+function font_callback(name, size, id, fallback)
extract_metric(name)
-- In the present imple., we don't remove "jfm=..." from name.
- return ljft_dr_orig(name, size, id)
+ return fallback(name, size, id)
end
------------------------------------------------------------------------
-- MISC
------------------------------------------------------------------------
+local is_ucs_in_japanese_char = ltjc.is_ucs_in_japanese_char
-- EXT: italic correction
function append_italic()
local p = tex.nest[tex.nest.ptr].tail
@@ -308,13 +307,18 @@ function append_italic()
local f = p.font
local g = node_new(id_kern)
g.subtype = 1; node.set_attribute(g, attr_icflag, ITALIC)
- if ltjc.is_ucs_in_japanese_char(p) then
+ if is_ucs_in_japanese_char(p) then
f = has_attr(p, attr_curjfnt)
local j = font_metric_table[f]
- local c = find_char_class(p.char, j)
- g.kern = j.char_type[c].italic
+ g.kern = j.char_type[find_char_class(p.char, j)].italic
else
- g.kern = font.fonts[f].characters[p.char].italic
+ local h = getfont(f)
+ if h then
+ g.kern = h.characters[p.char].italic
+ else
+ tex.attribute[attr_icflag] = -(0x7FFFFFFF)
+ return node.free(g)
+ end
end
node.write(g)
tex.attribute[attr_icflag] = -(0x7FFFFFFF)