လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> imagefontwidth ကို အသုံးပြု. ပုံတစ်ပုံတွင်စာသားကိုပြန်ဆိုသည့်အခါမှတ်စုများ

imagefontwidth ကို အသုံးပြု. ပုံတစ်ပုံတွင်စာသားကိုပြန်ဆိုသည့်အခါမှတ်စုများ

M66 2025-06-04

PHP တွင် Imppontwidth () တွင်ရုပ်ပုံများကို စာလုံး တစ်လုံးဖြင့်ရိုက်ကူးရန်အသုံးပြုသော function တစ်ခုဖြစ်သည့် function တစ်ခုဖြစ်သည်။ ဤဆောင်းပါးသည် imagefontwidth () function ကိုအသုံးပြုသောအခါအာရုံစူးစိုက်မှုပေးရန်လိုအပ်သည့်အရာများနှင့်ဘုံပြ issues နာများကိုမိတ်ဆက်ပေးလိမ့်မည်။


1 ။ အခြေခံအသုံးပြုမှုနိဒါန်း

ImageFontwidth (INT $ font): Int

  • Parameter $ font သည်ဖောင့်၏အရွယ်အစားဖြစ်ပြီးတန်ဖိုးသည် 1 မှ 5 ဖြစ်သည်။ PHP တွင်ပါ 0 င်သောဖောင့်ငါးခုကိုကိုယ်စားပြုသည်။

  • Return Value သည် font ထဲတွင်တစ်ခုတည်းသောအက်ခရာတစ်ခု၏အကျယ်ဖြစ်ပြီးယူနစ်သည် pixel ဖြစ်သည်။

နမူနာကုဒ်:

 <?php
$font = 3; // စာလုံးအရွယ်အစားကိုရွေးချယ်ပါ
$charWidth = imagefontwidth($font);
echo "Font width is: " . $charWidth;
?>

2 ။ မှတ်သားရန်အရာ

2.1 သာ built-in ဖောင့်မှသက်ဆိုင်သည်

ImageFontwidth () PHP (1-5) တွင်တည်ဆောက်ထားသောဖောင့်ငါးခုအတွက်သာအသုံးပြုနိုင်ပြီး custom fonts သို့မဟုတ် truetype စာလုံးများအတွက် အသုံးပြု. မရပါ (truetpe fonts) အတွက်မသုံးနိုင်ပါ။

အကယ်. သင်သည် Embettttext () ကို စာသားကိုအသုံးပြုရန်အသုံးပြုပါက imagefontwidth မဟုတ်ဘဲစာသားအရွယ်အစားကိုရရှိရန် imagettfbobbox () function ကိုသုံးရန်လိုအပ်သည်။

2.2 ဇာတ်ကောင်အကျယ်ကို fixed ဖြစ်ပါတယ်

built-in ဖောင့်သည် monospace ဖောင့်တစ်ခုဖြစ်ပြီးဇာတ်ကောင်တစ် ဦး စီသည်ပုံ သေ အကျယ်ရှိသည်။ အကယ်. စာသားတွင် multi-byte အက္ခရာများပါ 0 င်ပါက,

ဥပမာ -

 <?php
$font = 4;
$charWidth = imagefontwidth($font);
$text = "Hello";
$textWidth = strlen($text) * $charWidth;
echo "Text width is: " . $textWidth;
?>

တရုတ်စာလုံးများအတွက် built-in ဖောင့်သည် Byti-byte Chinese ကိုမပံ့ပိုးသောကြောင့်, အရှည်ကို strlen ( ) နှင့်တွက်ချက်ရန်အမှားတစ်ခုရှိလိမ့်မည်။

2.3 string အရှည်ကိုတွက်ချက်သည့်အခါ encoding ကိုအာရုံစိုက်ပါ

အကယ်. စာသားသည်တရုတ် (သို့) အခြားသို့မဟုတ်အခြား multibyte ဇာတ်ကောင်များဖြစ်သော strlen () ကို အသုံးပြု. စာလုံးများအစား bytes အရေအတွက်ကိုတွက်ချက်လိမ့်မည်။

ဥပမာအားဖြင့် MB_Strlen () ကို အသုံးပြုရန်အကြံပြုသည်။

 <?php
$text = "တရုတ်စမ်းသပ်မှု";
$font = 3;
$charWidth = imagefontwidth($font);
$textWidth = mb_strlen($text, 'UTF-8') * $charWidth;
echo "Text width is: " . $textWidth;
?>

