Friday, February 15, 2008

ইউনিকোড পাঠ ১১ (শেষ কিস্তি)

এগারো.
দরকার নেই ইউনিকোড। এর চেয়ে পাবদা মাছ খাবো। নয়তো কুইনাইন, প্লাস্টিকের ফুল, মঞ্চনাটক, মিসকল, যা পাই। আর এই শপথ করলাম, বন্যাদুর্গতদের জন্য পরের বার ত্রাণ সংগ্রহ করবো। সত্যি বলছি, ফটো তুলবো না ত্রাণ বিলিয়ে। তাও আর ইউনিকোড পাঠ নয়।

ইউনিকোড পাঠ-এর প্রথম দশ কিস্তি পড়ার পর এই হলো পাঠক প্রতিক্রিয়া। কত কারিগরি কথাশব্দবাক্য যে মাথার উপর দিয়ে এবং ডান কানের বাঁ পাশ দিয়ে চলে গেছে। অবশ্য কিছু প্রাথমিক ধারণা পাওয়া গেছে ইউনিকোড নিয়ে, ভুল না ঠিক কে জানে।

রাগ কমলে ভাবলেন, নাহ, ছেলেটা এত করে বলছে, দেখি একটু ইউনিকোডে বাংলা লিখে।

প্রথমে ইন্টারনেট থেকে ইউনিকোড-ফন্ট নামালেন। তারপর ইনস্টল করলেন। ওয়ার্ড খুলে বাংলা লিখতে যাবেন, বাহ, লিপির এ কী হাল! যুক্তবর্ণ, কার, ফলা সব গেছে ভেঙে, আগেপরে, উল্টোপাল্টা হয়ে। আর বাংলা লিখবেনই বা কেমন করে, কিবোর্ড যে ইংরেজি। বাংলা হরফ ছাপা আছে বটে কিবোর্ডে, কিন্তু সেইমতো মনিটরে দেখাচ্ছে না।

মাইক্রোফোন টেনে ইউনিকোডের কয়েক বংশ উদ্ধার করলেন। এবং নীতিবাক্য দাঁড় করালেন মনে মনে, শুধু বাংলা ফন্ট ইনস্টল করলে জীবনে সুখী হওয়া যায় না। একনাগাড়ে বলেই গেলেন। সুখ নাই। সুখ নাই।

আর আমি সেই কখন থেকে বলে যাচ্ছি, ফন্ট থাকলেই হয় না, অপারেটিং সিস্টেমেও কমপ্লেক্স স্ক্রিপ্ট সাপোর্ট থাকতে হবে। সাথে বাংলা ইনপুট দেবার কোনো ব্যবস্থা।

এসব আবার কোত্থেকে এল?

ধ্যাত, আগে জানলে এই ইউনিকোডে চড়তাম না।
______________________
বেশি তরল করে বললাম। এ কিস্তির মূল পয়েন্ট, কম্পিউটারে ইউনিকোড পদ্ধতিতে বাংলা লিখতে গেলে লাগবে :

ক. অপারেটিং সিস্টেমে কমপ্লেক্স স্ক্রিপ্টের সমর্থন
খ. কিবোর্ড লেআউট ম্যানেজার বা বিকল্প ইনপুট পদ্ধতি
গ. ইউনিকোড সমর্থিত কোনো বাংলা ফন্ট

আরও দেখুন : জিকোবাজি বাংলা ইউনিকোড সেটআপ গাইড

এটাই শেষ কিস্তি আপাতত।

Monday, February 11, 2008

ইউনিকোড পাঠ ১০

দশ.
আগের কিস্তিতে শুধু ওপেন টাইপ প্রযুক্তি নিয়ে বলা হয়েছে। ওপেনটাইপ ছাড়াও উন্নত টাইপোগ্রাফিওলা যেকোনো ফন্ট ইউনিকোড সমর্থন করবে। সেসব নিয়ে এবারের কিস্তি।

ওপেনটাইপ প্রযু্ক্তি শুরু করেছে প্রথম মাইক্রোসফট। ফলে ওপেন টাইপ ফন্ট উইন্ডোজসহ মাইক্রোসফটের হালনাগাদ সব সফটওয়্যারে বেশ ভালো কাজ করে। অ্যাডোবি কোম্পানি ওপেনটাইপের সাথে যুক্ত হয়েছে পরে, বাণিজ্যিক কারণে।

অ্যাডোবি ফটোশপ, ইনডিজাইন, ইলাস্ট্রেটরে দেখবেন, এখনও ইউনিকোড ফন্ট ঠিকমতো সমর্থন করে না। অ্যাডোবির সাম্প্রতিক প্রচারণায় বলেছে, তাদের ক্রিয়েটিভ স্যুট ৩.০ থেকে ওপেনটাইপ সমর্থন করবে পুরোপুরি।

ম্যাক অপারেটিং সিস্টেমের দশম সংস্করণ সমর্থন করে ওপেন টাইপ ফন্ট। তবে এ প্রযুক্তির সব সুবিধা পাওয়া যায় না সেখানে।

ওপেন টাইপের মতো প্রায় একই ধরনের প্রযুক্তি বের করেছে অ্যাপল কোম্পানি, ম্যাক-এর জন্য। প্রযুক্তির নাম 'অ্যাপল অ্যাডভান্সড টাইপোগ্রাফি' (এএটি)। আগে এ প্রযুক্তি জিএক্স নামে পরিচিত ছিল।

তবে ওপেনটাইপ বা এএটি, দুটোই ক্লোজড সোর্স প্রযুক্তি, মানে এর পেছনের প্রোগ্রামিং সংকেতগুলো প্রকাশ করা হয় না, আর সংকেত পেলেও তা অন্যকে বিতরণের লাইসেন্স পাবেন না, এগুলো হয় কোম্পানি বা ব্যক্তি মালিকানাধীন। এর বিপরীত ধারণায় আছে ওপেন সোর্স।

ইউনিকোড সমর্থন করে এমন ওপেন সোর্স প্রযুক্তির মধ্যে আছে গ্রাফাইট। তৈরি করেছে এসআইএল ইন্টারন্যাশনাল বলে এক কোম্পানি। উইন্ডোজ এবং লিনাক্সে কাজ করে গ্রাফাইট।

ব্যস, ফন্টামি হলো অনেক। আর নয়।

Sunday, February 10, 2008

ইউনিকোড পাঠ ০৯

নয়.
ওপেন টাইপ প্রযুক্তি

ইউনিকোডে বর্ণের পরে মাত্রা টাইপ করলেও তা মনিটরে সঠিকভাবে কীভাবে দেখায়? শুধু ঠিকভাবে মাত্রা দেখানো নয়, যাবতীয় সংযুক্ত বর্ণ তৈরিতে প্রধান ভূমিকা পালন করে যে প্রযুক্তি, তার নাম ওপেন টাইপ। টাইপোগ্রাফির এ প্রযুক্তির কল্যাণে আমরা ক এর পর ো(ও-কার) টাইপ করলেও ‘কো’ দেখতে পারি। অ্যাডোবি ও মাইক্রোসফটের যৌথ উদ্যোগে এ প্রযুক্তির উদ্ভাবন। ওপেনটাইপ ফন্ট কোনো পরিবর্তন ছাড়াই উইন্ডোজ ও ম্যাক অপারেটিং সিস্টেমে কাজ করে। এ ধরনের ফন্টে ৬৫ হাজারেরও বেশি হরফের ছবি (গ্লিফ) রাখা যায়। এর আরেকটি বৈশিষ্ট্য, কোন কোন মূল বর্ণ দিয়ে যুক্তাক্ষর তৈরি হবে, তা ফন্টের ভেতরই বলে দেয়া যায়। ফলে একটা ভাষায় যতগুলো যুক্তাক্ষর সম্ভব, তার সবগুলো ফন্টে যোগ করা যায়। আগেকার ট্রু-টাইপ বা টাইপ-১ প্রযুক্তির ফন্টে এটি সম্ভব ছিল না। এ প্রযুক্তির ফন্ট দিয়ে ওয়েবপেজে ত্রুটিমুক্তভাবে বাংলা লিখা দেখা যায়।

এমন যদি একটি ফন্ট থাকতো যার প্রতিটি কোড পয়েন্টে ইউনিকোডের টাইপোগ্রাফি এবং সমস্ত গ্লিফ সঠিকভাবে আছে, তবে সেটিই হতো আদর্শ ইউনিকোড সমর্থিত ফন্ট। তখন এক ফন্ট দিয়েই ইউনিকোডে তালিকাভুক্ত সব লিপি ঠিকঠাক লেখা যেত।

কিন্তু ফন্ট বাণিজ্যিক পণ্য বলে একটা ফন্টে সব ভাষার লিপি থাকে না। পাশাপাশি সব লিপির বর্ণ এক ফন্টে থাকলে সে ফন্ট ফাইলটির আকারও কয়েক মেগাবাইট হতো। এতে ফন্টের বহনযোগ্যতা ও বিনিময়যোগ্যতা কমে যায়।

তারপরও ভালো বাংলা ওপেন টাইপ ফন্ট এমন হওয়া উচিত, যাতে বাংলা-ইংরেজির পাশাপাশি বহুল ব্যবহৃত লিপিগুলোও সাপোর্ট করে, মনিটরে এবং প্রিন্ট করার পর দেখতে ভালো দেখায়।

নিচের ঠিকানা থেকে কিছু বাংলা ওপেনটাইপ ফন্ট বিনামূল্যে ডাউনলোড করা যাবে । ফন্টগুলো ন্যূনতম ইউনিকোড ৪.১ সংস্করণ সমর্থন করে। ফলে ইনস্টল করার পর খণ্ড-ত ঠিকমতো দেখা ও লিখা যাবে। পুরনো বাংলা ওপেনটাইপ ফন্ট থাকলে দেখবেন, ৎ-এর জায়গায় বাক্স দেখায়। ইউনিকোডের আগের সংস্করণে খন্ড-ত কে যুক্তবর্ণ হিসেবে ধরা হতো। তার আলাদা কোনো কোড পয়েন্ট ছিল না। তখন খণ্ড-ত লিখার জন্য ত এর পর হসন্ত টাইপ করতে হতো।

