HEIC2ALLHEIC2ALL
और जानें

SVG से ICO रूपांतरण काम नहीं कर रहा? सामान्य कारण (फ़ॉन्ट्स, बाहरी इमेज, ViewBox)

ICO रूपांतरण को खराब करने वाली सबसे आम SVG समस्याओं का निदान और समाधान करें

SVG को ICO में बदलें

SVG, ICO फ़ाइलें बनाने के लिए सबसे अच्छे स्रोत प्रारूपों में से एक है। चूँकि SVG एक वेक्टर प्रारूप है, यह बिना गुणवत्ता खोए किसी भी आकार में स्केल होता है, जो इसे एक अच्छी ICO फ़ाइल के लिए आवश्यक विभिन्न आकार की परतें (16 से 256 पिक्सेल तक) बनाने के लिए आदर्श बनाता है। सिद्धांत रूप में, आप Any2ICO में SVG डालते हैं और तुरंत एक शार्प, मल्टी-साइज़ ICO फ़ाइल प्राप्त करते हैं।

व्यवहार में, SVG फ़ाइलें जटिल हो सकती हैं। SVG विनिर्देश बड़ा और जटिल है, और विभिन्न टूल अलग-अलग धारणाओं के साथ SVG बनाते हैं कि फ़ाइल कैसे रेंडर होगी। एक SVG जो Adobe Illustrator या Figma में बिल्कुल सही दिखती है, वह ब्राउज़र के Canvas API में गलत, आंशिक, या बिल्कुल भी रेंडर नहीं हो सकती — जो ब्राउज़र-आधारित कन्वर्टर्स द्वारा उपयोग किया जाने वाला रेंडरिंग इंजन है। परिणाम एक खाली आइकन, गायब टेक्स्ट वाला आइकन, गलत स्केल पर आइकन, या गायब हिस्सों वाला आइकन हो सकता है।

अच्छी खबर यह है कि ये समस्याएँ अच्छी तरह से समझी गई हैं और समाधान सीधे हैं। यह लेख SVG-से-ICO रूपांतरण विफल होने या अप्रत्याशित परिणाम देने के सबसे सामान्य कारणों को कवर करता है, और प्रत्येक के लिए एक स्पष्ट समाधान प्रदान करता है। यदि आप सफलता का सबसे तेज़ रास्ता चाहते हैं, तो अगले अनुभाग में चेकलिस्ट से शुरू करें।

त्वरित चेकलिस्ट: रूपांतरण से पहले अपनी SVG ठीक करें

विस्तृत विवरणों में जाने से पहले, यहाँ एक त्वरित चेकलिस्ट है जो अधिकांश SVG-से-ICO समस्याओं को हल करती है। पहले इन मदों को जाँचें; यदि आपकी समस्या ठीक हो जाती है, तो आपको आगे पढ़ने की आवश्यकता नहीं है।

1. viewBox एट्रिब्यूट जोड़ें या ठीक करें। अपनी SVG को टेक्स्ट एडिटर में खोलें और रूट <svg> एलिमेंट की जाँच करें। इसमें viewBox एट्रिब्यूट होना चाहिए जैसे viewBox="0 0 100 100" जो कोऑर्डिनेट सिस्टम को परिभाषित करता है। यदि यह गायब है, तो इसे अपने डिज़ाइन के आयामों से मेल खाने वाले मानों के साथ जोड़ें।

2. सभी टेक्स्ट को आउटलाइन (पाथ) में बदलें। अपने वेक्टर एडिटर में सभी टेक्स्ट एलिमेंट्स चुनें और उन्हें आउटलाइन या पाथ में बदलें। Illustrator में, यह Type > Create Outlines है। Figma में, राइट-क्लिक करें और Flatten चुनें। Inkscape में, Path > Object to Path उपयोग करें। यह फ़ॉन्ट निर्भरताओं को पूरी तरह से समाप्त कर देता है।

