معمولا هنگام استفاده از کتابخانه استاندارد GD در PHP برای اضافه کردن متن فارسی یا عربی روی تصویر بدلیل پشتیبانی نکردن این کتابخانه از زبان های راست به چپ مشکلات متعددی بوجود می آید. یکی از این مشکلات مانند شکل زیر می تواند جدا نمایش دادن کاراکتر ها و از چپ به راست نشان دادن آن ها باشد.
یا برخی اوقات هم مربعی نشان دادن حروف در عکس باشد که معمولا بدلیل عدم پشتیبانی فونت پیش فرض این کتابخانه از زبان فارسی است. مانند شکل زیر:
امروز قرار راه حلی آسان برای رفع این مشکلات را ارائه کنیم. برای رفع این مشکلات کتابخانه کوچک و مناسبی در Github موجود است که می توانید با اضافه کردن آن به پروژه این مشکل را حل کنید. نام این کتابخانه GdFarsi هست که می توانید از لینک Github زیر فایل فشرده آن را دانلود کنید.
بعد از دانلود یک فایل PHP با نام FarsiGD در آن موجود است که کافی است ابتدا آن را با دستور زیر به پروژه خود اضافه کنید.
require_once('./libs/FarsiGD.php'); $gd = new FarsiGD();
پس از آن کافی است با شیئی که از این کلاس تعریف کرده اید متغیری که متن خود را در آن ذخیره کرده اید را به فرمت صحیح در آورید با دستور زیر.
$text=$_GET["title"]; $tx = $gd->persianText($text, 'fa', 'normal');
در کد بالا $text یک متغیر است که به طور مثال متنی فارسی در آن ذخیره است. خط دوم این مقدار را بافرمتی صحیح در متغیر $tx مقدار دهی می کند و شما می توانید از آن در اضافه کردن به تصویر به شکل صحیح استفاده کنید. مانند کد زیر.
imagettftext($bg_im, $font_size, 0, $text_startX, $text_startY, $white, $font_path, $tx);
تمامی متغیر های متد بالا نکته ای برای ذکر ندارد غیر از $font_path که حتما باید مسیر فونتی باشد که از زبان فارسی پشتیبانی می کند وگرنه حروف به صورت مربعی نمایش داده خواهد شد به همین دلیل مانند کد زیر فونتی مثل b homa.ttf را در مسیر پروژه قرار دهید و آن را مقدار دهی کنید.
$font_path = './fonts/B Homa.ttf';
نهایتا خروجی صحیح این کار مانند تصویر زیر خواهد بود که حروف فارسی را به شکل صحیح روی تصویر با استفاده از کتابخانه GD و GdFarsi نمایش خواهد داد.