summaryrefslogtreecommitdiff
path: root/tex/generic/context/luatex/luatex-fonts-merged.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/generic/context/luatex/luatex-fonts-merged.lua')
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua59
1 files changed, 48 insertions, 11 deletions
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index d6a8b66da..59f0dd066 100644
--- a/tex/generic/context/luatex/luatex-fonts-merged.lua
+++ b/tex/generic/context/luatex/luatex-fonts-merged.lua
@@ -1,6 +1,6 @@
-- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua
-- parent file : c:/data/develop/context/sources/luatex-fonts.lua
--- merge date : 2020-03-26 21:46
+-- merge date : 2020-03-28 14:31
do -- begin closure to overcome local limits and interference
@@ -24564,14 +24564,14 @@ local insert_node_after=nuts.insert_after
local properties=nodes.properties.data
local fontkern=nuts.pool and nuts.pool.fontkern
local italickern=nuts.pool and nuts.pool.italickern
-local useitalickerns=false
+local useitalickerns=false
directives.register("fonts.injections.useitalics",function(v)
if v then
report_injections("using italics for space kerns (tracing only)")
end
useitalickerns=v
end)
-do if not fontkern then
+if not fontkern then
local thekern=nuts.new("kern",0)
local setkern=nuts.setkern
local copy_node=nuts.copy_node
@@ -24580,8 +24580,8 @@ do if not fontkern then
setkern(n,k)
return n
end
-end end
-do if not italickern then
+end
+if not italickern then
local thekern=nuts.new("kern",3)
local setkern=nuts.setkern
local copy_node=nuts.copy_node
@@ -24590,7 +24590,7 @@ do if not italickern then
setkern(n,k)
return n
end
-end end
+end
function injections.installnewkern() end
local nofregisteredkerns=0
local nofregisteredpositions=0
@@ -25043,7 +25043,15 @@ local function inject_kerns_only(head,where)
if i then
local leftkern=i.leftkern
if leftkern and leftkern~=0 then
- head=insert_node_before(head,current,fontkern(leftkern))
+ if prev and getid(prev)==glue_code then
+ if useitalickerns then
+ head=insert_node_before(head,current,italickern(leftkern))
+ else
+ setwidth(prev,getwidth(prev)+leftkern)
+ end
+ else
+ head=insert_node_before(head,current,fontkern(leftkern))
+ end
end
end
if prevdisc then
@@ -25186,12 +25194,26 @@ local function inject_positions_only(head,where)
if rightkern and leftkern==-rightkern then
setoffsets(current,leftkern,false)
rightkern=0
+ elseif prev and getid(prev)==glue_code then
+ if useitalickerns then
+ head=insert_node_before(head,current,italickern(leftkern))
+ else
+ setwidth(prev,getwidth(prev)+leftkern)
+ end
else
head=insert_node_before(head,current,fontkern(leftkern))
end
end
if rightkern and rightkern~=0 then
- insert_node_after(head,current,fontkern(rightkern))
+ if next and getid(next)==glue_code then
+ if useitalickerns then
+ insert_node_after(head,current,italickern(rightkern))
+ else
+ setwidth(next,getwidth(next)+rightkern)
+ end
+ else
+ insert_node_after(head,current,fontkern(rightkern))
+ end
end
else
local i=p.emptyinjections
@@ -25539,12 +25561,26 @@ local function inject_everything(head,where)
if rightkern and leftkern==-rightkern then
setoffsets(current,leftkern,false)
rightkern=0
+ elseif prev and getid(prev)==glue_code then
+ if useitalickerns then
+ head=insert_node_before(head,current,italickern(leftkern))
+ else
+ setwidth(prev,getwidth(prev)+leftkern)
+ end
else
head=insert_node_before(head,current,fontkern(leftkern))
end
end
if rightkern and rightkern~=0 then
- insert_node_after(head,current,fontkern(rightkern))
+ if next and getid(next)==glue_code then
+ if useitalickerns then
+ insert_node_after(head,current,italickern(rightkern))
+ else
+ setwidth(next,getwidth(next)+rightkern)
+ end
+ else
+ insert_node_after(head,current,fontkern(rightkern))
+ end
end
end
else
@@ -25910,16 +25946,17 @@ local function injectspaces(head)
if useitalickerns then
local new=rightkern*factor
if trace_spaces then
- report_spaces("%C [%p + %p]",nextchar,old,new)
+ report_spaces("[%p + %p] %C",old,new,nextchar)
end
insert_node_after(head,n,italickern(new))
else
local new=old+rightkern*factor
if trace_spaces then
- report_spaces("[%p -> %p] %C",nextchar,old,new)
+ report_spaces("[%p -> %p] %C",old,new,nextchar)
end
setwidth(n,new)
end
+ else
end
rightkern=false
end