3. बाहरी संदर्भ हटाएँ या एम्बेड करें। अपनी SVG फ़ाइल में href, xlink:href, और url() संदर्भ खोजें जो बाहरी फ़ाइलों (इमेज, फ़ॉन्ट्स, CSS) की ओर इशारा करते हैं। इन संसाधनों को सीधे SVG में एम्बेड करें या यदि वे आवश्यक नहीं हैं तो उन्हें हटा दें।

4. बाहरी CSS को इनलाइन स्टाइल्स से बदलें। यदि आपकी SVG बाहरी स्टाइलशीट का संदर्भ देती है, तो संबंधित CSS नियमों को सीधे SVG के अंदर <style> ब्लॉक में कॉपी करें, या उन्हें प्रत्येक एलिमेंट पर इनलाइन style एट्रिब्यूट में बदलें।

5. स्पष्ट width और height सेट करें। हालाँकि हमेशा आवश्यक नहीं है, रूट <svg> एलिमेंट में width और height एट्रिब्यूट जोड़ने से Canvas API को सही रेंडरिंग आकार निर्धारित करने में मदद मिलती है। सर्वोत्तम परिणामों के लिए 256 पिक्सेल या अधिक के मान उपयोग करें।

फ़ॉन्ट्स और टेक्स्ट रेंडरिंग

टेक्स्ट SVG रूपांतरण समस्याओं का सबसे बड़ा स्रोत है। जब किसी SVG में <text> एलिमेंट्स होते हैं, तो रेंडरर को टेक्स्ट सही ढंग से प्रदर्शित करने के लिए निर्दिष्ट फ़ॉन्ट तक पहुँच की आवश्यकता होती है। Illustrator या Figma जैसे डिज़ाइन एप्लिकेशन में, फ़ॉन्ट आपके कंप्यूटर पर इंस्टॉल होता है, इसलिए सब कुछ सही दिखता है। लेकिन जब SVG को ICO रूपांतरण के लिए ब्राउज़र के Canvas API में रेंडर किया जाता है, तो स्थिति बहुत अलग होती है।

Canvas API केवल उन फ़ॉन्ट्स का उपयोग कर सकता है जो रेंडर समय पर ब्राउज़र को उपलब्ध हैं। यदि आपकी SVG font-family: "Proxima Nova" निर्दिष्ट करती है और वह फ़ॉन्ट उपयोगकर्ता के सिस्टम पर इंस्टॉल नहीं है या वेब फ़ॉन्ट के माध्यम से लोड नहीं है, तो ब्राउज़र एक डिफ़ॉल्ट फ़ॉन्ट (आमतौर पर एक जेनेरिक sans-serif या serif) से बदल देता है। यह टेक्स्ट की उपस्थिति बदल देता है: अक्षर रिक्ति बदलती है, अक्षर चौड़े या संकरे हो सकते हैं, और समग्र लेआउट टूट सकता है। कुछ मामलों में, यदि SVG उन्नत फ़ॉन्ट सुविधाओं या ligatures का उपयोग करती है जो फ़ॉलबैक फ़ॉन्ट समर्थन नहीं करता, तो टेक्स्ट बिल्कुल भी रेंडर नहीं हो सकता।

विश्वसनीय समाधान है सभी टेक्स्ट को आउटलाइन में बदलना (जिसे "पाथ में बदलना" या "टेक्स्ट फ़्लैटन करना" भी कहते हैं)। यह प्रत्येक टेक्स्ट अक्षर को एक वेक्टर पाथ से बदल देता है जो उसके सटीक आकार का वर्णन करता है। परिणामी SVG अब किसी फ़ॉन्ट का संदर्भ नहीं देती क्योंकि अक्षर आकार ज्यामितीय पाथ के रूप में बनाए जाते हैं। SVG फ़ाइल थोड़ी बड़ी होगी, लेकिन यह किसी भी सिस्टम, किसी भी ब्राउज़र, और किसी भी Canvas API के माध्यम से समान रूप से रेंडर होगी, चाहे कोई भी फ़ॉन्ट इंस्टॉल हों।

