我正在使用Extendscript for Photoshop CS5来更改文本图层的文本。有没有办法检查文本是否适合,例如通过检查更改内容后是否溢出?
答案 0 :(得分:1)
我还没有找到直接做到这一点的方法。但我之前使用以下技术来确定文本框所需的高度(我希望保持宽度不变)。
完全迂回 - 但确实有效。
答案 1 :(得分:1)
我创建了一个完美无缺的解决方案:)。也许其他人也可以使用它。让我知道它是否也适合你!
function scaleTextToFitBox(textLayer) {
var fitInsideBoxDimensions = getLayerDimensions(textLayer);
while(fitInsideBoxDimensions.height < getRealTextLayerDimensions(textLayer).height) {
var fontSize = parseInt(textLayer.textItem.size);
textLayer.textItem.size = new UnitValue(fontSize * 0.95, "px");
}
}
function getRealTextLayerDimensions(textLayer) {
var textLayerCopy = textLayer.duplicate(activeDocument, ElementPlacement.INSIDE);
textLayerCopy.textItem.height = activeDocument.height;
textLayerCopy.rasterize(RasterizeType.TEXTCONTENTS);
var dimensions = getLayerDimensions(textLayerCopy);
textLayerCopy.remove();
return dimensions;
}
function getLayerDimensions(layer) {
return {
width: layer.bounds[2] - layer.bounds[0],
height: layer.bounds[3] - layer.bounds[1]
};
}
如何使用/解释
scaleTextToFitBox(textLayer);
该函数将更改文本/字体大小,直到文本放在框内(这样就不会看到任何文本)!
脚本将每个步骤的字体大小减小5%(* 0.95),直到文本放在框内。您可以更改乘数以获得更精确的结果或提高性能。