如何在Chrome Packaged Apps中使用自定义/外部字体图标

时间:2014-09-04 19:18:29

标签: css icons dart angular-dart google-chrome-app

我使用AngularDart编写的Chrome打包应用程序,并尝试获取一些外部图标以使应用程序看起来更好,但无法通过网络找到任何示例。尝试了许多事情以及下面的解决方法,但无法使其正常工作。我将@ font-face添加到我的css中,如下所示:

@font-face {
    font-family: 'Icons';
    src: url(data:font/ttf;charset=utf-8;base64,<ttf file encoded to base64>) format('truetype'),
         url(data:font/woff;charset=utf-8;base64,<woff file encoded to base64>) format('woff'),
         url(data:font/svg;charset=utf-8;base64,<svg file encoded to base64>) format('svg');
    font-weight: normal;
    font-style: normal;
}

[class^="icon-"], [class*=" icon-"] {
    font-family: 'Icons';
    speak: none;
    font-style: normal;
    font-weight: normal;
    font-variant: normal;
    text-transform: none;
    line-height: 1;

    /* Better Font Rendering =========== */
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.icon-uniF085:before {
    content: "\f085";
}

我试图通过将我的图标文件:.ttf,.woff,.svg,.eot转换为base64并将它们嵌入到我的控制器CSS中来避免CSP(内容安全策略)问题但是当我运行应用程序时我看到了在chrome中是默认的方框而不是我引用的图标();控制台或Chrome浏览器上没有错误。我想知道是否有人使用Chrome打包应用程序使用自定义或外部图标/字体。如果有任何解决方法,请告诉我。

2 个答案:

答案 0 :(得分:1)

经过一些尝试后,我发现这里的问题不是将文件嵌入到组件中,而是实际上在shadowDOM中获得了font-face工作,这似乎不会发生,一旦我为我的组件禁用了shadowDOM它可以使用全局样式和图标工作正常作为base64编码,但当然禁用shadowDOM批量整个组件页面设计,我需要重构。我仍然认为应该有一种方法在shadowDOM中使用font-face。

答案 1 :(得分:0)

尝试IcoMoon https://icomoon.io/app/ 导入图标后,它将生成嵌入了字体的CSS文件(默认情况下关闭,更改首选项) 为我工作好