私はキーボードで書かれたテキストを入力として受け取り、同じ段落を出力するjavascriptでテキストエディターを構築しましたが、各単語はそれがどのように書かれたかに応じてスタイル設定されています。私のテキスト エディターは CSV ファイルをエクスポートします。このファイルでは、各行が単語であり、フォント サイズ、単語の追跡、2 つの単語間の間隔、および単語の色をカバーする特定のスタイル設定値があります。
ここで、 basil.jsライブラリを使用してこの csv ファイルを InDesign にインポートし、csv ファイルにある単語とスタイルの段落を含むテキスト ボックスを作成できるようにします。
csv ファイルは次の場所で確認できます。
word,spacing,size,tracking,color
"Hello,",0,16,0,90
this,70,16,0.22,90
is,0,16,7,0
a,0,16,0,90
test,0,24,3.98,90
to,0,16,5.06,90
show,0,16,-1.56,90
what,42.84,16,-0.6,90
i,0,16,0,90
mean,0,16,-0.79,90
私は csv をインポートし、各単語で段落を作成し、各作業でフォントサイズのスタイリングを機能させることができました。しかし、追跡プロパティを機能させることはできません。また、basil.jsを使用して段落内の2つの単語の間にインクレススペースを作成する方法を実際には考えていません(テキストエディタでは左パディングcssを使用しました)。また、各単語の色を変更する方法もわかりません。
これはbasil.jsで可能ですか?
私の現在のコードは次のようになります。
#includepath "~/Documents/;%USERPROFILE%Documents";
#include "basiljs/bundle/basil.js";
function draw(){
b.clear(b.doc());
//import csv file
var data = b.CSV.decode( b.loadString("mycsv.csv"));
//paragraph placeholder
var paragraph = "";
//parse to right data type,
for (var i = 0; i < data.length; i++) {
data[i].spacing = parseInt(data[i].spacing);
data[i].size = parseInt(data[i].size);
data[i].tracking = parseInt(data[i].tracking);
data[i].color = parseInt(data[i].color);
// data[i].word is already a string at it should
//Add each word in the csv row to create a paragraph
paragraph += data[i].word + " ";
};
//create a textframe element for the paragraph
var tf = b.text(paragraph, 36, 36, 500, b.height);
var myWords = b.words(tf);
// iterate through each word and apply the specific styling for the
specific word.
for(var i = 0; i < myWords.length; i++){
var size_ = data[i].size; // font size
var tracking_ = data[i].tracking; //word tracking
var color_ = data[i].color; // font color
var spacing_ = data[i].spacing;
// this one works
myWords[i].pointSize = size_;
//I'ld like to change tracking for each word - but this dosnt work
myWords[i].tracking = tracking_;
//myWords[i].color = rgb(color_); - How can I apply a specific color to a specific word in the paragraph
// myWords[i].word_spacing = - I would like to increase the spacing between specific pairs of words. How can this be done?
}
}
b.go();