সরাসরি পর্বে যান
পর্ব ০৭ · ৫৫-এর মধ্যে · মডিউল ১

বাংলা টাইপিং আর Unicode — অভ্র, বিজয় আর ফন্টের সমস্যা

Bangla Typing & Unicode — Avro, Bijoy, Fonts and Why Text Turns into “Avwg”

Taught in Bangla, this lesson explains that computers store characters as numbers and compares phonetic (Avro) and fixed-layout (Bijoy) Bangla typing on computers and phones. It covers Unicode code points for Bangla, how kar signs and conjuncts are stored, ANSI versus Unicode and why text becomes 'Avwg', converting old Bijoy files to Unicode, fixing boxes and broken conjuncts, typing practice and AI-assisted writing cautions.

এই পর্বে যা শিখবেন

  • কম্পিউটার ও ফোনে বাংলা লেখার দুই পদ্ধতি — ফোনেটিক আর নির্দিষ্ট লেআউট — এবং কীভাবে চালু করবেন
  • Unicode আর পুরোনো ANSI (বিজয়-SutonnyMJ) পদ্ধতির আসল পার্থক্য, আর “Avwg” সমস্যার রহস্য
  • পুরোনো বিজয় ফাইলকে Unicode-এ রূপান্তর আর যাচাইয়ের ধাপ
  • বাংলা অক্ষর, কার আর যুক্তবর্ণ কম্পিউটারের ভেতরে কীভাবে থাকে — code point আর UTF-8
  • বক্স, “????”, ভাঙা যুক্তবর্ণ, Excel-এ হিজিবিজি — সাধারণ সমস্যার দ্রুত সমাধান

১ · আপনি লেখেন অক্ষর, কম্পিউটার রাখে সংখ্যা

একটি খুব চেনা ঘটনা দিয়ে শুরু করি। সুমি একটি অফিসে কাজ করেন। সহকর্মী পেনড্রাইভে একটি নোটিশের ফাইল দিলেন। সুমি বাসায় ল্যাপটপে খুলে দেখলেন, পুরো নোটিশ এমন দেখাচ্ছে:

