if type(i) == 'number' then -- char_type
for k,w in pairs(v.glue) do
local h = node_new(id_glue_spec)
- v[k] = {true, h, (w[5] and w[5]/sz or 0), FROM_JFM + (w[4] and w[4]/sz or 0)}
+ v[k] = {
+ true, h, (w[5] and w[5]/sz or 0),
+ FROM_JFM + (w[4] and w[4]/sz or 0),
+ ksp_natural = w.ksp_natural,
+ ksp_stretch = w.ksp_stretch,
+ ksp_shrink = w.ksp_shrink,
+ }
setfield(h, 'width', w[1])
setfield(h, 'stretch', w[2])
setfield(h, 'shrink', w[3])
------------------------------------------------------------------------
do
-- these function are called from ltj-latex.sty
- local kyenc_list, ktenc_list = {}, {}
+ local fenc_list, kyenc_list, ktenc_list = {}, {}, {}
+ function add_fenc_list(enc) fenc_list[enc] = 'true ' end
function add_kyenc_list(enc) kyenc_list[enc] = 'true ' end
function add_ktenc_list(enc) ktenc_list[enc] = 'true ' end
function is_kyenc(enc)
end
local kfam_list, Nkfam_list = {}, {}
- function add_kfam_list(enc, fam)
- if not kfam_list[enc] then kfam_list[enc] = {} end
- kfam_list[enc][fam] = 'true '
- end
- function add_Nkfam_list(enc, fam)
- if not Nkfam_list[enc] then Nkfam_list[enc] = {} end
- Nkfam_list[enc][fam] = 'true '
+ function add_kfam(fam)
+ kfam_list[fam]=true
+ end
+ function search_kfam(fam, use_fd)
+ if kfam_list[fam] then
+ tex.sprint(cat_lp, '\\let\\ifin@\\iftrue '); return
+ elseif Nkfam_list[fam] then
+ tex.sprint(cat_lp, '\\let\\ifin@\\iffalse '); return
+ elseif use_fd then
+ for i,_ in pairs(kyenc_list) do
+ if kpse.find_file(string.lower(i)..fam..'.fd') then
+ tex.sprint(cat_lp, '\\let\\ifin@\\iftrue '); return
+ end
+ end
+ for i,_ in pairs(ktenc_list) do
+ if kpse.find_file(string.lower(i)..fam..'.fd') then
+ tex.sprint(cat_lp, '\\let\\ifin@\\iftrue '); return
+ end
+ end
+ Nkfam_list[fam]=true; tex.sprint(cat_lp, '\\let\\ifin@\\iffalse '); return
+ else
+ tex.sprint(cat_lp, '\\let\\ifin@\\iffalse '); return
+ end
end
- function is_kfam(enc, fam)
- tex.sprint(cat_lp, '\\let\\ifin@\\if'
- .. (kfam_list[enc] and kfam_list[enc][fam] or 'false ')) end
- function is_Nkfam(enc, fam)
- tex.sprint(cat_lp, '\\let\\ifin@\\if'
- .. (Nkfam_list[enc] and Nkfam_list[enc][fam] or 'false ')) end
-
local ffam_list, Nffam_list = {}, {}
- function add_ffam_list(enc, fam)
- if not ffam_list[enc] then ffam_list[enc] = {} end
- ffam_list[enc][fam] = 'true '
- end
- function add_Nffam_list(enc, fam)
- if not Nffam_list[enc] then Nffam_list[enc] = {} end
- Nffam_list[enc][fam] = 'true '
+ function is_ffam(fam)
+ tex.sprint(cat_lp, '\\let\\ifin@\\if' .. (ffam_list[fam] or 'false '))
+ end
+ function add_ffam(fam)
+ ffam_list[fam]='true '
+ end
+ function search_ffam_declared()
+ local s = ''
+ for i,_ in pairs(fenc_list) do
+ s = s .. '\\cdp@elt{' .. i .. '}'
+ end
+ tex.sprint(cat_lp, s)
+ end
+ function search_ffam_fd(fam)
+ if Nffam_list[fam] then
+ tex.sprint(cat_lp, '\\let\\ifin@\\iffalse '); return
+ else
+ for i,_ in pairs(fenc_list) do
+ if kpse.find_file(string.lower(i)..fam..'.fd') then
+ tex.sprint(cat_lp, '\\let\\ifin@\\iftrue '); return
+ end
+ end
+ Nffam_list[fam]=true; tex.sprint(cat_lp, '\\let\\ifin@\\iffalse '); return
+ end
end
- function is_ffam(enc, fam)
- tex.sprint(cat_lp, '\\let\\ifin@\\if'
- .. (ffam_list[enc] and ffam_list[enc][fam] or 'false ')) end
- function is_Nffam(enc, fam)
- tex.sprint(cat_lp, '\\let\\ifin@\\if'
- .. (Nffam_list[enc] and Nffam_list[enc][fam] or 'false ')) end
+
end
------------------------------------------------------------------------
-- ALTERNATE FONTS
local sort = table.sort
local function add_fl_table(dest, glyphs, unitable, asc_des, units)
- local tg, glyphmin, glyphmax = glyphs.glyphs, glyphs.glyphmin or 0, glyphs.glyphmax
+ local tg, glyphmin, glyphmax = glyphs.glyphs, 0, glyphs.glyphmax
+ for _,v in pairs(fields(glyphs)) do
+ if v=='glyphmin' then glyphmin = glyphs.glyphmin; break end
+ end
for i = glyphmin, glyphmax-1 do
local gv = tg[i]
if gv then