Ich werde versuchen, diese Frage so gut ich kann zu stellen, aber das Problem ist eine Herausforderung.
Ich habe ein Textfeld, in dem ein Teil meines Skripts den Text ändert. Ich möchte eine boolesche Variable codieren, um zu überprüfen, ob dieser Text in eine Zeile passt oder nicht.
Ex.
___________________
|This returns true |
| |
|___________________|
Aber
___________________
|This longer version|
|returns false |
|___________________|
Die Zeichenanzahl funktioniert nicht, da ich keine Monospaced-Schriftart verwende. Irgendwelche Ideen?
Das Beste was mir einfiel war folgendes:
Nachdem der neue Text angewendet wurde...
var doc = app.activeDocument;
var layer = doc.activeLayer;
var historyRollback = doc.activeHistoryState;
var rulerUnits = app.preferences.rulerUnits;
app.preferences.rulerUnits = Units.POINTS;
var height1 = size( layer )[1];
layer.textItem.noBreak = true;
layer.textItem.contents = layer.textItem.contents.replace(/\r/g,'');
var height2 = size( layer )[1];
var singleline = height1 > height2 ? false : true;
app.preferences.rulerUnits = rulerUnits;
doc.activeHistoryState = historyRollback;
doc.activeLayer = layer;
alert( singleline )
function size( layer ) {
var bounds = layer.boundsNoEffects;
var top = bounds[1].value;
var right = bounds[2].value;
var bottom = bounds[3].value;
var left = bounds[0].value;
var width = right - left;
var height = bottom - top;
return [ width, height ];
}
Ryan Walker
Joonas
Ryan Walker
Joonas