Avwg evsjv‡`k‡K fv‡jvevwm

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

প্রথম মৌলিক সত্যটি হলো: কম্পিউটার অক্ষর চেনে না, চেনে শুধু সংখ্যা। পর্ব ০৪-এ দেখেছেন, মেমরিতে সবকিছু থাকে 0 আর 1 হয়ে, ৮টি বিট মিলে এক byte. তাহলে “অ” কীভাবে রাখা হয়? উত্তর: সবাই মিলে একটি তালিকা বানায় — “অমুক নম্বর মানে অমুক অক্ষর”। এই তালিকা বা চুক্তির নাম encoding.

ট্রেনের টিকিটের কথা ভাবুন। টিকিটে লেখা থাকে “বগি ঝ, আসন ৪২”। নম্বর দেখে আপনি নিজের আসন খুঁজে পান, কারণ রেলওয়ে আর আপনি একই নম্বর-ব্যবস্থা মানছেন। এখন ধরুন অন্য এক রেল কোম্পানি একই নম্বর দিয়ে আলাদা আসন বোঝায় — তাহলে আপনি অন্যের আসনে বসে পড়বেন! Encoding-ও ঠিক তাই। লেখার সময় আর পড়ার সময় একই তালিকা না মানলে নম্বরগুলো ভুল অক্ষর হয়ে দেখা দেয়।

ইংরেজির জন্য প্রথম জনপ্রিয় তালিকা ছিল ASCII (১৯৬০-এর দশক)। এতে মাত্র ১২৮টি ঘর — ইংরেজি বড়-ছোট হাতের অক্ষর, অঙ্ক, যতিচিহ্ন। যেমন A = 65, a = 97. বাংলার জন্য কোনো জায়গা ছিল না। পরে ৮ বিট দিয়ে আরও ১২৮টি ঘর যোগ হলো, আর বিভিন্ন দেশ সেই বাড়তি ঘরে নিজেদের অক্ষর বসাতে লাগল। একই নম্বর এক দেশে এক অক্ষর, অন্য দেশে আরেক — বিশৃঙ্খলা।

এই বিশৃঙ্খলার সমাধান Unicode: পৃথিবীর প্রায় সব ভাষার প্রতিটি অক্ষরকে একটি করে স্থায়ী নম্বর দেওয়া, যেটি সবাই মানবে। এই নম্বরের নাম code point, লেখা হয় U+ দিয়ে, hexadecimal-এ (পর্ব ১৬-এ বিস্তারিত)। যেমন:

“আমি” লিখলে ফাইলে আসলে কী থাকে

You see letters; the file stores numbers

  1. আপনি লেখেনআমিচোখে তিনটি চিহ্ন
  2. Unicode নম্বর0986 09AE 09BFআ · ম · ি-কার
  3. ফাইলে বাইটE0 A6 86 …UTF-8, ৯ বাইট
ছবি ৭.১ — আপনি যা দেখেন আর ফাইলে যা থাকে, দুটি আলাদা জিনিস। মাঝখানের চুক্তিটিই encoding.
মূল ধারণা

লেখার পেছনে দুটি আলাদা স্তর আছে। এক — কোন নম্বর মানে কোন অক্ষর (encoding, যেমন Unicode). দুই — অক্ষরটি দেখতে কেমন হবে (font). Unicode-এ “ক” সবসময় U+0995; সেটি SolaimanLipi-তে এক রকম, Noto Sans Bengali-তে আরেক রকম সাজে দেখাবে, কিন্তু সবখানে “ক”-ই থাকবে। পুরোনো বিজয়-পদ্ধতিতে এই দুই স্তর গুলিয়ে গিয়েছিল — সেটিই সব সমস্যার মূল (অংশ ৫)।

২ · বাংলা টাইপ করার দুই পথ — ফোনেটিক আর নির্দিষ্ট লেআউট

কি-বোর্ডে তো ইংরেজি অক্ষর ছাপা। তাহলে বাংলা লিখবেন কীভাবে? দুটি সম্পূর্ণ আলাদা চিন্তা আছে।

🔤 ফোনেটিক (উচ্চারণ ধরে)

ইংরেজি অক্ষরে উচ্চারণ লিখুন, সফটওয়্যার বাংলা বানিয়ে দেবে: ami → আমি, bangladesh → বাংলাদেশ. শিখতে প্রায় কিছুই লাগে না। এটিই phonetic typing.

অভ্র, Google Input Tools, Gboard, Ridmik

🎹 নির্দিষ্ট লেআউট (কি-ম্যাপ)

প্রতিটি কি-তে একটি নির্দিষ্ট বাংলা অক্ষর বসানো — যেমন বিজয়ে Shift ছাড়া J চাপলে ক, Shift + J চাপলে খ. প্রথমে মুখস্থ করতে হয়, কিন্তু অভ্যাস হলে খুব দ্রুত। এর নাম keyboard layout.

বিজয়, জাতীয় কি-বোর্ড, প্রভাত

প্রধান টুলগুলো এক নজরে

টুলধরনকোথায়মনে রাখার কথা
অভ্র কি-বোর্ডফোনেটিক + কয়েকটি লেআউটWindows (Linux-এ সমমানের টুল আছে)বিনামূল্যে, Unicode; ভাষা বদলানোর ডিফল্ট কি সাধারণত F12
বিজয়নির্দিষ্ট লেআউটWindows, Mac, Androidবাণিজ্যিক; পুরোনো সংস্করণে ANSI, নতুনগুলোতে Unicode-এ লেখার সুবিধাও আছে
জাতীয় কি-বোর্ডনির্দিষ্ট লেআউটবিভিন্ন কি-বোর্ড সফটওয়্যারেবাংলাদেশ কম্পিউটার কাউন্সিলের (BCC) প্রমিত লেআউট
প্রভাতনির্দিষ্ট লেআউটLinux-এ জনপ্রিয়, অভ্রতেও আছেমুক্ত সফটওয়্যার জগতের লেআউট
Gboard / Ridmikফোনেটিক + লেআউটAndroid (Gboard iPhone-এও)ফোনে সবচেয়ে প্রচলিত; সবই Unicode
Google Input Toolsফোনেটিকব্রাউজারে, Google-এর সেবায়কিছু ইনস্টল না করেই Gmail, Docs-এ বাংলা

কোনটি ভালো? যিনি মাঝেমধ্যে লেখেন — চ্যাট, ইমেইল, ফেসবুক — তাঁর জন্য ফোনেটিক সবচেয়ে সহজ। যিনি প্রতিদিন ঘণ্টার পর ঘণ্টা বাংলা টাইপ করেন — প্রেস, অফিসের চিঠিপত্র, ডেটা এন্ট্রি — তাঁর জন্য নির্দিষ্ট লেআউট সাধারণত দ্রুততর। কারণ ফোনেটিকে “ক্ষ” লিখতে ৩–৪টি কি চাপতে হয়, আর ভুল বানানের ঝুঁকিও থাকে (যেমন ki লিখে “কি” আসবে না “কী”, তা নিজেকে খেয়াল রাখতে হয়)।

সবচেয়ে গুরুত্বপূর্ণ প্রশ্ন টুল নয়, encoding. অভ্র, Gboard, Ridmik, Google Input Tools — সবই Unicode-এ লেখে। বিজয়ের পুরোনো সংস্করণে বা ভুল সেটিংসে লিখলে লেখা ANSI-তে জমা হতে পারে। তাই যে টুলই ব্যবহার করুন, নিশ্চিত হোন আউটপুট Unicode কি না (অংশ ৫-এ পরীক্ষার সহজ উপায় আছে)।

১৯৮৮ সালে মোস্তাফা জব্বার প্রকাশ করেন বিজয় কি-বোর্ড ও সফটওয়্যার, প্রথমে Apple Macintosh কম্পিউটারের জন্য। এর হাত ধরেই ছাপাখানা, সংবাদপত্র আর অফিসে কম্পিউটারে বাংলা লেখা ছড়িয়ে পড়ে। ২০০৩ সালে মেহদী হাসান খান (OmicronLab) প্রকাশ করেন অভ্র কি-বোর্ড — বিনামূল্যে, Unicode-ভিত্তিক, আর ফোনেটিক টাইপিংয়ের সুবিধাসহ। অনেকের মতে ইন্টারনেটে বাংলা লেখার বিস্ফোরণের পেছনে অভ্রর বড় ভূমিকা আছে (ভাবনার প্রশ্ন ৩)।

৩ · কম্পিউটার আর ফোনে বাংলা কি-বোর্ড চালু করা

বেশিরভাগ ক্ষেত্রে পাঁচ মিনিটের কাজ। আপনার ডিভাইস অনুযায়ী ট্যাব বেছে নিন:

  1. অভ্রর অফিশিয়াল ওয়েবসাইট (omicronlab.com) থেকে Avro Keyboard ডাউনলোড করে ইনস্টল করুন। অচেনা সাইট থেকে “ক্র্যাক” বা “মড” নামানো থেকে বিরত থাকুন — অভ্র এমনিতেই বিনামূল্যে।
  2. অভ্র চালু হলে পর্দায় ছোট একটি টুলবার আসবে। সেখান থেকে Avro Phonetic লেআউট বেছে নিন।
  3. Word, Notepad বা ব্রাউজারে গিয়ে F12 চেপে বাংলা মোডে যান, তারপর লিখুন ami banglay gan gai → আমি বাংলায় গান গাই. আবার F12 চাপলে ইংরেজি।
  4. বাংলা দেখাতে Windows-এ আগে থেকেই Unicode ফন্ট (Nirmala UI, Vrinda) থাকে; চাইলে SolaimanLipi বা Kalpurush ইনস্টল করে নিতে পারেন।

কিছু ইনস্টল না করেও চলে, তবে লেআউটগুলো বিজয় বা ফোনেটিকের মতো নয়:

  1. Settings → Time & language → Language & region-এ যান (Windows 11).
  2. Add a language চেপে বাংলা (বাংলাদেশ) যোগ করুন।
  3. ভাষাটির পাশের … → Language options-এ গিয়ে কি-বোর্ড লেআউট বেছে নিন।
  4. ভাষা বদলাতে Win + Space চাপুন।
  1. যেকোনো লেখার ঘরে কি-বোর্ড খুলে ⚙️ (Settings) চাপুন, অথবা ফোনের Settings থেকে Gboard খুঁজুন।
  2. Languages → Add keyboard-এ গিয়ে বাংলা (বাংলাদেশ) বেছে নিন।
  3. লেআউট বাছাইয়ে ফোনেটিক ধরন নিলে ইংরেজিতে ami লিখলেই উপরে “আমি” প্রস্তাব আসবে; সরাসরি বাংলা অক্ষরের লেআউটও আছে।
  4. কি-বোর্ডের 🌐 বোতাম বা স্পেসবার চেপে ধরে ভাষা বদলান। Ridmik Keyboard ব্যবহার করলে তার নিজের সেটিংসে একই রকম বিকল্প পাবেন।

দুটিতেই বাংলা কি-বোর্ড আগে থেকে থাকে। Mac-এ System Settings → Keyboard → Input Sources-এ গিয়ে Bangla যোগ করুন; iPhone-এ Settings → General → Keyboard → Keyboards → Add New Keyboard. iPhone-এ Gboard ইনস্টল করেও ফোনেটিক বাংলা লেখা যায়। সবই Unicode, তাই অন্য যেকোনো ডিভাইসে একই দেখাবে।

অফিসে কেউ বললেন “বিজয় দিয়ে SutonnyMJ ফন্টে লিখতে হবে” — সেটি সম্ভবত ছাপাখানা বা পুরোনো ফাইলের সাথে মেলানোর দরকারে। কিন্তু সেই লেখা ওয়েবসাইট, ইমেইল, ফেসবুক বা ডেটাবেসে দিলে অন্যরা হিজিবিজি দেখবেন, আর Google খুঁজেও পাবে না। নিয়ম মনে রাখুন: পর্দায় পড়ার বা অনলাইনে দেওয়ার সবকিছু Unicode-এ।

৪ · Unicode-এর ভেতরে বাংলা — code point, কার আর যুক্তবর্ণ

Unicode বাংলার জন্য ১২৮টি ঘরের একটি ব্লক রেখেছে: U+0980 থেকে U+09FF (সব ঘরে এখনো অক্ষর বসানো হয়নি)। এখানে আছে স্বরবর্ণ, ব্যঞ্জনবর্ণ, কার-চিহ্ন, ং ঃ ঁ, বাংলা অঙ্ক ০–৯ (U+09E6–U+09EF), এমনকি টাকার চিহ্ন ৳ (U+09F3).

অক্ষরCode pointধরন
অ, আ, ইU+0985, U+0986, U+0987স্বরবর্ণ
ক, খ, গU+0995, U+0996, U+0997ব্যঞ্জনবর্ণ
া, ি, েU+09BE, U+09BF, U+09C7কার-চিহ্ন (একা দাঁড়ায় না)
্ (হসন্ত)U+09CDযুক্তবর্ণ বানানোর “আঠা”
ৎ (খণ্ড-ত)U+09CEআলাদা অক্ষর, পরে যোগ হয়েছে
০, ১, ৯U+09E6, U+09E7, U+09EFবাংলা অঙ্ক

যুক্তবর্ণের জন্য আলাদা নম্বর নেই

বাংলায় কয়েকশো যুক্তবর্ণ। প্রত্যেকটিকে আলাদা নম্বর দিলে তালিকা বিশাল হয়ে যেত, আর নতুন যুক্তবর্ণ এলে আবার নম্বর লাগত। Unicode-এর সমাধান খুব বুদ্ধিমান: যুক্তবর্ণ রাখা হয় অংশগুলো আর মাঝখানে হসন্ত (্) দিয়ে। যেমন ক্ষ = ক + ্ + ষ. পর্দায় তিনটিকে জোড়া লাগিয়ে একটি সুন্দর আকৃতি আঁকার কাজ ফন্ট আর shaping engine-এর। নিচে “ক্ষমা” লেখার পুরো যাত্রা দেখুন — “পরে” চাপুন:

  1. কি চাপলেনkkhomaইংরেজি অক্ষর
  2. অভ্রক ্ ষ ম ানিয়ম মেনে রূপান্তর
  3. ফাইলে৫টি code point১৫ বাইট
  4. পর্দায়ক্ষমাফন্ট জোড়া লাগায়
কি-বোর্ডআপনি যা চাপলেন
k  k  h  o  m  a
↑ এখনো এগুলো শুধু ইংরেজি কি-চাপ
অভ্রর নিয়মউচ্চারণ থেকে অক্ষর
kkh → ক্ষ   (ক + ্ + ষ)
o   → কিছু না (অন্তর্নিহিত অ)
ma  → মা    (ম + া)
ফাইলের ভেতরেUnicode code point
U+0995  ক   ব্যঞ্জনবর্ণ
U+09CD  ্   হসন্ত
U+09B7  ষ   ব্যঞ্জনবর্ণ
U+09AE  ম   ব্যঞ্জনবর্ণ
U+09BE  া   আ-কার
পর্দাShaping engine + ফন্ট
ক + ্ + ষ  →  ক্ষ  (ফন্টের একটি যুক্ত-আকৃতি)
ম + া      →  মা
ফলাফল:        ক্ষমা
  1. কি চাপা। আপনি অভ্রর ফোনেটিক মোডে kkhoma লিখলেন। কম্পিউটারের কাছে এগুলো এখনো ইংরেজি কি-চাপ মাত্র।
  2. অভ্রর রূপান্তর। অভ্রর নিয়মে kkh মানে ক্ষ, ব্যঞ্জনের পরে o মানে অন্তর্নিহিত “অ” (কোনো কার লাগে না), আর ma মানে মা. অভ্র তাই পাঠিয়ে দিল পাঁচটি বাংলা Unicode অক্ষর।
  3. ফাইলে জমা। ফাইলে গেল পাঁচটি code point — ক, হসন্ত, ষ, ম, আ-কার। খেয়াল করুন, “ক্ষ” নামে আলাদা কোনো নম্বর নেই! UTF-8-এ প্রতিটি ৩ বাইট, মোট ১৫ বাইট।
  4. পর্দায় আঁকা। দেখানোর সময় shaping engine বোঝে “ক + ্ + ষ” একসাথে একটি যুক্তবর্ণ, আর ফন্টের ভেতর থেকে ক্ষ-এর তৈরি আকৃতি (glyph) এনে আঁকে। ফন্টে আকৃতিটি না থাকলে দেখাবে ভাঙা “ক্‌ষ”।

ি-কার আগে দেখায়, কিন্তু পরে জমা থাকে

“কি” লিখলে চোখে ি-কার আগে, ক পরে। কিন্তু Unicode-এ জমা হয় উচ্চারণের ক্রমে: আগে ক, তারপর ি. একে বলে logical order. দেখানোর সময় shaping engine ি-কারকে বাঁ পাশে সরিয়ে আঁকে। ে-কার, ৈ-কারের ক্ষেত্রেও তাই। পুরোনো ANSI পদ্ধতিতে উল্টোটা হতো — যেভাবে দেখায় সেভাবেই জমা (visual order). এই পার্থক্যটি রূপান্তরের সময় অনেক ঝামেলার কারণ (অংশ ৬)।

একই শব্দ, দুই রকম লেখা — খোঁজ কেন ব্যর্থ হয়

কিছু অক্ষর Unicode-এ দুইভাবে লেখা যায়। যেমন য়: একটি একক code point (U+09DF), অথবা য (U+09AF) + নুক্তা ় (U+09BC). পর্দায় দুটো হুবহু এক, কিন্তু নম্বর আলাদা। ড় আর ঢ়-এরও একই অবস্থা, আর ো-কারকে ে + া দিয়েও লেখা যায়। ফলে একজনের ফোনে লেখা “ময়না” আরেকজনের কম্পিউটারে Ctrl + F দিয়ে খুঁজলে না-ও পাওয়া যেতে পারে! সফটওয়্যার এর সমাধান করে normalization দিয়ে — তুলনার আগে সব লেখাকে একটি নির্দিষ্ট রূপে আনা।

ৎ (খণ্ড-ত)-এর গল্পও মজার। শুরুতে Unicode-এ এর আলাদা নম্বর ছিল না; লেখা হতো ত + ্ + একটি অদৃশ্য নিয়ন্ত্রণ-চিহ্ন দিয়ে। ২০০৫ সালের Unicode 4.1-এ ৎ নিজের নম্বর পায় (U+09CE). তাই খুব পুরোনো কিছু ফাইলে “উৎসব” শব্দটি আজকের “উৎসব”-এর সাথে মেলে না।

নিজে চালিয়ে দেখুন — Unicode পরীক্ষক

নিচের ছোট প্রোগ্রামটি তিনটি বাংলা শব্দকে ভেঙে প্রতিটি code point, তার ধরন আর UTF-8-এ কত বাইট লাগে দেখায়। কোড বোঝার দরকার নেই — শুধু “চালান” চেপে আউটপুট পড়ুন:

const words = ["আমি", "ক্ষমা", "বাংলাদেশ"];
const enc = new TextEncoder();          // লেখাকে UTF-8 বাইটে বদলায়
function kind(cp) {
  if (cp === 0x09CD) return "হসন্ত (যুক্তবর্ণের আঠা)";
  if (cp >= 0x0985 && cp <= 0x0994) return "স্বরবর্ণ";
  if (cp >= 0x0995 && cp <= 0x09B9) return "ব্যঞ্জনবর্ণ";
  if (cp >= 0x09BE && cp <= 0x09CC) return "কার-চিহ্ন";
  if (cp >= 0x0981 && cp <= 0x0983) return "চিহ্ন (ঁ ং ঃ)";
  return "অন্যান্য";
}

for (const w of words) {
  const parts = [...w];                 // code point ধরে ভাগ
  console.log(`${w} → ${parts.length}টি code point, ${enc.encode(w).length} বাইট`);
  for (const ch of parts) {
    const cp = ch.codePointAt(0);
    const hex = cp.toString(16).toUpperCase().padStart(4, "0");
    const look = cp >= 0x0985 && cp <= 0x09B9 ? ch : "◌" + ch;
    console.log(`   U+${hex}  ${look}  ${kind(cp)}  (${enc.encode(ch).length} বাইট)`);
  }
}

আউটপুটের প্রথম লাইন আমি → 3টি code point, 9 বাইট: আ (U+0986), ম (U+09AE) আর ি-কার (U+09BF). “ক্ষমা”-তে 5টি code point, 15 বাইট — মাঝখানে U+09CD ◌্ হসন্ত স্পষ্ট দেখা যাচ্ছে। “বাংলাদেশ”-এ 8টি code point, 24 বাইট, যার মধ্যে দুটি আ-কার আর একটি ে-কার। খেয়াল করুন, ে-কার (U+09C7) জমা আছে দ (U+09A6)-এর পরে — logical order. আর প্রতিটি বাংলা অক্ষর ঠিক 3 বাইট. কার-চিহ্নের আগে ◌ বৃত্তটি শুধু বোঝার সুবিধার জন্য; চিহ্নগুলো একা দাঁড়াতে পারে না। চাইলে প্রথম লাইনে নিজের নাম বসিয়ে আবার চালান।

আরও গভীরে: একটি শব্দে “কয়টি অক্ষর” — প্রশ্নটির তিন রকম উত্তর হতে পারে: বাইট, code point, আর চোখে দেখা একক (grapheme cluster, যেমন “ক্ষ” একটি)। প্রোগ্রামিংয়ে এই তিনটি গুলিয়ে ফেলা বাংলা লেখা উল্টানো, কাটা বা গোনার সময় বাগের বড় উৎস। কোড দিয়ে এগুলো হাতে-কলমে দেখতে চাইলে পড়ুন JavaScript কোর্সের string ও বাংলা Unicode পর্ব; আর encoding-এর তত্ত্ব (BCD, ASCII, Unicode, প্যারিটি) আসছে পর্ব ১৮-এ।

৫ · ANSI বনাম Unicode — “Avwg” রহস্যের সমাধান

এবার সুমির নোটিশের রহস্য খুলি। Unicode জনপ্রিয় হওয়ার অনেক আগে, ১৯৮০–৯০-এর দশকে, কম্পিউটারে বাংলার কোনো সর্বজনীন নম্বর-ব্যবস্থা কার্যত ব্যবহারযোগ্য ছিল না। তখন একটি চতুর কৌশল নেওয়া হলো: ইংরেজি অক্ষরের নম্বরগুলোই রেখে দাও, কিন্তু এমন একটি ফন্ট বানাও যেখানে “A”-এর জায়গায় “অ”-এর ছবি আঁকা। এভাবে তৈরি ফন্টকে সাধারণভাবে বলা হয় ANSI ফন্ট বা legacy font — যেমন বিজয়ের SutonnyMJ.

ধরুন একটি দোকানে সব পণ্যের প্যাকেটে লেখা “চাল”, কিন্তু ভেতরে আসলে আটা। দোকানদার জানেন, তাই তাঁর খাতায় হিসাব মেলে। কিন্তু প্যাকেট অন্য দোকানে গেলে সবাই বিভ্রান্ত। ANSI ফন্টও তাই: ফাইলের ভেতরে আছে ইংরেজি অক্ষর (A, v, w, g), শুধু “মোড়ক” — SutonnyMJ ফন্ট — সেগুলোকে বাংলার মতো দেখায়। মোড়ক খুলে গেলেই আসল চেহারা বেরিয়ে পড়ে।

বিজয় (ANSI মোড)ফাইলে যা জমা হলো
আপনি টাইপ করলেন:  আমি
ফাইলে জমা:         41 76 77 67
ASCII হিসেবে পড়লে:  A  v  w  g
SutonnyMJ ফন্ট আছেমোড়ক ঠিক জায়গায়
A → অ-এর ছবি      v → া-এর ছবি
w → ি-এর ছবি      g → ম-এর ছবি
পর্দায়:  আমি   (অ + া পাশাপাশি = আ)
অন্য কম্পিউটার / ওয়েবSutonnyMJ নেই
সাধারণ ফন্ট A-কে A-ই দেখায়…
পর্দায়:  Avwg
evsjv‡`k  ← “বাংলাদেশ”-এর একই দশা
একই শব্দ Unicode-এযেকোনো বাংলা ফন্টে ঠিক
ফাইলে জমা:  U+0986  U+09AE  U+09BF
SolaimanLipi:  আমি      Noto Sans Bengali:  আমি
Nikosh:        আমি      ফোনের ডিফল্ট ফন্ট:   আমি
Google-এ খুঁজলেও পাওয়া যায়
  1. ANSI-তে টাইপ। বিজয়ের পুরোনো (ANSI) মোডে “আমি” লিখলে ফাইলে জমা হয় চারটি সাধারণ ইংরেজি অক্ষরের নম্বর: A, v, w, g. খেয়াল করুন, ি-কার (w) ম (g)-এর আগে জমা — চোখে যেভাবে দেখায় সেই ক্রমে (visual order). আর “আ”-এর নিজস্ব কোনো নম্বর নেই; অ + া পাশাপাশি বসিয়ে আ বানানো হয়েছে।
  2. SutonnyMJ থাকলে সব ঠিক। SutonnyMJ ফন্টে A-এর ঘরে অ-এর ছবি, v-এর ঘরে া-এর ছবি — এভাবে সাজানো। তাই যে কম্পিউটারে ফন্টটি আছে আর লেখাটির ফন্ট SutonnyMJ বেছে দেওয়া আছে, সেখানে পরিষ্কার “আমি” দেখা যায়। সুমির অফিসের কম্পিউটারে ঠিক এটাই হচ্ছিল।
  3. ফন্ট না থাকলে মুখোশ খুলে যায়। সুমির ল্যাপটপে SutonnyMJ নেই, তাই Word অন্য সাধারণ ফন্ট দিয়ে দেখাল — আর সেখানে A মানে A-ই। ফলাফল “Avwg”. ওয়েবসাইট, ইমেইল বা ফোনে পাঠালেও একই দশা। Google-এর কাছেও এটি “Avwg” — “আমি” খুঁজলে এই লেখা কখনো আসবে না।
  4. Unicode-এ এই সমস্যা নেই। Unicode-এ “আমি” মানে তিনটি নির্দিষ্ট বাংলা নম্বর। যে ফন্টেই দেখান, যেকোনো ফোনে বা দেশে খুলুন — “আমি”-ই দেখাবে, বড়জোর অক্ষরের সাজ একটু আলাদা হবে। এজন্যই লেখার মালিকানা থাকা উচিত encoding-এর হাতে, ফন্টের হাতে নয়।

