von khzimmer » Di 25. Mai 2021, 18:10
Hallo Wissende,
Ich wollte herausfinden, wie groß ein Geviert (ein em) mit dem Font und der Font-Größe wäre, die ein Glyph verwendet:
Dazu kopierte ich in pre_linebreak_filter einen glyph-node, setzte als char ein M ein und prüfte die Größe:
\documentclass{scrbook}
\usepackage{luacode}
\begin{luacode*}
local find_em_size = function (head)
local glyph_id = node.id "glyph"
local kern_id = node.id "kern"
while head do
if head.id == kern_id then
print ("kerning found: ", head.kern)
elseif head.id == glyph_id then
local curFont = font.fonts [head.font]
local fontSize = curFont.size
local emNode = node.copy (head)
emNode.char = 77
local emSize = emNode.height + emNode.depth
print ("char: "..unicode.utf8.char(head.char).." emSize: "..tostring(emSize).." fontSize: "..tostring(fontSize))
end
head = head.next
end
return true
end
luatexbase.add_to_callback("pre_linebreak_filter",find_em_size,"~")
\end{luacode*}
\begin{document}
\typeout{}
x\large y\Large z
A\kern1emB
\end{document}
Merkwürdigerweise erhalte ich in emSize einen viel zu kleinen Wert – doch in fontsize bekomme ich den Wert, den ich auch in einem kern-Node bekomme, wenn ich im Dokument \kern1em schriebe.
Wie kann das sein? Ist das immer so?
Herzliche Grüße
Karl-Heinz
Hallo Wissende,
Ich wollte herausfinden, wie groß ein Geviert (ein em) mit dem Font und der Font-Größe wäre, die ein Glyph verwendet:
Dazu kopierte ich in pre_linebreak_filter einen glyph-node, setzte als char ein M ein und prüfte die Größe:
[code]\documentclass{scrbook}
\usepackage{luacode}
\begin{luacode*}
local find_em_size = function (head)
local glyph_id = node.id "glyph"
local kern_id = node.id "kern"
while head do
if head.id == kern_id then
print ("kerning found: ", head.kern)
elseif head.id == glyph_id then
local curFont = font.fonts [head.font]
local fontSize = curFont.size
local emNode = node.copy (head)
emNode.char = 77
local emSize = emNode.height + emNode.depth
print ("char: "..unicode.utf8.char(head.char).." emSize: "..tostring(emSize).." fontSize: "..tostring(fontSize))
end
head = head.next
end
return true
end
luatexbase.add_to_callback("pre_linebreak_filter",find_em_size,"~")
\end{luacode*}
\begin{document}
\typeout{}
x\large y\Large z
A\kern1emB
\end{document}
[/code]
Merkwürdigerweise erhalte ich in emSize einen viel zu kleinen Wert – doch in [b]fontsize[/b] bekomme ich den Wert, den ich auch in einem kern-Node bekomme, wenn ich im Dokument \kern1em schriebe.
Wie kann das sein? Ist das immer so?
Herzliche Grüße
Karl-Heinz