显式分配时忽略Canvas字体

时间:2017-10-15 02:24:03

标签: javascript canvas fonts

我在画布上画一个文字。问题是ctx.font =字体被完全忽略并将默认设置为10px sans-serif。 这是我的功能。

function drawResTexts(num) {
                    var num = num || "";
                    var font = (resTxtStyle["font-style"+num] != 
undefined ? resTxtStyle["font-style"+num] : "normal") + " " + resTxtStyle["font-size"+num] + "px " + resTxtStyle["font"+num];

                    ctx.font = font; // This line has no effect whatsoever

                    ctx.textAlign = resTxtStyle["align"+num] || "left";
                    var txtArr = resTxt.split("\n");

                    for (var i = 0; i < txtArr.length; i++) {
                        if (resTxtStyle["stroke"+num] != undefined) {
                            var stroke = resTxtStyle["stroke"+num].split(" ");
                            ctx.strokeStyle = stroke[1];
                            ctx.lineWidth = Number(stroke[0]) * 2;
                            ctx.strokeText(txtArr[i], resTxtStyle["pos"+num][0], resTxtStyle["pos"+num][1]);
                        }
                        ctx.fillStyle = resTxtStyle["color"+num];
                        ctx.fillText(txtArr[i], resTxtStyle["pos"+num][0], resTxtStyle["pos"+num][1] + i * (resTxtStyle["line-height"+num] || 0));
                    }
                }

然后我使用drawText();

调用此函数

字体变量为"regular 45px Georgia"

这是我的resTxtStyle obj

resTxtStyle = {
           "align": "center",
            "font": "Georgia",
            "font-size": "45",
            "font-style": "regular",
            "color": "#FFFF4C",
            "stroke": "2 #000"
}

有人可以帮忙吗?

我在这里看到了一个类似的问题,但是在这里 - http://www.tenpay.tech/questions/2162612/html-5-canvas-font-being-ignored但是这里再次调用了canvas.getContext,重置了字体,但我的情况并非如此。

帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

事实证明,字体应为“普通45px格鲁吉亚”。它很奇怪,因为每个图形软件都使用“常规”字体样式。 可能有人会得到这方面的帮助。