1

私はキーボードで書かれたテキストを入力として受け取り、同じ段落を出力する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();
4

1 に答える 1