ফন্ট চেনার তালিকা

ফন্টধরনকোথায় বেশি দেখা যায়
SolaimanLipi, KalpurushUnicode, বিনামূল্যেওয়েবসাইট, ব্লগ, সাধারণ লেখা
NikoshUnicode, বিনামূল্যেসরকারি দপ্তরের Unicode নথি
Noto Sans / Noto Serif BengaliUnicode, বিনামূল্যে (Google)Android, ওয়েব, Google Fonts
Nirmala UI, VrindaUnicode (Windows-এর সাথে আসে)Windows-এর মেনু ও সাধারণ লেখা
SutonnyMJ ও অন্যান্য “…MJ” ফন্টANSI (legacy)ছাপাখানা, সংবাদপত্রের পুরোনো প্রক্রিয়া, অনেক অফিসের পুরোনো নথি

লেখাটি Unicode না ANSI — দশ সেকেন্ডের পরীক্ষা: লেখাটির কিছু অংশ সিলেক্ট করে ফন্ট বদলে দিন অন্য কোনো Unicode ফন্টে (যেমন Nirmala UI). লেখা বাংলাই থাকলে Unicode. হঠাৎ “Avwg”-এর মতো ইংরেজি হিজিবিজি হয়ে গেলে ANSI. আরেকটি উপায়: লেখাটি কপি করে Notepad-এ পেস্ট করুন — ANSI লেখা সেখানে ইংরেজি অক্ষর হয়ে যায়।

