Golang TTF шрифт в шаблоне - PullRequest
       9

Golang TTF шрифт в шаблоне

0 голосов
/ 23 сентября 2018

Я пытаюсь заставить шрифт TTF работать в шаблоне golang, но он не будет отображать шрифт.Появляется как обычный Times New Roman.Я могу изменить шрифты, используя стандартные шрифты семейства шрифтов (ex verdana или 'helvetica'), но я не могу импортировать TTF.

Все, что я могу найти о шрифтах TTF, - это библиотеки для добавления текста в изображения, но я хочу изменить веб-шрифты.Как мне этого добиться?

Структура проекта:

  • / html_templates / portal.html
  • / html_teplates / Comfortaa-Regular.ttf
  • main.go

Вот соответствующий код Голанга:

import (
    "fmt"
    "net/http"
    "text/template"
)
type Portal struct{
    Title string
}
func main(){
    //Create MUX Routing handlers
    http.HandleFunc("/", portal)

    //Start WebServer
    if err := http.ListenAndServe(":1234", nil); err != nil{ panic(err) }
}
func portal(w http.ResponseWriter, r *http.Request){
    //Create template
    tmpl, _ := template.ParseFiles("./html_templates/portal.html")

    //Populate struct
    portal := Portal{
        Title: "title",
    }

    //Execute template with struct data
    tmpl.Execute(w, portal)
}

И соответствующий HTML:

<html>
<head>
    <title>{{ .Title }}</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <style>
        @font-face {
            font-family: 'comfortaaRegular';
            src: url('Comfortaa-Regular.ttf');
            src: local('comfortaaRegular'), 
                 local('Comfortaa-Regular.ttf'), 
                 url('Comfortaa-Regular.ttf') format('truetype'),
        }
        body{ font-family: 'comfortaaRegular' }
    </style>
</head>
<body>
    <p>test/p>
</body>
</html>

1 Ответ

0 голосов
/ 23 сентября 2018

Вам нужно обработать статические файлы, добавить это к основному функционалу и установить в вашем шаблоне значение /static/Comfortaa-Regular.ttf

//Create MUX Routing for static
fs := http.FileServer(http.Dir("./static"))
http.Handle("/static/", http.StripPrefix("/static/", fs))

Вот полный рабочий код

package main

import (
    "net/http"
    "text/template"
)

type Portal struct{
    Title string
}

func main(){
    //Create MUX Routing handlers
    http.HandleFunc("/", portal)

    //Create MUX Routing for static
    fs := http.FileServer(http.Dir("./static"))
    http.Handle("/static/", http.StripPrefix("/static/", fs))

    //Start WebServer
    if err := http.ListenAndServe(":1234", nil); err != nil{ panic(err) }
}

func portal(w http.ResponseWriter, r *http.Request){
    //Create template
    tmpl, _ := template.ParseFiles("./html_templates/portal.html")

    //Populate struct
    portal := Portal{
        Title: "title",
    }

    //Execute template with struct data
    tmpl.Execute(w, portal)
}

И шаблон

<head>
    <title>{{ .Title }}</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <style>
        @font-face {
            font-family: 'comfortaaRegular';
            src: url('/static/Comfortaa-Regular.ttf');
            src: local('comfortaaRegular'),
                 local('Comfortaa-Regular.ttf'),
                 url('/static/Comfortaa-Regular.ttf') format('truetype'),
        }
        body{ font-family: 'comfortaaRegular' }
    </style>
</head>
<body>
    <p>test</p>
</body>
</html>
...