summaryrefslogtreecommitdiff
path: root/tex/generic/context/luatex/luatex-fonts-merged.lua
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2020-03-28 15:51:51 +0100
committerContext Git Mirror Bot <phg@phi-gamma.net>2020-03-28 15:51:51 +0100
commitdd8e1bab358884db6ba3f2373f515fbcc991e5ee (patch)
treedc8e018098300a0b77cb1a0aa3d2d3c1947ccb41 /tex/generic/context/luatex/luatex-fonts-merged.lua
parentd9aa299de0f736f75f90b98ab284e5bc73515949 (diff)
downloadcontext-dd8e1bab358884db6ba3f2373f515fbcc991e5ee.tar.gz
2020-03-28 14:35:00
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