လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ပိုမို. နိုင်ငံတကာဇာတ်ကောင်များ၏ပြသမှုကိုထောက်ပံ့ရန် Font Width Information ကိုတိုးချဲ့ရန် ImageFontwidth function ကိုမည်သို့အသုံးပြုရမည်နည်း။

ပိုမို. နိုင်ငံတကာဇာတ်ကောင်များ၏ပြသမှုကိုထောက်ပံ့ရန် Font Width Information ကိုတိုးချဲ့ရန် ImageFontwidth function ကိုမည်သို့အသုံးပြုရမည်နည်း။

M66 2025-06-11

PHP တွင် ImageFontwidth function ကို built-in font ၏အက်ခရာအကျယ်ကိုရရန်အသုံးပြုသည်။ ၎င်းသည်ပုံမှန်ဖောင့်စုဆောင်းမှု၏ဇာတ်ကောင်အကျယ်ကိုပြန်လည်ရောက်ရှိစေပြီး GD စာကြည့်တိုက်ကို အသုံးပြု. စာသားပုံဆွဲသောအခါစာသားအကျယ်နှင့် layout ကိုတွက်ချက်ရန်ကျွန်ုပ်တို့အတွက်ပိုမိုလွယ်ကူစေသည်။ သို့သော် ပုံfutwidthသည် font enth ်ဌာန်နှင့်အတူ built-in fonts များကိုသာထောက်ပံ့သည်။

ဤဆောင်းပါးသည် ImpactTwidth ၏လုပ်ဆောင်မှုကိုတိုးချဲ့ခြင်းသို့မဟုတ်စိတ်ကြိုက်ပြုလုပ်နိုင်ခြင်းအားဖြင့် ပိုမို. အပြည်ပြည်ဆိုင်ရာဇာတ်လမ်းအကျယ်အတွက်အထောက်အပံ့များရရှိရန်မည်သို့မြှင့်တင်ရန်နှင့်စာသားပြန်ဆိုခြင်း၏တိကျမှန်ကန်မှုနှင့်ဗေဒတိုးတက်လာသည်။


1 ။ ImageFontwidth function ကို၏အကန့်အသတ်

ImageFontwidth (INT $ font): Int

  • GD built-in font နံပါတ်များကိုသာလက်ခံပါ (1 မှ 5)

  • ဇာတ်ကောင်များ၏အမှန်တကယ်အကြောင်းအရာကိုလျစ်လျူရှုထားသည့်ပုံသေအကျယ်ကိုပြန်ပို့သည်

  • Multi-byte အက္ခရာများကိုအကျယ်တွက်ချက်ခြင်းကိုမထောက်ပံ့နိုင်ပါ။

ဥပမာအားဖြင့်:

 <?php
$font = 5;
$width = imagefontwidth($font);
echo "Font $font width is $width pixels.";
?>

အက္ခရာများသည်အင်္ဂလိပ်သို့မဟုတ်တရုတ်လူမျိုးများဖြစ်လျှင် ပုံfrontwidth မှပြန်လာသော width သည်အတူတူပင်ဖြစ်သည်, ၎င်းသည် layout layout ကိုရှုပ်ထွေးစေသည်။


2 ။ ဖြေရှင်းချက်စိတ်ကူးများချဲ့ထွင်

ပိုမိုနိုင်ငံတကာဇာတ်ကောင်များ၏အကျယ်ကိုထောကျပံ့ရန် imagefontwidth ၏စင်ကြယ်သောမှီခိုမှုကိုကျော်လွှားနိုင်ပြီးအောက်ပါဖြေရှင်းနည်းများကိုထည့်သွင်းစဉ်းစားနိုင်သည် -

2.1 Custom Font ဖိုင်များနှင့် imagettfbox function များကိုအသုံးပြုခြင်း

ImgetStfbBox သည် သတ်မှတ်ထားသော truetype font file ရှိကြိုးသေတ္တာအရွယ်အစားကိုတိုင်းတာနိုင်သည်။ ၎င်းသည်ဘာသာစကားမျိုးစုံသောစာသားများအတွက်သင့်တော်ပြီး Multi-byte encoding ကိုထောက်ပံ့သည်။

ဥပမာ -

 <?php
$fontFile = 'm66.net/fonts/YourFont.ttf';  // စိတ်ကြိုက် font လမ်းကြောင်း
$text = "မင်္ဂလာပါ,world!";
$fontSize = 16;

$bbox = imagettfbbox($fontSize, 0, $fontFile, $text);
$width = abs($bbox[2] - $bbox[0]);
echo "Text width is $width pixels.";
?>

၎င်းသည်စာသားအကျယ်ကိုတိကျစွာရယူပြီး ImageFontwidth က န့်သတ်ချက်များကိုရှောင်ရှားရန်ခွင့်ပြုသည်။

2.2 ပုံfontwidthကို မြေပုံစားပွဲမှတဆင့် Simulate လုပ်ပါ

imagefontwidth call interface နှင့်သဟဇာတဖြစ်ရန်လိုအပ်ပါကသင်နှင့်သက်ဆိုင်သောအကျယ်ကို Encoding Range ၏အဆိုအရသက်ဆိုင်ရာအကျယ်ကိုပြန်လည်ရောက်ရှိစေသည့်ထုံးစံ function ကိုဖန်တီးနိုင်သည်။

