Ich mach so was bislang auch mit einem Hilfslinienset.
Aber das muss ja nicht immer so bleiben.
Hier ein proof of concept eines anderen Ansatzes.
Dieser Ansatz geht davon aus, dass die Höhe des Bildrahmens einem ganzzahligen Vielfachen eines bestimmten Zeilenabstands entsprechen soll, abzüglich dem Raum zwischen Versalhöhe und der nächsten Grundlinie.
Zwei Dinge müssen zunächst eingestellt werden:
var mySpaceBetweenBaselineAboveAndCapsheight = 1.6; // Abstand nächste Grundlinie bis Oberlänge in mm
var myLeading = pt2mm(11.5); // Zeilenhöhe in pt (hier 1,6 mm Abstand von Versalhöhe zur darüberliegenden Grundlinie und 11,5 pt Zeilelnabstand)
Die Unterkante des Bildrahmens steht auf einer Grundlinie.
Das Skript sollte nun die Oberkante des Bildrahmens an die nächstgelegene Versalhöhe justieren (auf- oder abrunden).
Es ist durchaus möglich, daß dieser Ansatz nichts taugt.
Zumindest hat er seine Schwächen.
Aber ich wittere, dass dahinter eine Lösung jenseits dem Hilfsliniengefängnis liegen könnte.
Freilich sollte man den zu definierenden Zeilenabstand aus einem Absatzformat auslesen.
Und die Versalhöhe bzw. die Differenz zwischen Versalhöhe und Zeilenabstand könnte man über Geralds Ansatz zur Berechnung der Versalhöhe in mm bestimmen.
Im Moment braucht's da aber noch feste Werte.
---
edit: Ah, gerade sehe ich, dass Hans seine Lösung veröffentlicht hat.
Wie mir auf den ersten Blick scheint, verfolgt sie einen ähnlichen Ansatz.
Ist darüberhinaus aber präziser und fängt unterschiedliche Gegebenheiten ab.
Also besser mit dem Premium-Skript von Hans arbeiten, als mit dem obigen proof of concept.