Font Awesome 字体在 Git clone/pull 之后显示为方框?

Font Awesome fonts displaying as boxes after Git clone/pull?

我一直遇到一个相当奇怪的问题,我想看看是否有其他人遇到过同样的问题以及他们是否找到了解决方案。

对于给定的 Web 项目,我下载了 Font Awesome,包括 CSS 文件并确保所有文件都被正确加载(没有 404)并且一切正常。我在项目上做了一些工作,然后完成了 git commit/push.

问题是,通常当我转到另一台机器并执行 git clone/pull 时,所有在原始机器上运行良好的字体图标都显示为方框!控制台仍然没有报404错误。一旦我重新下载 Font Awesome 并重新复制文件(它们在那里,它们只是不起作用),一切都会再次正常工作。

有人遇到过 git 损坏字体文件的问题吗?还是我的工作流程中还有其他令人厌烦的事情?非常感谢帮助和建议。

更新:问题已解决

快速修复是切换到 CDN 来加载文件。我最初不愿意这样做,因为我担心加载时间,但它非常好,而且它给我的服务器带来的负载更少。

实际问题出在文件的行尾。如果在 Windows 上开发(不幸的是我是),那么 git 有时(经常)检查具有 Windows 风格行尾的文件并以 Linux 风格提交它们。由于某种原因,这损坏了 Font Awesome 字体文件。

因此,更详细的修复(如果您坚持不使用 CDN)是确保 git 保留 Font Awesome 文件的原始行尾,并且不会更改它们commit/checkout.

这可能是 git 的 core.autocrlf 功能引起的。

当该选项为真时,这些二进制文件将被折叠。

从您的描述中不确定为什么会发生这种情况,但是许多现代项目的精明开发人员混合使用或使用多个级联依赖项:

  1. 默认情况下,使用 font-awesome CDN(参见:http://www.bootstrapcdn.com/#fontawesome_tab)这将防止这些问题。
  2. 如果上述方法失败,回退到本地(域内)副本和相同的版本。

这不是一个完整的答案,但这将为您提供所选库的 CDN 版本 - 以及 - 在您需要的地方,您可以依赖的本地版本。

有一些 JS 库允许您回退到库的本地副本,但这个问题涵盖了一些技术:

How to load local script files as fallback in cases where CDN are blocked/unavailable?