Rumah >pembangunan bahagian belakang >Golang >Kod mesti memuatkan fail fon, bagaimana untuk membenamkannya ke dalam binari terbina

Kod mesti memuatkan fail fon, bagaimana untuk membenamkannya ke dalam binari terbina

WBOY
WBOYke hadapan
2024-02-09 17:27:08468semak imbas

Kod mesti memuatkan fail fon, bagaimana untuk membenamkannya ke dalam binari terbina

Dalam pembangunan PHP, memuatkan fail fon adalah keperluan biasa. Walau bagaimanapun, untuk memastikan ketersediaan dan kemudahan fail fon, kami mungkin mempertimbangkan untuk membenamkan fail fon ke dalam binari terbina. Dengan cara ini, kita tidak perlu lagi bergantung pada fail fon luaran, tetapi menggunakan fon terbenam secara langsung dalam kod. Jadi, bagaimana untuk membenamkan fail fon? Artikel ini akan memberi anda jawapan terperinci.

Kandungan soalan

Saya ada kod ini dalam pakej go saya. Ia mesti memuatkan fail fon cmr10.ttf. Oleh itu, fail fon mesti terletak di sebelah setiap fail boleh laku yang menggunakan pakej ini.

import (
    "github.com/deadsy/sdfx/sdf"
)

func Text(txt string, height, thickness, roundness float32) (sdf.SDF3, error) {
    f, err := sdf.LoadFont("cmr10.ttf")
    if err != nil {
        return nil, err
    }

    t := sdf.NewText(txt)

    s2d, err := sdf.TextSDF2(f, t, float64(height))
    if err != nil {
        return nil, err
    }

    // Extrude the 2D SDF to a 3D SDF.
    return sdf.ExtrudeRounded3D(s2d, float64(thickness), float64(roundness))
}

Soalan

Adakah terdapat cara untuk mengelak daripada menggunakan pakej ini untuk menyalin cmr10.ttf fail fon di sebelah mana-mana boleh laku?

Sebagai contoh, benamkan fail fon ke dalam binari terbina. Jika boleh, bagaimana sebenarnya?

Ada idea lain untuk dicuba?

Penyelesaian

Bermula dari go 1.16, alat go menyokong membenamkan fail statik terus ke dalam binari boleh laku. Anda boleh membenamkan data binari fail fon menggunakan arahan //go:embed:

import (
    _ "embed"
)

//go:embed cmr10.ttf
var cmr10fontdata []byte
Kandungan

cmr10.ttf 的内容将被编译器插入到 cmr10fontdata akan dimasukkan ke dalam pembolehubah cmr10fontdata oleh pengkompil. Untuk pilihan lain, lihat Apakah cara terbaik untuk menggabungkan sumber statik dalam program go?

Kini disebabkan github.com/deadsy/sdfx/sdf hanya menyediakan sdf.loadfont(fname)github.com/deadsy/sdfx/sdf 只提供 sdf.loadfont(fname) 辅助函数,您必须使用 github.com/golang/freetype/truetype 解析字体数据。请注意, sdf.loadfont() 也在幕后使用此方法,调用 truetype.parse() fungsi pembantu, anda mesti menggunakan github.com / golang/freetype/truetype Menghuraikan data fon. Ambil perhatian bahawa sdf.loadfont() juga menggunakan kaedah ini di belakang tabir, memanggil truetype.parse()

dengan data binari fail fon: 🎜
f, err := truetype.Parse(cmr10FontData)
// Check error
// use f if no error

Atas ialah kandungan terperinci Kod mesti memuatkan fail fon, bagaimana untuk membenamkannya ke dalam binari terbina. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam