LuaTeX: Ist in glyph nodes die font.size gleich der em-Größe? (Antwort: Ja)

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: LuaTeX: Ist in glyph nodes die font.size gleich der em-Größe? (Antwort: Ja)

Re: LuaTeX: Ist in glyph nodes die font.size gleich der em-Größe?

von khzimmer » Mi 26. Mai 2021, 09:34

Oh, je, wo war ich mit meinen Gedanken!? :(

Sorry, Leute, für's Zeit verschwenden, soeben finde ich die Antwort in der echten Wikipedia:

An em is a unit in the field of typography, equal to the currently specified point size.

Quelle: https://en.wikipedia.org/wiki/Em_(typography)

Ist also völlig klar, wieso \kern1em einen Abstand baut, der exakt der fontsize entspricht: So ist das Geviert wohl definiert!

Verdutzte Grüße
Karl-Heinz

Re: LuaTeX: Ist in glyph nodes die font.size gleich der em-Größe?

von khzimmer » Mi 26. Mai 2021, 09:25

Vielen Dank für die Hinweise. :)

Ich setzte probehalber

\usepackage{DejaVuSans}

ein:

Auch dabei ist das von

\kern1em

produzierte Kerning exakt so groß wie die aktuelle fontsize.

Ist denn sicher, dass das immer so ist?

Also ein em identisch mit der Fontsize?

Oder gibt es einen anderen Weg, wie ich zur Laufzeit innerhalb von

pre_linebreak_filter

zuverlässig die aktuelle Größe eines em feststellen kann?

Re: LuaTeX: Ist in glyph nodes die font.size gleich der em-Größe?

von Gute*r Gȧst*in » Mi 26. Mai 2021, 09:08

Ein Geviert ist eine typografische Designgröße. Das ist keineswegs zwingend die Breite des Buchstabens M. Die englische Bezeichnung der Einheit ist lediglich eine historische Näherung.

Wikipedia hat geschrieben:

Die im Englischen verwendeten Bezeichnungen Em für „Geviert“ und En für „Halbgeviert“ sollten nur als Näherung verstanden werden, denn die Breite der Buchstaben M und N ist für die Definition von Geviert (also Em) und Halbgeviert (also En) nicht maßgeblich. Außerdem ist das Geviert im klassischen Letternsatz aufgrund des typographischen Fleisches (in der Grafik 3) etwas größer als der größte Buchstabe.

Es sei darauf hingewiesen, dass der größte Buchstabe schon im klassischen Letternsatz nicht zwangsläufig das M, sondern teilweise beispielsweise das W war.

Wenn also allgemein schon das Ausmessen der Breite eines einzelnen Buchstabens zur Bestimmung eines Geviert im Ansatz falsch ist, gilt das erst recht für das Ausmessen der Höhe und Tiefe.

Übrigens gilt ähnliches für 1ex. Auch das ist nur eine Näherung an die Höhe des x. Die tatsächliche Höhe weicht teilweise ab.

LuaTeX: Ist in glyph nodes die font.size gleich der em-Größe? (Antwort: Ja)

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


Nach oben