इस प्रोजेक्ट के बारे में

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 एक विंडो लौटाता है जिसमें एक document और एक SVG रूट नोड होता है। विंडो और document को रजिस्टर करने के बाद, आप document.documentElement से एक कैनवास बनाते हैं और SVG.js का सामान्य रूप से उपयोग करते हैं, उदाहरण के लिए एक आयत बनाना, उसे भरना, उसे स्थानांतरित करना, और फिर SVG को स्ट्रिंग के रूप में या outerHTML के माध्यम से आउटपुट करना। SVG के अलावा, svgdom createHTMLWindow के साथ एक HTML विंडो, या createWindow के साथ एक सामान्य XML विंडो बना सकता है, जिसमें एक नेमस्पेस URI और रूट नोड पास किया जाता है, जैसे MathML। Node.js 22.13 या नए संस्करण पर, svgdom को सीधे require के साथ CommonJS मॉड्यूल के रूप में लोड किया जा सकता है। प्रोजेक्ट जानबूझकर किए गए DOM विचलनों का दस्तावेज़ीकरण करता है। यह पूर्ण ब्राउज़र DOM अनुरूपता की तुलना में हेडलेस SVG उपयोग के लिए एक छोटे, सुविधाजनक API को प्राथमिकता देता है। document.createElement document नेमस्पेस को इनहेरिट करता है, इसलिए createSVGDocument().createElement('rect') SVG नेमस्पेस में एक SVGRectElement बनाता है, जो ब्राउज़र XML DOM के विपरीत है जहाँ createElement बिना नेमस्पेस के एक एलिमेंट बनाता है और createElementNS आवश्यक होता है। HTML व्यवहार document नेमस्पेस से अनुमानित होता है: XHTML नेमस्पेस वाले document को HTML नाम केसिंग, केस-असंवेदनशील HTML टाइप सेलेक्टर, HTML void-एलिमेंट सीरियलाइज़ेशन, और CDATA पर HTML प्रतिबंध प्राप्त होते हैं। 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 एक array है। प्रोजेक्ट आवश्यक सुविधाओं के लिए issues और pull requests स्वीकार करता है और दान तथा प्रायोजन लिंक प्रदान करता है।