android एंड्रॉइड के प्री 4.2 संस्करणों पर आरटीएल भाषाओं को कैसे संभालें?




android-webview android-textview (2)

अफसोस की बात है, मुझे नहीं लगता कि एक अच्छा समाधान है ("अच्छा" अर्थ "नौकरी करता है और आसानी से उपलब्ध है")। हमारे अपने एंड्रॉइड ऐप्स के लिए जो हिब्रू का समर्थन करते हैं, हम एक कस्टम प्रतिपादन तंत्र का उपयोग करते हैं जिसे हमने कई वर्षों में विकसित किया है। प्रतिपादन तंत्र सब कुछ करता है: मालिकाना फोंट; बिडरेक्शनल (बीडीआई) विश्लेषण; ग्लिफ प्लेसमेंट; लाइन ब्रेक विश्लेषण; पाठ प्रवाह; आदि। देशी एंड्रॉइड टेक्स्ट हैंडलिंग क्षमताओं (विशेष रूप से प्री-4.2) का उपयोग करने की कोशिश करने वाली कुछ समस्याएं हैं:

  1. वास्तव में क्रैपी फोंट। हालांकि, आप DejaVu जैसे तीसरे पक्ष के फोंट को पैकेज कर सकते हैं जो बहुत अच्छे हैं। यदि आपको इसकी ज़रूरत है तो सही फ़ॉन्ट नेकुडॉट-और तेमीम 1 की स्थिति के साथ चमत्कार कर सकते हैं। (मैं आपसे सहमत हूं कि सही पॉइंटिंग प्लेसमेंट कितना महत्वपूर्ण है; गलत जगहों के साथ हिब्रू पाठ पढ़ना कैप्चा के स्क्रीन से भरा हुआ है।)

  2. छोटी गाड़ी बिडी विश्लेषण। यह और भी बदतर है कि एंड्रॉइड के विभिन्न संस्करणों के लिए बग अलग दिखते हैं। रणनीतिक रूप से निर्धारित बिडी स्वरूपण कोड (आरटीएल चिह्न; एलटीआर चिह्न; आदि) को शामिल करने के लिए पाठ को संशोधित करना इन बगों में से कई को दूर कर सकता है ( here चर्चा देखें, जो एंड्रॉइड के लिए विशिष्ट नहीं है)। हालांकि, यह करने के लिए एक उपद्रव है और, एंड्रॉइड संस्करणों के बीच असंगतताओं के कारण, पहले से भविष्यवाणी करना मुश्किल है कि ढांचे की क्या ज़रूरत है।

  3. दाएं से बाएं मुद्दों के ढांचे-स्तर की जागरूकता नहीं (या खराब विचार)। उदाहरण के लिए, एक हिब्रू टेक्स्ट व्यू के बाईं तरफ स्क्रॉल बार को प्रदर्शित करने के लिए शुभकामनाएं। हमारे ऐप्स के लिए, हमें यह काम करने के लिए बस एक संपूर्ण स्क्रॉल-बार प्रणाली बनाना था, जिसे हम चाहते थे। (अच्छा लगता है एंड्रॉइड ओपन सोर्स है!)

  4. खराब रेखा और शब्द तोड़ विश्लेषण। एंड्रॉइड के कम से कम एक प्रारंभिक संस्करण जिस पर हमने परीक्षण किया था कि प्रत्येक निकुद चिह्न एक शब्द सीमा थी। जब लाइन ब्रेक की बात आती है, तो सिस्टम अक्सर यह नहीं जानता कि हिब्रू विराम चिह्न जैसे मक्काफ, गेर्शहाइम, या सोफ पासुक को कैसे संभाला जाए।

  5. कुछ नए यूनिकोड वर्णों (जैसे वीएवी-यू + 05 बीए के लिए होलम हैसर - यूनिकोड 5.0 के लिए नया) सिस्टम द्वारा हिब्रू लिपि के रूप में मान्यता प्राप्त नहीं हैं।

मेरी सिफारिश यह है कि, जब तक कि आप एक शीर्ष-से-नीचे टेक्स्ट हैंडलिंग सिस्टम स्वयं बनाने के लिए तैयार नहीं होते हैं, तो आप एंड्रॉइड के प्री-4.2 संस्करणों पर उच्च-गुणवत्ता वाले टेक्स्ट डिस्प्ले को छोड़ देते हैं, खासकर अगर आपको नेकुडॉट और टीमिम का समर्थन करना है । इसके अलावा, ऊपर दिए गए पहले दो बिंदुओं में वर्णित तकनीकों का उपयोग करने की योजना बनाएं।

1 बाइबिल कंटिलेशन अंक

पृष्ठभूमि