- একুশে
- ওমিক্রনল্যাব
- অ্যালানউডের সাইট
_______________________________
পরের কিস্তিতে থাকবে কম্পিউটারে বাংলা ইউনিকোড সেটআপ করার গাইডলাইন।

লেখাটা আরও সহজবোধ্য করা যায় কীভাবে, অথবা আর কী কী জানতে চান ইউনিকোড নিয়ে, মন্তব্যে লিখুন।

Saturday, February 9, 2008

ইউনিকোড পাঠ ০৮

আট.
আমরা যেভাবে হাতে লিখি, সেভাবে তথ্য সংরক্ষণ করলে সর্টিংয়ে যে সমস্যা হতে পারে তার একটি উদাহরণ দেয়া যাক।

ছক ১ দেখুন। যেভাবে লিখি, সেভাবে সংরক্ষণ করলে খই এবং খেলা শব্দের প্রথম বর্ণ হয় যথাক্রমে খ এবং ে। এতে সর্টিংয়ের সময় ঝামেলা হয়। কারণ, প্রথম বর্ণ আলাদা হওয়ায় খ এর ভেতর খেলা শব্দ থাকছে না। বিজয় বা অন্য প্রচলিত নন-ইউনিকোড সফটওয়্যার দিয়ে টাইপ করলে এ সমস্যা হয়।

এবার ছক ২ দেখুন। ইউনিকোড বর্ণের পরে মাত্রা বসিয়ে সংরক্ষণ করলে সর্টিংয়ের বেলায় খই, খেলা ও খোলা-- এ তিনটি শব্দের প্রথম বর্ণই 'খ' আসে। যেকোনো ইউনিকোড সমর্থিত সফটওয়্যার (যেমন, অভ্র, একুশে ইউনিজয়) দিয়ে টাইপ করলে এই উপায়ে তথ্য সংরক্ষিত হয়।


তাহলে কী সবসময় বর্ণের ডানেই মাত্রা টাইপ করবো? না, এভাবে ইনপুট দেয়ার কোনো বাধ্যবাধকতা নেই। কিবোর্ড ড্রাইভার সফটওয়্যার ব্যবহার করে হোক আর মোবাইল ফোনে টাচ স্ক্রিন খুঁচিয়েই হোক, যেভাবেই ইনপুট দেই না কেন, জরুরি বিষয় : শেষে গিয়ে ইউনিকোড সমর্থিত উপায়ে সংরক্ষণ হচ্ছে কিনা।

অর্থাৎ ওয়ার্ড প্রসেসরে লিখলাম "ে, খ, া" আর সংরক্ষণ করলাম মাত্রাকে ডানে বসিয়ে (খ, ো)। সমস্যা নেই তাতে। তবে এভাবে লেখার জন্য উইন্ডোজ, লিনাক্স, সিমবিয়ানসহ প্রত্যেকটি অপারেটিং সিস্টেমে আলাদা করে কার্যকর কিবোর্ড ড্রাইভার তৈরি করতে হবে। সেটা আরও জটিল সমাধান। সহজ হলো, বর্ণের ডানে মাত্রা টাইপ করায় অভ্যস্থ হওয়া।

__________________________________
চা খেয়ে নিই।
পরের কিস্তিতে ওপেন টাইপ ফন্ট দিয়ে গ্যাজাবো।

Friday, February 8, 2008

ইউনিকোড পাঠ ০৭

সাত.
আগের পর্বে আমরা জেনেছি, ইউনিকোডে শুধু মূল লিপির কোড পয়েন্ট দেয়া হয়। কেউ প্রশ্ন করতে পারেন, যুক্তাক্ষরের জন্য আলাদা কোডপয়েন্ট বরাদ্দ নেই কেন? ইউনিকোডের নিয়ম অনুযায়ী, যুক্তাক্ষর পেতে হলে তা মূল বর্ণের ক্যারেক্টার সিকোয়েন্সের মাধ্যমে ইনপুট দিতে হয়। যেমন, স্মরণ শব্দের বেলায় লিখতে হবে :
স + ্ + ম + র + ণ

কিন্তু যুক্তাক্ষরের জন্য আলাদা কোড পয়েন্ট থাকলে তা একবারে ইনপুট দেয়া যায়। আগের উদাহরণে তিনটি বর্ণ লিখলেই হবে : স্ম + র + ণ

তখন আর স্মরণ, স্পন্দন, স্নান, স্থান শব্দে ব্যবহৃত স্ম, স্প, স্ন, স্থ এর সাথে মূল বর্ণ 'স' এর কোনো সম্পর্ক রইলো না। সমস্যা হবে শব্দবিন্যাস বা সর্টিংয়ের সময়।

কোন বর্ণটি আগে বসবে?
স, স্ম, স্প, স্ন, স্থ, স্র নাকি স্ল?
এভাবে কয়েক শ' যুক্তাক্ষরের অনুক্রম তালিকা তৈরি করলে তার আকার বিশাল হয়ে যাবে। ফলে শব্দবিন্যাসে সময় বেশি লাগবে, তার কার্যকারিতাও হারাবে।

