Обратите внимание, что только с тенью вы не можете «оттолкнуть» свечение очень далеко от краев текста; непрозрачность уменьшается слишком быстро, чтобы быть эффективной.
Я бы лично порекомендовал использовать обводку текста с полупрозрачной рамкой, прежде чем заливать его полностью:
ctx.strokeStyle = "rgba(255,255,255,0.4)"; // 40% opaque white
ctx.lineWidth = 10; // A nice fat border
ctx.strokeText(notstring, xpos, 15);
ctx.fillStyle = "black";
ctx.fillText(notstring, xpos, 15);
Если вам кажется, что «жесткий» край мазка слишком отвлекает, вы все равно можете использовать размытие тени, чтобы немного смягчить его. Вам нужно будет уменьшить непрозрачность обводки (так как под ней также будет тень):
ctx.shadowColor = 'red'; // full red shadow
ctx.strokeStyle = 'rgba(255,0,0,0.2)'; // 20% opaque red
ctx.shadowBlur = 8; // soft edge
ctx.lineWidth = 9; // wide border
ctx.strokeText(notstring, xpos, 15);
ctx.shadowBlur = 0; // turn off shadow before filling
ctx.fillText(notstring, xpos, 15);
Вы можете увидеть живое демо, сравнивающее только тень, только обводку и комбинацию здесь:
http://jsfiddle.net/ksrfY/11/