不能像在 Indd 中那样自动在 Ps 中垂直居中文本,这很烦人。更烦人的是,文本的边界框不能像 Indd 那样“折叠”或“适合文本”。
我可以将文本转换为形状,但随后我失去了颜色。我可以转换为智能对象,但当我导出为 pdf 时,它不再是矢量了。
是否有任何人知道可以使垂直居中文本更容易的工作?
不能像在 Indd 中那样自动在 Ps 中垂直居中文本,这很烦人。更烦人的是,文本的边界框不能像 Indd 那样“折叠”或“适合文本”。
我可以将文本转换为形状,但随后我失去了颜色。我可以转换为智能对象,但当我导出为 pdf 时,它不再是矢量了。
是否有任何人知道可以使垂直居中文本更容易的工作?
对于定位文本,您不需要边界框。
我从不在 PS 中对文本使用边界框。我在不拖动的情况下单击文本工具并设置没有框的文本光标。输入文本后,我可以使用对齐按钮将其垂直或水平居中,就像任何其他形状一样——假设我有一些东西要对齐它。
我在 Illustrator 中做同样的事情。例如,我正在制作一个奖状丝带,一个中间有文字的圆圈。我画了一个圆圈,然后写了三行文字,中心对齐,没有边界框,甚至没有靠近圆圈的中心。然后我选择了圆圈和文本,然后点击垂直对齐中心,水平对齐中心,文本在圆圈中完全居中。
虽然它不是自动的(您需要为每个文本手动调整它),但您可以使用Baseline Shift
“模仿”垂直居中:
我今天找到了一种我不知道的方法,这部分正如 Michael Osterhus 所说,但我并没有真正理解他的初衷。
Layer -> Align
并按下了Vertical centers
两者Horizontal centers
这个简单的策略给了我我所追求的确切结果,所以当你需要以某种方式居中文本时,这个漂亮的技巧非常有用。
如果这在以前不明显,则文本相对于您绘制的矩形水平和垂直对齐,因此如果您希望文本在整个文档上垂直对齐,则需要有一个该大小的矩形,依此类推。
这是我写的一个可能有效的脚本。不过我还没有测试过。
centerTextVertically( app.activeDocument.artLayers.getByName( 'Text-Layer-Name' ) );
/**
* @param {ArtLayer} textLayer The text layer to apply the vertical centering.
*/
function centerTextVertically( textLayer ) {
if ( textLayer.kind !== LayerKind.TEXT ) {
return; // No-op: Not a text layer
}
var verticalCenterOffset = textLayer.textItem.height / 2;
var textCenterOffset = textLayer.textItem.size / 2;
textLayer.textItem.baselineShift = textCenterOffset - verticalCenterOffset;
}