Illustrator में: सभी टेक्स्ट चुनें, फिर Type > Create Outlines पर जाएँ। Figma में: टेक्स्ट लेयर्स चुनें, राइट-क्लिक करें, और Flatten चुनें। Inkscape में: टेक्स्ट चुनें, फिर Path > Object to Path उपयोग करें। आउटलाइन में बदलने से पहले हमेशा मूल संपादन योग्य SVG को अलग से सेव करें, क्योंकि आउटलाइन किए गए टेक्स्ट को अब टेक्स्ट के रूप में संपादित नहीं किया जा सकता।

बाहरी इमेज और संदर्भ

SVG फ़ाइलें बाहरी संसाधनों का संदर्भ दे सकती हैं: <image href="/hi/logo.png"> के माध्यम से लोड की गई इमेज, URL के साथ @font-face के माध्यम से लोड किए गए फ़ॉन्ट्स, <?xml-stylesheet?> के माध्यम से लिंक की गई CSS फ़ाइलें, और पैटर्न या ग्रेडिएंट जो अन्य SVG फ़ाइलों का संदर्भ देते हैं। जब SVG को ब्राउज़र-आधारित कन्वर्टर में एक स्वतंत्र फ़ाइल के रूप में खोला जाता है, तो ये बाहरी संदर्भ लगभग हमेशा लोड होने में विफल होते हैं।

Canvas API, SVG को एक सैंडबॉक्स्ड संदर्भ में रेंडर करता है जहाँ सुरक्षा कारणों से क्रॉस-ऑरिजिन अनुरोध अवरुद्ध होते हैं। https://example.com/logo.png की ओर इशारा करने वाला <image> एलिमेंट लोड नहीं होगा क्योंकि ब्राउज़र क्रॉस-ऑरिजिन फ़ेच को ब्लॉक करता है। परिणाम वहाँ एक खाली स्थान होता है जहाँ इमेज होनी चाहिए। यही बात बाहरी रूप से होस्ट किए गए फ़ॉन्ट्स, स्टाइलशीट्स, और URL द्वारा संदर्भित किसी भी संसाधन पर लागू होती है।

href="/hi/logo.png" जैसे सापेक्ष पाथ भी विफल होंगे क्योंकि SVG को Canvas API द्वारा मेमोरी में प्रोसेस किया जा रहा है, न कि किसी डायरेक्टरी से सर्व किया जा रहा है जहाँ सापेक्ष पाथ हल हो सकें। SVG के लिए संदर्भित करने हेतु कोई फ़ाइल सिस्टम संदर्भ नहीं है।

समाधान है सभी बाहरी संसाधनों को सीधे SVG में एम्बेड करना। इमेज के लिए, उन्हें base64 डेटा URI में बदलें: <image href="data:image/png;base64,iVBOR...">। फ़ॉन्ट्स के लिए, SVG के अंदर <style> ब्लॉक में base64-एन्कोडेड @font-face डिक्लेरेशन उपयोग करें (हालाँकि टेक्स्ट को आउटलाइन में बदलना आमतौर पर सरल और अधिक विश्वसनीय है)। CSS के लिए, सभी नियमों को <svg> टैग के अंदर इनलाइन <style> एलिमेंट में कॉपी करें।

ViewBox, Width और Height समस्याएँ

viewBox एट्रिब्यूट SVG के कोऑर्डिनेट सिस्टम को परिभाषित करता है। यह रेंडरर को बताता है कि अनंत SVG कैनवास के किस हिस्से को प्रदर्शित करना है और सामग्री को कैसे स्केल करना है। जब viewBox गायब या गलत होता है, तो परिणाम खाली आउटपुट से लेकर ऐसा आइकन जो डिज़ाइन का केवल एक कोना दिखाता है या गलत पक्षानुपात पर रेंडर करता है, तक हो सकते हैं।

गायब viewBox: यदि SVG में width और height है लेकिन viewBox नहीं, तो कुछ रेंडरर आयामों से viewBox का अनुमान लगा लेंगे, लेकिन Canvas API ऐसा नहीं कर सकता। सबसे सुरक्षित तरीका है हमेशा एक स्पष्ट viewBox शामिल करना। यदि आपकी SVG 100x100 यूनिट पर डिज़ाइन की गई है, तो रूट एलिमेंट में viewBox="0 0 100 100" जोड़ें।