SutonnyMJ কেন এখনো আছে? ছাপাখানার বহু বছরের টেমপ্লেট, ফর্ম আর প্রশিক্ষিত কর্মী এই পদ্ধতিতে অভ্যস্ত; পুরোনো কিছু ডিজাইন সফটওয়্যারও একসময় বাংলা Unicode ঠিকমতো দেখাতে পারত না। তাই দীর্ঘদিন ছাপার কাজে ANSI ছিল নিরাপদ পথ। তবে সরকারি দপ্তরসহ অনেক প্রতিষ্ঠান এখন Unicode (যেমন Nikosh) ব্যবহারে উৎসাহ দিচ্ছে। ভাবনার প্রশ্ন ১-এ এর খরচ-লাভ বিস্তারিত দেখুন।

৬ · পুরোনো বিজয় ফাইলকে Unicode-এ রূপান্তর

সুমির সমস্যার দুটি সমাধান। দ্রুত সমাধান: ল্যাপটপে SutonnyMJ ফন্ট ইনস্টল করা — তাহলে ফাইলটি ঠিক দেখাবে, কিন্তু অন্য কাউকে পাঠালে আবার একই সমস্যা। স্থায়ী সমাধান: লেখাটিকেই Unicode-এ রূপান্তর করা। নিচের ধাপগুলো দেখুন:

  1. চিনুনSutonnyMJ?ফন্টের নাম দেখুন
  2. কপিCtrl + Cমূল ফাইল অক্ষত রাখুন
  3. কনভার্টারBijoy → Unicodeদিক ঠিক করুন
  4. নতুন ফন্টNikoshUnicode ফন্ট দিন
  5. প্রুফ দেখুনযুক্তবর্ণ, য়, ৎমিলিয়ে নিন
  1. আগে চিনে নিন। Word-এ লেখার ওপর ক্লিক করে ফন্টের ঘর দেখুন। নাম SutonnyMJ বা “MJ” দিয়ে শেষ হলে লেখাটি প্রায় নিশ্চিতভাবে ANSI. আগের অংশের দশ সেকেন্ডের পরীক্ষাটিও করে নিন। Unicode লেখাকে ভুল করে “Bijoy → Unicode” কনভার্টারে দিলে উল্টো নষ্ট হয়ে যাবে।
  2. কপি করুন, মূল ফাইল রেখে দিন। সব লেখা সিলেক্ট করে কপি করুন (Ctrl + A, তারপর Ctrl + C). মূল ফাইলটি আলাদা রেখে দিন — রূপান্তরে কিছু ভুল হলে মিলিয়ে দেখার জন্য দরকার হবে।
  3. কনভার্টারে দিন। অনলাইনে অনেক “Bijoy to Unicode” কনভার্টার আছে; নিজের কম্পিউটারে চালানো যায় এমন কনভার্টার সফটওয়্যারও পাওয়া যায়। দিক ঠিক করুন — Bijoy/ANSI থেকে Unicode. গোপনীয় নথি (বেতন, ব্যক্তিগত তথ্য) অচেনা ওয়েবসাইটে পেস্ট না করে নিজের কম্পিউটারে চলে এমন টুল ব্যবহার করা নিরাপদ।
  4. Unicode ফন্ট বসান। রূপান্তরিত লেখা নতুন ফাইলে পেস্ট করে ফন্ট দিন Nikosh, SolaimanLipi বা Kalpurush. এখন লেখাটি যেকোনো কম্পিউটারে, ইমেইলে, ওয়েবসাইটে ঠিক দেখাবে, আর খোঁজাও যাবে।
  5. প্রুফ দেখুন — এটিই আসল কাজ। কনভার্টার নিয়ম মেনে চলে, কিন্তু ANSI-তে একই আকৃতি কয়েক রকমভাবে বানানো যেত। তাই বিশেষ করে মিলিয়ে দেখুন: যুক্তবর্ণ (ক্ষ, ঙ্গ, ন্ত্র), রেফ (র্), ি/ে/ৈ-কারের অবস্থান, য়, ৎ আর ংশ-এর মতো জায়গা। মূল ছাপা কপির সাথে অন্তত এক অনুচ্ছেদ শব্দ ধরে মিলিয়ে নিন।

রূপান্তর কঠিন কেন? কারণ ANSI-তে লেখা হতো দেখতে যেমন সেভাবে, আর Unicode-এ রাখতে হয় উচ্চারণের ক্রমে। “কি” ANSI-তে “ি + ক”, Unicode-এ “ক + ি”। কনভার্টারকে প্রতিটি ি-কার, ে-কার পেছনের অক্ষরের পরে সরাতে হয় — আর যুক্তবর্ণের আগে বসা ি-কার হলে কতগুলো অক্ষর পেরিয়ে সরাতে হবে, সেটা বোঝা কঠিন। এজন্যই “স্ত্রী”, “কৃষ্ণ”-এর মতো শব্দে রূপান্তরের ভুল সবচেয়ে বেশি হয়।

৭ · সাধারণ সমস্যা আর সমাধান — বক্স, “????”, ভাঙা যুক্তবর্ণ

বাংলা লেখায় যত সমস্যা দেখবেন, প্রায় সবগুলো তিনটি স্তরের কোনো একটির: encoding (নম্বর ভুল পড়া), font (আঁকার ছবি নেই), অথবা shaping (জোড়া লাগানোর নিয়ম জানা নেই)। লক্ষণ দেখে স্তর চিনতে শিখুন:

