如果在文本框中输入了一个字符,当前应用的字体不支持该字符,则该字符将使用备用字体。是否可以通过Javascript或其他方式告知此时发生了什么? 试图创建一个脚本,如果某个字符不受字体支持,就会向用户发出警报。感谢您的帮助!
font.measureText(textString, fontSize));
,可能需要使用 forEach
循环来渲染所有需要呈现的字形。任何返回宽度为0的度量对象的 measureText
都不被所涉及的字体支持。 - Mike 'Pomax' Kamermansbrowserify --standalone
或类似工具),而只要您为其提供一个canvas shim,Font.js 就可以在Node中愉快地工作。 - Mike 'Pomax' Kamermans通过检查字体中字符的宽度,并将其与备选字体进行比较,您可以推断出是否正在使用后备字体。该测试可能不是100%可靠的,但您可以执行以下操作:
var text = $(".main-text").html();
var chars = text.split("");
for(var i = 0, len = chars.length; i < len; i++){
var str = chars[i]; str+=str;str+=str;str+=str;
$("#test1, #test2").html(str);
var w1 = $("#test1").width();
var w2 = $("#test2").width();
if(w1 == w2 && w1 != 0){
alert("char not supported " + chars[i]);
}
}
.main-text {
width: 50%;
height: 300px;
font-family: Impact, sans-serif;
font-size: 16px;
}
#test1, #test2 {
position: fixed;
top: -100px;
font-size: 16px;
}
#test1 {
font-family: Impact, sans-serif;
}
#test2 {
font-family: sans-serif;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea class="main-text">
Serif Font
This E is not supported: ể
</textarea>
<span id="test1"></span>
<span id="test2"></span>