一部のフォントは、CSS のイタリックまたはボールドをサポートしていません (たとえば、 Zapfinoはすでにかなりスクリプトのように見えるため、イタリックをサポートしていません)。エディターでスタイル ボタンを無効にできるように、フォント スタイルがサポートされていないことを検出したいと考えています。
私はこのようなことを試しました:
that.checkFontData = function( fontList )
{ var test = $("<span style='font-size:24px;absolute;visibility:hidden;height:auto;width:auto;white-space:nowrap;'>abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ12345678910</span>");
$('body').append( test );
for (var i= 0, iMax = fontList.length; i < iMax; ++i)
{ test.css( 'fontFamily', fontList[i] );
var normalWidth = test.outerWidth( true );
var normalHeight = test.outerHeight( true );
test.css( 'fontStyle', 'italic' );
var italicWidth = test.outerWidth( true );
var italicHeight = test.outerHeight( true );
test.css( 'fontStyle', 'normal' );
test.css( 'fontWeight', 'bold' );
var boldWidth = test.outerWidth( true );
var boldHeight = test.outerHeight( true );
console.log( fontList[i] + ", normal: " + normalWidth + ", bold: " + boldWidth + ", italic: " + italicWidth );
}
test.remove( );
};
しかし、それは機能しません...イタリックまたは太字を提供する多くのフォントは、同じ幅を報告します。
次に、canvas 要素でこれを検出することを考えましたが、残念ながら、firefox はキャンバスにイタリック体のテキストをレンダリングすることさえできないため、その考えは台無しになります。
何を提案しますか?