對於給定的字體和給定的字符串,如何在JavaScript中使用下面的圖片獲取像這樣的多邊形點?多邊形指出字母
(我知道對SO有關的問題,但它們對於Python或其他語言/環境;我想的JavaScript唯一的解決方案,如果可能的話)
編輯:隨訪@羅馬人答案:
使用typeface.js在線工具,我將TrueType字體轉換爲typeface.js格式。每個字母表示與此類似:(這裏是信d
的表示)
"d": {
"x_min": 135.640625,
"x_max": 792.171875,
"ha": 928,
"o": "m 135 998 l 330 998 q 792 499 763 933 q 330 0 763 65 l 135 0 l 135 998 m 330 151 q 648 499 635 211 q 330 846 635 786 l 287 846 l 287 151 l 330 151 "
},
typeface.js碼的呈現基於此格式的信件的關鍵部分是:
switch(action) {
case 'm':
ctx.moveTo(outline[i++], outline[i++]);
break;
case 'l':
ctx.lineTo(outline[i++], outline[i++]);
break;
case 'q':
var cpx = outline[i++];
var cpy = outline[i++];
ctx.quadraticCurveTo(outline[i++], outline[i++], cpx, cpy);
break;
case 'b':
var x = outline[i++];
var y = outline[i++];
ctx.bezierCurveTo(outline[i++], outline[i++], outline[i++], outline[i++], x, y);
break;
}
您可能需要寫一個畫布,然後使用一些算法(您可能可以借用另一種語言)計算,基於畫布的像素 –