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.
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)) }
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?
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
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()
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!