यूनिकोड पाठ को उलटना कई कारणों से मुश्किल है।
सबसे पहले, प्रोग्रामिंग भाषा के आधार पर, स्ट्रिंग्स को अलग-अलग तरीकों से दर्शाया जाता है, या तो बाइट्स की सूची के रूप में, UTF-16 कोड इकाइयों की एक सूची (16 बिट्स चौड़ी, जिसे अक्सर एपीआई में "वर्ण" कहा जाता है), या ucs4 कोड बिंदुओं के रूप में (4 बाइट्स चौड़ी)।
दूसरा, अलग-अलग एपीआई उस आंतरिक प्रतिनिधित्व को अलग-अलग डिग्री पर दर्शाते हैं। कुछ बाइट्स के अमूर्त पर काम करते हैं, कुछ UTF-16 वर्णों पर, कुछ कोड बिंदुओं पर। जब प्रतिनिधित्व बाइट्स या यूटीएफ -16 वर्णों का उपयोग करता है, तो आमतौर पर एपीआई के कुछ हिस्से होते हैं जो आपको इस प्रतिनिधित्व के तत्वों तक पहुंच प्रदान करते हैं, साथ ही साथ वे भाग जो बाइट्स (यूटीएफ -8 के माध्यम से) से प्राप्त करने के लिए आवश्यक तर्क करते हैं। वास्तविक कोड बिंदुओं के लिए UTF-16 वर्ण।
अक्सर, एपीआई के भाग उस तर्क का प्रदर्शन करते हैं और इस तरह आपको कोड बिंदुओं तक पहुंच प्रदान करते हैं, बाद में जोड़ा गया है, क्योंकि पहले 7 बिट एससीआई थी, फिर थोड़ा बाद में सभी ने सोचा कि 8 बिट्स पर्याप्त थे, विभिन्न कोड पेजों का उपयोग करते हुए, और यहां तक कि बाद में यूनिकोड के लिए 16 बिट्स पर्याप्त थे। एक निश्चित ऊपरी सीमा के बिना पूर्णांक संख्याओं के रूप में कोड बिंदुओं की धारणा ऐतिहासिक रूप से तार्किक रूप से एन्कोडिंग पाठ के लिए चौथी आम चरित्र लंबाई के रूप में जोड़ी गई थी।
एक एपीआई का उपयोग करना जो आपको वास्तविक कोड बिंदुओं तक पहुंच देता है, ऐसा लगता है कि यह ऐसा है। परंतु...
तीसरा, अगले कोड बिंदु या निम्नलिखित कोड बिंदुओं को प्रभावित करने वाले बहुत सारे संशोधक कोड बिंदु हैं। जैसे कि एक डियाक्रिटिक संशोधक निम्नलिखित है जो एक ä, e से ë, & c में बदल जाता है। कोड बिंदुओं को चारों ओर घुमाएं, और अलग-अलग अक्षरों से बना, और बन जाता है। उदाहरण के लिए अपने स्वयं के कोड बिंदु के रूप में ä का प्रत्यक्ष प्रतिनिधित्व है, लेकिन संशोधक का उपयोग करना उतना ही मान्य है।
चौथा, सब कुछ निरंतर प्रवाह में है। इमोजी के बीच बहुत सारे संशोधक भी हैं, जैसा कि उदाहरण में उपयोग किया जाता है, और हर साल अधिक जोड़े जाते हैं। इसलिए, यदि एक एपीआई आपको जानकारी देता है कि क्या कोड बिंदु एक संशोधक है, तो एपीआई का संस्करण यह निर्धारित करेगा कि क्या यह पहले से ही एक विशिष्ट नया संशोधक जानता है।
यूनिकोड एक हैकी ट्रिक प्रदान करता है, हालांकि, जब यह केवल दृश्य उपस्थिति के बारे में है:
लेखन दिशा-निर्देश हैं। उदाहरण के मामले में, बाएं से दाएं लेखन दिशा का उपयोग किया जाता है। बस टेक्स्ट की शुरुआत में राइट-टू-लेफ्ट राइटिंग डायरेक्शन मॉडिफ़ायर जोड़ें और एपीआई / ब्राउज़र के संस्करण के आधार पर, यह सही उलटा दिखेगा to
'\ u202e' को दाएं से बाएं ओवरराइड कहा जाता है, यह दाएं से बाएं मार्कर का सबसे मजबूत संस्करण है।
इस स्पष्टीकरण को w3.org द्वारा देखें
const text = 'Hello world👩🦰👩👩👦👦'
console.log('\u202e' + text)
const text = 'Hello world👩🦰👩👩👦👦'
let original = document.getElementById('original')
original.appendChild(document.createTextNode(text))
let result = document.getElementById('result')
result.appendChild(document.createTextNode('\u202e' + text))
body {
font-family: sans-serif
}
<p id="original"></p>
<p id="result"></p>