বাংলা লিপিতে শব্দবিন্যাস জটিল হয়ে যায় ‘মাত্রা’ (কার ও ফলা) ব্যবহারের বৈশিষ্ট্যের কারণে। কারণ এর কোনোটি বর্ণের ডানে বসে (া / ী), কোনোটি বামে (ি / ে / ৈ), কোনোটি নিচে ( ু / ূ / ৃ / র-ফলা) আবার কোনোটি ডানে-বামে দু দিকেই বসে (ো/ ৌ)। ইউনিকোড কারিগরি কমিটির তাত্ত্বিকরা এর চমৎকার একটি সমাধান দিয়েছেন। তারা বলছেন, মেমোরিতে সংরক্ষণের বেলায় সব ধরনের মাত্রাকে বর্ণের ডানে বসালে সর্টিংয়ে সমস্যা থাকে না। অর্থাৎ মাত্রা ব্যবহারের সময় বর্ণগুলো ফোনেটিক পদ্ধতিতে সংরক্ষণ করতে হবে।

যেমন, ডিম লেখার ক্ষেত্রে প্রথমে ড, পরে ি-এর কোড পয়েন্ট সংরক্ষিত হবে। তেমনি, ঘোড়া শব্দের ঘো লিখতে প্রথমে ঘ, তারপর ো সংরক্ষিত হবে। তবে দেখানোর সময় ঠিক দেখাবে ডিম, ঘোড়া। আর মনিটরে মাত্রা কোথায় দেখানো হবে, তার দায়িত্ব নেবে ওপেন টাইপ ফন্ট, ইউনিকোড নয়।

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

Thursday, February 7, 2008

ইউনিকোড পাঠ ০৬

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

দেবনাগরী, বাংলা, গুরুমুখী, গুজরাটি, ওড়িয়া, তামিল, তেলেগু, কানাঢ়া, মালায়লাম, সিনহালা, থাই, লাও, তিব্বতী, বার্মিজ ও খেমার-- এই মোট ১৫টি লিপিকে ইউনিকোডে একই শ্রেণীভুক্ত রাখা হয়েছে। কারণ ইউনিকোডের পর্যবেক্ষণ অনুযায়ী, ব্রাহ্মী লিপি থেকেই এ সব লিপির উৎপত্তি। ব্রাহ্মী লিপির উত্তরসুরী হবার ফলে এই ১৫টি লিপির গঠনগত বিন্যাস ও প্রয়োগরীতি প্রায় একই রকম। অনেকে মনে করেন, ভারতীয় পরিবারের অংশ হিসেবে বুঝি ‘বাংলা’ অন্তর্ভুক্ত হয়েছে। কিন্তু এ শ্রেণীর থাই ও লাও লিপিকে দেখলে ব্যাপারটি স্পষ্ট হয়ে যায়।

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

আরেকটি বিষয় লক্ষ্যণীয়, আমাদের ভাষাবিদরা ৎ, ক্ষ ও অন্তস্থ ব-কে ইউনিকোডে স্থান দেয়ার কথা বলছেন। ইউনিকোড কনসোর্টিয়ামের নীতিমালা অনুযায়ী, যদি বর্ণটিকে স্বাধীন বা মৌলিক বর্ণ হিসেবে প্রমাণ করা য়ায়, তবেই তা ইউনিকোডে যুক্ত হবে। যেমন, ইউনিকোড তার ৪.১ সংস্করণ থেকে ৎ (খণ্ড-ত) যুক্ত করেছে।
____________________________________
- এ লেখার প্রথম কিস্তি -

আর আগের কিস্তিগুলোয় তথ্যগত কোনো ভুল পেলে জানাবেন। প্রাসঙ্গিক মন্তব্য আশা করছি।

পরের কিস্তি দিচ্ছি শিগগিরই।

Wednesday, February 6, 2008

ইউনিকোড পাঠ ০৫

এই লেখা লিখেছেন খ্যাতিমান খ্যাত। পঞ্চম কিস্তি লিখে বলে ধ্যাত। পাঠকরা হাই তোলে, তিনি তোলে বেত। তার আগে পড়া যাক গিমিছড়া 'ক্যাত' :

ঘরে নাই বাতি, তবু আঁকি হাতি।
নৌকা ডুবলে করি মাতামাতি।
তুমি বানভাসি, তাই দেখে হাসি।
রিলিফের মাল বড় ভালোবাসি।

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

ইউনিকোডের আরেকটি গুরুত্বপূর্ণ বিষয় কম্বাইনিং ক্যারেক্টার সিকোয়েন্স। এতে কাঙ্ক্ষিত যুক্ত বর্ণ তৈরি করতে কোন বর্ণের পর কোন বর্ণ দিতে হবে, তার নির্দেশনা থাকে। সাধারণত একটি মূল বর্ণের পরে এক বা একাধিক কম্বাইংনিং চিহ্ন দিলে রেন্ডারিংয়ের সময় তা মূল বর্ণের উপরে, নিচে বা পাশে সঠিকভাবে বসে। বাংলায় যেমন ম + ্ + প টাইপ করলে তৈরি হয় ’ম্প’। এ ধরনের ক্যারেক্টার সিকোয়েন্স একেক ভাষায় একেক রকম থাকে।