သို့သော် Built-in ဖောင့်သည်တရုတ်ကိုမှန်ကန်စွာမပြနိုင်ကြောင်းသတိပြုရန်အရေးကြီးသည်။ ထို့ကြောင့် Igeetttext () ကို အသုံးပြုရန်အကြံပြုသည်။

2.4 font အရွယ်အစားကန့်သတ်

imagefontwidth () font sizes 1 မှ 5 မှသာထောက်ပံ့သည်။ အကွာအဝေးထဲကအမှားတစ်ခုသို့မဟုတ်တိရလဒ်ပြန်ပို့ပါလိမ့်မယ်။


3 ။ မကြာခဏမေးခွန်းများနှင့်ဖြေရှင်းနည်းများမကြာခဏမေးတယ်

3.1 တရုတ်မျက်နှာပြင်ချွင်းချက်

built-in ဖောင့်သည်တရုတ်ကိုမပေးနိူင်ပါ ဖြေရှင်းချက် -

  • တရုတ်ကိုထောက်ပံ့သော TTF ဖောင့်များကိုဖွင့်ရန် agouetttext () function ကိုသုံးပါ။

  • text နယ်နိမိတ်အရွယ်အစားကိုရရန် imagettfbobbox () ကို သုံးပါ, အကျယ်နှင့်အမြင့်ကိုတွက်ချက်ပါ။

ဥပမာ -

 <?php
$im = imagecreatetruecolor(200, 50);
$white = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 200, 50, $white);

$fontfile = 'm66.net/fonts/simhei.ttf'; // ဒီမှာဥပမာလမ်းကြောင်းဖြစ်ပါတယ် m66.net ဒိုမိန်းအမည်အစားထိုး
$text = "တရုတ်စမ်းသပ်မှု";
$fontsize = 20;
$bbox = imagettfbbox($fontsize, 0, $fontfile, $text);
$textWidth = $bbox[2] - $bbox[0];

imagettftext($im, $fontsize, 0, 10, 30, $black, $fontfile, $text);
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
?>

string ကိုတွက်ချက်သောအခါ 3.2 အမှားအယွင်းများ

ImageFontwidth () ကို အသုံးပြု. အကျယ်ကိုတွက်ချက်သည့်အခါစာလုံးကိုတွက်ချက်သောအခါစာလုံးအ 0 န်းသို့မဟုတ်အထူးဇာတ်ကောင်အကျယ်များကိုလျစ်လျူရှုခြင်းခံရသည်။ ဤအချိန်တွင်သင်ကြိုးစားနိုင်သည် -

  • အကျယ်ကိုကြိုတင်တွက်ချက်ပါ။ သင့်လျော်သောအနားသတ်ထားခဲ့ပါ။

  • TTF ဖောင့်များအတွက်ပိုမိုတိကျသောတိုင်းတာခြင်းနည်းလမ်းများ (ဥပမာ ttf ဖောင့ များအတွက်) ကိုသုံးပါ။


4 ။ အကျဉ်းချုပ်

စီister ဥပမာပြပါ
သာ built-in ဖောင့်များကိုထောက်ပံ့သည် စိတ်ကြိုက် fonts သို့မဟုတ် ttf ဖောင့်များအတွက်မရနိုင်ပါ
ပုံသေဇာတ်ကောင်အကျယ် monospace ဖောင့်အတွက်သင့်တော်သော, Multibyte ဇာတ်ကောင်အကျယ်ကိုအတိအကျတွက်ချက်လို့မရပါဘူး
တရုတ်ထောက်ခံမှုကန့်သတ် Built-in ဖော င့ ်များသည်တရုတ်ကိုမထောက်ပံ့ပါ,
အရှည်တွက်ချက်မှုများအတွက် encoding ကိုအာရုံစိုက်ပါ တရုတ် MB_strlen ကိုသုံးသင့်သည် ()

ယေဘူယျအားဖြင့် ImageFontwidth () သည်ရိုးရှင်းသောအင်္ဂလိပ်စာ၏ width တွက်ချက်မှုများကိုမြန်ဆန်စွာလုပ်ဆောင်ရန်အတွက်သင့်လျော်သောရိုးရိုး function တစ်ခုဖြစ်သော်လည်းတရုတ်သို့မဟုတ်ရှုပ်ထွေးသောဖောင့်များအတွက်ပိုမိုအားကောင်းသည့် truetype font producting function ကိုအသုံးပြုရန်အကြံပြုသည်။