How to preserve special characters in toml string variable?

In my Hugo config.toml file I define an array of font names:

[Params]
    Fonts = [
    	"Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900,900italic",
    	"Raleway:400,100,200,300,600,500,700,800,900",
    	"Montserrat:400,700",
    	"Cardo:400,400italic,700",
    	"Sanchez:400italic,400",
    	"Cardo:400,400italic,700"
    ]

I use the variable in a range:

{{ range .Site.Params.Fonts }}
    <link href='https://fonts.googleapis.com/css?family={{ htmlUnescape . }}' rel='stylesheet' type='text/css'>
{{ end }}

In the resulting HTML file all special characters are converted, e.g. colon to %3a:

<link href='https://fonts.googleapis.com/css?family=Roboto%3a400%2c100%2c100italic%2c300%2c300italic%2c400italic%2c500%2c500italic%2c700%2c700italic%2c900%2c900italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Raleway%3a400%2c100%2c200%2c300%2c600%2c500%2c700%2c800%2c900' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Montserrat%3a400%2c700' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Cardo%3a400%2c400italic%2c700' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Sanchez%3a400italic%2c400' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Cardo%3a400%2c400italic%2c700' rel='stylesheet' type='text/css'>

How can I avoid this conversion?

Try this:

{{ range .Site.Params.Fonts }}
    <link href='{{ (printf "https://fonts.googleapis.com/css?family=%s" .) | safeURL }}' rel='stylesheet' type='text/css'>
{{ end }}

You want to make the entire href value “safe” for the Go HTML template.