0

私はしばらくの間、imagettftext を使用したシステムを使用して、nog 標準フォントを Web サイトに追加しています。数か月前に、より良いオプションを求めてこの方法を断念しましたが、1 年以上前に作成した Web サイトの 1 つで問題が発生しました。

Web サイトは新しいサーバーに移動されました。安定性の問題とパフォーマンスは別として、サーバーには他の改善点の中で新しい php バージョンもあります。1 つの詳細を除いて、移動は完璧に行われました。それ以来、生成された画像とテキストのボタンのすべての出現には、特定の文字の間にスペースがあります。最も顕著なのは W と J です。イメージを生成するスクリプト自体に問題はないようです。他のプログラマーが使用するいくつかの実装を使用しただけでなく、ゼロから再構築されているからです。

フォントが異なれば結果も異なり、多くのフォントでは問題が発生しません。

論理的な解決策は、cufon や fontface などのシステムに切り替えることですが、どちらの解決策にも 2 つの大きな欠点があります。

  1. これを行うには非常に時間がかかります (imagettftext ソリューションを実装する非効率的な方法が、使用をやめた理由の 1 つです)。
  2. このサイトには、明らかにどちらのソリューションもサポートしていない HTML ニュースレター システムもあります。

だから基本的に私は困惑しています。ここからどの方向に向かうべきかよくわかりません。どんな助けでも大歓迎です。

4

2 に答える 2

1

これはフォントの問題です。タイポグラファーは、この問題に直面し、この問題を解決してきました。可動活字が発明される前、そして間違いなくコンピューターが発明される前からです。kerningと呼ばれる技術的な名前もあります。

これはよく研究され、よく解決された問題です。コンピュータ化されたフォントの出現により、自動カーニングを適用できるさらに多くのアルゴリズムが発明されました。ほとんどの場合、フォント自体がレンダラーへの「ヒント」をサポートする必要があります。残念なことに、コンピューターの出現により、怠惰なフォント デザイナーが生まれているようにも見えます。トレーニングとは、ツールの使用方法のトレーニングではなく、フォント職人の技術のトレーニング、つまりタイポグラフィのトレーニングを意味します。これに伴い、不適切なデザインのデジタル フォントの台頭も見られます。

したがって、問題はライブラリ、コード、またはプログラミング言語ではなく、不適切に設計されたフォントを使用していることです。単純にそれらを避けて、より優れたデザインのフォントをボタンに使用することをお勧めします. ファンシーでありながら完璧なフォントが本当に必要な場合は、画面用に設計された専門的に作成された商用フォントに投資する時期かもしれません (印刷用に設計されたフォントは適切ではなく、さらに高価になる可能性があります)。

長い回答で申し訳ありませんが、解決しようとしている「実際の」問題を知るために、歴史を知る必要がある場合があります。


PS: レンダラーのせいではないと言いましたが、嘘のようなものでした。それは、レンダラーが果たす役割を含めると、話がはるかに複雑になるからです。

以前のソリューションが同じフォントで機能するのに、Web ブラウザーでカーニングがうまくいかない場合は、フォントの問題です。以前使用していたレンダラーは、フォント ヒンティングに依存しない独自の自動カーニング アルゴリズムを使用していた可能性が高く、Gimp がこれを実行できることを私は知っています。

しかし、Web ブラウザーでそのまま (フォント プロパティをカスタム フォントに設定するだけ) 動作するが、現在の方法を使用すると壊れる場合は、レンダラーの問題です。Web ブラウザーは、フォント ヒントを尊重するオペレーティング システムによって提供されるシステム レンダラーを使用します。Adobe PhotoShop などの一部のレンダラーは、フォント ヒントを理解できません。

于 2010-08-09T07:05:47.057 に答える
1

これは古く、すでに完了とマークされていることは承知していますが、問題はフォントではなく、PHP のリグレッションにあります。5.2.9 以降のすべてのバージョンにこの問題があることは確かです。imagettftext() 関数に問題があります。

于 2011-01-12T12:07:42.813 に答える