[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