From 96f9362fc3e3bb70fa2411c62418c42d9acda4d7 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 18 Nov 2019 03:01:03 +0000 Subject: CTAN sync 201911180301 --- .../luatex/generic/luatexja/src/ltj-lotf_aux.lua | 27 +++++++++++----------- 1 file changed, 14 insertions(+), 13 deletions(-) (limited to 'macros/luatex/generic/luatexja/src/ltj-lotf_aux.lua') diff --git a/macros/luatex/generic/luatexja/src/ltj-lotf_aux.lua b/macros/luatex/generic/luatexja/src/ltj-lotf_aux.lua index 613291f7a9..04cae9d2f1 100644 --- a/macros/luatex/generic/luatexja/src/ltj-lotf_aux.lua +++ b/macros/luatex/generic/luatexja/src/ltj-lotf_aux.lua @@ -10,10 +10,6 @@ luatexja.lotf_aux = aux local font_metric_table = {} aux.font_metric_table = font_metric_table -local function is_harf(t) - return luaharfbuzz and package.loaded['harf'] and require("harf-base") -end - local getfont = font.getfont local provides_feature = luaotfload.aux.provides_feature function aux.exist_feature(id, name) @@ -28,15 +24,15 @@ function aux.enable_feature(id, name) local t = getfont(id) if t and t.shared and t.shared.features then t.shared.features[name] = true - elseif t and is_harf(t) then -- HARFLOAD - local hb, tf = require("harf-base"), t.hb.spec.features + elseif t and t.hb then -- HARF + local hb, tf = luaotfload.harfbuzz, t.hb.spec.hb_features tf[#tf+1] = hb.Feature.new(name) end end function aux.specified_feature(id, name) local t = getfont(id) return t and (t.shared and t.shared.features and t.shared.features[name]) - or (t.hb and t.hb.spec and t.hb.spec.options and t.hb.spec.options[name]) -- HARFLOAD + or (t.hb and t.hb.spec and t.hb.spec.features.raw and t.hb.spec.features.raw[name]) -- HARF end @@ -53,14 +49,18 @@ end local function get_asc_des(id) local t, v = getfont(id), font_metric_table[id] local a, d - if t and t.shared then + if t and t.shared and t.shared.rawdata then local u = t.units local t2 = t.shared.rawdata.metadata if t2 then a, d = t2.ascender and t2.ascender/u, t2.descender and -t2.descender/u end - -- HARFLOAD h_extents() returns "too large" value...? - -- rawdata.metadata.horizontalmetrics is same + elseif t.hb then -- HARF + local hbfont, u = t.hb.shared.font, t.hb.shared.upem + local h = hbfont:get_h_extents() + if h and u then + a, d = h.ascender and h.ascender/u, h.descender and -h.descender/u + end end v.ascender, v.descender = (a or 0.88)*t.size, (d or 0.12)*t.size end @@ -80,9 +80,10 @@ local dummy_vht, dummy_vorg = {}, {} setmetatable(dummy_vht, {__index = function () return 1 end } ) setmetatable(dummy_vorg, {__index = function () return 0.88 end } ) local function get_vmet_table(tfmdata, dest) - if (not tfmdata) or (not tfmdata.shared) then + if (not tfmdata) or (not tfmdata.shared) or (not tfmdata.shared.rawdata) then dest = dest or {} dest.vorigin, dest.vheight = dummy_vorg, dummy_vht + dest.ind_to_uni = {} return dest end local rawdata = tfmdata.shared.rawdata @@ -115,7 +116,7 @@ end local function loop_over_duplicates(id, func) -- func: return non-nil iff abort this fn local t = (type(id)=="table") and id or getfont(id) - if t and t.resources and t.resources.duplicates then + if t and t.resources and t.resources.duplicates then -- HARF: not executed for i,v in pairs(t.resources.duplicates) do func(i,v) end @@ -128,7 +129,7 @@ local function loop_over_feat(id, feature_name, func, universal) -- func: return non-nil iff abort this fn -- universal: true iff look up all (script, lang) pair local t = (type(id)=="table") and id or getfont(id) - if t and t.resources and t.resources.sequences then + if t and t.resources and t.resources.sequences then -- HARF: not executed for _,i in pairs(t.resources.sequences) do if i.order[1] and feature_name[i.order[1]] then local f = i.features and i.features[i.order[1]] -- cgit v1.2.3