[latex3-commits] [git/LaTeX3-latex3-luaotfload] dev: Move ActualText marking to post_linebreak (5aa32d3)
Marcel Fabian Krüger
tex at 2krueger.de
Sat Oct 10 02:42:28 CEST 2020
Repository : https://github.com/latex3/luaotfload
On branch : dev
Link : https://github.com/latex3/luaotfload/commit/5aa32d3864d418de12483aa17e5eaaaac0106053
>---------------------------------------------------------------
commit 5aa32d3864d418de12483aa17e5eaaaac0106053
Author: Marcel Fabian Krüger <tex at 2krueger.de>
Date: Sat Oct 10 02:28:38 2020 +0200
Move ActualText marking to post_linebreak
>---------------------------------------------------------------
5aa32d3864d418de12483aa17e5eaaaac0106053
src/luaotfload-harf-plug.lua | 29 ++++++++++++++++++++++-------
testfiles/letterspace2.tlg | 2 +-
2 files changed, 23 insertions(+), 8 deletions(-)
diff --git a/src/luaotfload-harf-plug.lua b/src/luaotfload-harf-plug.lua
index 035976f..21ee47a 100644
--- a/src/luaotfload-harf-plug.lua
+++ b/src/luaotfload-harf-plug.lua
@@ -32,6 +32,7 @@ local direct = node.direct
local tonode = direct.tonode
local todirect = direct.todirect
local traverse = direct.traverse
+local traverse_list = direct.traverse_list
local insertbefore = direct.insert_before
local insertafter = direct.insert_after
local protectglyph = direct.protect_glyph
@@ -74,6 +75,7 @@ local getsubtype = direct.getsubtype
local setsubtype = direct.setsubtype
local getwidth = direct.getwidth
local setwidth = direct.setwidth
+local setlist = direct.setlist
local is_char = direct.is_char
local tail = direct.tail
@@ -81,6 +83,7 @@ local properties = direct.get_properties_table()
local imgnode = img.node
+local hlist_t = node.id("hlist")
local disc_t = node.id("disc")
local glue_t = node.id("glue")
local glyph_t = node.id("glyph")
@@ -90,6 +93,7 @@ local localpar_t = node.id("local_par")
local whatsit_t = node.id("whatsit")
local pdfliteral_t = node.subtype("pdf_literal")
+local line_t = 1
local explicitdisc_t = 1
local fontkern_t = 0
local italiccorr_t = 3
@@ -176,7 +180,7 @@ local function itemize(head, fontid, direction)
local lastskip, lastdir = true
local lastrun = {}
- for n, id, subtype in direct.traverse(head) do
+ for n, id, subtype in traverse(head) do
local code = 0xFFFC -- OBJECT REPLACEMENT CHARACTER
local skip = lastskip
local props = properties[n]
@@ -950,29 +954,39 @@ local function post_process(head)
if startactual then
local actualtext = "/Span<</ActualText<FEFF"..startactual..">>>BDC"
head = insertbefore(head, n, pageliteral(actualtext))
+ props[startactual_p] = nil
end
if endactual then
head = insertafter(head, n, pageliteral("EMC"))
+ props[endactual_p] = nil
end
local replace = getfield(n, "replace")
if replace then
setfield(n, "replace", post_process(replace))
end
+ end
+ return head
+end
- local subhead = getfield(n, "head")
- if subhead then
- setfield(n, "head", post_process(subhead))
+local function post_process_vlist(head)
+ for n, id, subtype, list in traverse_list(head) do
+ if id == hlist_t and subtype == line_t then
+ setlist(n, post_process(list))
end
end
- return head
+ return true
end
-local function post_process_nodes(head, groupcode)
+local function post_process_nodes(head)
return tonode(post_process(todirect(head)))
end
+local function post_process_vlist_nodes(head)
+ return tonode(post_process_vlist(todirect(head)))
+end
+
local function run_cleanup()
-- Remove temporary PNG files that we created, if any.
-- FIXME: It would be nice if we wouldn't need this
@@ -1050,7 +1064,8 @@ local function add_to_callback(name, func)
end
end
-add_to_callback('pre_output_filter', post_process_nodes) -- FIXME: Wrong callback, but I want to get rid of the whole function anyway
+add_to_callback('post_linebreak_filter', post_process_vlist_nodes)
+add_to_callback('hpack_filter', post_process_nodes)
add_to_callback('wrapup_run', run_cleanup)
add_to_callback('finish_pdffile', set_tounicode)
add_to_callback('glyph_info', get_glyph_info)
diff --git a/testfiles/letterspace2.tlg b/testfiles/letterspace2.tlg
index 2be9d57..fda2129 100644
--- a/testfiles/letterspace2.tlg
+++ b/testfiles/letterspace2.tlg
@@ -1,7 +1,7 @@
This is a generated file for the l3build validation system.
Don't change this file in any respect.
Inserting `luaotfload.letterspace' at position 2 in `pre_linebreak_filter'.
-Inserting `luaotfload.letterspace' at position 2 in `hpack_filter'.
+Inserting `luaotfload.letterspace' at position 3 in `hpack_filter'.
Completed box being shipped out [1]
\vbox(633.0+0.0)x407.0, direction TLT
.\glue 16.0
More information about the latex3-commits
mailing list.