samsa core
1.0.0
TrueTypeフォントファイルを処理するためのライブラリ。
特徴:
このレポはバージョン2開発用です。バージョン1は、Samsa GUIレポで管理されています。
重要なステップは次のとおりです。
renderText()を呼び出して、SVG文字列を取得しますDiskからfilenameをロードし、SamsaFontオブジェクトを作成し、特定の場所にバリエーション軸を設定したSamsainStanceオブジェクトを作成し、String hello, world! SVGとして、SVGをファイルrender.svgに保存します。
const nodeBuffer = fs . readFileSync ( filename ) ;
const arrayBuffer = nodeBuffer . buffer ;
const samsaBuffer = new SamsaBuffer ( arrayBuffer ) ;
const font = new SamsaFont ( samsaBuffer ) ;
const instance = font . instance ( { wght : 900 , wdth : 200 } ) ;
const svg = instance . renderText ( { text : "hello, world!" , fontSize : 72 } ) ;
fs . writeFileSync ( "render.svg" , svg ) ;ブラウザでは、ArrayBufferを取得して同様に処理します。結果のSVGをDOMに挿入できます。
const samsaBuffer = new SamsaBuffer ( arrayBuffer ) ;
const font = new SamsaFont ( samsaBuffer ) ;
const instance = font . instance ( { wght : 900 , wdth : 200 } ) ;
const svg = instance . renderText ( { text : "hello, world!" , fontSize : 72 } ) ;
document . getElementById ( "myDiv" ) . innerHTML = svg ;リモートURLからフォントファイルをロードすると、おそらくfetch() and response.arrayBuffer()を使用してArrayBufferを取得します。フォントファイルがブラウザにドラッグされた場合、ArrayBufferはe.dataTransfer.itemsアレイを列挙して取得されます。ここで、 eはドロップイベントです。配列内の各item (複数のアイテムがある場合があります)、そのkindプロパティがfileに等しい場合、 file = item.getAsFile()を設定し、promise file.arrayBuffer()がarraybufferを生成します。
この図は、SamsaがArrayBufferからSamsaFontオブジェクトを作成し、SamsafontからSamsainstanceを作成する方法を示しており、テキストをSVGとしてレンダリングします。
フローチャートTD
f1 [ttf] - > a [arraybuffer]
f2 [woff2] - > a [arraybuffer]
a [arraybuffer] - > b [samsabuffer]
b-> c [samsafont]
b [samsabuffer] - > | "samsabuffer.decodewoff2()" | c [samsafont]
c-> | "samsafont.instance(axissettings)" | D(samsainstance)
d - > | "samsainstance.rendertext({text:mytext、fontsize:mysize、color:mycolor})" | E(SVG)