次のようにフォーマットされた文字列が届きます
Ciel Spa at SLSâ„¢ is a celestial dreamscape
それを次のように変更する書式設定スクリプトがあります
Ciel Spa at SLS™ is a celestial dreamscape
スクリプトはエンコーディングを変更します
return iconv("UTF-8", "ISO-8859-1//TRANSLIT//IGNORE", $str)
上記の iconv() は通常、商標記号を通常の文字 TM として返します。これは私にはうまくいかないので、シンボルを後でキャッチできる文字列に置き換えました。
str_replace("(TM)","™",$str);
これは、ブラウザでソースを表示しているときにうまく機能しますが、このテキストを imagettftext() にプッシュすると、商標記号が無視され、実質的に文字列が作成されます
Ciel Spa at SLS is a celestial dreamscape
もちろん、イメージとしてレンダリングされます。
使用しているフォントで商標記号がサポートされていることはわかっていますが、なぜ表示されないのかわかりません。mb_detect_encoding() は null を返しますが、ほとんどの文字列では UTF-8 を返します。
これまでのところ何も機能していないため、ザラザラした汚い回避策の準備ができています。html_entity_decode() と str_replace() の組み合わせを使用してみましたが、役に立ちませんでした。同じフォーマット スクリプトの以前のバージョンでは、文字列のエンコーディングを変更せずに、UTF ジャンク文字置換の長い配列を組み合わせてから、それを imagettftext() に渡しましたが、問題ないように見えました。私はそれを取り戻すことができないようです...何かアイデアはありますか??