Hallo Jochen,
ich habe vor etwa einem Jahr mal damit rumgespielt.
Hier ein Skript, das die Höhe des ausgewählten (ersten) Zeichens ermittelt (bei Großguchstaben die Versalhöh, bei Kleinbuchstaben die x-Höhe ) und den Faktor zur Berechnung dieser Höhe aus dem Schriftgrad mit 10 pt bei diesem Zeichen in dieser Schrift gleich mitliefert.
// capHeight.jsx
if ( app.documents.length == 0 || app.selection.length == 0 || !app.selection[0].hasOwnProperty( 'baseline' ))
exit();
var d = app.activeDocument;
var myResult = getCapHeight ( app.selection[0].characters.item(0), 10 ); // Input: Zeichen, Schriftgrad
var myString = 'Berechnung der Versalhöhe\rSchriftgrad:\t' + myResult.pointSize +
'\rVersalhöhe:\t' + round (myResult.capHeight ) +
'\rFaktor:\t\t' + round (myResult.factor) ;
alert ( myString );
function getCapHeight( aChar , aPointSize )
{
var myFrame = d.textFrames.add({geometricBounds:[0,-50,50,0]});
aChar.duplicate(LocationOptions.AFTER, myFrame.insertionPoints.item(0));
myFrame.characters.item(0).pointSize = aPointSize;
myFrame.characters.item(0).createOutlines( true );
var myObject = myFrame.pageItems.item(0);
// Umrechnung mm in pt
var myHeightInMm = UnitValue ( myObject.geometricBounds[2] - myObject.geometricBounds[0], "mm");
var myHeight = myHeightInMm.as ("pt");
var myFactor = myHeight/aPointSize;
myFrame.remove();
return {pointSize: aPointSize, capHeight: myHeight, factor: myFactor}
}
function round( aValue )
{
var justness = 1000;
return Math.round(aValue * justness ) / justness;
}
Im Prinzip könnte man auf der Basis dieser Berechnung einen Eingabedialog für die Versalhöhe in mm generieren. Falls dafür noch Bedarf besteht, würde ich dies im Premium-Forum gelegentlich nachholen.