परिचय
इस मुफ्त LVGL फ़ॉन्ट टेम्पलेट में देखें कि एक ही इंटरफ़ेस में कई भाषाओं का टेक्स्ट कैसे दिखाया जाता है। PicoPixel के इस प्रोजेक्ट में 480 x 480 की स्क्रीन पर LVGL के लिए तैयार किए गए फ़ॉन्ट, अलग-अलग लिपियाँ, आकार और रंग साथ इस्तेमाल हुए हैं।
टेम्पलेट में सिरिलिक, चीनी, जापानी, यूनानी, अरबी, कोरियाई, हिब्रू, थाई और बांग्ला के उदाहरण हैं। जब ESP32 डैशबोर्ड, सेटिंग स्क्रीन, कियोस्क, पहनने वाले उपकरण के मेन्यू या स्मार्ट उपकरण के इंटरफ़ेस में अंग्रेज़ी के अलावा दूसरी भाषाएँ दिखानी हों, तो इससे शुरुआत कर सकते हैं।
ध्यान रखने वाली मुख्य बात यह है कि LVGL फ़ॉन्ट, डेस्कटॉप के वेब फ़ॉन्ट की तरह काम नहीं करते। LVGL के लिए तैयार किए गए फ़ॉन्ट में केवल चुने हुए अक्षर-रूप (ग्लिफ़) और आकार शामिल होते हैं। चीनी, जापानी और कोरियाई के लिए आम तौर पर केवल वे अक्षर शामिल करने चाहिए जो UI में दिखेंगे। कोई आवश्यक अक्षर छूट जाए, तो उसकी जगह खाली चौकोर डिब्बा दिख सकता है। पूरी प्रक्रिया के लिए PicoPixel में LVGL फ़ॉन्ट इस्तेमाल करने की गाइड पढ़ें।
क्या शामिल है
- 480 x 480 की बहुभाषी स्क्रीन, जिस पर फ़ॉन्ट जाँचना आसान है।
- टेक्स्ट के नौ उदाहरण: सिरिलिक, चीनी, जापानी, यूनानी, अरबी, कोरियाई, हिब्रू, थाई और बांग्ला।
- लिपि के अनुसार नाम वाली लेयर, जिनसे पता चलता है कि कौन-सा टेक्स्ट किस भाषा का है।
- LVGL के लिए तैयार दस फ़ॉन्ट एसेट, जो अलग-अलग फ़ॉन्ट परिवारों और आकारों का इस्तेमाल दिखाते हैं।
- चित्रों पर कोई निर्भरता नहीं: यहाँ टेक्स्ट असली लेबल से बनता है, बिटमैप स्क्रीनशॉट से नहीं।
- छोटे-बड़े फ़ॉन्ट आकार, जिनमें साधारण लेबल और प्रमुख टेक्स्ट शामिल हैं।
- अलग-अलग रंग, ताकि गहरी पृष्ठभूमि पर हर लिपि को आसानी से देख सकें।
- कैनवास पर फ़ॉन्ट संबंधी दो निर्देश: ऐसा फ़ॉन्ट चुनें जो आपकी भाषा को सपोर्ट करे और वे सभी अक्षर शामिल करें जो UI में इस्तेमाल होंगे।
- Create Font पैनल का उदाहरण, जिसमें उपलब्ध फ़ॉन्ट, अपलोड, आकार के प्रीसेट,
Letters,Asianऔर उन्नत विकल्प दिखते हैं।
प्रोजेक्ट के एसेट
Assets पैनल में इस फ़ॉन्ट-केंद्रित प्रोजेक्ट के संसाधन दिखते हैं:
- Images:
0— प्रीव्यू का टेक्स्ट संपादन योग्य ऑब्जेक्ट से बना है। - Colors:
0— रंग सीधे लेबल पर लगाए गए हैं। - Fonts:
10— कई लिपियों, आकारों और फ़ॉन्ट परिवारों के उदाहरण के लिए। - Widgets:
0— उदाहरण टेक्स्ट और फ़ॉन्ट एसेट पर केंद्रित है।
सूची में ये फ़ॉन्ट दिखाई देते हैं:
Gothic A1 48M PLUS 1p 60Noto Sans Arabic 32Noto Sans Bengali 32Noto Sans Cyrillic 48Noto Sans SC 32Noto Sans Thai Bold 32Open Sans Greek 48Open Sans Hebrew 48
फ़ॉन्ट की सूची स्क्रॉल की जा सकती है, इसलिए प्रोजेक्ट में स्क्रीनशॉट में दिख रहे फ़ॉन्ट से एक अधिक फ़ॉन्ट है। मुख्य बात यह है कि हर लिपि के लिए ऐसा फ़ॉन्ट चुना गया है जिसमें उसके आवश्यक अक्षर मौजूद हैं।
लेयर की संरचना
लेयर पैनल भाषा-सूची की तरह व्यवस्थित है। Screen 1 के नीचे हर लेबल का नाम उस लिपि या भाषा के अनुसार रखा गया है जिसे वह दिखाता है:
Cyrillic - RUChineseJapaneseGreekArabicKoreanHebrewThai-naBengali
इस व्यवस्था से प्रोजेक्ट को संदर्भ की तरह इस्तेमाल करना आसान है। कोई भाषा सही दिख रही हो, तो उसका लेबल, फ़ॉन्ट, आकार, रंग और टेक्स्ट देखें। फिर वही तरीका अपने PicoPixel प्रोजेक्ट में अपनाएँ।
CJK फ़ॉन्ट और गायब अक्षर
चीनी, जापानी और कोरियाई (CJK) के अक्षर-समूह बहुत बड़े होते हैं, इसलिए LVGL में इनके फ़ॉन्ट बनाते समय विशेष ध्यान देना पड़ता है। सभी संभव अक्षर शामिल करने से प्रोजेक्ट का आकार कई मेगाबाइट बढ़ सकता है, जो छोटे उपकरणों के लिए अक्सर बहुत अधिक होता है।
CJK टेक्स्ट के लिए PicoPixel के Create Font पैनल में Asian विकल्प चुनें। फिर Symbols फ़ील्ड में ठीक वे अक्षर जोड़ें जो इंटरफ़ेस में दिखाई देंगे। सभी लेबल, बटन, मेन्यू विकल्प, चेतावनियाँ, इकाइयाँ और स्थिति संदेश ध्यान में रखें।
बाद में UI में कोई ऐसा चीनी, जापानी या कोरियाई अक्षर दिखाना पड़ा जिसे फ़ॉन्ट बनाते समय शामिल नहीं किया गया था, तो LVGL उसकी जगह खाली चौकोर डिब्बा दिखा सकता है। अनुवाद बदलने पर Symbols फ़ील्ड अपडेट करके फ़ॉन्ट दोबारा बनाएँ।
विस्तृत निर्देश फ़ॉन्ट इस्तेमाल करने की गाइड में हैं, खासकर चीनी, जापानी और कोरियाई वाले भाग में।
हर लिपि के लिए सही फ़ॉन्ट चुनना
हर फ़ॉन्ट में हर भाषा के अक्षर नहीं होते। कोई लैटिन फ़ॉन्ट अंग्रेज़ी के लिए अच्छा दिख सकता है, लेकिन उसमें अरबी, हिब्रू, थाई, कोरियाई, जापानी या चीनी अक्षर नहीं भी हो सकते हैं। इस टेम्पलेट में हर लिपि के लिए उसे सपोर्ट करने वाला फ़ॉन्ट चुना गया है।
- सरलीकृत चीनी के लिए
Noto Sans SCया CJK अक्षरों वाला कोई दूसरा फ़ॉन्ट चुनें। - जापानी के लिए जापानी अक्षरों वाला फ़ॉन्ट चुनें।
- कोरियाई के लिए Gothic A1 या हंगुल अक्षरों वाला कोई अन्य फ़ॉन्ट चुनें।
- अरबी लिपि के लिए
Noto Sans Arabicचुनें। - हिब्रू के लिए
Open Sans Hebrewया हिब्रू अक्षरों वाला कोई अन्य फ़ॉन्ट चुनें। - यूनानी के लिए यूनानी अक्षरों वाला फ़ॉन्ट चुनें।
- रूसी और दूसरी सिरिलिक लिपि वाली भाषाओं के लिए सिरिलिक अक्षरों वाला फ़ॉन्ट चुनें।
- थाई और बांग्ला लेबल के लिए उन लिपियों के अक्षरों वाले फ़ॉन्ट चुनें।
Create Font पैनल का Letters विकल्प यूनानी, सिरिलिक, हिब्रू, अरबी और थाई जैसी गैर-CJK लिपियों के अक्षर चुनने के लिए है। Asian विकल्प अलग है क्योंकि CJK अक्षर-समूह बहुत बड़े होते हैं।
फ़ॉन्ट बनाने से पहले प्रीव्यू फ़ील्ड में वही टेक्स्ट पेस्ट करें जो UI में दिखाना है। अगर अक्षरों की जगह डिब्बे दिखें, तो एक्सपोर्ट से पहले उस भाषा को सपोर्ट करने वाला दूसरा फ़ॉन्ट चुनें।
LVGL के लिए यह तरीका क्यों उपयोगी है
यह टेम्पलेट दिखाता है कि एम्बेडेड हार्डवेयर पर LVGL फ़ॉन्ट वास्तव में कैसे काम करते हैं।
- LVGL फ़ॉन्ट रूपांतरित बिटमैप एसेट होते हैं, इसलिए हर चुना हुआ आकार अलग तैयार किया जाता है।
- केवल चुने हुए अक्षर शामिल होते हैं, जिससे फ़र्मवेयर का आकार सीमित रखा जा सकता है।
- लिपि के अनुसार फ़ॉन्ट चुनने से गायब अक्षरों की समस्या घटती है, खासकर गैर-लैटिन भाषाओं में।
- कई आकार साथ इस्तेमाल कर सकते हैं, ताकि शीर्षक, सामान्य लेबल और छोटे विवरण का अपना उपयुक्त फ़ॉन्ट हो।
- लेबल संपादन योग्य रहते हैं, इसलिए एक्सपोर्ट से पहले नमूना टेक्स्ट की जगह अपने अनुवाद रख सकते हैं।
- प्रोजेक्ट मानक LVGL 8.x UI कोड में एक्सपोर्ट होता है, जिसमें लेबल के लिए आवश्यक फ़ॉन्ट एसेट भी शामिल हैं।
रनटाइम पर टेक्स्ट और फ़ॉन्ट बदलना
एक्सपोर्ट के बाद भी फ़र्मवेयर से लेबल अपडेट कर सकते हैं। बनाए गए कोड में नाम, PicoPixel के ऑब्जेक्ट और फ़ॉन्ट के नामों पर निर्भर करते हैं। LVGL में सामान्य तरीका यह है:
lv_label_set_text(ui_status_label, "Settings");
lv_obj_set_style_text_font(ui_status_label, &ui_font_noto_sans_32, 0);अनुवादित टेक्स्ट के लिए सुनिश्चित करें कि lv_label_set_text को दिए जा सकने वाले सभी अक्षर एक्सपोर्ट किए गए फ़ॉन्ट में मौजूद हों। CJK टेक्स्ट और बदलते हुए स्थिति संदेशों के लिए यह विशेष रूप से ज़रूरी है, क्योंकि वे सभी संदेश शुरुआती डिज़ाइन में नहीं दिखते।
अपनी ज़रूरत के अनुसार बदलें
इस मुफ्त LVGL फ़ॉन्ट टेम्पलेट को अपने उत्पाद के टेक्स्ट के अनुसार ढालें।
- नमूना अभिवादन की जगह इंटरफ़ेस के असली अनुवादित लेबल रखें।
- हर ज़रूरी लिपि और आकार के लिए फ़ॉन्ट बनाएँ।
- फ़र्मवेयर छोटा रखने के लिए एक्सपोर्ट से पहले बिना इस्तेमाल वाले फ़ॉन्ट आकार हटा दें।
- एक ही टेक्स्ट लेआउट पर अलग-अलग फ़ॉन्ट आज़माकर तुलना करें।
- अरबी, फ़ारसी, हिब्रू या दूसरी दाएँ से बाएँ लिखी जाने वाली भाषाओं के लेबल जोड़ें।
- भाषा चुनने, सेटिंग, शुरुआती परिचय या चेतावनी के लिए अलग अनुवादित स्क्रीन बनाएँ।
- प्रयोग पूरा होने के बाद
Delete Unused Fontsइस्तेमाल करें, ताकि केवल इस्तेमाल हो रहे फ़ॉन्ट बचे रहें।
अपने प्रोजेक्ट में एक्सपोर्ट करना
टेम्पलेट को PicoPixel में खोलें, फ़ॉन्ट एसेट देखें और नमूना लेबल की जगह अपना टेक्स्ट रखें। जो फ़ॉन्ट उपलब्ध नहीं हैं, उन्हें एक्सपोर्ट से पहले बनाएँ। चीनी, जापानी या कोरियाई के लिए फ़ॉन्ट बनाते समय UI के सभी आवश्यक अक्षर Symbols फ़ील्ड में डालें।
ESP32 प्रोजेक्ट के लिए सामान्य क्रम यह है:
- तय करें कि UI में कौन-कौन सी भाषाएँ होंगी।
- हर लिपि और आकार के लिए उपयुक्त LVGL फ़ॉन्ट बनाएँ।
- चीनी, जापानी और कोरियाई के लिए UI में दिखने वाले सभी आवश्यक अक्षर शामिल करें।
- टेम्पलेट के नमूना लेबल की जगह अपना असली UI टेक्स्ट रखें।
- PicoPixel UI को LVGL C में एक्सपोर्ट करें।
- एक्सपोर्ट की गई UI और फ़ॉन्ट फ़ाइलें अपने ESP-IDF, Arduino या PlatformIO प्रोजेक्ट में जोड़ें।
- LVGL और डिस्प्ले ड्राइवर तैयार होने के बाद
ui_init()कॉल करें।
फ़ॉन्ट बनाने की पूरी प्रक्रिया के लिए फ़ॉन्ट इस्तेमाल करने की गाइड पढ़ें। टेम्पलेट इम्पोर्ट करके खोलने के लिए PicoPixel टेम्पलेट इस्तेमाल करने की गाइड देखें।
कहाँ इस्तेमाल करें
यह टेम्पलेट इन कामों की शुरुआत के लिए उपयोगी है:
- LVGL में कई भाषाओं का टेक्स्ट दिखाना
- चीनी, जापानी और कोरियाई के CJK फ़ॉन्ट तैयार करना
- ESP32 पर अनुवादित UI का प्रोटोटाइप बनाना
- फ़ॉन्ट रूपांतरण जाँचना
- गायब अक्षरों की समस्या ढूँढना
- दाएँ से बाएँ टेक्स्ट और गैर-लैटिन लिपियाँ जाँचना
- कई भाषाओं वाली सेटिंग स्क्रीन बनाना
- कियोस्क, पहनने वाले उपकरण, डैशबोर्ड और स्मार्ट उपकरणों के इंटरफ़ेस बनाना
