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

UCJ*_*ava 9 css icons dart google-chrome-app angular-dart

我有一个用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";
}
Run Code Online (Sandbox Code Playgroud)

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

UCJ*_*ava 1

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