বিজয় ও অভ্র সফটওয়্যারের (Unicode & ANSI Encoding) সহজ পাঠ !

বিজয় ও অভ্র সফটওয়্যারের (Unicode & ANSI Encoding) সহজ পাঠ !

এই দুনিয়ার বড় দুটি সমস্যা, হাঁটতে চলতে প্রাইভেসি (Privacy) আর কম্পিউটার জগতে পাইরেসি (Piracy) । রাস্তায় হাঁটতে গেলে ভয় হয় ছিনতায়কারীদের । আর অনলাইনের বিশাল ভার্চুয়ালিটিতে কপি-পেস্টের সহজ জগতকে । আপনি টানা ৫-৬ বছর একটা কাগজ পোকা হয়ে কেটে গেলেন এবং একটি নতুন নকশা(Shape) তৈরী করলেন অবশেষে আরেকজন এই দুই একদিনের মাথায় আপনার নকশাটা আরেকটি কাগজে বসিয়ে ব্লেড দিয়ে সুন্দর করে তৈরী ফেললেন হুবহু আপনার মত একটি ডুপলিকেট নকশা । ব্যবসাতো যে হারপিটুনি দিয়ে পরিশ্রম করেছে তার না ব্যবসা তার যে ডুপলিকেট কপি বানিয়েছে । কারণ, ডুপ্লিকেট জিনিস দামে সস্তা, ব্যবহারে আরাম । হা, হা, হা এই ধান্দাই প্রতিনিয়ত চলে । আজকে কথা বলব ইউনিকোড ও এএনএসআই এনকোডিং এবং আমাদের বাংলা ভাষার দুটি জনপ্রিয় কীবোর্ড লেআউট অভ্র এবং বিজয় নিয়ে । চলুন তাহলে ,

বিজয় লেআউটঃ
মোস্তফা জব্বার স্যার ১৯৮৮ সালের ১৬ই ডিসেম্বর আনুষ্ঠানিক ভাবে বিজয় ১ ভার্সন প্রকাশ করেন । তিনি একজন কম্পিউটার প্রোগ্রামার এবং কম্পিউটার বিজ্ঞানী । আমরা বিজয় কীবোর্ডের মাধ্যমে বাংলা প্রিন্টিং এর সকল কাজ করি । এই কীবোর্ডের লেআউটটি ANSI সমর্থিত । কম্পিউটারে বাংলা ভাষার ব্যবহার্য এই সফটওয়্যার তিনি নিজের নামে পেটেন্ড নেন এবং এটি একটি ক্লোজড সোর্স (Closed Source Software) হিসেবে লাইসেন্স করেন । অর্থাৎ, এই সফ্ট‌োওয়্যারটি কেউ ব্যবহার করতে চাইলে এর লাইসেন্স কিনতে হবে । ২০০৯ সালে জনাব মোস্তফা জব্বার সাহেব ইন্টারনেটের চাহিদা ধরে রাখতে বিজয়ের গোল্ড ভার্সন এবং ইউনিকোড সমর্থিত ভার্সন প্রকাশ করেন ।

অভ্র কীবোর্ডঃ
২০০৩ সালে একজন ডাক্তারি পড়ুয়া একজন ছাত্র চিন্তা করলেন বিজয়ে বাংলা লিখতে বা ব্যবহার করতে অনেক কষ্ট সাধ্য । এমন একটি কীবোর্ডের চিন্তা করা যায় কি যেটা আমাদের সহজেই লিখতে সহযোগীতা করতে পারে ? যেই চিন্তা সেই কাজ । একজন ডাক্তার আবিষ্কার করে ফেললেন মাতৃভাষা ব্যবহারের সবচাইতে সহজ ও সহজে শিখনীয় একটি সফ্ট‌োওয়্যার । যাকে অভ্র নামকরণ করা হয় । ২০০৩ সালের ২৬শে মার্চ এই সফ্ট‌োওয়্যার উন্মুক্ত করা হয় । এটি একটি ওপেন সোর্স প্রোগ্রাম যা কিনা যে কেউ বিনা মূল্যে ব্যবহার করতে পারবে ।

