JavaScript for Adobe Illustrator 10 - CS ( Win / Mac )
■■テキストばらし■■
複数行のテキストを改行で別オブジェクトに分割しま
var itemsToSplit = new Array() ;
var splitTexts = new Array() ;
var HorV ;
var txPos ;
var lineHeight ;
var aiVersion = version.slice(0,2);
var crCode = String.fromCharCode(13);
var enterCode = String.fromCharCode( 3 ) ;
selectedObj = activeDocument.selection ;
if( selectedObj.length == 0 )
{
alert("まず、改行で分割したいテキストを選択してください。 ( Select texts first. )");
}
else
{
for( i=0; i<selectedObj.length; i++ )
{
if( aiVersion == "10" )
{
if( selectedObj[i] instanceof TextArtItem )
itemsToSplit.push(selectedObj[i]) ;
}
else
{
if( selectedObj[i] instanceof TextFrame )
if( selectedObj[i].converted == false )
{
selectedObj[i] = selectedObj[i].convertToNative() ;
ct = selectedObj[i].textFrames[0] ;
ct.move( selectedObj[i] , ElementPlacement.PLACEBEFORE ) ;
itemsToSplit.push( ct ) ;
}
else { itemsToSplit.push(selectedObj[i]) }
}
}
}
if( itemsToSplit.length == 0 )
{
alert("まず、改行で分割したいテキストを選択してください。 ( Select texts first. )");
}
else
{
for( i=0; i<itemsToSplit.length; i++ )
{
if( aiVersion == "10" )
{
lineHeight = itemsToSplit[i].textRange( 0 , 0 ).leading ;
if( lineHeight == 0 )
lineHeight = ( Math.round( itemsToSplit[i].textRange( 0 , 0 ).size*2.4 ) ) / 2 ;
HorV = ( itemsToSplit[i].textPaths[0].orientation == TextOrientation.HORIZONTAL ) ;
}
else
{
lineHeight = itemsToSplit[i].textRange.characterAttributes.leading ;
if( lineHeight == 0 )
lineHeight = Math.round( itemsToSplit[i].textRange.characterAttributes.size*1.2 ) ;
HorV = ( itemsToSplit[i].orientation == TextOrientation.HORIZONTAL ) ;
}
txPos = itemsToSplit[i].position ;
txArray = itemsToSplit[i].contents.split( enterCode ).join( crCode ).split( crCode ) ;
splitTexts[i] = new Array() ;
for( j=0; j<txArray.length; j++ )
{
if( txArray[j] != "" )
{
splitTexts[i][j] = itemsToSplit[i].duplicate();
splitTexts[i][j].contents = txArray[j] ;
if( HorV )
{
splitTexts[i][j].position = [ txPos[0] , txPos[1]-(lineHeight*j) ] ;
if( splitTexts[i][j].kind == TextType.AREATEXT )
{
if( aiVersion == "10" )
{ splitTexts[i][j].textPaths[0].textPathObject.height
= lineHeight * splitTexts[i][j].textRange().textLines.length }
else
{ splitTexts[i][j].textPath.height
= lineHeight * splitTexts[i][j].lines.length }
if( j > 0 )
{ splitTexts[i][j].top
= splitTexts[i][j-1].top - splitTexts[i][j-1].height }
}
}
else
{
if( splitTexts[i][j].kind == TextType.AREATEXT )
{
if( aiVersion == "10" )
{ splitTexts[i][j].textPaths[0].textPathObject.width
= lineHeight * splitTexts[i][j].textRange().textLines.length }
else
{ splitTexts[i][j].textPath.width
= lineHeight * splitTexts[i][j].lines.length }
}
splitTexts[i][j].position
= [ txPos[0] + itemsToSplit[i].width - splitTexts[i][j].width , txPos[1] ] ;
if( j > 0 )
{ splitTexts[i][j].left
= splitTexts[i][j-1].left - splitTexts[i][j].width }
}
if( aiVersion == "10" )
{ splitTexts[i][j].moveBefore( itemsToSplit[i] ) }
else
{ splitTexts[i][j].move( itemsToSplit[i] , ElementPlacement.PLACEBEFORE ) }
}
}
itemsToSplit[i].remove() ;
}
}