正如教程所述(不那么清楚),如果要将单个字母视为唯一的 SVG 路径,则需要将字体转换为“cufon”格式。如果您这样做,则 paper.print 函数将按预期工作。没有它,打印函数返回一个空数组(并且“字母[4]”崩溃)。
作为实验,我从 html5rocks 中抓取了两个丢失的字体文件:
<script src="Vegur.font.js"></script>
<script src="cufon.js"></script>
并将它们添加到示例 HTML 页面中:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Raphaël—JavaScript Library</title>
</head>
<body>
<div id="demo-1"></div>
<script src="raphael.js" type="text/javascript"></script>
<script src="Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="Scripts/Vegur.font.js" type="text/javascript"></script>
<script src="Scripts/cufon.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
var paper = Raphael("demo-1", 320, 200);
var t = paper.text(50, 10, "HTML5ROCKS");
var letters = paper.print(50, 50, "HTML5ROCKS", paper.getFont("Vegur"), 40);
letters[4].attr({ fill: "orange" });
for (var i = 5; i < letters.length; i++) {
letters[i].attr({ fill: "#3D5C9D", "stroke-width": "2", stroke: "#3D5C9D" });
}
});
</script>
</body>
</html>
第二个 HTML5ROCKS 文本按预期着色(如原始教程页面所示)。