বর্ণের ধারাবাহিকতার বেলায় স্ক্রিনে কোন বর্ণগুলো দেখা যাবে তা মুখ্য নয়, বরং কোন বর্ণের পর কোন বর্ণ ইনপুট দিতে হবে সেটাই গুরুত্বপূর্ণ। যেমন, 'ম্প' তৈরিতে হসন্ত চিহ্নটি স্ক্রিনে নাও দেখা যেতে পারে। সঠিক ধারাবাহিকতায় ইনপুট দিলে ইউনিকোড বলে দেবে মূল বর্ণের কোন পরিবর্ধিত রূপ হবে।

বাম থেকে ডানে (যেমন বাংলা লিপি) কিংবা ডান থেকে বায়ে (যেমন আরবি লিপি) কিবোর্ডে যেভাবেই টাইপ করা হোক না কেন, লিপিগুলো যেন মেমোরিতে যৌক্তিকভাবে সংরক্ষিত থাকে, তার জন্য ইউনিকোডের নিজস্ব অ্যালগরিদম রয়েছে।

ইউনিকোডে প্রতিটি কোড পয়েন্ট সংরক্ষণ করা হয় ৮, ১৬ বা ৩২ বিটে। তবে এ তিন এনকোডিংয়ে একই বর্ণভান্ডার ব্যবহার করায় এক এনকোডিং থেকে অন্য এনকোডিংয়ে রূপান্তরের সময় কোনো তথ্য বিকৃত হয় না। এই ফরম্যাটকে বলা হয় ইউনিকোড ট্রান্সফরমেশন ফরম্যাট (UTF)। এইচটিএমএল এবং এ ধরনের প্রটোকলে ব্যবহার হয় UTF-8। এই ফরম্যাটের একটি বড় সুবিধা, অ্যাসকি এবং ইউনিকোডে প্রতিটি বর্ণের কোড পয়েন্ট এক। ফলে ইউনিকোড ক্যারেক্টার UTF-8 এ রূপান্তর করলে অ্যাসকির জন্য তৈরি সফটওয়্যার কোনো ধরনের ঝামেলা ছাড়াই সাপোর্ট করে। UTF-16 কম মেমরি স্পেসের জন্য আরেকটি কম্প্যাক্ট ফরম্যাট। মেমরি স্পেস যেখানে কোন সমস্যা নয় সেখানে UTF-32 ফরম্যাট ব্যবহার করা হয়।
__________________________________

তারপর না এইসব ছাইপাশ পড়ে হাতিশালের ঘোড়াটা পটাপট একশ' টা ডিম পেড়ে দিলো। ইস, আর তারপর বলে কী জানেন, তোমার কিস্তি ছয় কই? তাড়াতাড়ি দাও গো, আমার না খুব ইউনিকোড চেপেছে। হিহিহি।

আমি তো খুশিতে তিন লাফ দিই।
অমনি সে রেগে যায়, গজরাতে গজরাতে বলে, ভুউউউয়ায়ায়া।

Tuesday, February 5, 2008

ইউনিকোড পাঠ ০৪

এ লেখায় পাঠক হারানোর হার সন্তোষজনক।

হিসেব করা যাক, প্রথম কিস্তির পাঠসংখ্যা ১০৭ বার। দ্বিতীয় কিস্তিতে ৯০ বার। তৃতীয় কিস্তিতে ৫৯ বার। তার মধ্যে আমিই পড়েছি, মানে ক্লিক করেছি অনেকবার।

কতজন পাঠক হবেন এবার, চতুর্থ কিস্তিতে?
বেশি হলে ভাববেন, লেখকের ক্লিক।
কম হলে 'সন্তোষজনক'!
______________________________________
চার.

প্রতিটি ভাষার লিপিতে থাকে কিছু লেখনী চিহ্ন। এ চিহ্নের মধ্যে থাকতে পারে বর্ণ (’ক’, A ইত্যাদি), জাপানি হিরাগানার মতো অক্ষর (syllable) কিংবা চীনাদের মতো সরাসরি ধ্বনি-জ্ঞাপক প্রতীক (ideograph)। ইউনিকোডে এগুলোর সাধারণ নাম কোড এলিমেন্ট।

লেখায় কীভাবে ব্যবহৃত হয় তার ওপর ভিত্তি করে নির্ধারণ করা হয় এ কোড এলিমেন্ট। যেমন, বাংলায় ‘ডিম’ লেখার সময় আমরা ‘ি’‌ দিয়ে শুরু করলেও অভিধানে তা 'ড' অনুচ্ছেদে থাকে।

প্রতিটি কোড এলিমেন্টের জন্য একটি নির্দিষ্ট সংখ্যাবাচক মান থাকে। একে বলে কোড পয়েন্ট। শুরুতে U বসিয়ে কোড পয়েন্টগুলো প্রকাশ করা হয় হেক্সাডেসিমেলে । যেমন : A কোড এলিমেন্টের জন্য নির্ধারিত কোড পয়েন্ট U+0041 (A হরফের হেক্সাডেসিমেল মান 0041)। ইউনিকোডে প্রতিটি কোড এলিমেন্টকে আবার নির্দিষ্ট নাম আছে। যেমন : A(U+0041) এর নাম "LATIN CAPITAL LETTER A"।

