是否可以检测浏览器何时使用后备字体而不是 CSS 中指定的主要字体?

Is it possible to detect when a browser is using a fallback font instead of the primary one specified in the CSS?

如果在文本字段中输入了一个字符,而当前应用的字体不支持该字符,则会为该字符使用备用字体。是否可以通过 Javascript 或其他方式告知何时发生这种情况?尝试创建一个脚本,在字体不支持某个字符时提醒用户。感谢您的帮助!

这听起来像是 fontkit.js or opentype.js, or even Font.js 之类的工作,所有这些都可以测试字形支持的字体。系统字体不以这种方式涵盖(Font.js 可能有效,它可能会报告测试字形的宽度为 0),但这些通常是 "web safe" 字体,我们已经确切知道哪些字形得到支持,因为每个人都使用相同的。不过,为了在自定义字体中测试 "holes",前面提到的三种字体中的任何一种都应该已经完成​​了您打算实现的操作。

查看字体中字符的宽度,并与fallback比较,可以推断是否使用了fallback字体。此测试可能不是 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>

jsfiddle