Maison> développement back-end> Golang> le corps du texte

Le code doit charger le fichier de police, comment l'intégrer dans le binaire construit

WBOY
Libérer: 2024-02-09 17:27:08
avant
408 Les gens l'ont consulté

Le code doit charger le fichier de police, comment linté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.

Contenu de la question

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)) }
Copier après la connexion

Question

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 ?

Solution

À 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
Copier après la connexion
Le contenu de

cmr10.ttf的内容将被编译器插入到cmr10fontdatasera inséré dans la variablecmr10fontdatapar 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/sdfne 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/truetypeAnalyser les données de police. Notez quesdf.loadfont()utilise également cette méthode en arrière-plan, en appelanttruetype.parse()

avec les données binaires du fichier de police :
f, err := truetype.Parse(cmr10FontData) // Check error // use f if no error
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!