Illustratorには、InDesignのようなプリフライト機能がなくて、InDesignユーザーから見ると、かなり不便!!(元々クリエイティブな作業をやるツールなので、まー。理解はできる)。
Illustratorには、3種類のtextFrameがあります。
- TextType.AREATEXT
- TextType.PATHTEXT
- TextType.POINTTEXT
※3番のPOINTTEXTには溢れること自体がなくて、文字量によって大きくなるだけ。
「1」と「2」のtextFrameの溢れ確認方法:
a = 全体の文字数 ー 段落数(改行記号数)+1(最終行は改行記号なし)
b = 各行の文字数の総和(改行記号/溢れた文字が計算されない)
a === bの場合は、溢れなし。
var r = checkOverFlowTfs(app.activeDocument);
alert("溢れ箇所: " + r);
function checkOverFlowTfs(doc) {
var tfs = doc.textFrames;
var L = tfs.length;
var count = 0;
while (L--) {
if (tfs[L].kind === TextType.POINTTEXT) {
$.writeln(tfs[L].contents + " はチェック必要ない");
continue
}
if (isOverFlow(tfs[L])) {
count++;
}
}
return count;
//***********************************
function isOverFlow(pageItem) {
//溢れた部分含めての合計文字数
var total = pageItem.characters.length - pageItem.paragraphs.length + 1;
var Lines = pageItem.lines;
var L = Lines.length;
var sum = 0;//各行の文字数(溢れた文字が数えられない!)
while (L--) {
sum += Lines[L].length;
}
return total === sum ? false : true;
}
}