ဥပမာ -

 <?php
function extendedImageFontWidth(int $font, string $char): int {
    // built-in ဖောင့်စံအကျယ်အကျယ်
    $baseWidth = imagefontwidth($font);

    // Unicodeအပြည့်အဝအကျယ်ဇာတ်ကောင်ဆုံးဖြတ်ရန် encoding
    $ord = mb_ord($char, 'UTF-8');
    // ဘုံတရုတ်、ဂျပန်、ကိုရီးယားဇာတ်ကောင်အကြမ်းအားဖြင့်အကွာအဝေး
    if (($ord >= 0x4E00 && $ord <= 0x9FFF) || // CJK Unified Ideographs
        ($ord >= 0x3000 && $ord <= 0x303F) || // CJK Symbols and Punctuation
        ($ord >= 0xFF00 && $ord <= 0xFFEF)) { // Halfwidth and Fullwidth Forms
        return $baseWidth * 2; // အပြည့်အဝအကျယ်ဇာတ်ကောင်နှစ်ကြိမ်ဖြစ်ပါတယ်ဟုယူဆ
    }
    return $baseWidth; // ဝက်အကျယ်ဇာတ်ကောင်
}

// အသုံးပြုမှုဥပမာ
$font = 5;
$char1 = "A";
$char2 = "ခင်ဗျားတို့";

echo extendedImageFontWidth($font, $char1) . "\n"; // ဥပမာအားဖြင့်ပြန်လာပါ 9
echo extendedImageFontWidth($font, $char2) . "\n"; // ပြန်လာ 18
?>

ဤနည်းလမ်းသည်မလုံလောက်ပေမဲ့ရိုးရှင်းမှုနှင့်အပြည်ပြည်ဆိုင်ရာအထောက်အပံ့အချို့ကိုထည့်သွင်းစဉ်းစားသည်။


3 ။ ပြီးပြည့်စုံသောစာသားအကျယ်တွက်ချက်မှုကိုအောင်မြင်ရန်တိုးချဲ့ထားသောအကျယ်ကိုပေါင်းစပ်ခြင်း

အထက်ပါမြေပုံရေးဆွဲခြင်းအစီအစဉ်အပေါ် အခြေခံ. စာသား၏စာပိုဒ်တစ်ခုလုံး၏အကျယ်ကိုအတိအကျတွက်ချက်ရန်ဖြစ်နိုင်သည်။

 <?php
function extendedImageFontWidth(int $font, string $char): int {
    $baseWidth = imagefontwidth($font);
    $ord = mb_ord($char, 'UTF-8');
    if (($ord >= 0x4E00 && $ord <= 0x9FFF) || 
        ($ord >= 0x3000 && $ord <= 0x303F) || 
        ($ord >= 0xFF00 && $ord <= 0xFFEF)) {
        return $baseWidth * 2;
    }
    return $baseWidth;
}

function getTextWidth(int $font, string $text): int {
    $width = 0;
    $len = mb_strlen($text, 'UTF-8');
    for ($i = 0; $i < $len; $i++) {
        $char = mb_substr($text, $i, 1, 'UTF-8');
        $width += extendedImageFontWidth($font, $char);
    }
    return $width;
}

// နမူနာ
$font = 5;
$text = "Hello,ကမ်ာဘ!";

echo "Text width: " . getTextWidth($font, $text) . " pixels.";
?>

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

  • ImageFontwidth သည် fixed width built-in fonts များအတွက်သင့်တော်ပြီး Multibyte International ဇာတ်ကောင်အတိအကျကိုမထောက်ပံ့နိုင်ပါ။

  • Igeettfbox နှင့် Custom Logic ကိုပေါင်းစပ်ခြင်းအားဖြင့်တိကျသောစာလုံးပေါင်းသတင်းအချက်အလက်များကိုပိုမိုတိကျမှန်ကန်သောသတင်းအချက်အလက်များကိုရယူပြီးဘာသာစကားမျိုးစုံအထောက်အပံ့ကိုရယူနိုင်ပါသည်။

  • ဇာတ်ကောင်အကျယ်မြေပုံရေးဆွဲခြင်းမှတစ်ဆင့်လက်ရှိအခြေအနေများအတွက်တရုတ်နှင့်ဂျပန်အက္ခရာများကိုတရုတ်နှင့်ဂျပန်စာလုံးများ၏အနံကိုအကောင်အထည်ဖော်ရန်အတွက်ရှိပြီးသားကုဒ်ကိုတိုးချဲ့နိုင်သည်။

  • လက်တွေ့ကျသောအပလီကေးရှင်းများတွင် TrueType ဖောင့်နှင့် isionstfbbox ကိုအသုံးပြုရန် Truetype ဖောင့်နှင့် isionstfbbox ကိုစာသားပြန်ဆိုခြင်းအကျိုးသက်ရောက်မှုကိုတိုးတက်စေရန်အတွက်အကျယ်ကိုတိုင်းတာရန်အသုံးပြုရန်အကြံပြုပါသည်။