samsa core
1.0.0
用于处理TrueType字体文件的库。
特征:
此存储库用于版本2开发。版本1在SAMSA GUI存储库中管理。
基本步骤是:
renderText()获取SVG字符串这是node.js的示例代码,从磁盘加载filename ,创建一个samsafont对象,创建一个Samsainstance对象,其中设置为某些位置的变体轴,使字符串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 ) ;在浏览器中,您可以获得一个阵列,然后对其进行类似的处理。所得的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()然后使用response.arrayBuffer()获取arrayBuffer。如果将字体文件拖动到浏览器上,则通过枚举e.dataTransfer.items数组来获得阵列,其中e是drop事件。对于数组中的每个item (可能有多个项目),如果其kind属性等于file ,则set file = item.getAsFile()和Promise file.arrayBuffer()将产生阵列Buffer。
该图说明了SAMSA如何从阵列延迟创建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(轴赛)” | D(samsainstance)
d-> |“ samsainstance.rendertext({text:myText,fontsize:mysize,color:mycolor:mycolor})” | E(SVG)