[latex3-commits] [git/LaTeX3-latex3-luaotfload] dev: Partial fix for #127 (6705174)
Marcel Fabian Krüger
tex at 2krueger.de
Mon Dec 23 18:42:31 CET 2019
Repository : https://github.com/latex3/luaotfload
On branch : dev
Link : https://github.com/latex3/luaotfload/commit/6705174c2240e03f4968677c4da9b7c3378feb4b
>---------------------------------------------------------------
commit 6705174c2240e03f4968677c4da9b7c3378feb4b
Author: Marcel Fabian Krüger <tex at 2krueger.de>
Date: Mon Dec 23 18:42:31 2019 +0100
Partial fix for #127
This works for fonts which classify marks in the GDEF table.
>---------------------------------------------------------------
6705174c2240e03f4968677c4da9b7c3378feb4b
src/luaotfload-letterspace.lua | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/src/luaotfload-letterspace.lua b/src/luaotfload-letterspace.lua
index a1266ed..ab86831 100644
--- a/src/luaotfload-letterspace.lua
+++ b/src/luaotfload-letterspace.lua
@@ -82,6 +82,7 @@ local fonthashes = fonts.hashes
local identifiers = fonthashes.identifiers
local chardata = fonthashes.characters
local otffeatures = fonts.constructors.newfeatures "otf"
+local markdata
local function getprevreal(n)
repeat
@@ -144,6 +145,21 @@ if not chardata then
fonthashes.characters = chardata
end
+if not markdata then
+ markdata = setmetatable({}, {__index = function(t, k)
+ if k == true then
+ return t[currentfont()]
+ else
+ local tfmdata = font.getfont(k) or font.fonts[k]
+ if tfmdata then
+ local marks = tfmdata.resources.marks or {}
+ t[k] = marks
+ return marks
+ end
+ end
+ end})
+end
+
---=================================================================---
--- character kerning functionality
---=================================================================---
@@ -334,7 +350,7 @@ kerncharacters = function (head)
local kern = 0
local kerns = prevchardata.kerns
if kerns then kern = kerns[lastchar] or kern end
- krn = kern + krn -- here
+ krn = kern + (markdata[lastfont][lastchar] and 0 or krn) -- here
insert_node_before(head,start,kern_injector(fillup,krn))
end
end
@@ -409,7 +425,7 @@ kerncharacters = function (head)
if kerns then kern = kerns[lastchar] or kern end
end
end
- krn = kern + krn -- here
+ krn = kern + (markdata[lastfont][lastchar] and 0 or krn) -- here
end
setfield(disc, "replace", kern_injector(false, krn))
end --[[if replace and prv and nxt]]
More information about the latex3-commits
mailing list