0

Photoshop CS5 の Extendscript を使用して、テキスト レイヤーのテキストを変更しています。内容を変更した後にオーバーフローするかどうかなど、テキストが収まるかどうかを確認する方法はありますか?

4

2 に答える 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]
    };
}

使い方・解説

  1. 定義された幅と高さを持つテキスト レイヤーを作成します。
  2. テキストレイヤーの内容を変更してから呼び出すことができますscaleTextToFitBox(textLayer);

この関数は、テキストがボックス内に収まるまで (テキストが見えないように) テキスト/フォント サイズを変更します。

スクリプトは、テキストがボックス内に収まるまで、各ステップでフォント サイズを 5% (* 0.95) ずつ小さくします。乗数を変更して、より正確な結果を達成したり、パフォーマンスを向上させたりできます。

于 2016-07-25T14:23:57.557 に答える