Vin*_*t J 3 css google-chrome font-face media-queries
我希望打印的字体与屏幕的字体不同。不幸的是,Google Chrome打印预览(可在其他浏览器上运行)不会加载字体,也不会显示文本。但是,如果您第二次尝试,则会加载字体,然后Google Chrome打印预览将显示文本!
这是一个小提琴,您可以重现该问题。(nb:在小提琴上,字体网址不存在,但至少预览应将文本显示为“ serif”)。
是否有比为所有@media强制预加载打印字体更好的解决方案?
在所有版本小于等于53的Google Chrome浏览器中都会出现此问题。
我使用以下代码:
@media only print {
@font-face {
font-family: "Computer Modern";
src: url('/fonts/cm/cmunrm.otf');
font-weight: normal;
font-style: normal;
}
body {
font-family: "Computer Modern", serif;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
在我们遇到同样的问题之后,才通过Google找到了这个问题。悲伤,就见第11个月没有答案了,所以也许这将帮助您和他人。
Chrome似乎加载了自定义字体“按需”。因此,如果该页面上尚未使用该字体,则您的第一个“打印预览”还没有该字体,后续的字体将拥有它。那里可能是计时问题。
一种解决方案是确保您还在页面的常规版本上使用打印字体。
@font-face {
font-family: "Computer Modern";
src: url('/fonts/cm/cmunrm.otf');
font-weight: normal;
font-style: normal;
}
@media only print {
body {
font-family: "Computer Modern", serif;
}
}
.printfont {
font-family: "Computer Modern", serif;
}
Run Code Online (Sandbox Code Playgroud)
https://jsfiddle.net/72bsf1n0/8/
这里有一个问题\n https://bugs.chromium.org/p/chromium/issues/detail?id=284840
\n\n现在,您需要确保在使用 print 之前渲染了打印字体,并且您要渲染每个要打印的语言组中的至少 1 个字符:
\n\n现在我添加拉丁扩展字符
\n\n<div class="chrome-font-fix">s\xc5\xa1<b>s\xc5\xa1</b><i>s\xc5\xa1</i></div>\nRun Code Online (Sandbox Code Playgroud)\n\n隐形风格
\n\n.chrome-font-fix {\n position: absolute;\n visibility: hidden;\n}\nRun Code Online (Sandbox Code Playgroud)\n