Photoshop CS5 の Extendscript を使用して、テキスト レイヤーのテキストを変更しています。内容を変更した後にオーバーフローするかどうかなど、テキストが収まるかどうかを確認する方法はありますか?
1059 次
2 に答える
3
完全に正常に機能するソリューションを作成しました:)。たぶん、他の誰かもそれを使うことができます。あなたにも当てはまるかどうか教えてください!
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) ずつ小さくします。乗数を変更して、より正確な結果を達成したり、パフォーマンスを向上させたりできます。
于 2016-07-25T14:23:57.557 に答える