যা দেখছেনআসল কারণসমাধান
Avwg evsjv‡`kANSI লেখা, SutonnyMJ ফন্ট নেইUnicode-এ রূপান্তর (অংশ ৬), অথবা অস্থায়ীভাবে ফন্ট ইনস্টল
☐☐☐ (ফাঁকা বক্স)Unicode ঠিক আছে, কিন্তু বাংলা ফন্ট নেইএকটি Unicode বাংলা ফন্ট ইনস্টল করুন
????কোনো ধাপে লেখা বাংলা-না-বোঝা encoding-এ সেভ হয়ে নম্বরগুলো হারিয়ে গেছেমূল ফাইল থেকে আবার UTF-8-এ সেভ করুন; “????” থেকে লেখা আর ফেরানো যায় না
আমি জাতীয় অদ্ভুত অক্ষরUTF-8 বাইটকে অন্য (ইউরোপীয়) encoding ধরে পড়া হয়েছেসফটওয়্যারে encoding UTF-8 বেছে নিয়ে আবার খুলুন
ক্‌ষ, ন্‌ত (হসন্ত দেখা যাচ্ছে)সফটওয়্যার বা ফন্ট যুক্তবর্ণ গঠন করতে পারছে নাসফটওয়্যার/ফন্ট আপডেট; Adobe-এর কিছু অ্যাপে Paragraph-এর “World-Ready” composer বেছে নিন
PDF থেকে কপি করলে হিজিবিজি বা উল্টো কারPDF-এ অক্ষরের আকৃতি আছে, কিন্তু সঠিক Unicode তথ্য নেই (প্রায়ই ANSI ফন্টে তৈরি)মূল Word ফাইল চেয়ে নিন; না পেলে কনভার্টার বা OCR, তারপর প্রুফ
Excel-এ CSV খুললে বাংলা ভাঙাফাইলটি UTF-8, কিন্তু Excel অন্য encoding ধরে খুলেছেসেভের সময় “CSV UTF-8 (Comma delimited)”; খোলার সময় Data → From Text/CSV → File origin: UTF-8

UTF-8 — বাংলা অক্ষর কেন ৩ বাইট

Unicode বলে দেয় কোন অক্ষরের নম্বর কত। কিন্তু সেই নম্বর ফাইলে বা ইন্টারনেটে বাইট হিসেবে কীভাবে লেখা হবে, তার নিয়ম আলাদা। সবচেয়ে প্রচলিত নিয়ম UTF-8 — আজকের প্রায় সব ওয়েবপেজ এতে লেখা। এর বুদ্ধি হলো, ছোট নম্বরের জন্য কম বাইট, বড়র জন্য বেশি: ইংরেজি অক্ষর ১ বাইট, বাংলা ৩ বাইট, বেশিরভাগ ইমোজি ৪ বাইট। “আ” (U+0986) কীভাবে ৩ বাইট হয়, দেখুন:

ধাপ ১Code point
আ  =  U+0986   (দশমিকে 2438)
ধাপ ২বাইনারিতে ১৬ বিট
0    9    8    6
0000 1001 1000 0110
ধাপ ৩৪ + ৬ + ৬ বিটে ভাগ
0000 | 100110 | 000110
ধাপ ৪তিন বাইটের ছাঁচে বসানো
ছাঁচ:   1110xxxx  10xxxxxx  10xxxxxx
ফল:    11100000  10100110  10000110
hex:   E0        A6        86
  1. নম্বরটি নিন। Unicode-এর তালিকায় “আ”-এর নম্বর U+0986, অর্থাৎ hexadecimal-এ 0986 (দশমিকে 2438).
  2. বাইনারিতে লিখুন। প্রতিটি hex অঙ্ক ৪ বিট: 0 = 0000, 9 = 1001, 8 = 1000, 6 = 0110. সব বাংলা নম্বর 0800 থেকে FFFF-এর মধ্যে, তাই UTF-8-এর নিয়মে এগুলো ৩ বাইট নেয়।
  3. টুকরো করুন। ১৬টি বিটকে ভাগ করুন ৪, ৬ আর ৬ বিটে।
  4. ছাঁচে বসান। UTF-8-এর ৩-বাইট ছাঁচে প্রথম বাইট শুরু হয় 1110 দিয়ে (মানে “আমি ৩ বাইটের অক্ষরের শুরু”), বাকি দুটি 10 দিয়ে (মানে “আমি আগের অক্ষরের অংশ”)। ফাঁকা ঘরে টুকরোগুলো বসালে পাওয়া যায় E0 A6 86. এই কারণেই বাংলা ফাইল ইংরেজির তুলনায় প্রায় তিনগুণ জায়গা নেয়। আর এই ছাঁচের কারণে ফাইলের মাঝখান থেকে পড়লেও সফটওয়্যার বুঝতে পারে কোথায় একটি অক্ষর শুরু।

ইমেইল, ওয়েব আর SMS-এ বাংলা

ইমেইল আর ওয়েবে Unicode বাংলা এখন সমস্যাহীন — শুধু ওয়েবপেজের শুরুতে <meta charset="UTF-8"> রাখতে হয় (পর্ব ৩৬-এ HTML লেখার সময় দেখবেন)। মোবাইল SMS-এর হিসাব একটু আলাদা। শুধু ইংরেজি থাকলে বার্তা যায় GSM-এর ৭-বিট পদ্ধতিতে — একটি SMS-এ ১৬০ অক্ষর। কিন্তু একটিও বাংলা অক্ষর থাকলে পুরো বার্তা যায় ১৬-বিটের UCS-2 পদ্ধতিতে — একটি SMS-এ মাত্র ৭০ ঘর। লম্বা বার্তা ভাগ হলে প্রতিটি ভাগে আরও কম (৬৭টি) ঘর থাকে, কারণ জোড়া লাগানোর তথ্যের জন্য কিছু জায়গা লাগে। খেয়াল রাখুন, “ক্ষ” দেখতে একটি হলেও তিনটি ঘর খায়। তাই ব্যাংক বা মোবাইল অপারেটরের বাংলা SMS ছোট রাখা হয় — প্রতিটি অতিরিক্ত ভাগের জন্য পাঠানোর খরচ বাড়ে।

৮ · দ্রুত আর নির্ভুল টাইপিং — অভ্যাসের কৌশল

চাকরির অনেক পরীক্ষায় (বিশেষ করে অফিস সহায়ক, কম্পিউটার অপারেটর পদে) বাংলা ও ইংরেজি টাইপিংয়ের গতি যাচাই করা হয়। গতির চেয়েও গুরুত্বপূর্ণ নির্ভুলতা। মূল কৌশলের নাম touch typing — কি-বোর্ডের দিকে না তাকিয়ে দশ আঙুলে লেখা।

🏠 Home row

বাঁ হাতের আঙুল A S D F, ডান হাতের J K L ;-এ। F আর J-এর ছোট উঁচু দাগ আঙুলকে না দেখেই জায়গা চিনিয়ে দেয়।

🎯 আগে নির্ভুল, পরে দ্রুত

শুরুতে ধীরে, কিন্তু না দেখে। ভুল করে দ্রুত লেখার অভ্যাস একবার বসে গেলে ভাঙা কঠিন।

⏱️ রোজ অল্প

দিনে ১৫–২০ মিনিট নিয়মিত অনুশীলন, সপ্তাহে একদিন ঘণ্টাখানেকের চেয়ে বেশি কাজের।

📰 আসল লেখা থেকে

পত্রিকার একটি অনুচ্ছেদ দেখে টাইপ করুন — যুক্তবর্ণ, যতিচিহ্ন, অঙ্ক সব থাকে, যা পরীক্ষার মতো।

অনুশীলনের জন্য বিশেষ সফটওয়্যার বা ওয়েবসাইটও আছে; বিজয় ও অভ্রর লেআউট শেখার জন্য তৈরি কিছু টাইপিং টিউটরও পাওয়া যায়। যেটিই নিন, দেখে নিন সেটি Unicode-এ কাজ করে কি না আর গতির পাশাপাশি ভুলের হার (accuracy) দেখায় কি না। গতি মাপা হয় সাধারণত প্রতি মিনিটে শব্দে (WPM).

কম্পিউটারে বাংলার পথচলা ভাষা আন্দোলনের দেশের জন্য বিশেষ অর্থবহ। ১৯৫২ সালের ২১ ফেব্রুয়ারির স্মরণে ইউনেস্কো ১৯৯৯ সালে দিনটিকে আন্তর্জাতিক মাতৃভাষা দিবস ঘোষণা করে, আর ২০০০ সাল থেকে সারা বিশ্বে পালিত হচ্ছে। একসময় কম্পিউটারে বাংলা লেখা ছিল বিশেষজ্ঞের কাজ; আজ রিকশাচালক থেকে প্রবাসী শ্রমিক — সবাই ফোনে বাংলায় লেখেন, বাংলায় খোঁজেন। মাতৃভাষাকে প্রযুক্তিতে টিকিয়ে রাখার কাজ তাই আজও চলছে — ফন্ট, কি-বোর্ড, বানান-যাচাই আর বাংলা ভয়েস টাইপিংয়ের মাধ্যমে।

৯ · AI-এর যুগে বাংলা লেখা — সুবিধা আর সাবধানতা

ChatGPT, Gemini বা Claude-এর মতো AI চ্যাটবট এখন বেশ সাবলীল বাংলা লেখে। চিঠির খসড়া, অনুবাদ, সারাংশ — অনেক কাজ সহজ হয়েছে। এমনকি “Avwg evsjv‡`k‡K fv‡jvevwm” দিয়ে বললে অনেক সময় বুঝে ফেলে যে এটি বিজয়-ANSI লেখা, এবং Unicode-এ রূপান্তর করে দিতে পারে। কিন্তু কয়েকটি সাধারণ ভুল সে প্রায়ই করে:

  • ভুল যুক্তবর্ণ বা কার: লম্বা ANSI লেখা রূপান্তরের সময় কিছু শব্দে কার উল্টো জায়গায় বা যুক্তবর্ণ ভেঙে যায়।
  • শব্দ “সংশোধন” করে ফেলা: রূপান্তর করতে বললে নিজে থেকে বানান বা বাক্য বদলে দেয় — নথির জন্য বিপজ্জনক, যেমন নাম, ঠিকানা বা টাকার অঙ্ক।
  • মিশ্র বানানরীতি: “কি/কী”, “গেলো/গেল”-এর মতো পুরোনো আর প্রমিত বানান এক লেখায় মিশিয়ে ফেলা।
  • আত্মবিশ্বাসী ভুল তথ্য: “বাংলা Unicode কবে যুক্ত হয়েছে” জাতীয় প্রশ্নে সাল বা নাম ভুল বলা।

