अवलोकन
एम्बेडेड डिवाइस पर फ़ॉन्ट आपके कंप्यूटर के फ़ॉन्ट जैसे नहीं काम करते। यह गाइड बताती है कि ऐसा क्यों है, फिर PicoPixel में फ़ॉन्ट बनाने की पूरी प्रक्रिया समझाती है — बंडल किए गए फ़ॉन्ट चुनने या अपना फ़ॉन्ट अपलोड करने से लेकर, अरबी और हिब्रू जैसी दाएं से बाएं लिखी जाने वाली भाषाओं को संभालने तक, और चीनी, जापानी और कोरियाई के लिए उपयोग होने वाले बड़े फ़ॉन्ट को नियंत्रित करने तक। अंत में, हम एक उपयोगी क्लीनअप फ़ीचर के बारे में बात करेंगे जब आपने बहुत प्रयोग किए हों।
फ़ॉन्ट को कन्वर्ट करने की ज़रूरत क्यों पड़ती है?
आपके लैपटॉप पर, एक फ़ॉन्ट फ़ाइल (जैसे .ttf या .otf) हर अक्षर को गणितीय वक्रों के एक समूह के रूप में वर्णित करती है। आपके कंप्यूटर में इन वक्रों को किसी भी आकार में आसानी से खींचने की पर्याप्त शक्ति और मेमोरी होती है।
एक छोटा डिवाइस (ESP32, स्मार्टवॉच चिप, एक छोटा डिस्प्ले कंट्रोलर) आमतौर पर ऐसा नहीं कर सकता। उसके पास वक्रों को तुरंत फिर से खींचने की मेमोरी या प्रोसेसिंग पावर नहीं होती। इसलिए LVGL एक अलग दृष्टिकोण अपनाता है: वक्रों की बजाय, यह हर अक्षर को एक निश्चित आकार में एक छोटी पूर्व-खींची गई छवि (बिटमैप) के रूप में संग्रहीत करता है। डिवाइस के लिए यह बहुत हल्का होता है।
PicoPixel यह कन्वर्जन आपके लिए करता है। जब आप कोई फ़ॉन्ट बनाते हैं, तो हम मूल फ़ॉन्ट फ़ाइल लेते हैं और उसे LVGL की ज़रूरत के बिटमैप फॉर्मेट में बदलते हैं — सिर्फ वही अक्षर चुनते हैं जो आप चाहते हैं, उन्हीं आकारों में जो आप चाहते हैं।
क्योंकि हर अक्षर एक निश्चित आकार में पूर्व-खींचा जाता है, एक कन्वर्ट किया गया LVGL फ़ॉन्ट उसी आकार तक सीमित होता है जो आपने चुना। 16px फ़ॉन्ट को 32px तक खींचा नहीं जा सकता और वह साफ भी नहीं दिखेगा। अगर आपको दो अलग-अलग आकारों में टेक्स्ट चाहिए, तो दोनों आकारों में फ़ॉन्ट बनाएं (नीचे फ़ॉन्ट बनाना देखें, जहाँ आप एक साथ कई आकार चुन सकते हैं)।
यही कारण है कि फ़ॉन्ट का डिवाइस पर एक वास्तविक मूल्य होता है: हर अक्षर, हर आकार में, थोड़ी मेमोरी लेता है। इस गाइड का अधिकांश भाग उस मूल्य को कम रखने के बारे में है — केवल उन्हीं वर्णों और आकारों को शामिल करके जिनका आप वास्तव में उपयोग करते हैं।
बंडल किए गए फ़ॉन्ट और आपके खुद के फ़ॉन्ट
जब आप कोई फ़ॉन्ट बनाते हैं, तो आपके पास दो शुरुआती बिंदु होते हैं:
- बंडल किए गए — उपयोग के लिए तैयार लोकप्रिय, अच्छी तरह परखे गए फ़ॉन्ट का एक क्यूरेटेड सेट: Noto Sans, Roboto, Open Sans, Montserrat, Poppins, Inter, Lato, Nunito, Source Sans 3, और अन्य। ये एक सुरक्षित विकल्प हैं और एक अच्छा डिफ़ॉल्ट।
- अपलोड करें — अपनी खुद की
.ttfया.otfफ़ाइल लाएं। इसका उपयोग तब करें जब आपके पास कोई विशिष्ट ब्रांड फ़ॉन्ट हो या कोई ऐसा फ़ॉन्ट हो जो ऐसी भाषा को कवर करे जो बंडल किए गए फ़ॉन्ट नहीं करते।
अगर आप अपना फ़ॉन्ट अपलोड करते हैं, तो "वेरिएबल" फ़ॉन्ट फ़ाइल (जैसे Roboto-VariableFont.ttf) की बजाय एक स्टैटिक फ़ॉन्ट फ़ाइल (उदाहरण के लिए Roboto-Regular.ttf) का उपयोग करें। स्टैटिक फ़ाइलें बहुत अधिक विश्वसनीय रूप से कन्वर्ट होती हैं। सादी .ttf फ़ाइलें सबसे अच्छी तरह काम करती हैं।
जो भी आप चुनें, एक लाइव प्रिव्यू है जिससे आप अपना टेक्स्ट टाइप करके देख सकते हैं कि इसे बनाने से पहले यह कैसा दिखेगा।
फ़ॉन्ट बनाना
फ़ॉन्ट बनाएं पैनल खोलें और आपको एक छोटा फॉर्म दिखेगा। यहाँ बताया गया है कि हर भाग क्या करता है:
- अपना फ़ॉन्ट चुनें — एक बंडल फ़ॉन्ट (और उसकी वेट, जैसे Regular या Bold) चुनें, या Upload टैब पर जाएं और अपनी फ़ाइल चुनें।
- फ़ॉन्ट का नाम — वह नाम जो आप अपने प्रोजेक्ट की फ़ॉन्ट सूची में देखेंगे। कुछ यादगार नाम दें, खासकर अगर आपके पास कई फ़ॉन्ट होंगे।
- आकार (px) — फ़ॉन्ट का पिक्सेल आकार। आप एक साथ एक से अधिक आकार चुन सकते हैं (16, 22, और 32 जैसे उपयोगी प्रीसेट एक टैप पर उपलब्ध हैं)। याद रखें कि हर आकार अलग से जेनरेट होता है, इसलिए केवल वही चुनें जो आप वास्तव में उपयोग करेंगे।
- अक्षर — कौन से वर्ण शामिल करने हैं: Standard (बुनियादी अंग्रेजी), Latin, Greek, Cyrillic, Hebrew, Arabic, Thai, और कई और। इस तरह आप PicoPixel को बताते हैं कि आपको किस भाषा के अक्षर चाहिए।
- एशियाई — चीनी, जापानी और कोरियाई के लिए एक अलग विकल्प। इन्हें विशेष प्रबंधन की ज़रूरत है, जो नीचे अपने स्वयं के अनुभाग में शामिल है।
फ़ाइन-ट्यूनिंग के लिए एक Advanced क्षेत्र भी है, जिसमें Bits per Pixel (हर अक्षर कितने ग्रे के शेड्स का उपयोग करता है; अधिक होने पर चिकना दिखता है लेकिन अधिक जगह लेता है; 4 एक अच्छा डिफ़ॉल्ट है) और सटीक वर्ण रेंज या प्रतीक हाथ से निर्दिष्ट करने के फ़ील्ड शामिल हैं। अधिकांश लोगों को इन्हें कभी छूने की ज़रूरत नहीं पड़ती।
हर फ़ॉन्ट में हर भाषा नहीं होती। अगर आप कोई गैर-लैटिन स्क्रिप्ट चुनते हैं और आपके प्रिव्यू में अक्षरों की बजाय खाली बॉक्स दिखते हैं, तो वह फ़ॉन्ट उसे सपोर्ट नहीं करता — उस स्क्रिप्ट के लिए डिज़ाइन किए गए बंडल फ़ॉन्ट पर जाएं, या कोई ऐसा अपलोड करें जो करता हो। PicoPixel आपको तब चेतावनी देगा जब आप ऐसी स्क्रिप्ट चुनते हैं जो सभी फ़ॉन्ट सपोर्ट नहीं करते।
दाएं से बाएं स्क्रिप्ट: अरबी और हिब्रू
अरबी और हिब्रू जैसी भाषाएं दाएं से बाएं पढ़ी जाती हैं, और उनके अक्षरों को विशेष प्रबंधन की ज़रूरत होती है। अच्छी खबर यह है कि आप इसे Create Font पैनल में ही सेट करते हैं — हाथ से कुछ भी कॉन्फ़िगर नहीं करना पड़ता।
- अक्षर ड्रॉपडाउन में Arabic या Hebrew चुनें। यह महत्वपूर्ण कदम है: यह PicoPixel को उस स्क्रिप्ट के लिए सही वर्ण सेट शामिल करने के लिए कहता है (बुनियादी अंग्रेजी अक्षर भी साथ आते हैं, इसलिए संख्याएं और लैटिन टेक्स्ट अभी भी काम करते हैं)।
- PicoPixel उस स्क्रिप्ट के लिए बना फ़ॉन्ट सुझाएगा, उदाहरण के लिए Noto Sans Arabic। सुझाव (या किसी अन्य स्क्रिप्ट-अवेयर फ़ॉन्ट) का उपयोग करें न कि किसी सादे लैटिन फ़ॉन्ट का, जिसमें वे अक्षर नहीं होंगे।
- लाइव प्रिव्यू जांचें। अगर अक्षर वहाँ सही दिखते हैं, तो आप तैयार हैं। अगर आपको बॉक्स दिखते हैं, तो चुना गया फ़ॉन्ट स्क्रिप्ट को सपोर्ट नहीं करता — कोई दूसरा चुनें।
अरबी अक्षर शब्द में अपनी स्थिति के आधार पर आकार बदलते हैं, और पूरी लाइन दाएं से बाएं बहती है। जब आप अपना प्रोजेक्ट एक्सपोर्ट करते हैं, तो PicoPixel स्वचालित रूप से पता लगाता है कि आपने अरबी, फ़ारसी, या हिब्रू टेक्स्ट का उपयोग किया है और कनेक्टेड अक्षर आकारों के लिए मिलान LVGL सेटिंग चालू करता है — इसलिए आपको डिवाइस पर इसे सही दिखाने के लिए कॉन्फ़िगरेशन फ़ाइलों में खोजबीन नहीं करनी पड़ती।
याद रखने वाली मुख्य बात: फ़ॉन्ट बनाते समय अक्षर ड्रॉपडाउन में Arabic या Hebrew चुनना ही वह है जो उन वर्णों को शामिल करता है। अगर आप पहले एक सादा फ़ॉन्ट बनाते हैं और बाद में दाएं से बाएं टेक्स्ट जोड़ते हैं, तो अक्षर वहाँ नहीं होंगे — शुरुआत से ही सही स्क्रिप्ट चुनकर फ़ॉन्ट बनाएं।
चीनी, जापानी और कोरियाई
CJK चीनी, जापानी और कोरियाई का सामान्य संक्षिप्त रूप है। ये भाषाएं विशेष हैं क्योंकि इनमें बहुत वर्ण होते हैं — कोरियाई में लगभग 11,000 और चीनी में 20,000 से अधिक। याद रखें कि हर वर्ण पूर्व-खींचा जाता है और डिवाइस पर संग्रहीत होता है। पूरा CJK फ़ॉन्ट शामिल करने से मेगाबाइट जुड़ सकते हैं, जो अधिकांश एम्बेडेड डिवाइस पर फिट नहीं होंगे।
समाधान यह है कि केवल वही वर्ण शामिल किए जाएं जिनका आप वास्तव में उपयोग करते हैं। एक सामान्य इंटरफ़ेस में शायद केवल सौ या उससे कम अलग-अलग वर्ण दिखते हैं, और तुलनात्मक रूप से यह बहुत कम है।
इसे इस तरह करें:
- Asian ड्रॉपडाउन में Korean, Chinese, या Japanese चुनें।
- Symbols फ़ील्ड (Advanced क्षेत्र में) खोजें और अपने इंटरफ़ेस द्वारा प्रदर्शित होने वाला वास्तविक टेक्स्ट पेस्ट करें — हर लेबल, बटन और संदेश। PicoPixel केवल वहाँ मिले प्रत्येक वर्ण के लिए एक ग्लिफ़ शामिल करता है।
- शुरुआत में मदद के लिए, PicoPixel इस फ़ील्ड को आपके चुने हुए भाषा में सामान्य इंटरफ़ेस शब्दों (जैसे "सेटिंग्स", "पुष्टि करें", "रद्द करें" आदि) से पहले से भर देता है। इसमें अपना टेक्स्ट जोड़ें।
इस तरह, एक फ़ॉन्ट जो कई मेगाबाइट का हो सकता था, वह कुछ सौ किलोबाइट पर आ जाता है।
केवल वही वर्ण शामिल होते हैं जो आप Symbols में सूचीबद्ध करते हैं। अगर आपका इंटरफ़ेस बाद में कोई ऐसा वर्ण दिखाता है जो आपने नहीं जोड़ा, तो वह एक खाली बॉक्स के रूप में दिखेगा। जब आपका टेक्स्ट बदले, तो वापस आएं और Symbols फ़ील्ड अपडेट करें, फिर फ़ॉन्ट फिर से बनाएं।
CJK के लिए, जिस विशिष्ट फ़ॉन्ट को आप चाहते हैं उसे अपलोड करना (सामान्य फ़ॉन्ट पर निर्भर रहने की बजाय) आपको सबसे अधिक नियंत्रण देता है, और अपने इंटरफ़ेस टेक्स्ट की पूरी, अंतिम प्रति पेस्ट करने से कुछ भी छूटता नहीं है।
क्लीनअप: अप्रयुक्त फ़ॉन्ट हटाएं
फ़ॉन्ट जगह लेते हैं, और ऐसे फ़ॉन्ट इकट्ठा करना आसान है जिनकी आपको अब ज़रूरत नहीं है — खासकर जब आप प्रयोग कर रहे हों। उदाहरण के लिए, आप शायद निश्चित न हों कि 16px या 22px बेहतर दिखता है, इसलिए आप दोनों बनाते हैं और आज़माते हैं। एक बार फ़ैसला करने के बाद, दूसरा केवल बेकार भार है।
PicoPixel इसे आसान बनाता है। आपकी assets के Fonts क्षेत्र में Delete Unused Fonts बटन है। यह आपके प्रोजेक्ट में हर विजेट को स्कैन करता है, उन फ़ॉन्ट को खोजता है जिनका कुछ भी वास्तव में उपयोग नहीं कर रहा है, और उन्हें एक क्लिक में हटा देता है — ताकि आप बचे हुए फ़ॉन्ट साफ कर सकें और जिन फ़ॉन्ट की आपको ज़रूरत है उनके लिए जगह बना सकें।
आकारों के साथ प्रयोग करने का यह आसान तरीका है। कुछ आकार बनाएं, देखें कि आपके डिज़ाइन पर कौन सा सही दिखता है, फिर बाकी को साफ करने के लिए Delete Unused Fonts दबाएं। सूची में हर फ़ॉन्ट अपना आकार और गुणवत्ता सेटिंग दिखाता है, इसलिए एक नज़र में देखना आसान है कि आपके पास क्या है।
"Delete Unused Fonts" केवल उन फ़ॉन्ट को हटाता है जिन्हें कोई विजेट संदर्भित नहीं करता, इसलिए आपका डिज़ाइन नहीं बदलेगा। आप सूची में राइट-क्लिक करके एक फ़ॉन्ट को स्वयं भी हटा सकते हैं। अगर आपने गलती से कुछ हटा दिया, तो Undo इसे तुरंत वापस लाता है।