php - 如何在不让用户下载字体的情况下嵌入字体?

标签 php css apache font-face

我知道这有点矛盾,因为浏览器必须下载字体才能呈现它,但我想知道是否有一种方法可以在无法直接下载(或缓存到用户计算机上)的地方托管它那很重要)。

我想到的一个解决方案是制作一个 PHP 脚本,将当前时间散列到秒(添加盐)。如果 GET 请求中的特定变量与此哈希匹配,则它将发送字体的 MIME 类型的 header ,然后输出字体文件的内容。

然后我会在样式表中重新创建散列并连接字符串,这将是对 PHP 脚本的有效请求。

这是基本的想法。我有它的工作。但这有两个缺陷:

  1. 如果浏览器在另一秒请求字体,PHP 脚本将无法匹配哈希值,因此不会输出任何内容,因此字体将是备用字体(如果没有提供,则为默认字体)<
  2. 如果有人足够快,他/她仍然可以在同一秒请求字体时直接下载字体(假设这可能必须是一个脚本来执行此操作。

浏览器还会在任何地方缓存字体(并不是说缓存会有帮助,因为 URI 中的哈希值实际上总是不同的)。

编辑:是否有我可以利用的任何 $_SERVER 变量?

最佳答案

正如其他答案所说,对于真正想要下载它的人来说非常困难(不可能)。几乎总有办法。然而,为了给你一些想法,this article描述了 Typekit 如何处理该问题。

关于php - 如何在不让用户下载字体的情况下嵌入字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8158472/

相关文章:

php - 为 Laravel 中的每个 Controller 和方法创建一个路由

php - 在 codeigniter 中清除 mysql 查询

css - Rails 表单内联

java - TOmcat7 在 Eclipse Kepler 中不工作

php - Zend DB 无法模拟 MS SQL 的限制和偏移量

php - 使用 PHP 的 SOAP 在服务器端修改发送的 XML

php - 如何在 apache 中建立 SSH 连接

image - 防止盗链图像文件

jquery - 悬停包装器上的 css 显示和滑动 div

javascript - 如何设置日期时间选择器的样式