टेक्स्टव्यू में हमेशा आरटीएल (राइट-टू-बाएं) भाषाओं के साथ समस्याएं थीं। चूंकि मुझे पता है कि हिब्रू को कैसे पढ़ा जाए (अंग्रेजी के अलावा), मैं इसके मुद्दों के बारे में बात करूंगा:

  • पाठ संरेखण (और मैं गुरुत्वाकर्षण के बारे में बात नहीं कर रहा हूं)। एक आरटीएल भाषा के रूप में, हिब्रू शब्दों को दाएं से बाएं शब्दों में डालता है (अंग्रेजी की तुलना में जो विपरीत है)।

    यह दिखाने के लिए कि यह कितना परेशान है, कल्पना करें कि "हैलो वर्ल्ड" दिखाने की बजाय। आपको आमतौर पर "हेल्लो वर्ल्ड" मिलता है। यदि आपके पास एक वाक्य में था, तो इसे आसानी से ठीक किया जा सकता है, लेकिन जब कई विराम चिह्न वर्ण होते हैं तो यह कठिन होता है।

  • स्वर पदों। पाठ को पढ़ने के लिए हिब्रू को स्वरों की आवश्यकता नहीं होती है, लेकिन कभी-कभी उनके बिना पढ़ना बहुत कठिन होता है (विशेष रूप से बाइबल)। स्वरों के लिए, हिब्रू को "NIKUD" कहा जाता है, जो वास्तव में अक्षरों के अंदर बिंदुओं की तरह हैं। एंड्रॉइड में समस्या यह थी कि वे आमतौर पर गलत स्थान पर स्थित थे।

    यह दिखाने के लिए कि यह कितना परेशान है, कल्पना करें कि "हैलो वर्ल्ड" दिखाने की बजाय। आप आमतौर पर ".elol owrld" मिलता है। यहां तक ​​कि यदि आप इसे ठीक करने का प्रयास करते हैं (स्वरों को हमेशा एक वर्ण के बाद एक वर्ण डाल दें), पत्र में स्थिति सही नहीं थी (कल्पना करें कि "हैलो" में "ई" "एच" से ऊपर होगा, के लिए उदाहरण) ।

केवल संस्करण 4.2 पर ( here पढ़ें, "मूल आरटीएल समर्थन" के तहत), Google ने सभी हिब्रू संबंधी मुद्दों को ठीक किया है (या कम से कम ऐसा लगता है)।

समस्या

हिब्रू के साथ समस्याओं ने प्रत्येक इज़राइली वाहक को जन्म दिया है और प्रत्येक कस्टम रोम निर्माता के पास विभिन्न मुद्दों को ठीक करने का अपना समाधान है, जो प्री 4.2 उपकरणों पर आरटीएल पाठ को संभालने के लिए व्यावहारिक रूप से असंभव बनाता है।

पाठ में हिब्रू और अंग्रेजी दोनों अक्षरों को शामिल करने के मामले में चीजें और भी निराशाजनक हो सकती हैं।

मैंने क्या कोशिश की है

मैंने उन समस्याओं के बारे में बात करने वाली कई वेबसाइटें पढ़ी हैं, और मैंने समाधान के कई रूपों की कोशिश की है, किसी ने सभी उपकरणों पर समस्या हल नहीं की है:

  • कुछ सुझाव देते हैं कि चरित्र '\ u200F' (या '\ u202D') अंत / प्रारंभ / दोनों पाठों पर रखें।

  • कुछ Html.fromHtml() विधि का उपयोग करने का सुझाव देते हैं और वहां कुछ विशेष डालते हैं।

  • कुछ इसके बजाय WebView का उपयोग करने का सुझाव देते हैं (और शायद WebSettings.setDefaultTextEncodingName() उपयोग करें)।

प्रश्न

क्या इस समस्या के लिए कोई निश्चित समाधान है?

मुझे लगता है कि सबसे अच्छी बात यह है कि एंड्रॉइड 4.2 इसे हल करता है, और एंड्रॉइड ओपन सोर्स है, हमारे पास इसका टेक्स्ट व्यू लाइब्रेरी में आयात किया जाना चाहिए जिसे हम उपयोग कर सकते हैं, लेकिन Google ने अभी तक ऐसी लाइब्रेरी प्रदान नहीं की है।


अगस्त 2013 तक, एंड्रॉइड ने एक द्वि दिशात्मक फॉर्मेटर के लिए एपीआई दस्तावेज पोस्ट किया है जो आपकी आवश्यकताओं के अनुरूप हो सकता है। यह एंड्रॉइड सपोर्ट v4 लाइब्रेरी में निहित है जो मुझे विश्वास है कि एंड्रॉइड 4.2 से पहले संस्करणों में चलना चाहिए।

इसका संदर्भ लें: http://developer.android.com/reference/android/support/v4/text/BidiFormatter.html





right-to-left