ANSI এবং Unicode :
প্রথমে ASCII এনকোড পদ্ধতিতে ভাষার অক্ষরগুলোকে কম্পিউটারে রিপ্রেজেন্ট করা হত । এটিই পৃথিবীর প্রথম কম্পিউটারে কারেক্টার রিপ্রেজেন্ট করার পদ্ধতি । কম্পিউটার বাংলা উর্দূ, হিন্দি, ইংলিশ এসব ভাষাতো বুঝে না । ০ এবং ১ (বাইনারি) দিয়ে আপনি যেটাই বুঝাবেন সে বুঝতে পারবে । তাই বিজ্ঞানীগণ অক্ষর, প্রতীকগুলোকে বাইনারিতে কনভার্ট করে কম্পিউটারে প্রবেশ করায় । এতে আমরাও কম্পিউটারের স্ক্রিনে অক্ষর দেখতে পাই এবং কম্পিউটারও একসেট বাইনারি সংখ্যা তার মেমরিতে স্টোর করে আমাদের কাজ করতে সহায়তা করে । প্রথম যখন ASCII কম্পিউটারে এনকোড করা হয়েছিল সেসময় শুধুমাত্র ইংরেজি (A-Z , a-z, কিছু সাংকেতিক চিহ্ন) ও রোমান কিছু ক্যারেক্টার কম্পিউটারকে বুঝানোর সমর্থন দিয়েছিল । সেরকম হলে ভাই বাংলা ভাষাভাষী, হিন্দি ভাষী, চাইনিজ ভাষী এরা কি কম্পিউটারের তাদের মাতৃভাষায় লিখতে পারবে না ? এরপর এর আপগ্রেড ভার্সন ANSI আনা হল । এই এনকোডিং পদ্ধতিতে আরোও নতুন ক্যারেক্টার ও সিম্বল রিপ্রেজেন্ট করানো হল এবং নতুন ভাষার ব্যবহার চালু করা হল । মানে, যে কেহই তার মাতৃভাষায় কম্পিউটারের ক্যারেক্টার রিপ্রেজেন্ট করাতে পারবে । কিন্তু এর বড় একটি ত্রুটি (Bug) হল, এটি যখন একটি এনকোড থেকে অন্য একটি পাতার এনকোডে রুপান্তরিত করা হয় তখন এটির সম্পূর্ণ কোড ভেঙে যায় । যার ফলে আমরা আগের অক্ষর ও নতুন অক্ষরের মধ্যে কোন মিল পাওয়া যায় না । যেমনটা আমাদের বিজয় (SutonnyMJ) কীবোর্ডের অক্ষরগুলোতে ঘটে । চিত্রে খেয়াল করুন ।

Unicode হল এমনি একটি এনকোডিং প্রক্রিয়া যার মাধ্যমে আমরা পৃথিবীর যেকোন এনকোড করা স্ক্যামা (Scheme) থেকে যেকোন ভাষা ব্যবহার করা যায় । যত সহজ ততই লাভ । এই চিন্তা করেই বর্তমান সকল কম্পিউটারে ইউনিকোড (Unicode - Universal Coded Charecter Set) এনকোড করা থাকে ।
এই পদ্ধতির মূল আবিষ্কারক ক্যান থমসন (Ken Thompson) যিনি ইউনিক্স অপারেটিং সিস্টেম তৈরী করেছিলেন । UTF এর পূর্ণরূপ হল, Unicode Transformation Format. যা যেকোন কারেক্টারকেই অন্য এনকোডিং পাতায় রিপ্রেজেন্ট করতে পারে । যারা ওয়েব প্রোগ্রামার তারা এই বিষয়গুলো খুবি ভালো ভাবে জানেন । কারণ, ওয়েবে এই এনকোডিং জিনিসটা খুবি গুরুত্তপূর্ণ । নিচে দুটি উদাহরণ দিলামঃ



১. মেটা কারেক্টার সেটআপ করতে দেখা দরকার আমি সমগ্র প্রোগ্রামটি কোন এনকোডিং পদ্ধতিতে আমার সোর্স কোডগুলোকে এনকোড করছি । এখানে Unicode পদ্ধতিতে এনকোডিং বুঝিয়েছে যা HTML5 এর ইনেবল । এই পদ্ধতিতে প্রায় সকল প্রকার সিম্বল, ক্যারেক্টার, স্পেশাল কারেক্টার এনকোড করতে পারে ।
<meta charset="ISO-8859-1" >

২. ISO-8859-1 এট্রিবিশনটি HTML4 ভার্সনে ব্যবহার করা হত । এখানে আপনি এনকোড করছেন ANSI এনকোডিং পদ্ধতি ।
<meta http-equiv= "Content-Type"  content= "text/html;charset=ISO-8859-1" >

