【问题标题】:font not being rendered correctly by browser after deploy to production部署到生产后浏览器未正确呈现字体
【发布时间】:2014-05-09 14:14:45
【问题描述】:

我的应用使用的字体系列是:

font-family: 'Ubuntu', Tahoma, sans-serif;

在我将(使用 capistrano)部署到 Apache 网络服务器上的服务器后,我可以毫无错误地访问它,但不会呈现 Ubuntu 字体。相反,正在渲染 Tahoma。

环境:

  • 操作系统:Ubuntu 12.0 LTS
  • 应用服务器:Apache/2.2.22 (Ubuntu)
  • Web 服务器:Phusion Passenger 版本 4.0.37
  • Rails:Rails 4.0.0
  • Ruby:ruby 1.9.3p125(2012-02-16 修订版 34643)[x86_64-linux]

我很乐意提供更多信息,请告诉我您需要什么。

【问题讨论】:

  • Ubuntu 字体是否用作外部文件?
  • 其实,我不知道。在我的开发机器(Windows 7)中,我没有名为“Ubuntu”的字体,但是当我将它包含在我的 CSS 文件的字体系列中时(app\assets\stylesheets\) ,它会正确显示在浏览器中。

标签: ruby-on-rails apache passenger dev-to-production


【解决方案1】:

底线是 ubuntu 字体不是系统的标准字体的结果并且您必须包含带有动态路径帮助器的字体文件才能让它们工作生产


字体

我相信您知道,字体必须从文件中呈现。 Web safe 字体是所有系统都有字体的字体...但是谁愿意安全使用它!?

Web fonts 相对较新,它允许您从一系列文件中渲染vectorized 字体。 FontSquirrel's web fonts generatorGoogle's font library 之类的 -- 允许您动态包含字体

您的ubuntu 字体是web font - 您需要将它与您的应用打包,以便它可以跨平台工作:

Ubuntu's WebFont collection

您现在可以通过 CSS 将 Ubuntu 字体系列用作网络字体 @font-face 机制,从 2010 年 12 月 21 日开始支持 通过 Google 字体 API。 Google Font API 是一个跨浏览器系统 允许访问者看到 Ubuntu 字体的清晰和美丽 家庭您的网站,而不必担心他们的字体 已在本地安装。


路径

您可以使用 Google 的字体 api 来渲染字体,也可以使用 SCSS 调用它们:

#app/views/layouts/application.html.erb
<%= stylesheet_link_tag "http://fonts.googleapis.com/css?family=Ubuntu" %>

#app/assets/stylesheets/fonts.css.scss
@font-face
    font:
        family: 'Ionicons'
        weight: normal
        style: normal
        src: asset_url('layout/fonts/IonIcons/ionicons.eot?v=1.4.1')
        src: asset_url('layout/fonts/IonIcons/ionicons.eot?v=1.4.1#iefix') format('embedded-opentype'), asset_url('layout/fonts/IonIcons/ionicons.ttf?v=1.4.1') format('truetype'), asset_url('layout/fonts/IonIcons/ionicons.woff?v=1.4.1') format('woff'), asset_url('layout/fonts/IonIcons/ionicons.svg?v=1.4.1#Ionicons') format('svg')

【讨论】:

  • 嗨@Rich,好的,我发现在我的样式表(app\assets\stylesheets\bootstrap.css.scss)中有这行@import url(//fonts.googleapis.com/css?family=Ubuntu);。如果我选择您提供的 2 个选项中的任何一个,我的应用程序仍会连接到 googleapis.com 以获取字体,对吗?如果我的应用设置为“仅限 Intranet”并且无法访问网络,选项 2 是否足够?
  • 如果你正在寻找一个仅限本地的应用程序,你可以下载ubuntu font并使用FontSquirrel's webfonts tool创建一系列网络字体,可以使用我使用的代码调用以上
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
相关资源
最近更新 更多