搜索
首页后端开发Golang代码必须加载字体文件,如何嵌入到构建的二进制文件中

代码必须加载字体文件,如何嵌入到构建的二进制文件中

在PHP开发中,加载字体文件是一项常见的需求。然而,为了确保字体文件的可用性和方便性,我们可能会考虑将字体文件嵌入到构建的二进制文件中。这样一来,我们就不再需要依赖外部的字体文件,而是直接在代码中使用嵌入的字体。那么,如何实现字体文件的嵌入呢?本文将为您详细解答。

问题内容

我的 go 包中有这段代码。它必须加载 cmr10.ttf 字体文件。因此,字体文件必须位于使用此包的每个可执行文件旁边。

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))
}

问题

有没有办法避免使用此包将 cmr10.ttf 字体文件复制到任何可执行文件旁边?

例如,将字体文件嵌入到构建的二进制文件中。如果可以的话具体怎么做?

还有其他可以尝试的想法吗?

解决方法

从 go 1.16 开始,go 工具支持将静态文件直接嵌入可执行二进制文件中。您可以使用 //go:embed 指令嵌入字体文件的二进制数据:

import (
    _ "embed"
)

//go:embed cmr10.ttf
var cmr10fontdata []byte

cmr10.ttf 的内容将被编译器插入到 cmr10fontdata 的内容将被编译器插入到 cmr10fontdata 变量中。有关其他选项,请参阅 在 go 程序中捆绑静态资源的最佳方式是什么?

现在由于 github.com/deadsy/sdfx/sdf 只提供 sdf.loadfont(fname)github.com/deadsy/sdfx/sdf 只提供 sdf.loadfont(fname) 辅助函数,您必须使用 github.com/golang/freetype/truetype 解析字体数据。请注意, sdf.loadfont() 也在幕后使用此方法,调用 truetype.parse() 辅助函数,您必须使用 github.com/golang/freetype/truetype 解析字体数据。请注意, sdf.loadfont() 也在幕后使用此方法,调用 truetype.parse()

与字体文件的二进制数据:🎜
f, err := truetype.Parse(cmr10FontData)
// Check error
// use f if no error

以上是代码必须加载字体文件,如何嵌入到构建的二进制文件中的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:stackoverflow。如有侵权,请联系admin@php.cn删除
Linux下查看内存使用情况方法总结Linux下查看内存使用情况方法总结Feb 05, 2024 am 11:45 AM

Q:我有一个问题,我想要监视Linux系统的内存使用情况。在Linux下有哪些可用的视图或命令行工具可以使用呢?A:在Linux系统中,有多种方法可以监视内存使用情况。下面是一些通过视图工具或命令行来查看内存使用情况的方法。/proc/meminfo:最简单的方法是查看/proc/meminfo文件。这个虚拟文件会动态更新,并提供了关于内存使用情况的详细信息。它列出了各种内存指标,可以满足你对内存使用情况的大部分需求。另外,你还可以通过/proc//statm和/proc//status来查看进

​揭秘NVIDIA大模型推理框架:TensorRT-LLM​揭秘NVIDIA大模型推理框架:TensorRT-LLMFeb 01, 2024 pm 05:24 PM

一、TensorRT-LLM的产品定位TensorRT-LLM是NVIDIA为大型语言模型(LLM)开发的可扩展推理方案。它基于TensorRT深度学习编译框架构建、编译和执行计算图,并借鉴了FastTransformer中高效的Kernels实现。此外,它还利用NCCL实现设备间的通信。开发者可以根据技术发展和需求差异,定制算子以满足特定需求,例如基于cutlass开发定制的GEMM。TensorRT-LLM是NVIDIA官方推理方案,致力于提供高性能并不断完善其实用性。TensorRT-LL

Linux 上的最佳白板应用程序Linux 上的最佳白板应用程序Feb 05, 2024 pm 12:48 PM

