Maison > Article > développement back-end > Le code doit charger le fichier de police, comment l'intégrer dans le binaire construit
Dans le développement PHP, le chargement des fichiers de polices est une exigence courante. Cependant, pour garantir la disponibilité et la commodité des fichiers de polices, nous pourrions envisager d'intégrer les fichiers de polices dans le binaire construit. De cette façon, nous n’avons plus besoin de nous appuyer sur des fichiers de polices externes, mais d’utiliser des polices intégrées directement dans le code. Alors, comment intégrer des fichiers de polices ? Cet article vous apportera des réponses détaillées.
J'ai ce code dans mon package go. Il doit charger le fichier de police cmr10.ttf
. Par conséquent, les fichiers de polices doivent être situés à côté de chaque fichier exécutable qui utilise ce package.
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)) }
Existe-t-il un moyen d'éviter d'utiliser ce package pour copier les fichiers de polices cmr10.ttf
à côté des exécutables ?
Par exemple, intégrez des fichiers de polices dans des binaires intégrés. Si possible, comment exactement ?
D'autres idées à essayer ?
À partir de go 1.16, l'outil go prend en charge l'intégration de fichiers statiques directement dans des binaires exécutables. Vous pouvez intégrer les données binaires d'un fichier de police à l'aide de la directive //go:embed
:
import ( _ "embed" ) //go:embed cmr10.ttf var cmr10fontdata []byteLe contenu de
cmr10.ttf
的内容将被编译器插入到 cmr10fontdata
sera inséré dans la variable cmr10fontdata
par le compilateur. Pour d'autres options, consultez Quelle est la meilleure façon de regrouper des ressources statiques dans un programme Go ?
Maintenant, car github.com/deadsy/sdfx/sdf
ne fournit que sdf.loadfont(fname)
github.com/deadsy/sdfx/sdf
只提供 sdf.loadfont(fname)
辅助函数,您必须使用 github.com/golang/freetype/truetype
解析字体数据。请注意, sdf.loadfont()
也在幕后使用此方法,调用 truetype.parse()
fonction d'assistance, vous devez utiliser github.com / golang/freetype/truetype
Analyser les données de police. Notez que sdf.loadfont()
utilise également cette méthode en arrière-plan, en appelant truetype.parse()
f, err := truetype.Parse(cmr10FontData) // Check error // use f if no error
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!