পুরোনো ফাইল রূপান্তর বা বাংলা লেখা পরিষ্কার করাতে চাইলে স্পষ্ট শর্ত দিয়ে প্রশ্ন করুন — বিশেষ করে “কোনো শব্দ বদলাবে না” শর্তটি:

নিচের লেখাটি বিজয় (ANSI, SutonnyMJ ফন্ট) পদ্ধতিতে টাইপ করা, তাই ইংরেজি অক্ষরের মতো দেখাচ্ছে। এটিকে Unicode বাংলায় রূপান্তর করে দাও। শর্ত: ১. কোনো শব্দ, বানান, নাম বা সংখ্যা নিজে থেকে বদলাবে না — শুধু রূপান্তর। ২. যে শব্দ নিয়ে তুমি নিশ্চিত নও, সেটি [?] চিহ্ন দিয়ে আলাদা করে দেখাবে। ৩. শেষে যুক্তবর্ণ আছে এমন শব্দগুলোর একটি তালিকা দাও, যাতে আমি মূল কপির সাথে মিলিয়ে নিতে পারি। [এখানে লেখা পেস্ট করুন]

AI বা কনভার্টারের বাংলা হাতে পেলে — যাচাইয়ের চেকলিস্ট

পরীক্ষা ও ইন্টারভিউতে: চাকরি ও ICT-র পরীক্ষায় এ ধরনের প্রশ্ন প্রায়ই আসে —

  • Unicode-এর পূর্ণরূপ বা মানে কী? — পরীক্ষায় সাধারণত “Universal Code” লেখা হয়; এটি বিশ্বের সব ভাষার অক্ষরের জন্য একটি সর্বজনীন কোড-ব্যবস্থা।
  • বাংলা Unicode-এর পরিসর কত? — U+0980 থেকে U+09FF.
  • বিজয় কি-বোর্ডের উদ্ভাবক কে? — মোস্তাফা জব্বার (১৯৮৮)। অভ্র? — মেহদী হাসান খান (২০০৩, বিনামূল্যে)।
  • অভ্র আর বিজয়ের মূল পার্থক্য? — অভ্র ফোনেটিক ও বিনামূল্যে, শুরু থেকেই Unicode; বিজয় নির্দিষ্ট লেআউটের বাণিজ্যিক সফটওয়্যার, পুরোনো সংস্করণে ANSI.
  • Unicode কত বিটের? — অনেক বইয়ে “১৬ বিট” লেখা থাকে (শুরুর নকশা); আধুনিক Unicode-এ নম্বর U+10FFFF পর্যন্ত যায়, যা রাখতে ২১ বিট লাগে।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিয়ে নিজে কিছুক্ষণ ভাবুন — তারপর “→ উত্তর” চাপুন। এগুলো আপনাকে শুধু ব্যবহারকারী নয়, প্রযুক্তি-বোঝা মানুষ বানাবে।

প্র ০১Unicode এত বছর ধরে আছে, তবুও বাংলাদেশের ছাপাখানা আর বহু অফিস কেন এখনো SutonnyMJ ব্যবহার করে?

উত্তরটা প্রযুক্তির চেয়ে বেশি অর্থনীতি আর অভ্যাসের। একে বলে switching cost — পুরোনো ব্যবস্থা ছেড়ে নতুনে যাওয়ার খরচ।

  • জমে থাকা নথির পাহাড়: কয়েক দশকের ফর্ম, প্রজ্ঞাপন, বই, পত্রিকার আর্কাইভ ANSI-তে। সব রূপান্তর করতে সময়, টাকা আর প্রুফ দেখার লোক লাগে — আর রূপান্তরে ভুল হলে আইনি নথিতে বিপদ।
  • মানুষের দক্ষতা: হাজারো কম্পোজিটর ও অফিস-কর্মী বিজয় লেআউটে বছরের পর বছর লিখে অভ্যস্ত। তাঁদের কাছে “নতুন পদ্ধতি” মানে গতি কমে যাওয়া।
  • সফটওয়্যারের পুরোনো সীমাবদ্ধতা: একসময় জনপ্রিয় কিছু ডিজাইন ও লেআউট সফটওয়্যার বাংলা Unicode-এর যুক্তবর্ণ ঠিকমতো দেখাতে পারত না। ছাপাখানার জন্য তখন ANSI-ই ছিল একমাত্র নির্ভরযোগ্য পথ। সমস্যাটি এখন অনেকটা কমেছে, কিন্তু অভ্যাস রয়ে গেছে।
  • নেটওয়ার্ক প্রভাব: এক অফিস ANSI-তে ফাইল পাঠালে অন্য অফিসকেও SutonnyMJ রাখতে হয়। সবাই একসাথে না বদলালে কেউ একা বদলে লাভ পায় না।

কিন্তু না বদলানোরও দাম আছে, যা চোখে পড়ে কম: ANSI লেখা Google খুঁজে পায় না, স্ক্রিন রিডার (দৃষ্টিপ্রতিবন্ধীদের সহায়ক সফটওয়্যার) পড়তে পারে না, ডেটাবেসে সাজানো বা খোঁজা যায় না, আর ফোনে খুললে হিজিবিজি। অর্থাৎ সরকারি তথ্য নাগরিকের কাছে পৌঁছাতে বাধা পায়। এজন্যই সরকারি পর্যায়ে Unicode ও Nikosh-এর মতো ফন্ট ব্যবহারে উৎসাহ দেওয়া হচ্ছে। বাস্তবসম্মত পথ সাধারণত মিশ্র: নতুন সব কাজ Unicode-এ, আর পুরোনো নথি দরকার অনুযায়ী ধাপে ধাপে রূপান্তর।

মূল উপলব্ধি: প্রযুক্তিগতভাবে ভালো সমাধান থাকলেই মানুষ সেটি গ্রহণ করে না। পুরোনো ব্যবস্থার জমা নথি, দক্ষতা আর পারস্পরিক নির্ভরতা — এই তিনটির খরচ বুঝলে বোঝা যায় কেন একটি পরিবর্তন দশকের পর দশক লেগে যায়।

প্র ০২বাংলা Unicode-এর নকশা কে করল, কোথা থেকে এল — আর এ নিয়ে অভিযোগগুলো কতটা যৌক্তিক?

Unicode-এর প্রথম সংস্করণ (১৯৯১) থেকেই বাংলা ব্লক আছে। কিন্তু এর নকশা শূন্য থেকে নয় — এসেছে ভারতের ISCII (Indian Script Code for Information Interchange) মান থেকে। ISCII-এর মূল ভাবনা ছিল ভারতীয় লিপিগুলো (দেবনাগরী, বাংলা, তামিল…) একই কাঠামোয় সাজানো, যাতে এক লিপি থেকে আরেক লিপিতে সহজে রূপান্তর করা যায়। তাই বাংলা ব্লকের অক্ষরগুলো দেবনাগরী ব্লকের প্রায় একই অবস্থানে বসানো — যেমন দেবনাগরীতে क U+0915, বাংলায় ক U+0995, ঠিক 0x80 ব্যবধানে।

এই নকশার সুবিধা আছে — যুক্তবর্ণের জন্য আলাদা ঘর না রেখে হসন্ত দিয়ে গঠনের পদ্ধতি খুবই সাশ্রয়ী আর নমনীয়। কিন্তু কিছু সমালোচনাও যৌক্তিক:

  • ৎ-এর অনুপস্থিতি: শুরুতে খণ্ড-ত-কে আলাদা অক্ষর ধরা হয়নি; ত + হসন্ত + একটি অদৃশ্য চিহ্ন (ZWJ) দিয়ে লেখার নিয়ম ছিল। দীর্ঘ আলোচনার পর ২০০৫ সালের Unicode 4.1-এ ৎ নিজের নম্বর (U+09CE) পায়। ফলে পুরোনো আর নতুন লেখায় একই শব্দের দুই রূপ থেকে গেছে।
  • য়, ড়, ঢ়-এর দুই রূপ: এগুলো একক অক্ষর হিসেবেও আছে, আবার ব্যঞ্জন + নুক্তা হিসেবেও লেখা যায়। খোঁজ ও তুলনায় এতে বিভ্রান্তি হয়।
  • বাংলা ভাষাভাষীদের অংশগ্রহণ: অনেকের অভিযোগ, প্রাথমিক নকশায় বাংলাদেশ থেকে প্রতিনিধিত্ব কম ছিল, ফলে বাংলার নিজস্ব কিছু চাহিদা পরে যোগ করতে হয়েছে।

তবে মনে রাখা দরকার, Unicode-এর একটি কঠোর নীতি আছে — একবার কোনো অক্ষরের নম্বর দেওয়া হলে তা আর বদলানো হয় না (stability policy). কারণ পৃথিবীজুড়ে কোটি কোটি ফাইল সেই নম্বরের ওপর দাঁড়িয়ে। তাই ভুল শোধরাতে হয় নতুন অক্ষর যোগ করে বা নিয়ম (normalization) দিয়ে, পুরোনোটা মুছে নয়।