ফোনেটিক (Phonetic) :
বর্তমানে আমরা সচরাচর স্মার্টফোনে যে লেআউটে বাংলা লিখি সেটাকে ফোনেটিক বলে । আমরা একে বাংলিশও বলে থাকি । অর্থাৎ, ইংরেজিতে বাংলার প্রোনাউন্সিয়েশন লিখবেন তা আউটপুট দেখবেন বাংলা ফন্টে । যেমন, "জীবন" শব্দটি লিখতে গেলে আমরা টাইপ করি "jIbon" । আমাদের বাংলা ভাষা লেখার "অভ্র" সফটওয়্যারটি এর উৎকৃষ্ট উদাহরণ ।

ক্লোজড এবং ওপেন সোর্স সফটওয়্যারঃ
যে সব সফটওয়্যারের কোড, প্রোপার্টিজ সবগুলা অপ্রকাশিত রেখে শুধু সফট কপি প্রকাশ করে তাদেরকে ক্লোজ সোর্স সফটওয়্যার (Closed Source Software) বলে । যেমন, উনডোজ, পান্ডা এন্টিভাইরাস, ফিল্মরা ইত্যাদি ইত্যাদি । আর অপর দিকে যে সকল সফটওয়্যারের সোর্স কোড উন্মুক্ত । যে কোন ব্যক্তিই ব্যবহার করতে পারে তাদেরকে ওপেন সোর্স সফটওয়্যার (Open Source Software) বলে । এই ধরণের সফটওয়্যার GNU (General Public License) পাবলিক লাইসেন্সে রাখা হয় । যে কোন ব্যক্তিই ব্যবহার করতে পারে ।

এখন মূল লেখায় আসি ।
আসল কাহিনী হল বিজয় লেআউট প্রথমে ডিজাইন করা হয়েছিল ANSI সাপোর্টেড রূপে । যেখানে শুধু মাত্র প্রিন্ট মিডিয়ায় তার অভয়ব ফুটে উঠতো । কিন্তু যত দিন যাচ্ছে দুনিয়া ততোই ওয়েব মুখী হতে শুরু করেছে । আর ওয়েব জগতে ANSI একটি ইকিরিম বিকিরিম ভাষা । যে লিখবে সেও বুঝবে না আর যে পড়বে তার কথা নাই বললাম । আর সবচাইতে বড় সমস্যা ছিলো জব্বার সাহেব সম্পূর্ণ সফ্টোওয়্যারটি ট্রেড লাইসেন্স করে রেখেছিলেন । আপনি ব্যবহার করতে হলে বিজয় সফ্ট‌োওয়্যারটি কিনতেই হবে । নাহলে ব্যবহার করতে পারবেন না । এত রেস্ট্রিকশন ছিলো যে ক্ষুদ সরকারও তার কাছ থেকে কিনতে হত । সাধারণ জনগণের কথা বাদই দিলাম । মি. মেহেদি হাসান বাংলিশ ভাষায় লেখার জন্য অভ্র সফ্ট‌োওয়্যারটি তৈরি করেন । সকল প্রিন্টিং এর কাজে এটি ব্যবহার করা নাগেলেও এটি ফোনেটিক বলে ব্যবহার বান্ধব । কারণ, প্রথমত এটি ছিলো ইউনিকোড (Unicode) এ এনকোড করা । কিন্তু জনাব জব্বার সাহেব পত্র পত্রিকায় অভ্রকে বিজয়ের পাইরেটস কপি হিসেবে আক্ষায়িত করেছেন বহুবার । যা সম্পূর্ণই ভূল । এর একটি কারণ হল, বিজয় একটি ক্লোজড সোর্স সফটওয়্যার । এর সোর্স কোড পাবলিক না । যার জন্য এর পাইরেটস বানানো প্রায় অসম্ভব ।
এ নিয়ে অনেক দ্বিধা দ্বন্দ রয়েছে । সে কথা আমি বলতে যাবো না । কারণ, দ্বন্দ আলোচনা করা আমার দ্বায়িত্ব না । আপনাদের ইউনিকোড ও আসকি এনকোডিং বুঝানোটাই আমার দায়িত্ব । আশা করি অনেক কিছুই বুঝতে পেরেছেন । ANSI , Unicode এগুলোর কথা উঠলে মেমরি রেঞ্জ এবং ক্যাপাসিটি উল্লেখ করতে হয় । কিন্তু আমি যত সহজ ভাবে বুঝানো যায় ঠিক সেভাবেই উপস্থাপন করেছি । কীওয়ার্ড জানলে আপনি সহজেই গুগলের কাছ থেকে তথ্য বের করতে পারবেন ।
ধন্যবাদ সবাইকে ।