使用没有Roboto的Polymer

时间:2017-10-27 10:29:53

标签: javascript css polymer polymer-2.x html-imports

在加载任何组件之前,我有一个指定了显式--paper-font-common-base的Polymer 2应用程序:

--paper-font-common-base: {
    font-family: 'Comic Sans'; 
    /* Not really, nobody's that evil, but problem is there for any font */
};

然后,在某些时候加载Polymer组件,例如paper-dialog,将导入typography.html

<link rel="import" href="../paper-styles/typography.html">

反过来typography.html imports Robotooverrides the mixin

<link rel="import" href="../font-roboto/roboto.html">
...
<custom-style>
    <style is="custom-style">
        html {
            --paper-font-common-base: {
                font-family: 'Roboto', 'Noto', sans-serif;
                -webkit-font-smoothing: antialiased;
            };

这会覆盖我指定的字体,但也可以从Google's CDN下载Roboto,我明确不希望这样。

其他聚合物组件,例如paper-radio-button采用不同的方法:

/*
This element applies the mixin `--paper-font-common-base` but does not import `paper-styles/typography.html`.
In order to apply the `Roboto` font to this element, make sure you've imported `paper-styles/typography.html`.
*/

如何设置--paper-font-common-base以便Polymer组件使用与我的应用程序其余部分相同的字体?

5 个答案:

答案 0 :(得分:0)

我认为<custom-style>正在加载<head>标记,因为它已包含在<script>标记中。

为了克服这种行为,您还需要在<head>标签中将您的脚本添加到更高的位置。

答案 1 :(得分:0)

解决此问题的一种方法是使用空font-roboto文件创建自己的roboto.html依赖项。然后在您的bower.json中,您将强制您的依赖关系成为font-roboto冲突的解决方案。

答案 2 :(得分:0)

我建议

  1. 分叉<paper-dialog>,并移除typography.html
  2. 的导入
  3. 加载您自己的<paper-dialog>
  4. 副本
  5. <paper-dialog>
  6. 提交故障单或提款请求
  7. 如果您的更改已被正式接受,请再次加载官方<paper-dialog>

答案 3 :(得分:0)

如果您希望此字体适用于整个网络应用,那么

--paper-font-common-base: {
    font-family: 'Comic Sans';
};

声明为custom-style元素?

如果没有尝试:

<custom-style>
  <style>
        html {
            --paper-font-common-base: {
                font-family: 'Comic Sans'; 
            };
        }
  </style>
</custom-style>

如果你将它添加到root元素中,它应该应用于所有子元素,除非某些自定义组件覆盖它们自己的字体。

编辑:

有一个plunker示例。

答案 4 :(得分:0)

.bowerrc中添加:

{
  "scripts": {
    "postinstall": "node -e \"require('fs').writeFileSync('bower_components/font-roboto/roboto.html', '')\""
  }
}

构建后,roboto.html将成为一个空文件而没有任何错误请求。