মূল উপলব্ধি: মান (standard) তৈরির সময় যার কণ্ঠ টেবিলে থাকে, নকশা তার চাহিদা বেশি মেটায়। আর একবার কোটি মানুষ ব্যবহার শুরু করলে ভুলও স্থায়ী হয়ে যায় — তাই শুরুতেই অংশগ্রহণ জরুরি।

প্র ০৩একটি বিনামূল্যের কি-বোর্ড সফটওয়্যার (অভ্র) কীভাবে ইন্টারনেটে বাংলার চেহারা বদলে দিল?

২০০০-এর দশকের শুরুতে কম্পিউটারে বাংলা লেখার জন্য সাধারণত দরকার হতো একটি বাণিজ্যিক সফটওয়্যার, একটি লেআউট মুখস্থ করা, আর ANSI ফন্ট — যার লেখা ইন্টারনেটে অন্যদের কাছে হিজিবিজি দেখাত। ফলে অনেকে ফেসবুক, ফোরাম বা ইমেইলে লিখতেন “ami bhalo achi” — ইংরেজি অক্ষরে বাংলা।

২০০৩ সালে অভ্র এই তিনটি বাধা একসাথে সরিয়ে দিল:

  • বিনামূল্যে: ছাত্র, প্রবাসী, ছোট ব্যবসা — কাউকে লাইসেন্স কিনতে হয়নি।
  • ফোনেটিক: যিনি “ami bhalo achi” লিখতেন, তিনি ঠিক সেভাবেই লিখে বাংলা পেলেন। নতুন কিছু শিখতে হলো না।
  • Unicode: লেখা যেকোনো কম্পিউটার, ব্রাউজার আর পরে ফোনে ঠিক দেখাল, আর Google-এ খোঁজা গেল।

এর ফল হলো একটি চক্র: বেশি মানুষ Unicode-এ লিখলেন → ইন্টারনেটে বাংলা কনটেন্ট বাড়ল → বাংলা ব্লগ, উইকিপিডিয়া, অনলাইন পত্রিকা জনপ্রিয় হলো → আরও মানুষ বাংলায় লিখতে উৎসাহিত হলেন। পরে স্মার্টফোনে Ridmik, Gboard-এর মতো ফোনেটিক কি-বোর্ড এই ধারাকেই এগিয়ে নিয়েছে। লেআউট আর মেধাস্বত্ব নিয়ে বিজয়-অভ্রর মধ্যে বিতর্কও হয়েছে, যা দেখায় সফটওয়্যারের ব্যবসা আর জনস্বার্থের টানাপোড়েন কতটা বাস্তব।

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

মূল উপলব্ধি: একটি প্রযুক্তির প্রভাব শুধু তার কারিগরি মানে নয়, প্রবেশের বাধা কতটা কমাল তাতে। দাম, শেখার কষ্ট আর সামঞ্জস্য — এই তিন বাধা সরালে সাধারণ মানুষের হাতে একটি ভাষার ডিজিটাল ভবিষ্যৎ বদলে যায়।

প্র ০৪ইংরেজি দেখাতে শুধু ফন্টই যথেষ্ট, কিন্তু বাংলার জন্য আলাদা “shaping engine” লাগে কেন?

ইংরেজিতে প্রতিটি অক্ষর মোটামুটি একটি ছবি, পাশাপাশি বসালেই হয় — “cat” মানে c, a, t-এর তিনটি ছবি পরপর। বাংলায় তা নয়। বাংলাকে বলা হয় complex script, কারণ:

  • ক্রম বদলায়: “কি”-তে ি-কার জমা থাকে ক-এর পরে, কিন্তু আঁকতে হয় আগে। “কো”-তে ো-কার দুই ভাগ হয়ে ক-এর দুই পাশে বসে।
  • আকৃতি বদলায়: ক + ্ + ষ মিলে সম্পূর্ণ নতুন আকৃতি ক্ষ. র + ্ + ক হলে র উঠে যায় ওপরে, রেফ (র্ক)। ক + ্ + র হলে র নিচে র-ফলা (ক্র)।
  • অবস্থান বদলায়: উ-কার, ঋ-কার বিভিন্ন অক্ষরের নিচে ভিন্ন জায়গায় বসে; কিছু অক্ষরের সাথে আলাদা রূপ নেয় (যেমন রু, শু)।

এই নিয়মগুলো দুই জায়গায় ভাগ করা থাকে। ফন্টের ভেতরে থাকে OpenType নিয়মের তালিকা — “এই তিনটি অক্ষর পরপর এলে এই আকৃতি দাও”। আর অপারেটিং সিস্টেম বা ব্রাউজারের shaping engine লেখাটি পড়ে বুঝে নেয় কোথায় অক্ষরগুচ্ছ শুরু-শেষ, কার কোথায় সরাতে হবে, আর ফন্টের নিয়মগুলো সঠিক ক্রমে প্রয়োগ করে। মুক্ত সফটওয়্যার HarfBuzz এমন একটি engine — Chrome, Firefox, Android, LibreOffice-সহ অসংখ্য সফটওয়্যার এটি ব্যবহার করে; Windows-এর নিজস্ব ব্যবস্থাও আছে।

এজন্যই একই Unicode লেখা কোনো পুরোনো সফটওয়্যারে ভাঙা দেখায় — নম্বর ঠিক, ফন্ট ঠিক, কিন্তু সফটওয়্যারটি shaping engine ব্যবহার করে না। ANSI যুগে এই engine ছিল না, তাই প্রতিটি যুক্তবর্ণের আলাদা ছবি ফন্টে রেখে টাইপিস্টকেই সঠিক ছবি বেছে নিতে হতো।

মূল উপলব্ধি: আধুনিক সিস্টেমে দায়িত্ব ভাগ করা: Unicode বলে “কী লেখা হয়েছে”, ফন্ট বলে “দেখতে কেমন”, shaping engine বলে “কীভাবে জোড়া লাগবে”। এই স্তরবিন্যাসের জন্যই আপনি এক ফাইল যেকোনো ফন্টে, যেকোনো ডিভাইসে খুলতে পারেন।

প্র ০৫ভয়েস টাইপিং আর AI-এর যুগে কি কি-বোর্ডে বাংলা টাইপ শেখার দরকার ফুরিয়ে যাচ্ছে?

কিছু কাজের জন্য সত্যিই কমছে। এখন Gboard-সহ অনেক কি-বোর্ডে মাইক্রোফোন চেপে বাংলায় বললেই লেখা হয়ে যায়; AI দিয়ে হাতে লেখা বা ছাপা কাগজের ছবি থেকেও বাংলা লেখা বের করা যায় (OCR). প্রবীণ মানুষ বা যাঁরা টাইপ করতে অভ্যস্ত নন, তাঁদের জন্য এটি বিশাল সুবিধা।

কিন্তু কয়েকটি বাস্তবতা ভুলে গেলে চলবে না:

  • নির্ভুলতা: আঞ্চলিক উচ্চারণ, নাম, ঠিকানা আর কারিগরি শব্দে ভয়েস টাইপিং এখনো প্রায়ই ভুল করে। অফিসের চিঠি বা আইনি নথিতে প্রতিটি শব্দ সংশোধন করতে হলে কি-বোর্ডই লাগে।
  • পরিবেশ: অফিসে, পরীক্ষার হলে বা বাসে জোরে কথা বলে লেখা সবসময় সম্ভব নয়, আর গোপনীয়তার প্রশ্নও আছে।
  • ডেটার ভারসাম্য: AI মডেল শেখে বিপুল লেখা থেকে। ইংরেজির তুলনায় ইন্টারনেটে মানসম্মত বাংলা লেখা কম, তাই বাংলায় AI-এর মান তুলনামূলক দুর্বল থাকার ঝুঁকি আছে। যত বেশি মানুষ সঠিক Unicode বাংলায় লিখবেন, ভবিষ্যতের AI তত ভালো বাংলা শিখবে।
  • যাচাইয়ের দক্ষতা: AI বা ভয়েস যা লিখল, তা ঠিক কি না বুঝতে হলে যুক্তবর্ণ, বানান আর encoding-এর মৌলিক জ্ঞান লাগে — ঠিক এই পর্বে যা শিখলেন।

তাই ভবিষ্যৎ সম্ভবত “অথবা” নয়, “এবং”: দ্রুত খসড়ায় ভয়েস, সংশোধন ও নির্ভুল কাজে কি-বোর্ড, আর পুরো প্রক্রিয়ায় AI সহকারী। চাকরির টাইপিং পরীক্ষাও অদূর ভবিষ্যতে পুরোপুরি উঠে যাবে, এমন ধরে নেওয়ার কারণ নেই।

মূল উপলব্ধি: নতুন টুল পুরোনো দক্ষতাকে মুছে দেয় না, বরং তার ভূমিকা বদলায় — “লেখা তৈরি” থেকে “লেখা যাচাই ও সংশোধন”। আর বাংলার ডিজিটাল ভবিষ্যৎ অনেকটাই নির্ভর করছে আমরা আজ কতটা সঠিক বাংলা অনলাইনে রাখছি তার ওপর।

অনুশীলন