একই লিপিভুক্ত কোড এলিমেন্টগুলো একসাথে ব্লক আকারে থাকে। এর নাম কোড ব্লক। কোড ব্লকগুলোর আকার লিপিভেদে ভিন্ন হতে পারে।

কোড ব্লকগুলো আবার সাজানো থাকে বিভিন্ন তলায়। যেমন, নানা ভাষায় সবচেয়ে বেশি ব্যবহৃত বর্ণগুলো রাখা হয়েছে একদম শুরুতে, নিচ তলায়। এ তলার নাম বেসিক মাল্টিলিংগুয়্যাল প্লেন (BMP)। দ্বিতীয় তলার নাম সাপ্লিমেন্টারি মাল্টিলিংগুয়্যাল প্লেন।

এরকম করে তলা আছে ১৭টি । প্রতি তলার আকার ৬৪ কিলোবাইট। মানে ৬৫ হাজার ৫৩৬টি কোড পয়েন্ট বসতে পারে প্রতি তলায়। চার তলা থেকে চৌদ্দ তলায় কোনো বর্ণ বসানো হয়নি, কোড পয়েন্টগুলো খালি। সেখানে বসবে বিপন্ন, বিলুপ্ত, প্রায়-বিলুপ্ত ভাষার লিপিগুলো। এখনও সেসব ইউনিকোডে অন্তর্ভুক্ত হবার অপেক্ষায়।

১৬ এবং ১৭ তলা সংরক্ষিত ব্যক্তিগত ব্যবহারের জন্য। সংরক্ষিত এ কোড ব্লক কোনো জাতি বা অঞ্চলের ভাষার জন্য নয়, বরং কোনো বিশেষ পেশাজীবীদের প্রয়োজনে ব্যবহৃত হয়। যেমন, কোরিওগ্রাফাররা নাচের মুদ্রার জন্য আলাদা এক সেট বর্ণমালা তৈরি করলে, সেগুলো বসবে সংরক্ষিত কোড ব্লকে।

এবার, ইউনিকোড ক্যারেক্টার সেটকে কল্পনা করুন একটা বহুতল ভবন হিসেবে। দশ লাখের বেশি কোডপয়েন্টকে জায়গা দেয়ার ক্ষমতা আছে এ ভবনে। পঞ্চম সংস্করণে তার মাত্র দশ ভাগ (এক লাখ দু হাজার ১২টি কোড পয়েন্ট) পূর্ণ হয়েছে। ১২ ভাগ (এক লাখ ৩৭ হাজার ৪৮৬টি কোডপয়েন্ট) সংরক্ষিত কোড ব্লকের জন্য বরাদ্দ। এবং ফাঁকা আছে এখনও প্রায় ৭৮ শতাংশ।
___________________________________
অল্প কথায় এ কিস্তি :
লেখনী চিহ্ন হলো কোড এলিমেন্ট। প্রতি কোড এলিমেন্টের জন্য আছে আলাদা কোড পয়েন্ট। কোড পয়েন্ট গুলো বিভক্ত কোড ব্লকে। ব্লকগুলো ছড়িয়ে আছে ১৭ তলা জুড়ে। ১৭ তলার এ ভবনটির নাম ইউনিকোড ক্যারেক্টার সেট।

বাইরে বৃষ্টি। থামলে পরের কিস্তি।

Monday, February 4, 2008

ইউনিকোড পাঠ ০৩

তৃতীয় কিস্তি পড়ার আগে বলে রাখি, ইউনিকোড দিয়ে ঢাকার বন্যা ঠেকানো যাবে না। আর সুইডেনের চলচ্চিত্রকার ইঙ্গমার বার্গম্যান (সুইস উচ্চারণটা বারিমান) যে মারা গেলেন, তার জন্য ইউনিকোড দায়ী নয়।

হ্যাঁ, এবার পড়া যাক তৃতীয় কিস্তি। তবে খাপছাড়া লাগবে আগের কিস্তিগুলো না পড়লে। অবশ্য সব কিস্তি পড়েও খাপছাড়া লাগতে পারে। পারে বলছি কেন? লাগতে বাধ্য। বাক্যমালাকে কত কাঠখড় পুড়িয়ে যে খাপছাড়া করেছি।
______________________________________
তিন.
অনেকে মনে করেন, ইউনিকোড হলো বিভিন্ন ভাষার অসংখ্য হরফের বিশাল তালিকা। ধারণাটি পুরোপুরি সত্যি নয়। ভুল ধারণা হবার কারণ, ইউনিকোড ক্যারেক্টার সেটের প্রথম ২৫৬টি বর্ণ নেয়া ল্যাটিন-১ ক্যারেক্টার সেট থেকে। আবার ল্যাটিন-১ এর ভেতর ঢুকে গেছে অ্যাসকি কোড। তাই ইউনিকোডকে অ্যাসকি স্ট্যান্ডার্ডের স্রেফ বর্ধিত সংস্করণ ভেবে বসেন।

