လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Imagefontwidth () သည်အဘယ်ကြောင့်မှားယွင်းသော width ကိုပြန်ပေးသနည်း။

Imagefontwidth () သည်အဘယ်ကြောင့်မှားယွင်းသော width ကိုပြန်ပေးသနည်း။

M66 2025-06-04

PHP ကို ​​အသုံးပြု. PHP ကိုအသုံးပြုသည့်အခါကျွန်ုပ်တို့သည်သတ်သတ်မှတ်မှတ်စာလုံးအရွယ်အစား၏အကျင့်အကျယ်အ 0 န်းကိုရရန် ImageFontwidth () function ကိုအသုံးပြုလေ့ရှိသည်။ သို့သော် developer များစွာသည်ပြ troubl နာ များကို ကြုံတွေ့ရလိမ့်မည်။ ဤဆောင်းပါးသည်ဤပြ problem နာ၏အကြောင်းရင်းများကိုနက်နက်နဲနဲခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ယုံကြည်စိတ်ချရသောဖြေရှင်းချက်တစ်ခုပေးလိမ့်မည်။

ImageFontwidth ဆိုတာဘာလဲ။

ImageFontwidth (INT $ font) သည် PIPG GD စာကြည့်တိုက်မှပေးသော pixel width ကိုသတ်မှတ်ထားသောစာလုံးအရွယ်အစားရရန် Php GD စာကြည့်တိုက်မှပေးသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ၎င်းသည် GD စာကြည့်တိုက်သို့ bitmap ဖောင့်များနှင့်သာအလုပ်လုပ်သည်။ စာလုံးအရွယ်အစားသည်များသောအားဖြင့်ကိန်း (1 မှ 5) ဖြစ်သည်။

နမူနာကုဒ်:

 $width = imagefontwidth(5);
echo "font width ဖြစ်ပါတယ်:$width pixels";

ဘုံနားလည်မှုလွဲမှားခြင်းနှင့်လက်မခံနိုင်သော

ပြ the နာများသည်များသောအားဖြင့်အောက်ပါရှုထောင့်များတွင်ပေါ်ပေါက်သည်။

1 ။ ဖောင့်နားလည်မှုလွဲမှားခြင်း

imagefontwidth () built-in bitmap fonts များအတွက်သာတရားဝင်သည်နှင့် Truetype ဖောင့် (TTFS) နှင့်မသက်ဆိုင်ပါ။ Developer အများအပြားသည် ttf ဖောင့်များကိုမှားယွင်းစွာတုံ့ပြန်ရန် Igrotttext () ကိုအသုံးပြုသည်။

2 ။ ဇာတ်ကောင်စုစုပေါင်း width ကိုလျစ်လျူရှုပါ

သင် built-in ဖောင့်ကိုအသုံးပြုနေလျှင်ပင် ImageFontwidth () သည် စာလုံးတစ်လုံးတည်း၏အကျယ်ကိုပြန်ပို့သည်ကိုသတိရပါ။ အကယ်. သင်သည် string တစ်ခုလုံးကိုကြိုးဖြင့်ဖြည့်စွက်နေလျှင် string length ဖြင့်မြှောက်ရန်လိုအပ်သည်။

 $font = 5;
$text = "Hello";
$width = imagefontwidth($font) * strlen($text);

string တွင် Multibyte ဇာတ်ကောင် များ ပါ 0 င်ပါက,

 $width = imagefontwidth($font) * mb_strlen($text, 'UTF-8');

3 ။ font မှန်ကန်စွာတင်မထားဘူး

PHP ၏ bitmap ဖောင့်များကိုကိုယ်တိုင် 0 င်ရန်မလိုအပ်ပါ။

string ကိုမှန်ကန်စွာဘယ်လိုရနိုင်မလဲ။

အခြေအနေ 1: GD Built-in bitmap fonts ကိုသုံးပါ

imagefontwidth () font နံပါတ် 1 ~ 5 အကွာအဝေးတွင်ရှိရန်နှင့် strlen () သို့မဟုတ် mb_strlen ကိုသုံးရန်သေချာစေရန် imagefontwidth () ကိုတိုက်ရိုက်သုံးပါ။

 $font = 3;
