Heim >Backend-Entwicklung >Golang >Der Code muss die Schriftartdatei laden und sie in die erstellte Binärdatei einbetten
In der PHP-Entwicklung ist das Laden von Schriftartdateien eine häufige Anforderung. Um jedoch die Verfügbarkeit und Benutzerfreundlichkeit der Schriftartdateien sicherzustellen, könnten wir erwägen, die Schriftartdateien in die erstellte Binärdatei einzubetten. Auf diese Weise müssen wir uns nicht mehr auf externe Schriftartdateien verlassen, sondern verwenden eingebettete Schriftarten direkt im Code. Wie bettet man also Schriftdateien ein? Dieser Artikel gibt Ihnen detaillierte Antworten.
Ich habe diesen Code in meinem Go-Paket. Es muss die cmr10.ttf
-Schriftartdatei laden. Daher müssen sich die Schriftartdateien neben jeder ausführbaren Datei befinden, die dieses Paket verwendet.
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)) }
Gibt es eine Möglichkeit, die Verwendung dieses Pakets zum Kopieren der cmr10.ttf
Schriftartdateien neben ausführbaren Dateien zu vermeiden?
Betten Sie beispielsweise Schriftartdateien in integrierte Binärdateien ein. Wenn möglich, wie genau?
Haben Sie weitere Ideen zum Ausprobieren?
Ab go 1.16 unterstützt das go-Tool das direkte Einbetten statischer Dateien in ausführbare Binärdateien. Sie können Binärdaten einer Schriftartdatei mit der //go:embed
-Direktive einbetten:
import ( _ "embed" ) //go:embed cmr10.ttf var cmr10fontdata []byteDer Inhalt von
cmr10.ttf
的内容将被编译器插入到 cmr10fontdata
wird vom Compiler in die Variable cmr10fontdata
eingefügt. Weitere Optionen finden Sie unter Was ist der beste Weg, statische Ressourcen in einem Go-Programm zu bündeln?
Jetzt, da github.com/deadsy/sdfx/sdf
nur sdf.loadfont(fname)
github.com/deadsy/sdfx/sdf
只提供 sdf.loadfont(fname)
辅助函数,您必须使用 github.com/golang/freetype/truetype
解析字体数据。请注意, sdf.loadfont()
也在幕后使用此方法,调用 truetype.parse()
Hilfsfunktion, Sie müssen github.com verwenden /golang/freetype/truetype
Schriftdaten analysieren. Beachten Sie, dass sdf.loadfont()
diese Methode auch im Hintergrund verwendet und truetype.parse()
f, err := truetype.Parse(cmr10FontData) // Check error // use f if no error
Das obige ist der detaillierte Inhalt vonDer Code muss die Schriftartdatei laden und sie in die erstellte Binärdatei einbetten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!