আরেকটি ধারণা, ইউনিকোড বুঝি ভাষা নিয়ে কাজ করে। না, ঠিক করে বললে, ইউনিকোড কাজ করে ভাষার লিখিত রূপ বা লিপি নিয়ে। আর লিপি মানে তো শুধু স্বরর্বণ-ব্যঞ্জনবর্ণ নয়। বর্ণ ছাড়াও প্রত্যেকটি লিপির থাকে নিজস্ব বিরাম চিহ্ন, বৈশিষ্ট্যসূচক চিহ্ন, গাণিতিক চিহ্ন, কারিগরি চিহ্ন, তীর চিহ্ন, ডিংগব্যাটস। সেগুলোও ইউনিকোডে তালিকাভুক্ত হয়। তালিকার পাশপাশি এটি বর্ণগুলোর প্রকৃতি, আচরণ, মাত্রার ব্যবহার, ব্যাকরণগত প্রয়োগ, সেইসাথে সর্টিংয়ের বিষয়টিও বিবেচনা করে। কত কাজ করে রে ইউনিকোড!

বাংলা, ইংরেজিসহ আধুনিক সব ভাষার লিখিত রূপই ইউনিকোড স্ট্যান্ডার্ডের অন্তর্ভুক্ত। পাশাপাশি এটি অনেক প্রাচীন ভাষার লিপিও সাপোর্ট করে। এখনও আরও লিপি ঢুকছে, এবং আরও লিপি লাইনে দাঁড়িয়ে আছে পরের সংস্করণগুলোতে অন্তর্ভুক্ত হবার আশায়।

ইউনিকোডের নীতিমালায় বলা আছে, একবার কোনো লিপি অন্তর্ভুক্ত হলে তা বাদ দেয়া বা নতুন করে এনকোডিং করা যায় না। কোনো বর্ণ প্রথম সংস্করণে যেভাবে অনূদিত হয়, পরের সংস্করণগুলোতেও সেভাবে অনূদিত হবে। তাই ইউনিকোড একটি স্থায়ী স্ট্যান্ডার্ড এবং এর সংস্করণগুলো একটি অন্যটির সঙ্গে কম্পাটিবল। বিশ্বের প্রায় সব কোম্পানি এখন এ স্ট্যান্ডার্ডকে মেনে নিয়ে তাদের অ্যাপ্লিকেশন বানাচ্ছে। যেসব অপারেটিং সিস্টেম বা অ্যাপ্লিকেশন সফটওয়্যারে এখনও ইউনিকোড সাপোর্ট নেই, তারাও তা শিগগিরই আপডেট করছে।
______________________________________
পরের কিস্তি আগামীকাল।

যাওয়ার আগে খুচরো ভাবনা : এত চিহ্ন ইউনিকোডের তালিকায়, ইমোটিকনও কি আছে তাতে? এটাও তো আবেগী ভাষার লিখিত রূপ। ম্যাসেঞ্জার খুললেই দেখা যায় এক ঝাঁক ইমোটিকন, একেকটা আইকন একেক রকম আবেগ-অনুভূতি প্রকাশ করে। সত্যিই প্রকাশ করতে পারছে তো মানুষের আবেগ, অনুভূতি? নাকি সাইবার রাজ্যে ইমোটিকন দিয়ে আরও আড়াল করে ফেলছি আমাদের ভেতরকার অনুভূতিগুলো?

Sunday, February 3, 2008

ইউনিকোড পাঠ ০২

আচ্ছা, ইউনিকোড জানা থাকলে কি লোডশেডিং ঠেকানো যায়? ইউনিকোড কি জেনারেটর বা আইপিএস-এর কাজ করে? অথবা ইউনিকোড কোম্পানির জুতা কি টেকসই?

বাপ! যথেষ্ট!

কোনো বন্ধু আপনাকে এমন সব প্রশ্ন করলে বুঝবেন, তাঁর সময় হয়েছে এ লেখা পড়ার।

দ্বিতীয় কিস্তি পড়া যাক এবার।
____________________________________
দুই.
ইউনিকোডের আগে কম্পিউটারে হাজারটা ক্যারেক্টার এনকোডিং পদ্ধতি ছিল। তার একেকটা মান ছিল একেক রকম। কম্পিউটার সংশ্লিষ্ট কোম্পানিগুলো নিজেদের দরকারে ভিন্ন ভিন্ন এনকোডিং অনুসরণ করত। ফলে বহুভাষা নিয়ে কাজ করার সময় কম্পিউটারে কয়েক ধরনের এনকোডিং স্ট্যান্ডার্ড ব্যবহারের দরকার হতো। আবার স্ট্যান্ডার্ডের আকারও এত বড় ছিল না যে এক স্ট্যান্ডার্ডে সব বর্ণ যুক্ত করা যাবে। বিভিন্ন এনকোডিং স্ট্যান্ডার্ড সাপোর্ট দিতে হলে ডেটা করাপ্টের আশঙ্কা থাকত।