“我们将介绍几款适用于Linux系统的白板应用程序,相信这些信息对您会非常有帮助。请继续阅读!”一般来说,数字白板是一种用于大型互动显示面板的工具,常见的设备类型包括平板电脑、大屏手机、触控笔记本和表面显示设备等。当教师使用白板时,您可以使用触控笔、手写笔、手指甚至鼠标在设备屏幕上进行绘画、书写或操作元素。这意味着您可以在白板上拖动、点击、删除和绘画,就像在纸上使用笔一样。然而,要实现这一切,需要有一款软件来支持这些功能,并实现触控和显示之间的精细协调。目前市面上有许多商业应用可以完成这项工作。

ZR币升值空间大吗? ZR币在哪里购买交易?ZR币升值空间大吗? ZR币在哪里购买交易?Feb 01, 2024 pm 08:09 PM

ZRX(0x)是一个基于以太坊区块链的开放协议,用于实现分布式交易和去中心化交易所(DEX)功能。作为0x协议的原生代币,ZRX可用于支付交易费用、治理协议变更和获取平台优惠。1.ZRX币升值空间展望:从技术角度来看,ZRX作为0x协议的核心代币,在去中心化交易所的应用逐渐增多,市场对其认可度也在增加。以下是几个关键因素,有助于提升ZRX币的价值空间:市场需求潜力大、社区活跃度高、开发者生态繁荣等。这些因素共同促进了ZRX的广泛应用和使用,进而推动了其市场价格的上升。市场需求的增长潜力,意味着更

BOSS直聘怎么创建多个简历BOSS直聘怎么创建多个简历Feb 05, 2024 pm 02:18 PM

BOSS直聘怎么创建多个简历?BOSS直聘是很多小伙伴找工作的一大招聘平台,为用户们提供了非常多便利的求职服务。各位在使用BOSS直聘的时候,可以创建多个不同的简历,以便投送到不同的工作岗位上,获取到更高成功率的求职操作,各位如果对此感兴趣的话,就随小编一起来看看BOSS直聘双简历创建教程吧。BOSS直聘怎么创建多个简历1.登录Boss直聘:在您的电脑或手机上,登录您的Boss直聘账户。2.进入简历管理:在Boss直聘首页,点击“简历管理”,进入简历管理页面。3.创建新简历:在简历管理页面,点击

手把手教你构建linux rootfs手把手教你构建linux rootfsFeb 05, 2024 pm 03:51 PM

busybox概述众所周知,在Linux环境下,一切皆文件,文件可以表示一切。而文件系统则是这些普通组件的集合。在嵌入式领域中,常常使用基于busybox构建的rootfs来构建文件系统。busybox诞生至今已有近20年的历史,如今已成为嵌入式行业中主流的rootfs构建工具。busybox的代码是完全开源的。你可以进入官方网站,点击”GetBusyBox”下面的”DownloadSource”进入源码下载界面。“官方网站链接:https://busybox.net/”2.busybox的配置

Linux字节对齐的那些事Linux字节对齐的那些事Feb 05, 2024 am 11:06 AM

最近,我正在进行一个项目,遇到了一个问题。在ARM上运行的ThreadX与DSP通信时采用了消息队列的方式传递消息(最终实现使用了中断和共享内存的方法)。然而,在实际的操作过程中,发现ThreadX经常崩溃。经过排查,发现问题出在传递消息的结构体没有考虑字节对齐的问题上。我想顺便整理一下关于C语言中字节对齐的问题,并与大家分享。一、概念字节对齐与数据在内存中的位置有关。如果一个变量的内存地址恰好是它长度的整数倍,那么它就被称为自然对齐。例如,在32位CPU下,假设一个整型变量的地址为0x0000

比 Vim 更现代直观的 Linux 文本编辑器比 Vim 更现代直观的 Linux 文本编辑器Feb 05, 2024 pm 02:00 PM

如果你厌倦了Vi和Vim的奇怪界面和繁琐的键绑定,为什么不试试Micro编辑器呢?命令行文本编辑器证明了Linux终端的实用性,让您可以在不离开终端的情况下进行文件编辑。这些编辑器使用的资源更少,速度也非常快,非常适合进行一些快速编辑。一些流行的命令行文本编辑器包括Vi、Vim和Nano。它们在大多数Linux发行版中都预装了。然而,对于初学者来说,学习Vi或Vim的曲线和键绑定可能有些困难。这时,Micro文本编辑器就成为了一个更简单的选择。Micro与其他编辑相比的表现如何Micro宣称自己

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境