Trataré de hacer esta pregunta lo mejor que pueda, pero el problema es desafiante.
Tengo un cuadro de texto en el que una parte de mi secuencia de comandos cambiará el texto. Quiero codificar una variable booleana para verificar si ese texto cabe en una línea o no.
Ex.
___________________
|This returns true |
| |
|___________________|
pero
___________________
|This longer version|
|returns false |
|___________________|
El conteo de caracteres no funcionará ya que no estoy usando una fuente monoespaciada. ¿Algunas ideas?
Lo mejor que se me ocurrió fue esto:
Después de aplicar el nuevo texto...
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 caminante
Joonas
ryan caminante
Joonas