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 policecmr10.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 policescmr10.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 []byte
cmr10.ttf
的内容将被编译器插入到cmr10fontdata
sera inséré dans la variablecmr10fontdata
par le compilateur. Pour d'autres options, consultezQuelle est la meilleure façon de regrouper des ressources statiques dans un programme Go ?
Maintenant, cargithub.com/deadsy/sdfx/sdf
ne fournit quesdf.loadfont(fname)
github.com/deadsy/sdfx/sdf
只提供sdf.loadfont(fname)
辅助函数,您必须使用github.com/golang/freetype/truetype
解析字体数据。请注意,sdf.loadfont()
也在幕后使用此方法,调用truetype.parse()
fonction d'assistance, vous devez utilisergithub.com / golang/freetype/truetype
Analyser les données de police. Notez quesdf.loadfont()
utilise également cette méthode en arrière-plan, en appelanttruetype.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!