文件 font.lua 和字体本身有什么区别?

文件 font.lua 和字体本身有什么区别?

当 LuaLaTeX/fontspec 使用字体(例如 Erewhon-Regular.otf)时,它会创建一个文件 erewhon-regular.lua,该文件放在(用户的)Library/texlive/2022/texmf-var/luatex-cache/generic/fonts/otl/ 中。实际上,它是此字体的 OpenType 表的 lua 版本。可以使用 lua 程序中的 loadfile 读取此文件。可以使用 luacode+luaotfload 函数(例如 fonts.hashes.identifiers[font.current()])获取相同的 OpenType 信息。奇怪的是,有些信息在两种方式下都相同,有时则不同。在这种情况下,会出现奇怪的结果,例如 rot13 或崩溃...

例子:

\documentclass{scrartcl}%
\usepackage{fontspec,luacode,luaotfload}
\begin{luacode*}
    
function check()
print("type of myt=",type(myt))
print("cache_version= ",myt.cache_version)
print("creator= ",myt.creator)  
print("tableversion= ",myt.tableversion)                    
  local mygsub=myt.resources.features.gsub
    for k, v in pairs(mygsub) do print("k=",k) print(" v=",v)
     end
end-- check 

function OT()-- 
    fff = assert (loadfile ("/Users/jacquesandre/Library/texlive/2022/texmf-var/luatex-cache/generic/fonts/otl/erewhon-regular.lua"))-- user dependent
myt=fff() 

print("FROM FILE .lua")
check()

local f  = fonts.hashes.identifiers[font.current()] 
myt=f.shared.rawdata

print("FROM FONT .lua")
check()

end--OT
  
\end{luacode*}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\OT#1{\directlua{OT"#1"}}
\begin{document}
\fontspec{Erewhon-Regular}%or any other font
\OT{}
\end{document}
...

The output is as follows (extracts):

...
FROM FILE .lua
type of myt=    table
cache_version=  3.119
creator=    context mkiv
tableversion=   0.004
k=  ss02
 v= 212
k=  aalt
 v= 219
k=  tnum
 v= 215


FROM FILE .lua
type of myt=    table
cache_version=  3.119
creator=    context mkiv
tableversion=   0.004
k=  ss02
 v= 212
k=  aalt
 v= 219
k=  tnum
 v= 215

k=  rot13
 v= table: 0x600001f8f580

k=  collapse
 v= table: 0x600001f95080
etc.

我的程序有什么问题?

相关内容