Which Bangla Font Is for Dompdf? সমস্যা ও সমাধান

which bangla font is for dompdf — এই প্রশ্নের সৎ উত্তর হলো, কোনো ফন্টই dompdf-এ বাংলাকে পুরোপুরি ঠিক দেখাতে পারে না। Noto Sans Bengali, SolaimanLipi বা Kalpurush-এর মতো ইউনিকোড ফন্ট দিলে বাংলা অক্ষর আসে, কিন্তু যুক্তাক্ষর ভেঙে যায় আর ি-কার ভুল জায়গায় বসে। কারণ ফন্ট নয়, dompdf-এর টেক্সট রেন্ডারিং ইঞ্জিন। এই লেখায় কারণটি, dompdf-এ ফন্ট বসানোর নিয়ম, আর পরিষ্কার বাংলা PDF-এর জন্য কার্যকর বিকল্প দেখানো হলো।

মনিটরে dompdf ও PHP কোডের লাইন

dompdf-এ বাংলা কেন ভাঙে

বাংলা লিখতে শুধু অক্ষর পাশাপাশি বসালে হয় না। ‘ক্ষ’ বানাতে ক + ্ + ষ জুড়ে একটি আলাদা আকৃতি তৈরি করতে হয়, আর ‘কি’ লিখতে ি-কারকে ক-এর আগে সরিয়ে দিতে হয়। এই কাজকে বলে complex text shaping। ব্রাউজার ও Word এটি করে, কিন্তু dompdf এখনও এই শেপিং সমর্থন করে না। তাই ফন্ট যত ভালোই হোক, যুক্তাক্ষরের জায়গায় হসন্ত (্) দেখা যায়। ইউনিকোড বাংলা কীভাবে কাজ করে তা জানতে পড়ুন ইউনিকোড বাংলা ফন্ট কী।

which bangla font is for dompdf: তবুও ফন্ট বসাতে চাইলে

সহজ লেখা (নাম, সংখ্যা, কম যুক্তাক্ষর) হলে ফলাফল অনেক সময় চলনসই হয়। সেক্ষেত্রে Noto Sans Bengali ব্যবহার করুন, কারণ এটি ফ্রি ও পূর্ণাঙ্গ ইউনিকোড। ফন্টের TTF ফাইল প্রজেক্টে রেখে HTML-এর CSS-এ লিখুন:

@font-face {
  font-family: 'NotoBengali';
  src: url('fonts/NotoSansBengali-Regular.ttf') format('truetype');
}
body { font-family: 'NotoBengali', sans-serif; }

PHP-এ dompdf-কে ফন্ট ফোল্ডার পড়ার অনুমতি দিন ও UTF-8 হিসেবে HTML লোড করুন:

$options = new Dompdf\Options();
$options->set('chroot', __DIR__);
$options->set('fontDir', __DIR__ . '/fonts');
$dompdf = new Dompdf\Dompdf($options);
$dompdf->loadHtml($html, 'UTF-8');
$dompdf->render();

ফন্ট লোডিংয়ের আরও অপশন dompdf-এর Custom Fonts উইকিতে আছে। বাংলা অক্ষরের জায়গায় বক্স দেখালে বুঝবেন ফন্টটি লোডই হয়নি; পাথ ও chroot যাচাই করুন।

ডেভেলপারের ডেস্কে বাংলা PDF তৈরির সেটআপ

পরিষ্কার বাংলা PDF-এর জন্য ভালো বিকল্প

টুল বাংলা যুক্তাক্ষর মন্তব্য
dompdf ভাঙে সহজ ইনভয়েস বা সংখ্যার জন্য চলে
TCPDF সীমিত ইউনিকোড ফন্ট নেয়, তবে বাংলা শেপিং নির্ভরযোগ্য নয়
mPDF ঠিক থাকে OTL চালু করলে বাংলা শেপিং করে; PHP প্রজেক্টে সবচেয়ে সহজ বিকল্প
হেডলেস Chrome (Browsershot/Puppeteer) নিখুঁত ব্রাউজারের মতোই রেন্ডার; সার্ভারে Chrome লাগে

