ImageMagick のフォント ファミリを使用してフォントをレンダリングすることは可能ですか?
考えられることはすべて試しましたが、何もうまくいかないようです。私は多くの検索を行ってきましたが、この特定の問題に対処するものを見つけることができないようです.
私は最終的に PHP を使用していますが、コマンドラインで ImageMagick を使用しようとしても成功しませんでした。LinuxでImageMagick 6.7.6を使用しています。これが私がこれまでに行ったことです。
identify -list font
コマンドを使用してImageMagickが認識するフォントをテストしました- システムにインストールされた xml ファイルに基づいて type.xml ファイルを手動で作成しました。
- このスクリプトを使用して type.xml ファイルを作成しました: imagick_type_gen
- 複数のフォント タイプでテストしました: ttf、otf、pfb、ttc
identify -list font
これは、私がテストしたいくつかのフォントの出力例です。
Font: DejaVu-Sans-Book
family: DejaVu Sans
style: Normal
stretch: Normal
weight: 400
glyphs: /usr/share/fonts/dejavu/DejaVuSans.ttf
Font: Baskerville-Regular
family: Baskerville
style: Normal
stretch: Normal
weight: 400
glyphs: /usr/share/fonts/custom/Baskerville.ttc
Font: Palatino-Roman
family: Palatino
style: Normal
stretch: Normal
weight: 400
glyphs: /usr/share/fonts/urw-fonts/p052003l.pfb
Font: Honey-Script-Light
family: Honey Script
style: Normal
stretch: Normal
weight: 300
glyphs: /usr/share/fonts/custom/HoneyScript-Light.ttf
完全なフォント名を指定すると、すべてが期待どおりに機能します。
convert -pointsize 32 -font "Honey-Script-Light" label:'Testing' testing.png
ただし、フォント ファミリ ( identify -list font
type.xml でリストされているものと type.xml にリストされているもの) を使用しようとすると、既定のシステム フォントが取得されます。
convert -pointsize 32 -family "Honey Script" label:'Testing' testing.png
また、フォントのすべてのパラメーターを指定しようとしましたが、再び機能しません。
convert -pointsize 32 -stretch Normal -style Normal -weight 300 -family "Honey Script" label:'Testing' testing.png
PHP で同様のプロセスを実行すると、描画オブジェクトのフォント ファミリを設定しようとすると、実際にはエラーが返されます。
$draw->setFontFamily('Honey Script');
これはスローされるエラーです:
PHP Fatal error: Uncaught exception 'ImagickDrawException' with message 'Unable to set font family; parameter not found in the list of configured fonts
コマンド ライン オプションと同様に、完全なフォント名を指定すると、画像が適切にレンダリングされます。
$draw->setFont('Honey-Script-Light');
ImageMagick で使用するフォントを構成する方法について私が見つけたすべてから、フォントは実際に構成されています。フォントファミリーに基づいてフォントを選択できないのはなぜですか?
これはおそらく文書化されていないバグですか? 足りないものはありますか?
完全なフォント名を指定するだけで完了できることはわかっていますが、私のプロジェクトに固有の理由があり、フォント ファミリを指定する方がはるかに優れています。
機能しない場合、フォント ファミリを指定することがオプションになるのはなぜですか? これは、ImageMagick がフォント ファミリ オプションに関して次のように述べていることです。
この設定は、ImageMagick がテキストのレンダリングに使用しようとするフォント ファミリーを提案します。ファミリが見つかった場合は、それが使用されます。そうでない場合は、デフォルト フォント ("Arial" など) または類似していることが知られているファミリが代用されます (たとえば、"System" が要求されたが見つからない場合は "Courier" が使用される可能性があります)。
どんなアイデアでも大歓迎です。私はこの時点でかなり立ち往生しています。
編集:
完全な名前のフォントではなく、フォント ファミリを使用することを好む主な理由は、処理中の入力のためです。処理が必要なファイルを第三者から受け取りました。これらのファイルは、フォントを次のように指定します。
font-family="Honey Script" font-style="Normal" font-stretch="Normal" font-weight="300"
その情報に基づいて正確なフォント名を指定する必要がある場合は、フォント ファミリと属性のすべての可能な組み合わせについて、正確なフォント名へのマッピングを作成する必要があります。システムには何百ものフォントが追加されているため、これを維持するのは非常に困難です。
上記のフォントに関する利用可能なすべての詳細に基づいて、ImageMagick に正確なフォントを取得させる方法が必要であると私には思えます。
それが不可能な場合、ImageMagick にフォント ファミリを指定するオプションがあるのはなぜですか?