現在の位置: ホーム> 最新記事一覧> ImageFtText関数はどのフォントファイル形式をサポートしていますか? FAQとソリューションの詳細な説明

ImageFtText関数はどのフォントファイル形式をサポートしていますか? FAQとソリューションの詳細な説明

gitbox 2025-05-26

PHPの画像処理機能では、 ImageFtText()は非常に強力なツールです。開発者は、カスタムフォントを使用してテキストを画像にレンダリングできるようになります。これは、検証コード、画像透かし、動的グラフィックスなどのアプリケーションシナリオで特に重要です。ただし、多くの開発者は、 ImageFTText()を使用する場合、フォント互換性関連の問題に遭遇します。

この記事では、これらの問題の包括的な説明を提供し、実用的なソリューションを提供します。

1。ImageFtTextでサポートされているフォントファイル形式

ImageFtText()は、基本的にFreetypeライブラリへのPHPカプセル化されたインターフェイスです。 Freetypeは広く使用されているフォントエンジンであるため、 ImageFtText()でサポートされるフォント形式は、主にFreetypeでサポートされている形式に依存します。

現在のところ、一般的で安定したサポートされているフォント形式は次のとおりです。

  • .ttf(trueTypeフォント)

  • .otf(opentypeフォント)

  • .ttc(TrueType Collection) (一部のシステムサポート)

  • .pfa / .pfb(タイプ1フォント)

その中で、 .ttf.otfは最も一般的で最も推奨される形式です。

2。よくある質問と解決策

1.フォントファイルは無効であるか、認識されていません

質問の説明:

 $image = imagecreatetruecolor(400, 100);
$white = imagecolorallocate($image, 255, 255, 255);
$fontPath = '/path/to/fonts/myfont.ttf';
imagefttext($image, 20, 0, 10, 40, $white, $fontPath, 'Hello, world!');

フォントファイルが破損している、互換性がない、またはパスが間違っている場合、PHPがエラーまたはレンダリングの障害を報告します。

解決:

  • フォントファイルが存在し、適切なファイル権限があることを確認してください。

  • 検証済みの.ttfまたは.otfフォントファイルを使用します。

  • https://gitbox.net/fonts/など、フォント互換性をアップロードおよびテストできます。

2。中国語または多言語の文字化けコード

問題の説明:フォントは正常ですが、中国語、韓国語、日本、その他の言葉などの英語以外のキャラクターを正しく表示することはできません。

解決:

  • ターゲット文字セット( Noto Sans CJKSimhei.ttfMicrosoft Yahei.ttfなど)をサポートするフォントを使用します。

  • PHPファイル自体がUTF-8を使用してエンコードされていることを確認してください。

  • 以下で設定できます。

 $text = 'こんにちは,世界!';
$text = mb_convert_encoding($text, 'UTF-8', 'auto');
imagefttext($image, 20, 0, 10, 50, $white, $fontPath, $text);

3.フォントパスが正しくありません

解決:

フォントファイルパスは絶対パスである必要があり、相対パスまたはURLアドレスを使用することはできません。たとえば、サーバー上の固定ディレクトリにフォントファイルを配置することをお勧めします。

 $fontPath = __DIR__ . '/fonts/arial.ttf';

リモートアドレスからフォントを使用する場合は、最初にFILE_GET_CONTENTSFILE_PUT_CONTENTSを使用してローカルエリアにダウンロードして保存できます。

 $remoteFont = 'https://gitbox.net/fonts/myfont.ttf';
$localFont = '/tmp/myfont.ttf';
file_put_contents($localFont, file_get_contents($remoteFont));

4.フォントディスプレイジャグまたは不明

解決:

  • ImageCreate ()の代わりにImageCreatetrueColor ()を使用します。

  • フォントサイズは12pt以上であることをお勧めします。

  • 出力がPNGまたはWebPの場合、追加の圧縮またはスケーリングが実行されないことを確認してください。

3.フォントがサポートされているかどうかを確認する方法

いくつかのフォントは、 .ttfまたは.otfですが、必ずしもすべての文字をサポートするわけではありません。次のテストを使用することをお勧めします。

 function testFontSupport($fontPath, $char = 'あなた') {
    $img = imagecreatetruecolor(100, 50);
    $white = imagecolorallocate($img, 255, 255, 255);
    $black = imagecolorallocate($img, 0, 0, 0);
    imagefill($img, 0, 0, $white);
    imagefttext($img, 20, 0, 10, 30, $black, $fontPath, $char);
    header('Content-Type: image/png');
    imagepng($img);
    imagedestroy($img);
}

ブラウザで結果画像をすばやく確認できます。

4。概要と提案

質問タイプ推奨ソリューション
フォントは認識されていません.ttf / .otfファイルを使用して、パスが正しいことを確認します
文字化けするか、表示されていない多言語フォントを使用します
ネットワークフォントの読み込みローカルで使用するフォントをダウンロードします
ディスプレイ効果が悪いimageCreatetruecolor()を使用してキャンバスを作成します

最後に、 ImageFtText()およびロードテストフォントファイルを事前に使用して、プログラムの安定した動作を確保する場合、開発者は常にエラー処理メカニズムに協力することをお勧めします。

一般的なフォントサンプルが必要な場合は、 https://gitbox.net/fonts/にアクセスして、一般的に使用される無料のフォントリソースを表示およびダウンロードできます。