summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/driv-shp.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/driv-shp.lua')
-rw-r--r--tex/context/base/mkiv/driv-shp.lua28
1 files changed, 28 insertions, 0 deletions
diff --git a/tex/context/base/mkiv/driv-shp.lua b/tex/context/base/mkiv/driv-shp.lua
index ae99d84ce..8fe2b8483 100644
--- a/tex/context/base/mkiv/driv-shp.lua
+++ b/tex/context/base/mkiv/driv-shp.lua
@@ -150,6 +150,7 @@ local updatefontstate
local pushorientation
local poporientation
local flushcharacter
+local flushfontchar
local flushrule
local flushliteral
local flushsetmatrix
@@ -241,6 +242,32 @@ local function flush_vf_packet(pos_h,pos_v,pos_r,font,char,data,factor,vfcommand
pos_h = pos_h + flushchar(font,char,font,chr,f,e)
end
end
+ elseif command == "use" then
+ local index = packet[2]
+ if index then
+ local fnt
+ if index == 0 then
+ fnt = font
+ else
+ local okay = fonts and fonts[index]
+ if okay then
+ fnt = okay.id
+ end
+ end
+ if fnt then
+ -- not efficient but ok for now as experiment
+ local d = characters[fnt]
+ if d then
+ for i=3,#packet do
+ local chr = packet[i]
+ local dat = d[chr]
+ if dat then
+ flushfontchar(fnt,chr,dat)
+ end
+ end
+ end
+ end
+ end
elseif command == "right" then
local h = packet[2] -- * siz
if factor ~= 0 and h ~= 0 then
@@ -1118,6 +1145,7 @@ function drivers.converters.lmtx(driver,box,smode,objnum,specification)
poporientation = flushers.poporientation
flushcharacter = flushers.character
+ flushfontchar = flushers.fontchar
flushrule = flushers.rule
flushsimplerule = flushers.simplerule
flushspecial = flushers.special