You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Adobe Illustrator脚本:实现文本框内文本居中且最大化无换行

Adobe Illustrator脚本:实现文本无换行居中并最大化字号

核心问题分析

原方案使用区域文本(areaText)会触发Illustrator默认的自动换行逻辑,这是文本换行的根本原因;同时溢出框的检测逻辑存在语法错误,且未设置强制单行对齐属性,最终引发缩放不均、换行等问题。

解决思路

  1. 改用点文本(pointText):从根源避免自动换行,点文本默认保持单行显示,仅需控制其宽度不超出指定区域
  2. 直接对比文本宽度与目标区域宽度:无需依赖溢出框,通过动态调整字号直到文本宽度刚好适配区域(或达到最小字号限制)
  3. 强制单行属性:即使意外触发换行规则,也能通过属性锁定保持单行
  4. 计算居中位置:根据目标区域的坐标和尺寸,计算文本的居中偏移量,实现水平与垂直居中

修正后的代码

var doc = activeDocument;
var piRef = doc.pathItems;
var textRefs = doc.textFrames;

// 定义目标区域参数:x(左边界)、y(上边界)、宽度、高度
var targetArea = { x: -50, y: 30, width: 60, height: 30 };

// 创建目标区域参考框(可选,用于可视化,实际使用可删除)
piRef.rectangle(targetArea.y, targetArea.x, targetArea.width, targetArea.height).name = "TargetArea";

// 1. 创建点文本(默认单行显示)
var textFrame = textRefs.pointText([0, 0]);
textFrame.contents = "abcdefghijklmnopqrstuvwxy"; // 25字符测试文本

// 2. 设置文本核心属性:强制不换行、段落居中
var textRange = textFrame.textRange;
textRange.characterAttributes.noBreak = true; // 锁定单行,禁止换行
textRange.paragraphAttributes.justification = Justification.CENTER; // 文本居中对齐

// 3. 动态调整字号至最大适配尺寸
var maxFontSize = 200;
var minFontSize = 10; // 最小字号限制,避免无限缩小
var fontSize = maxFontSize;

textRange.characterAttributes.size = fontSize;

// 循环缩小字号,直到文本宽度≤目标区域宽度,或达到最小字号
while (textFrame.width > targetArea.width && fontSize > minFontSize) {
    fontSize--;
    textRange.characterAttributes.size = fontSize;
}

// 4. 计算并设置文本居中位置(适配Illustrator向上的y轴坐标系)
var centerX = targetArea.x + (targetArea.width - textFrame.width) / 2;
var centerY = targetArea.y - (targetArea.height - textFrame.height) / 2;
textFrame.position = [centerX, centerY];

关键改动说明

  • 点文本替代区域文本:彻底规避自动换行逻辑,完美匹配“文本不得换行”的需求
  • 直接检测文本宽度:通过textFrame.width获取文本实际宽度,对比目标区域宽度调整字号,逻辑更可靠高效
  • 强制不换行属性:noBreak = true确保极端长度或特殊字符场景下也不会触发换行
  • 精准居中计算:结合Illustrator坐标系特性,计算文本的居中偏移量,实现视觉上的完美居中

内容的提问来源于stack exchange,提问作者James Sprow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 23:45:34