diff options
Diffstat (limited to 'tex/context/base/mkiv/driv-shp.lua')
-rw-r--r-- | tex/context/base/mkiv/driv-shp.lua | 28 |
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 |