Perpustakaan untuk memproses file font truetype.
Fitur:
Repo ini untuk pengembangan versi 2. Versi 1 dikelola dalam repo Samsa GUI.
Langkah -langkah penting adalah:
renderText() di samsainstance untuk mendapatkan string svg Berikut adalah kode sampel untuk node.js yang memuat filename dari disk, membuat objek Samsafont, membuat objek SamSainstance dengan sumbu variasi yang disetel ke lokasi tertentu, membuat string hello, world! Sebagai SVG, lalu menyimpan SVG ke file 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 ) ;Di browser, Anda mendapatkan arraybuffer dan memprosesnya dengan cara yang sama. SVG yang dihasilkan dapat dimasukkan ke dalam 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 ; Jika memuat file font dari URL jarak jauh, Anda mungkin akan menggunakan fetch() maka response.arrayBuffer() untuk mendapatkan arraybuffer. Jika file font diseret ke browser, arraybuffer diperoleh dengan menyebutkan array e.dataTransfer.items , di mana e adalah acara drop. Untuk setiap item dalam array (mungkin ada beberapa item), jika properti kind sama dengan file , atur file = item.getAsFile() dan file.arrayBuffer() akan menghasilkan arraybuffer.
Diagram menggambarkan bagaimana SAMSA membuat objek Samsafont dari arraybuffer, membuat samsainstance dari Samsafont, kemudian menjadikan teks sebagai SVG.
Flowchart 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)