mPDF-এ শুরু করতে কনফিগারেশনে 'autoScriptToLang' => true ও 'autoLangToFont' => true দিন; তাহলে বাংলা অংশের জন্য সমর্থিত ফন্ট নিজে থেকেই বেছে নেয়। নিজের ফন্ট যোগ করলে সের ফন্ট ডিফিনিশনে 'useOTL' => 0xFF রাখুন।

how to work bangla font in tcpdf

TCPDF-এ বাংলা ফন্ট যোগ করতে TTF ফাইলটি TCPDF-এর ফরম্যাটে কনভার্ট করতে হয়:

$font = TCPDF_FONTS::addTTFfont('fonts/NotoSansBengali-Regular.ttf', 'TrueTypeUnicode', '', 96);
$pdf->SetFont($font, '', 12);

এতে অক্ষর দেখা যায়, কিন্তু dompdf-এর মতোই অনেক যুক্তাক্ষর ও কার-চিহ্ন ভুল আসে। তাই নতুন প্রজেক্টে বাংলা PDF লাগলে সরাসরি mPDF বা হেডলেস Chrome দিয়ে শুরু করাই ভালো।

PDF-এ ভাঙা বাংলা যুক্তাক্ষর দেখে হতাশ একজন ডিজাইনার

পরীক্ষার জন্য একটি বাক্য

যে টুলই ব্যবহার করুন, PDF-এ এই বাক্যটি বসিয়ে দেখুন: “ক্ষমা, শিক্ষা, স্ত্রী, কিন্তু, কৌশল”। এখানে যুক্তাক্ষর, ি-কার ও ৌ-কার সবই আছে। সব ঠিক দেখালে আপনার সেটআপ নির্ভরযোগ্য। ডাটা যদি MySQL থেকে আসে ও সেখানেই ???? দেখায়, তাহলে আগে MySQL-এ বাংলা এনকোডিং ঠিক করুন। আর Word থেকে PDF বানাতে চাইলে দেখুন Word to PDF বাংলা ফন্ট গাইড।

সংক্ষেপে, which bangla font is for dompdf — Noto Sans Bengali সবচেয়ে ভালো চেষ্টা, কিন্তু নিখুঁত বাংলার জন্য mPDF বা ব্রাউজার-ভিত্তিক PDF টুলই নিরাপদ।

প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী

dompdf-এ বাংলা যুক্তাক্ষর ভেঙে যায় কেন?

dompdf বাংলার জন্য প্রয়োজনীয় complex text shaping করে না। তাই যে ফন্টই দিন, যুক্তাক্ষরের জায়গায় হসন্ত দেখা যায় ও ি-কার ভুল জায়গায় বসে।

dompdf-এর জন্য কোন বাংলা ফন্ট সবচেয়ে ভালো?

Noto Sans Bengali ফ্রি ও পূর্ণাঙ্গ ইউনিকোড, তাই এটি সবচেয়ে নিরাপদ পছন্দ। তবে এতেও যুক্তাক্ষরের সমস্যা থাকবে, কারণ সমস্যাটি dompdf-এর ইঞ্জিনে।

PHP-তে নিখুঁত বাংলা PDF বানাতে কোন লাইব্রেরি?

mPDF সবচেয়ে সহজ বিকল্প, কারণ OTL চালু করলে এটি বাংলা শেপিং করে। সার্ভারে Chrome চালানো গেলে Browsershot বা Puppeteer-এর মতো হেডলেস ব্রাউজার টুলও নিখুঁত ফল দেয়।

TCPDF-এ বাংলা ফন্ট কীভাবে যোগ করব?

TCPDF_FONTS::addTTFfont দিয়ে TTF ফাইল কনভার্ট করে SetFont-এ সেই নাম ব্যবহার করুন। তবে যুক্তাক্ষর সবসময় ঠিক আসে না।

SutonnyMJ দিয়ে কি dompdf-এ বাংলা ঠিক হয়?

ANSI ফন্ট দিয়ে লেখা দেখতে ঠিক লাগতে পারে, কিন্তু তখন লেখাও বিজয় কোডে রাখতে হয়। PDF থেকে কপি বা সার্চ করলে ইংরেজি অক্ষরের জট আসে, তাই এটি সুপারিশ করা হয় না।

Leave a Comment

আপনার ই-মেইল এ্যাড্রেস প্রকাশিত হবে না। * চিহ্নিত বিষয়গুলো আবশ্যক।

Scroll to Top