指向本地文件的人脸 URL @font



我需要在html文件中包含一个字体(OpenSymbol),并且字体文件位于本地文件夹中(我知道它的确切绝对路径)。如果我像这样使用@font脸:

@font-face {
  font-family: "OpenSymbol";
  src: url("<absolutePath>/OpenSymbol.ttf") format("truetype");
}

它适用于Chrome,Opera和Safari,但不适用于Firefox和IE9。其他@font面用法在所有浏览器中都运行良好。

顺便说一句,在 Chrome 中,我收到警告:

Resource interpreted as Font but transferred with MIME type application/octet-stream

我该怎么做才能干净地包含未安装在操作系统上的本地存储字体?

编辑:

我发现不同网址的列表似乎不起作用!如果我首先将[...].ttf网址放在首位,Chrome 会加载字体,但如果它在其他地方,则不会加载!

第2次编辑:

我让它在除火狐浏览器以外的所有浏览器中工作:

@font-face { 
  font-family: 'OpenSymbol';
  src: url('file:<path>/openSymbol.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}
@font-face { 
  font-family: 'OpenSymbolEOT';
  src: url('file:<path>/openSymbol.eot') format('embedded-opentype');
  font-weight: normal;
  font-style: normal;
}
...

然后

.element {
  font-family: OpenType, OpenTypeEOT, [...];
}

无论如何,它确实可以在IE中工作,但在使用IE渲染引擎的eclipse中不起作用。o.O

顺便说一句,由于安全问题,Firefox 有问题:看这里

您只需要一个 Web 打开字体格式的字体文件。转到 http://www.fontconverter.org 以转换您的OpenSymbol.tff to OpenSymbol.woff。我是一名跨平台开发人员,我测试了以下工作正常:

  1. macOS 10.12.4 (iMac) 上的 Safari 10.1 和 Firefox 52.0.2
  2. Windows 7 (PC) 上的 Internet Explorer 11.0 和 Firefox 52.0.1 以及 Google Chrome 52.0 和 Opera 53.0
  3. iOS 10.3.1 (iPhone) 上的 Safari
  4. Chrome 57.0 和 Android 5.0.2 上的华硕浏览器 2.0.3(华硕平板电脑)

这在 css 中:

/* Add the decaration on top */
@font-face { 
font-family: 'OpenSymbol';
src: url('font/OpenSymbol.woff') format('woff');
}
/* in separate css .elements or even the whole body, edit your font properties */ 
body {
font-family: OpenSymbol;
font-weight: normal;
font-style: normal;
..

无需为嵌入式OpenType(EOT)字体文件而烦恼,因为它们仅适用于IE9(2011)和IE10(2012)。无需为可缩放矢量图形 (SVG) 字体而烦恼,因为自 iOS 5.0 以来不再需要它们

自2012年以来,每个已知的浏览器都完全支持Web开放字体格式(WOFF)。Truetype 字体 (TTF) 在 iMac 和 PC 上本地使用,也可以在 Android 和 iPhone 上本地使用。这就是为什么Web开发人员经常犯这个错误,使用TTF而不是WOFF作为网站。

可能是浏览器不支持.ttf文件。考虑使用fontsquirrel,它将为您生成所有必需的文件(.ttf,.woff,.svg,.eot)和css,并且可以在所有浏览器中工作。我一直在使用它...

根据 Font Squirrel 的示例字体页面,IE 9 和 Firefox 都要求字体文件从与加载它们的页面相同的域提供。因此,对于 @font-face,您唯一的选择是找到您尝试使用的字体文件并将其上传到站点,然后使用类似于以下内容的代码:

@font-face {
font-family: 'MyWebFont';
src: url('webfont.eot'); /* IE9 Compat Modes */
src: url('webfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
     url('webfont.woff') format('woff'), /* Modern Browsers */
     url('webfont.ttf')  format('truetype'), /* Safari, Android, iOS */
     url('webfont.svg#svgFontName') format('svg'); /* Legacy iOS */
}

取自 http://www.fontspring.com/blog/further-hardening-of-the-bulletproof-syntax

编辑:字体松鼠页面的另一件事,如果您使用的是IIS服务器,则需要将文件类型添加到MIME类型列表中。

最新更新