مكتبة لمعالجة ملفات الخطوط الدقيقة.
سمات:
هذا الريبو هو لتطوير الإصدار 2. تتم إدارة الإصدار 1 في Samsa Gui Repo.
الخطوات الأساسية هي:
renderText() على Samsainstance للحصول على سلاسل 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 ) ;في المتصفح ، يمكنك الحصول على 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() ثم response.arrayBuffer() للحصول على ArrayBuffer. إذا تم سحب ملف الخط على المتصفح ، يتم الحصول على ArrayBuffer عن طريق تعداد صفيف e.dataTransfer.items ، حيث يكون e حدث Drop. لكل item في المصفوفة (قد يكون هناك عناصر متعددة) ، إذا كانت خاصيةها kind مساوية file ، فقم بتعيين file = item.getAsFile() وسيؤدي file.arrayBuffer() الوعد.
يوضح الرسم البياني كيف يقوم Samsa بإنشاء كائن Samsafont من ArrayBuffer ، ويقوم بإنشاء Samsainstance من Samsafont ، ثم يقدم نصًا كـ SVG.
مخطط انسيابي TD
F1 [TTF] -> A [ArrayBuffer]
F2 [Woff2] -> A [ArrayBuffer]
A [ArrayBuffer] -> B [Samsabuffer]
ب -> ج [سامسافونت]
B [Samsabuffer] -> | "samsabuffer.decodewoff2 ()" | C [Samsafont]
C -> | "samsafont.instance (Axissettings)" | D (Samsainstance)
d -> | ه (SVG)