以下代码将字符宽度(光标前进宽度)以及字形边界框的 x 和 y 坐标写入日志文件。以下是字母“a”的代码:
\documentclass[12pt]{article}
% Compile with lualatex.
\usepackage{fontspec}
\setmainfont{Latin Modern Roman}
\begin{document}
\directlua{
local fontdata = font.getfont (font.current ())
local descriptions = fontdata.shared.rawdata.descriptions
local glyphdata = descriptions [utf.byte ("a")]
inspect (glyphdata)
}
\end{document}
日志文件的相关部分:
table={
["boundingbox"]={ 34, -10, 474, 446 },
["depth"]=10,
["height"]=446,
["index"]=28,
["name"]="a",
["unicode"]=97,
["width"]=490,
}
这是正确的,通过在 Fontforge 中打开字体来确定。单位的数值是根据设计网格单位计算的。对于 OpenType 字体,这通常是每 em 1000,但对于 TrueType 字体,可能是 1024、2048 或 4096。甚至可能不是这些。
我的问题:使用类似于上面的代码,如何确定使用了哪些字体设计网格单元?
答案1
您可以unit_per_em
从字体表中打印值:
\directlua{
local fontdata = font.getfont (font.current ())
local unit = fontdata.units_per_em
texio.write_nl("unit per em: ") texio.write(unit) texio.write_nl("")
local descriptions = fontdata.shared.rawdata.descriptions local glyphdata = descriptions [utf.byte ("a")]
inspect (glyphdata)
}