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

Question

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 ?

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 的内容将被编译器插入到 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()

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
Tutoriels populaires
Plus>
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!