প্রকল্প সম্পর্কে
svgdom হলো একটি সরল DOM বাস্তবায়ন যা SVG.js-কে Node.js-এ হেডলেসভাবে চালাতে ডিজাইন করা হয়েছে। যদিও এটি মূলত সেই উদ্দেশ্যে তৈরি হয়েছিল, এখন এটি বেশি ফিচারসমৃদ্ধ হয়ে উঠেছে এবং যেকোনো ব্যক্তি XML, SVG বা HTML DOM প্রয়োজনে এটি ব্যবহার করতে পারেন। সাধারণ ব্যবহারগুলোর মধ্যে রয়েছে সার্ভারে SVG ফাইল তৈরি করা, ব্রাউজার ছাড়াই SVG কোড পরীক্ষা করা এবং SVG জ্যামিতি পরিদর্শন বা রূপান্তরকারী অ্যাসেট-পাইপলাইন টুল তৈরি করা।
SVG.js v3.x দিয়ে শুরু করতে @svgdotjs/svg.js এবং svgdom ইনস্টল করতে হয়। svgdom থেকে createSVGWindow এবং @svgdotjs/svg.js থেকে SVG ও registerWindow ইমপোর্ট করতে হয়। createSVGWindow একটি উইন্ডো ফেরত দেয় যার মধ্যে একটি ডকুমেন্ট এবং একটি SVG রুট নোড থাকে。উইন্ডো ও ডকুমেন্ট রেজিস্টার করার পরে document.documentElement থেকে একটি ক্যানভাস তৈরি করা হয় এবং SVG.js স্বাভাবিকভাবে ব্যবহার করা হয়, যেমন একটি আয়তক্ষেত্র আঁকা, তা ভরাট করা, সরানো এবং তারপর SVG-কে স্ট্রিং বা outerHTML হিসেবে আউটপুট করা।
SVG-এর বাইরেও svgdom createHTMLWindow দিয়ে একটি HTML উইন্ডো তৈরি করতে পারে, অথবা createWindow দিয়ে একটি সাধারণ XML উইন্ডো তৈরি করতে পারে, যেখানে একটি নেমস্পেস URI এবং রুট নোড পাস করা হয়, যেমন MathML। Node.js 22.13 বা তার নতুন ভার্সনে svgdom-কে CommonJS মডিউল হিসেবে সরাসরি require দিয়ে লোড করা যায়।
প্রকল্পটি ইচ্ছাকৃত DOM বিচ্যুতি নথিভুক্ত করেছে। এটি হেডলেস SVG ব্যবহারের জন্য একটি ছোট, সুবিধাজনক API-কে সম্পূর্ণ ব্রাউজার DOM অনুসরণের চেয়ে অগ্রাধিকার দেয়। document.createElement ডকুমেন্টের নেমস্পেস উত্তরাধিকার করে, তাই createSVGDocument().createElement('rect') SVG নেমস্পেসে একটি SVGRectElement তৈরি করে, যা ব্রাউজার XML DOM-এর মতো নয় যেখানে createElement নেমস্পেস ছাড়া এলিমেন্ট তৈরি করে এবং createElementNS প্রয়োজন হয়। HTML আচরণ ডকুমেন্ট নেমস্পেস থেকে অনুমান করা হয়: XHTML নেমস্পেস সহ একটি ডকুমেন্ট HTML নাম কেসিং, কেস-অসংবেদনশীল HTML টাইপ সিলেক্টর, HTML ভয়েড-এলিমেন্ট সিরিয়ালিজেশন এবং HTML-এর CDATA সীমাবদ্ধতা পায়। svgdom বর্তমানে ক্ষমাশীল HTML পার্সিং অ্যালগরিদম বাস্তবায়ন করে না; HTMLParser এবং innerHTML একটি কঠোর XML পার্সার ব্যবহার করে, তাই মার্কআপ অবশ্যই সুসংগত হতে হবে এবং ট্যাগ-সুপ রিকভারি, অপশনাল এন্ড ট্যাগ এবং অনুরূপ আচরণ সমর্থিত নয়।
টেক্সট বাউন্ডিং বক্সের জন্য প্রথমে ফন্ট লোড করতে হয়। নির্দিষ্ট ফন্টের জন্য ফন্ট ফাইল পাওয়া না গেলে svgdom ডিফল্টভাবে Open Sans-Regular লোড করে। কনফিগারেশন অপশনগুলোর মাধ্যমে ফন্ট ডিরেক্টরি সেট করা যায়, ফন্ট পরিবারকে ফাইলের সাথে ম্যাপ করা যায় এবং প্রথম ব্যবহারে লোডিং বিলম্ব এড়াতে ফন্ট প্রি-লোড করা যায়। একই ফাংশনগুলো সরাসরি ইমপোর্ট করা যায়।
জানা সীমাবদ্ধতাগুলোর মধ্যে রয়েছে ফন্ট প্রপার্টি যেমন বোল্ড এবং ইটালিক শুধুমাত্র যখন সংশ্লিষ্ট ফন্ট স্পষ্টভাবে লোড করা হয় তখনই সমর্থিত, যেমন Arial-italic-কে arial_italic.ttf-এর সাথে ম্যাপ করা। querySelector একটি সীমিত সেটের পসিউডো ক্লাস সমর্থন করে: empty, first-child, last-child, nth-child, nth-last-child, first-of-type, last-of-type, nth-of-type, nth-last-of-type, only-child, only-of-type, has, is, root, not, matches, scope এবং where। nth-child এবং nth-last-child পসিউডো ক্লাসগুলো of সিলেক্টর সিনট্যাক্সও সমর্থন করে। সিলেক্টরে বন্ধ ব্র্যাকেট সহ অ্যাট্রিবিউট মান বর্তমানে সঠিকভাবে পার্স হয় না, এমনকি কোট করা থাকলেও।
svgdom অন্য প্রকল্পে ব্যবহার করা যেতে পারে, যদিও কিছু ফাংশন SVG.js-এর প্রয়োজন হয় না এবং তাই বাস্তবায়িত বা পরীক্ষিত নয়। README-তে উল্লেখ করা হয়েছে যে childNodes একটি অ্যারে। প্রকল্পটি প্রয়োজনীয় ফিচারের জন্য ইস্যু এবং পুল রিকোয়েস্ট গ্রহণ করে এবং দান ও স্পনসরশিপ লিংক প্রদান করে।
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.