【发布时间】:2012-05-09 11:14:06
【问题描述】:
我正在创建一个应用程序,让您可以在网络上预览字体,就像myfonts 一样。有人知道他们是怎么做到这么快的吗?
我的方法是使用 HTML5 Canvas 和一些 Javascript 生成字体预览。这是在服务器端使用 PHP GD 库或 Imageick 生成图像的替代方法。
然而,尽管使用 HTML5 画布可以使事情变得快速,并且所有处理都在客户端。我无法隐藏我加载的字体,因为我必须使用 font-face 来加载字体:
@font-face {
font-family: 'Press Start 2P';
src: url('fonts/PressStart2P.ttf');
}
并使用JS渲染到画布上:
$('#draw').click(function () {
var canvas = $('canvas')[0],
ctx = canvas.getContext('2d');
ctx.font = '12px "Press Start 2P"';
ctx.fillStyle = '#000';
ctx.fillText('Hello, world!', x, y += 20);
ctx.fillRect(x - 20, y - 10, 10, 10);
});
关于如何将字体路径保密或任何其他快速生成图像的替代方法的任何想法。我需要非常频繁地在每个页面上生成大约 40 多个图像。
【问题讨论】:
-
我想他们可能会缓存渲染的字体服务器端,因此不必在每个视图上都生成它们。至于在网络上保密,你不能。 HTML 和 HTTP 被构建为开放标准。如果您可以访问资源以查看它,您可以获得有关该资源存储位置的详细信息。
-
你说得对,我以为我可以使用 AJAX 加载字体,但这很容易被嗅出。
-
myfons 在服务器端进行渲染。他们从页面发送带有文本和字体信息的 ajax 调用,并返回一个带有要显示的图像的 json 对象。
-
@Abs 您最终选择了哪种技术来在服务器上快速生成图像?
标签: php javascript html canvas