我有一个书签,可以将小部件插入任何网站的页面。小部件的样式被具有以下CSS @font-face
声明的某个站点破坏:
@font-face {
font-family: "helvetica";
src: url("http://cdn2.yoox.biz/Os/fonts/helveticaneueltstdmdcn.eot?iefix") format("eot"),
url("http://cdn2.yoox.biz/Os/fonts/helveticaneueltstdmdcn.woff") format("woff"),
url("http://cdn2.yoox.biz/Os/fonts/helveticaneueltstdmdcn.ttf") format("truetype"),
url("http://cdn2.yoox.biz/Os/fonts/helveticaneueltstdmdcn.svg#svgFontName") format("svg");
}
我的bookmarklet插入的小部件到处使用helvetica,在这个网站上看起来很糟糕,因为浏览器将helvetica映射到该名称的@font-face
声明,而不是标准的helvetica系统字体。
问题:是否有任何方法可以覆盖/绕过此@font-face
声明或创建另一个映射到系统helvetica字体的@font-face
声明?
答案 0 :(得分:4)
除非样式表通过在窗口小部件样式表之后使用!important
引用样式表来覆盖样式表,否则这可能有效:
@font-face {
font-family: 'ProperHelvetica'; /* Make a name for the "proper" Helvetica */
src: local('helvetica'); /* Assign it to the Helvetica font on the user's system */
}
.your-widget {
font-family: 'ProperHelvetica', helvetica, sans-serif !important; /* Make everything
in your widget use the "proper" Helvetica and if the user doesn't have it,
use the site's helvetica. */
}
答案 1 :(得分:3)
您可以添加以下css来创建映射到本地安装字体的自定义字体名称:
@font-face{
font-family: mycustomuniquefontname;
src: local("Helvetica");
}
对于小部件的样式,你应该使用它:
font-family: mycustomuniquefontname, Helvetica, sans-serif;
如果您使用更多字体样式(如粗体和斜体),则必须定义所有字体样式:
@font-face{
font-family: mycustomuniquefontname;
src: local("Helvetica");
}
@font-face{
font-family: mycustomuniquefontname;
src: local("Helvetica Bold");
font-weight: bold;
}
@font-face{
font-family: mycustomuniquefontname;
src: local("Helvetica Italic");
font-style: italic;
}
@font-face{
font-family: mycustomuniquefontname;
src: local("Helvetica Bold Italic");
font-weight: bold;
font-style: italic;
}
答案 2 :(得分:1)
我一提交这个问题就得到了一些启发。我发现的作品如下......
创建以下css规则:
@font-face {
font-family: 'RealHelvetica';
src: local('helvetica');
}
在需要真正的helvetica系统字体的元素中,将font-family指定为'RealHelvetica'而不仅仅是helvetica:
.widget {
font-family: 'RealHelvetica',helvetica,sans-serif !important;
}
答案 3 :(得分:0)
将您的小部件包装在iframe中。不知道它是否是最佳解决方案,但它是 解决方案。
var $frame = $('<iframe style="width:200px; height:100px;">');
$('body').append( $frame );
setTimeout( function() {
var $doc = $($frame[0].contentWindow.document.documentElement);
$doc.html("<head><title>abc</title></head><body><div>def.</div></body></html>");
$doc.find('div').append('<div>ghi.</div>');
}, 1 );
奖励:未来可以证明您的小部件与大多数其他CSS或字体相关的问题。