Canvas でテキストを描画していますが、アンチエイリアスの品質にがっかりしています。私が確認した限りでは、ブラウザは Canvas 上のテキストのサブピクセル アンチエイリアス処理を行っていません。
これは正確ですか?
これは、結果のテキストが他の DOM 要素によってレンダリングされたテキストほど鮮明ではない iPhone と Android で特に顕著です。
Canvas に高品質のテキストを出力するための提案はありますか?
ジュベール
Canvas でテキストを描画していますが、アンチエイリアスの品質にがっかりしています。私が確認した限りでは、ブラウザは Canvas 上のテキストのサブピクセル アンチエイリアス処理を行っていません。
これは正確ですか?
これは、結果のテキストが他の DOM 要素によってレンダリングされたテキストほど鮮明ではない iPhone と Android で特に顕著です。
Canvas に高品質のテキストを出力するための提案はありますか?
ジュベール
私の答えはこのリンクから来ました。多分それは他の誰かを助けるでしょう。 http://www.html5rocks.com/en/tutorials/canvas/hidpi/
重要なコードは次のとおりです。
// finally query the various pixel ratios
devicePixelRatio = window.devicePixelRatio || 1,
backingStoreRatio = context.webkitBackingStorePixelRatio ||
context.mozBackingStorePixelRatio ||
context.msBackingStorePixelRatio ||
context.oBackingStorePixelRatio ||
context.backingStorePixelRatio || 1,
ratio = devicePixelRatio / backingStoreRatio;
// upscale the canvas if the two ratios don't match
if (devicePixelRatio !== backingStoreRatio) {
var oldWidth = canvas.width;
var oldHeight = canvas.height;
canvas.width = oldWidth * ratio;
canvas.height = oldHeight * ratio;
canvas.style.width = oldWidth + 'px';
canvas.style.height = oldHeight + 'px';
// now scale the context to counter
// the fact that we've manually scaled
// our canvas element
context.scale(ratio, ratio);
}
ページに次の META タグを追加してみてください。これにより、iPhone Safari で発生したアンチエイリアシングの問題が修正されるようです。
<meta name="viewport" content="user-scalable=no, width=device-width,
initial-scale=0.5, minimum-scale=0.5, maximum-scale=0.5" />
いくつかのサブピクセルアンチエイリアスが実行されますが、それはブラウザ/OS次第です。
これについては、以前に少し議論がありましたが、それはあなたの助けになるかもしれません。
私はAndroidまたはiOSデバイスを持っていませんが、キックのためだけに、描画する前にコンテキストを(.5、0)ピクセルで変換してみて、テキストのレンダリング方法に違いがあるかどうかを確認してください。