在第一次我采用文本框架和颜色文本和背景。 但我只需要颜色只有第一个单词,而在第二次我不能只选择颜色的单词。请帮我!感谢。
var textHeaderTf;
try{
textHeaderTf = headerTf.paragraphs.item(0);
if(textHeaderTf!=undefined && textHeaderTf!=null)
{
headerTf.parentStory.insertionPoints.item(-1).contents = 'myNewText';
// textHeaderTf.fillColor = myColorA;
textHeaderTf.strokeColor = myColorB;
}
}catch(e){log.write('setHeader font-color error7'+e);}
try{
textHeaderTfWord = textHeaderTf.words[0];//headerTf.paragraphs.item(1);
if(textHeaderTfWord!=undefined && textHeaderTfWord!=null)
{
textHeaderTfWord.fillColor = myColorA;
textHeaderTfWord.strokeColor = myColorA;
}
}catch(e){log.write('setHeader font-color error8'+e);}
答案 0 :(得分:0)
这取决于你想要的工作顺序。
在您第一次尝试时,您将在开头插入文字,然后设置整个段落的颜色(textHeaderTf
)。
在第二次尝试中,您只设置第一个单词的颜色。
如果您想在开头添加文字并且立即着色,请使用:
textHeaderTf.insertionPoints.item(0).fillColor = myColorA;
textHeaderTf.insertionPoints.item(0).contents = "Colored text!";
这是因为InsertionPoint
的行为类似于文本光标:就像在界面本身一样,您可以“设置”一个属性,如颜色,字体或文本大小,以及然后立即在同一位置“输入”一些文字。
您可以在任何InsertionPoint上执行此操作,而不仅仅是在段落的开头。例如,它可以在第3个单词之前添加文本。
textHeaderTf.words.item(2).insertionPoints.item(0).fillColor = myColorA;
textHeaderTf.words.item(2).insertionPoints.item(0).contents = "more colored text here ";
如果要为现有单词着色,可以使用循环对其进行计数:
for (i=0; i<5; i++)
textHeaderTf.words.item(i).fillColor = myColorA;
请记住,您仍在处理个别字。如果你用
重复一遍for (i=0; i<5; i++)
textHeaderTf.words.item(i).underline = true;
你会看到,是的,这些词有下划线 - 但也许你想要强调它们之间的空格。
为此,您可以通过在第一个和最后一个单词之间寻址字符范围来一次性定位整个文本块:
textHeaderTf.characters.itemByRange(textHeaderTf.words.item(1),
textHeaderTf.words.item(4)).underline = true;
InDesign非常智能,可以在索引words
和characters
之间进行转换;你会看到两者之间的空格也加下划线,因为它们是你所引用的字符范围的一部分。