一些字体不支持 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( );
};
但它不起作用......许多提供斜体或粗体的字体报告相同的宽度。
接下来,我想用画布元素来检测这一点,但是,可惜的是,Firefox 甚至没有在画布中呈现斜体文本,所以这个想法很糟糕。
你有什么建议?