নব্বুই দশকের গোড়ার দিকে চালু হয় ইউনিকোড। এটি বিশ্বজুড়ে স্বীকৃত একটি আন্তর্জাতিক বর্ণ সংকেতায়ন ব্যবস্থা। এতে প্রতিটি ভাষার অক্ষরের জন্য আলাদা আলাদা কোড বা নম্বর বরাদ্দ থাকে। ফলে কম্পিউটারে একাধিক ভাষার বর্ণ নিয়ে কাজ করা, তা বিশ্বব্যাপী বিনিময় করা বেশ সহজ হয়ে যায়। এ ব্যবস্থা প্ল্যাটফর্ম, প্রোগ্রাম ও ভাষার জটিলতামুক্ত। যুক্তরাষ্ট্রের ‘ইউনিকোড কনসোর্টিয়াম’ নামে একটি প্রতিষ্ঠান এ স্ট্যান্ডার্ড রক্ষণাবেক্ষণের দায়িত্ব পালন করে থাকে।

বর্তমানে এ কনসোর্টিয়ামের সদস্য হিসেবে শীর্ষস্থানীয় কম্পিউটার পণ্য নির্মাতা, সফটওয়্যার কোম্পানি, ডেটাবেজ কোম্পানি, গবেষণাকেন্দ্র, আন্তর্জাতিক সংস্থা ও বিভিন্ন ধরনের সংগঠনের পাশাপাশি রয়েছে আন্তর্জাতিক সংগঠন। ইউনিকোড স্ট্যান্ডার্ডের প্রয়োগ, পরিবর্ধন, রক্ষণাবেক্ষণ ও প্রচারে আগ্রহী যে কেউ এর সদস্য হতে পারে। ইউনিকোর্ড স্ট্যান্ডার্ড সম্পর্কিত কোনো বক্তব্য থাকলে ব্যক্তিগতভাবে কেউ নামমাত্র মূল্যে সদস্য হয়ে তা বলতে পারেন।

ইউনিকোডের প্রথম সংস্করণ মুক্তি পায় ১৯৯১ সালে। পরবর্তীতে ISO/IEC 10646 Universal Multiple-Octet Coded Character Set(UCS)-এর সাথে একসাথে কাজ করে ১৯৯৩ সালে ১.১ সংস্করণ প্রকাশ করে। ১৯৯৬ সালে ইউনিকোড ২.০ প্রকাশিত হয় যেখানে ব্রাহ্মীলিপির অন্তর্ভুক্ত লিপির সঙ্গে বাংলাও যুক্ত হয়। এরপর ১৯৯৮ সালে ইউনিকোড ২.১, ১৯৯৯ সালে ইউনিকোড ৩.০ প্রকাশিত হয়। ২০০৩ সালে ইউনিকোড ৪.০ মুক্তি পায়। ২০০৫-এ এর মুক্তি পায় ৪.১ সংস্করণ। আর এখন এর ৫.০ সংস্করণ চলছে।
____________________________________
ভেবেছিলাম, দুপুরে ভাত খেয়েই তুলে দিবো পরের কিস্তি। টের পেয়ে ঢাকা বিদ্যুৎ কর্তৃপক্ষ দিলো সুইচ অফ করে। ফলাফল, দু ঘন্টা ইউনিকোডহীন জীবন। মানে এটাই বাস্তব, বিদ্যুৎ না থাকলে এই ইউনিকোড ফিউনিকোড কোনো কাজে দেয় না।

পরের কিস্তি দিচ্ছি।

Saturday, February 2, 2008

ইউনিকোড পাঠ ০১

শূন্য.
শুনে খুশি হবেন, এ লেখা প্রতি পাঁচ লাইন পর পাঠক হারাবে।

প্রথম কারণ, মূল লেখাটা বেশ বড়। গজ-ফুটে মাপলে এই এত্ত বড়। লিখেছিলাম অনেক আগে। কেটেছেঁটে মাসিক কম্পিউটার জগৎ-এ ছাপা হয়। প্রচ্ছদ রচনা হিসেবে। ফেব্রুয়ারি দুই হাজার পাঁচে।

দ্বিতীয় কারণ, লেখাটা ইউনিকোড ও বাংলা কম্পিউটিং নিয়ে। কম্পিউটার সংক্রান্ত। ফলে কারিগরি শব্দ প্রচুর। শব্দের ভারে দড়ি ছিড়ে যায়যায়। আর বাক্যগুলো ছিল এত্তো লম্বা, কমসে কম ট্রেনের দুই বগির সমান, সেটা স্রেফ আমার লেখনী শৈলীর গুণে।

যাই হোক, তবু দিলাম, সাহস করে, বেশ কিছু অংশ বাদ এবং বদল করে। তথ্য হালনাগাদ করতে পারিনি সবখানে। কোথাও তথ্যগত ভুল থাকলে, অস্পষ্টতা থাকলে, জটিল বাক্যবিন্যাস থাকলে, মন্তব্যঘরে লিখে দিন নিঃসংকোচে, সরাসরি।

এক.
বাংলা কম্পিউটিংয়ে সবচেয়ে বেশি গুরুত্ব দেয়া হয় ইউনিকোড বিষয়টির ওপর। কিন্তু ইউনিকোড কী, বাংলা কম্পিউটিংয়ে এর গুরুত্ব কতটুকু, এ নিয়ে অনেকের ধারণাই স্পষ্ট নয়।


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