viewBox सामग्री से मेल नहीं खाता: यदि viewBox कोऑर्डिनेट SVG की सभी सामग्री को शामिल नहीं करते, तो डिज़ाइन के कुछ हिस्से कट जाएँगे। उदाहरण के लिए, यदि आपके आइकन में x=120 तक फैले एलिमेंट हैं लेकिन viewBox केवल 0 से 100 तक कवर करता है, तो सबसे दाएँ 20 यूनिट अदृश्य हैं। SVG को टेक्स्ट एडिटर में खोलें, viewBox मानों की जाँच करें, और उन्हें सभी दृश्य एलिमेंट्स को शामिल करने के लिए समायोजित करें।

Width/height शून्य या बहुत छोटे मान पर सेट: कुछ SVG एक्सपोर्ट टूल width और height को 1px या 0 जैसे बहुत छोटे मान पर सेट करते हैं, वेब पेज पर प्रदर्शित होने पर SVG को स्केल करने के लिए CSS पर निर्भर करते हैं। जब Canvas API इन आयामों को पढ़ता है, तो यह SVG को 1x1 पिक्सेल पर रेंडर कर सकता है और फिर स्केल अप कर सकता है, जिससे पूरी तरह खाली या बहुत धुंधला परिणाम मिलता है। Canvas API को उचित रेंडरिंग आकार देने के लिए width और height कम से कम 256 पिक्सेल सेट करें।

प्रतिशत-आधारित आयाम: width="100%" height="100%" वाली SVG का कोई आंतरिक आकार नहीं होता। Canvas API को रेंडरिंग सतह बनाने के लिए निरपेक्ष पिक्सेल मानों की आवश्यकता होती है। प्रतिशत आयामों को width="512" height="512" जैसे निरपेक्ष मानों से बदलें।

SVG समस्या संदर्भ तालिका

सबसे आम SVG-से-ICO रूपांतरण समस्याओं को जल्दी पहचानने और ठीक करने के लिए इस तालिका का उपयोग करें।

लक्षणसंभावित कारणसमाधान
खाली या रिक्त आइकनगायब viewBox या शून्य width/heightviewBox जोड़ें और width/height 256+ सेट करें
टेक्स्ट गलत दिखता है या गायब हैCanvas API को फ़ॉन्ट उपलब्ध नहींसभी टेक्स्ट को आउटलाइन/पाथ में बदलें
इमेज एलिमेंट गायबCORS द्वारा बाहरी इमेज href अवरुद्धइमेज को base64 डेटा URI के रूप में एम्बेड करें
आइकन का केवल एक हिस्सा दिखता हैसामग्री के लिए viewBox बहुत छोटासभी एलिमेंट्स को शामिल करने के लिए viewBox बड़ा करें
आइकन बहुत छोटा रेंडर होता हैWidth/height 1px या प्रतिशत पर सेटस्पष्ट width/height (256px+) सेट करें
स्टाइल्स लागू नहीं हुएबाहरी CSS स्टाइलशीट लोड नहीं हुईSVG फ़ाइल में सभी CSS इनलाइन करें
ग्रेडिएंट या पैटर्न गायबबाहरी SVG संदर्भ हल नहीं हुएग्रेडिएंट/पैटर्न डेफ़िनिशन इनलाइन एम्बेड करें
गलत पक्षानुपातviewBox अनुपात डिज़ाइन से मेल नहीं खातेवास्तविक आयामों से मेल खाने के लिए viewBox सही करें

SVG फ़ाइलों को रूपांतरित करने के लिए एक व्यापक गाइड के लिए, जिसमें ऑप्टिमाइज़ेशन टिप्स और सर्वोत्तम प्रथाएँ शामिल हैं, हमारी SVG से ICO रूपांतरण गाइड पढ़ें। विशेष रूप से फ़ेविकॉन बनाने के लिए, फ़ेविकॉन ICO कैसे बनाएँ देखें।