summaryrefslogtreecommitdiff
path: root/macros/luatex/generic/luatexja/src/ltj-lotf_aux.lua
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-11-18 03:01:03 +0000
committerNorbert Preining <norbert@preining.info>2019-11-18 03:01:03 +0000
commit96f9362fc3e3bb70fa2411c62418c42d9acda4d7 (patch)
tree0a5b5a1a0eb542f5e4a01241ff22837cc0e86835 /macros/luatex/generic/luatexja/src/ltj-lotf_aux.lua
parentee7abbf3326590ad80cbd11ae7756c9238f7dab8 (diff)
CTAN sync 201911180301
Diffstat (limited to 'macros/luatex/generic/luatexja/src/ltj-lotf_aux.lua')
-rw-r--r--macros/luatex/generic/luatexja/src/ltj-lotf_aux.lua27
1 files changed, 14 insertions, 13 deletions
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]]