$text = "Welcome";
$width = imagefontwidth($font) * strlen($text);

အခြေအနေ 2: Trueetype ဖောင့်ကိုသုံးပါ

TTF ဖောင့်များအတွက် ImageFontwidth () သည်မမှန်ကန်ပါ။ သတ်မှတ်ထားသောဖောင့်အောက်တွင် string ၏ချည်နှောင်ထားသော သေတ္တာ () ကို သင်အသုံးပြုရမည်။ ထို့နောက်ကိုသွဒီနိတ်များအရ width ကိုတွက်ချက်ရမည်

 $fontFile = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf";
$fontSize = 14;
$text = "Welcome";

$bbox = imagettfbbox($fontSize, 0, $fontFile, $text);
$width = abs($bbox[2] - $bbox[0]);

ဤဥပမာတွင် ဒေါ်လာ BOOB သည် စာသား 8 ခုကိုကိုယ်စားပြုသောဒြပ်စင် 8 ခုကိုပြန်လည်ရရှိခဲ့သည်။ အပေါ်ယံညာဘက်ထောင့်နှင့်ဘယ်ဘက်အပေါ်ထောင့်အကြားအလျားလိုက်ဝင်ရိုးခြားနားချက်ဖြင့် width ကိုတွက်ချက်နိုင်သည်။

နမူနာလျှောက်လွှာ - စာသားနှင့်အတူပုံဆွဲ dynamicy ဆွဲပါ

 $img = imagecreate(200, 50);
$bg = imagecolorallocate($img, 255, 255, 255);
$color = imagecolorallocate($img, 0, 0, 0);

$fontFile = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf";
$text = "Hello World";
$fontSize = 12;

$bbox = imagettfbbox($fontSize, 0, $fontFile, $text);
$textWidth = abs($bbox[2] - $bbox[0]);

$x = (200 - $textWidth) / 2;
$y = 30;

imagettftext($img, $fontSize, 0, $x, $y, $color, $fontFile, $text);

header("Content-Type: image/png");
imagepng($img);
imagedestroy($img);

ဤနည်းအားဖြင့် TTF ဖောင့်များပင်တိကျသောအကျယ်နှင့်ဗဟိုပြုအနေအထားရရှိရန်သေချာသည်။

အကြံပေးချက်များ

  • agestring () နှင့် agouettextext ကိုမရောနှောပါနှင့် () - သူတို့က bitmap နှင့် ttf ဖောင့်များအတွက်သင့်တော်သည်။

  • ImageFontwidth () မှရရှိသောရလဒ်ကို DPI ချိန်ညှိချက်များကြောင့်မထိခိုက်ပါ

  • အခြားဆာဗာသို့ချထားပါက Font ဖိုင်လမ်းကြောင်းတည်ရှိပြီးလက်လှမ်းမီကြောင်းအတည်ပြုရန်သေချာပါစေ။ ဥပမာ - https://m66.net/fonts/dejavusans.ttf

အကျဉ်းချုပ်

ImageFontwidth () သည် မှားယွင်းသောအကျယ်ကိုပြန်လည်ရောက်ရှိသောအခါအများအားဖြင့်သဟဇာတဖြစ်သောဖောင့်အမျိုးအစားများကိုအသုံးပြုခြင်းသို့မဟုတ်စုစုပေါင်းစာလုံးအရေအတွက်ကိုလျစ်လျူရှုခြင်းကြောင့်ဖြစ်သည်။ ဤလုပ်ဆောင်မှုအတိုင်းအတာကိုနားလည်ခြင်းနှင့် ttf ဖော င့်များကို ကိုင်တွယ်ဖြေရှင်းသည့်အခါ TTF ဖောင့်များနှင့်ဆက်ဆံရာတွင်ပြ the နာကိုဖြေရှင်းရန်သော့ချက်ဖြစ်သည်။ ကိရိယာများကိုမှန်ကန်စွာရွေးချယ်ခြင်းအားဖြင့်သာပုံရိပ်များပြုပြင်သောအခါသင်လိုချင်သောတိကျသောဟန်ဆောင်မှုနှင့်အကျိုးသက်ရောက်မှုကိုရရှိနိုင်ပါ။