ইউনিকোড পাঠ্যটি বিপরীত করা অনেক কারণে জটিল।
প্রথমত, প্রোগ্রামিং ভাষার উপর নির্ভর করে স্ট্রিংগুলি বিভিন্ন উপায়ে উপস্থাপন করা হয়, হয় বাইটের তালিকা হিসাবে, ইউটিএফ -16 কোড ইউনিটের তালিকা (16 বিট প্রশস্ত, প্রায়শই এপিআইতে "অক্ষর" বলা হয়), বা ইউসিএস 4 কোড পয়েন্ট হিসাবে (4 বাইট প্রশস্ত)
দ্বিতীয়ত, পৃথক পৃথক এপিআইগুলি বিভিন্ন ডিগ্রিতে সেই অভ্যন্তরীণ প্রতিনিধিত্ব করে। কিছু বাইটের বিমূর্তকরণ নিয়ে কাজ করে, কিছু ইউটিএফ -16 অক্ষরে, কিছু কোড পয়েন্টে। যখন উপস্থাপনাটি বাইট বা ইউটিএফ -16 অক্ষর ব্যবহার করে, সাধারণত এপিআই এর কিছু অংশ থাকে যা আপনাকে এই উপস্থাপনের উপাদানগুলিতে অ্যাক্সেস দেয় এবং পাশাপাশি অংশগুলি যা বাইটস থেকে (ইউটিএফ -8 এর মাধ্যমে) পেতে বা থেকে প্রয়োজনীয় লজিক সম্পাদন করে প্রকৃত কোড পয়েন্টগুলিতে UTF-16 অক্ষর।
প্রায়শই, API এর অংশগুলি সেই যুক্তিটি সম্পাদন করে এবং এভাবে আপনাকে কোড পয়েন্টগুলিতে অ্যাক্সেস দেয় যা পরে যুক্ত করা হয়েছে, যেমন আগে সেখানে 7 বিট আসকি ছিল, তারপরে কিছুক্ষণ পরে সকলেই ভেবেছিল যে 8 টি বিটই যথেষ্ট, বিভিন্ন কোড পৃষ্ঠা ব্যবহার করে এবং এমনকি পরে ইউনিকোডের জন্য 16 বিট যথেষ্ট ছিল। একটি নির্দিষ্ট উপরের সীমা ছাড়াই পূর্ণসংখ্যা হিসাবে কোড পয়েন্টের ধারণাটি logতিহাসিকভাবে যৌক্তিকভাবে এনকোডিং পাঠ্যের জন্য চতুর্থ সাধারণ অক্ষরের দৈর্ঘ্য হিসাবে যুক্ত করা হয়েছিল।
এমন একটি API ব্যবহার করা যা আপনাকে আসল কোড পয়েন্টগুলিতে অ্যাক্সেস দেয় seems তবে ...
তৃতীয়ত, পরবর্তী কোড পয়েন্ট বা নিম্নলিখিত কোড পয়েন্টগুলি প্রভাবিত করে অনেকগুলি সংশোধক কোড পয়েন্ট রয়েছে। উদাহরণস্বরূপ একটি ডায়ারট্রিক মডিফায়ার রয়েছে যাতে নিম্নলিখিতগুলি একটিকে একটি ä, ই থেকে ë, এবং সি তে পরিণত করে। কোড পয়েন্টগুলি চারদিকে ঘুরিয়ে দিন, এবং বিভিন্ন অক্ষর দ্বারা তৈরি এë হয়ে যায়। যেমন। এর নিজস্ব কোড পয়েন্ট হিসাবে সরাসরি প্রতিনিধিত্ব রয়েছে তবে সংশোধক ব্যবহার করা ঠিক ততটাই বৈধ।
চতুর্থত, সব কিছু ধ্রুব প্রবাহে থাকে। উদাহরণ হিসাবে ব্যবহৃত ইমোজিগুলির মধ্যে প্রচুর সংশোধকও রয়েছে এবং প্রতি বছর আরও যোগ করা হয়। সুতরাং, যদি কোনও এআইপিআই আপনাকে কোনও কোড পয়েন্ট পরিবর্তনকারী কিনা তথ্যের অ্যাক্সেস দেয় তবে এপিআইর সংস্করণ নির্ধারণ করবে যে এটি ইতিমধ্যে কোনও নির্দিষ্ট নতুন সংশোধক জানে কিনা।
ইউনিকোড একটি চতুর কৌশল সরবরাহ করে, যদিও এটি যখন কেবলমাত্র ভিজ্যুয়াল উপস্থিতি সম্পর্কে থাকে:
লেখার দিকনির্দেশক সংশোধক রয়েছে। উদাহরণের ক্ষেত্রে, বাম থেকে ডান লেখার দিকনির্দেশ ব্যবহৃত হয়। পাঠ্যের শুরুতে কেবল ডান থেকে বাম লেখার দিকনির্দেশক সংশোধন করুন এবং এপিআই / ব্রাউজারের সংস্করণ অনুসারে এটি সঠিকভাবে বিপরীত দেখাবে 😎
'\ 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>