হাতে-কলমে দেখা আর ভাবাই আসল কাজ — কোড লেখার দরকার নেই।

  1. ANSI থেকে হাতে রূপান্তর: SutonnyMJ-এর ANSI ম্যাপে (ফাইলে যে ইংরেজি অক্ষর জমা থাকে — কি-বোর্ডের কোন কি চাপা হয়েছিল তা নয়) A = অ, v = া, w = ি, g = ম, e = ব, s = ং, j = ল, q = য়, M = গ, b = ন, B = ই. তাহলে Avwg evsjvq Mvb MvB লেখাটি আসলে কী? আর এতে কোথায় “visual order” চোখে পড়ে?

    লেখাটি “আমি বাংলায় গান গাই”. Av = অ + া = আ; wg = ি + ম = মি; evsjvq = ব া ং ল া য় = বাংলায়; Mvb = গান; MvB = গাই. Visual order চোখে পড়ে “wg”-তে: ি-কার (w) ম (g)-এর আগে লেখা, কারণ চোখে ি আগে দেখায়। Unicode-এ এর উল্টো — আগে ম (U+09AE), তারপর ি (U+09BF).

  2. Unicode পরীক্ষককে কাজে লাগান: উপরের প্রোগ্রামের প্রথম লাইনে শব্দ বদলে লিখুন ["কার্যকর", "ময়না"], তারপর চালান। “কার্যকর”-এ কয়টি code point? রেফ (র্) কীভাবে জমা আছে? “ময়না”-র য় কোন রূপে এল?

    “কার্যকর” = ক, া, র, ্, য, ক, র — ৭টি code point, ২১ বাইট. রেফ আলাদা কোনো চিহ্ন নয় — র + হসন্ত + য; shaping engine দেখে যে র-এর পরে হসন্ত আর তারপর ব্যঞ্জন, তাই র-কে ওপরে রেফ হিসেবে আঁকে। “ময়না”-র ফল নির্ভর করে কীভাবে টাইপ হয়েছে তার ওপর: য় যদি য (U+09AF) + নুক্তা (U+09BC) হিসেবে আসে, তবে ৫টি code point দেখবেন, যার একটির ধরন “অন্যান্য” (নুক্তা); একক U+09DF হলে ৪টি। দুই রূপই পর্দায় এক — এটিই অংশ ৪-এ বলা খোঁজ ব্যর্থ হওয়ার কারণ।

  3. SMS-এর হিসাব: একটি ব্যাংকের বাংলা SMS-এ ১০০টি ঘর লাগে (যুক্তবর্ণ ভেঙে গুনে)। এটি কয়টি SMS-এ যাবে? একই কথা ইংরেজিতে ১২০ অক্ষরে লিখলে কয়টি?

    বাংলা থাকায় UCS-2: একটি SMS-এ সর্বোচ্চ ৭০ ঘর। ১০০ > ৭০, তাই বার্তা ভাগ হবে, আর ভাগ হলে প্রতিটি ভাগে ৬৭ ঘর — ১০০ ঘরের জন্য লাগবে ২টি SMS. ইংরেজিতে ১২০ অক্ষর ১৬০-এর কম, তাই ১টি SMS. এজন্যই বাল্ক SMS পাঠানো প্রতিষ্ঠান বাংলা বার্তা ছোট রাখতে চেষ্টা করে।

  4. নিজের কম্পিউটারের তদন্ত: আপনার কম্পিউটার বা অফিসে একটি পুরোনো বাংলা Word ফাইল খুঁজুন। অংশ ৫-এর দশ সেকেন্ডের পরীক্ষা দিয়ে বের করুন সেটি Unicode না ANSI. ANSI হলে একটি অনুচ্ছেদ রূপান্তর করে প্রুফ দেখুন — কোন ধরনের ভুল পেলেন?

    ফন্টের নাম SutonnyMJ বা “…MJ” আর ফন্ট বদলালে ইংরেজি হিজিবিজি — তাহলে ANSI. রূপান্তরের পর সাধারণত যে ভুলগুলো পাওয়া যায়:

    • যুক্তবর্ণের আগে বসা ি/ে-কার ভুল অক্ষরের পরে চলে যাওয়া (যেমন “স্ত্রী”, “ক্ষেত্র”-এর মতো শব্দে)।
    • রেফ (র্) ভুল অক্ষরের ওপরে বা হারিয়ে যাওয়া।
    • ৎ কোথাও ত্‌ হয়ে যাওয়া, য় দুই রকম রূপে আসা।
    • পুরোনো লেখক যেখানে বিকল্প আকৃতি ব্যবহার করেছেন, সেখানে অপ্রত্যাশিত চিহ্ন।

    এই কারণেই রূপান্তরের পর প্রুফ দেখা বাধ্যতামূলক — কনভার্টার যত ভালোই হোক।

নিজেকে যাচাই করুন

ভুল হলে কারণসহ ব্যাখ্যা পাবেন, আবার চেষ্টাও করতে পারবেন।

ক্রমঅভ্র ফোনেটিকে “ক্ষমা” লেখার ধাপগুলো সঠিক ক্রমে সাজান (▲▼ চেপে সরান)

  1. ⌨️ কি-বোর্ডে kkhoma চাপা হলো
  2. 🔁 অভ্র ইংরেজি কি-চাপকে বাংলা অক্ষরে রূপান্তর করল
  3. 💾 ফাইলে পাঁচটি Unicode code point জমা হলো (ক ্ ষ ম া)
  4. 🧩 Shaping engine বুঝল ক + ্ + ষ একটি যুক্তবর্ণ
  5. 🖥️ ফন্ট থেকে আকৃতি এনে পর্দায় “ক্ষমা” আঁকা হলো

Unicode-এ বাংলা লিপির জন্য বরাদ্দ ব্লক কোনটি?

  • U+0900 – U+097F
  • U+0980 – U+09FF
  • U+0000 – U+007F
  • U+0A00 – U+0A7F

Unicode-এ “ক্ষ” যুক্তবর্ণটি কয়টি code point দিয়ে জমা থাকে?

  • ১টি — ক্ষ-এর নিজস্ব নম্বর আছে
  • ২টি — ক আর ষ
  • ৩টি — ক, হসন্ত (্) আর ষ
  • ৩টি — ক, খ আর ষ

বিজয়ের পুরোনো (ANSI) পদ্ধতিতে লেখা “আমি” অন্য কম্পিউটারে “Avwg” দেখাচ্ছে। মূল কারণ কী?

  • ফাইলে ইংরেজি অক্ষরের কোড আছে, আর সেই কম্পিউটারে SutonnyMJ ফন্ট নেই
  • ফাইলে ভাইরাস ঢুকেছে
  • কম্পিউটারে Unicode বাংলা ফন্ট নেই
  • পেনড্রাইভে কপির সময় ফাইল নষ্ট হয়েছে

UTF-8 encoding-এ একটি সাধারণ বাংলা অক্ষর (যেমন “আ”) কত বাইট জায়গা নেয়?

  • ১ বাইট
  • ২ বাইট
  • ৩ বাইট
  • ৪ বাইট

মোবাইল SMS-এ বার্তায় একটিও বাংলা অক্ষর থাকলে একটি একক SMS-এ সর্বোচ্চ কতটি ঘর (character) পাঠানো যায়?

  • ১৬০টি
  • ৭০টি
  • ১৫৩টি
  • কোনো সীমা নেই

Excel থেকে বাংলা নামের তালিকা CSV ফাইলে সেভ করবেন, যাতে অন্য সফটওয়্যারে খুললেও বাংলা ঠিক থাকে। কোন অপশনটি বেছে নেবেন?

  • CSV (Comma delimited)
  • CSV (Macintosh)
  • Text (Tab delimited)
  • CSV UTF-8 (Comma delimited)

বিনামূল্যের ফোনেটিক বাংলা কি-বোর্ড “অভ্র” কে তৈরি করেন?

  • মেহদী হাসান খান
  • মোস্তাফা জব্বার
  • Google-এর একটি দল
  • বাংলাদেশ কম্পিউটার কাউন্সিল

শব্দকোষ

লেখার মধ্যে ডটেড দাগ দেওয়া শব্দে মাউস রাখুন বা চাপুন — অর্থ দেখাবে। এই পর্বের সব নতুন শব্দ এখানে একসাথে:

মনে রাখুন

  1. কম্পিউটার রাখে সংখ্যা; কোন সংখ্যা কোন অক্ষর, তা ঠিক করে encoding. বাংলার সর্বজনীন encoding Unicode (U+0980–U+09FF).
  2. টাইপিং দুই রকম: ফোনেটিক (অভ্র, Gboard: ami → আমি) আর নির্দিষ্ট লেআউট (বিজয়, জাতীয়, প্রভাত)।
  3. ANSI/SutonnyMJ লেখা আসলে ইংরেজি অক্ষর, বাংলা-দেখতে ফন্টে মোড়া — ফন্ট না থাকলে “Avwg”. অনলাইনে সবকিছু Unicode-এ।
  4. যুক্তবর্ণ = অক্ষর + হসন্ত (্) + অক্ষর; জোড়া লাগায় ফন্ট ও shaping engine. UTF-8-এ প্রতিটি বাংলা অক্ষর ৩ বাইট.
  5. রূপান্তর বা AI-এর লেখা সবসময় প্রুফ দেখে নিন — যুক্তবর্ণ, কার, য়, ৎ, নাম আর সংখ্যা।

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

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

এই পর্বটি শেয়ার করুন:
এই পর্বে ভুল পেয়েছেন? জানান