亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將字體文本更改為 SVG 路徑

如何將字體文本更改為 SVG 路徑

Go
米脂 2022-07-11 10:33:44
我有 JSON 輸入。{  "text": "Change me to svg path",  "font": "Lato-Bold"}預期輸出如下所示:https ://jsfiddle.net/q2rupnc3/ <svg xmlns:xlink="http://www.w3.org/1999/xlink"  xmlns="http://www.w3.org/2000/svg" height="400" width="800">        <path d="M41.54 58.79L41.54 58.79Q42.34 58.79 42.95 59.40L42.95 59.40L46.76 63.54Q43.60 67.46 38.97 69.55Q34.34 71.64 27.86 71.64L27.86 71.64Q22.07 71.64 17.44 69.66Q12.82 67.68 9.54 64.15Q6.26 60.62 4.52 55.73Q2.77 50.83 2.77 45.04L2.77 45.04Q2.77 39.17 4.64 34.29Q6.52 29.41 9.92 25.88Q13.32 22.36 18.04 20.39Q22.75 18.43 28.48 18.43L28.48 18.43Q34.16 18.43 38.57 20.30Q42.98 22.18 46.08 25.20L46.08 25.20L42.84 29.70Q42.55 30.13 42.10 30.46Q41.65 30.78 40.86 30.78L40.86 30.78Q40.32 30.78 39.74 30.47Q39.17 30.17 38.48 29.72Q37.80 29.27 36.90 28.73Q36.00 28.19 34.81 27.74Q33.62 27.29 32.06 26.98Q30.49 26.68 28.44 26.68L28.44 26.68Q24.95 26.68 22.05 27.92Q19.15 29.16 17.06 31.52Q14.98 33.88 13.82 37.28Q12.67 40.68 12.67 45.04L12.67 45.04Q12.67 49.43 13.91 52.85Q15.16 56.27 17.28 58.61Q19.40 60.95 22.28 62.19Q25.16 63.43 28.48 63.43L28.48 63.43Q30.46 63.43 32.06 63.22Q33.66 63.00 35.01 62.53Q36.36 62.06 37.57 61.33Q38.77 60.59 39.96 59.51L39.96 59.51Q40.32 59.18 40.72 58.99Q41.11 58.79 41.54 58.79ZM60.91 17.57L60.91 38.09Q63.07 36.07 65.66 34.81Q68.26 33.55 71.75 33.55L71.75 33.55Q74.77 33.55 77.11 34.58Q79.45 35.60 81.02 37.46Q82.58 39.31 83.39 41.89Q84.20 44.46 84.20 47.56L84.20 47.56L84.20 71.06L75.31 71.06L75.31 47.56Q75.31 44.17 73.76 42.32Q72.22 40.46 69.05 40.46L69.05 40.46Q66.74 40.46     </svg>我的設備上有 Lato-Bold.ttf 文件,因此如果需要,我可以使用它。我不能使用文本 svg 標簽,因為 svg 閱讀器只能理解路徑。用 Go 怎么能做到這一點?
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

是的,這可以通過https://github.com/tdewolff/canvas實現(我是主要作者)。您可以在https://github.com/tdewolff/canvas/blob/master/examples/preview/main.go#L89看到一個示例(結果在https://github.com/tdewolff/canvas/blob/master/ examples/preview/out.png),我在其中加載字體并將一段文本轉換為矢量路徑。


使用 tdewolff/canvas,以下內容應該適用于您的情況(未經測試):


fontFamily := canvas.NewFontFamily("Lato")

if err := fontFamily.LoadFontFile("Lato-Bold.ttf", canvas.FontBold); err != nil {

    panic(err)

}


face := fontFamily.Face(14.0, canvas.Black, canvas.FontBold, canvas.FontNormal)

path, err := face.ToPath("Change me to svg path")

if err != nil {

    panic(err)

}


tpl := `<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" height="400" width="800">

    <path d="%s" />

</svg>`

fmt.Printf(tpl, path.ToSVG())


查看完整回答
反對 回復 2022-07-11
  • 1 回答
  • 0 關注
  • 638 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號