D2 如何用 --font-regular 等参数在渲染时替换 TTF 字体?

发布时间:2026/11/4 6:03:13

D2 如何用 --font-regular 等参数在渲染时替换 TTF 字体? D2 如何用 --font-regular 等参数在渲染时替换 TTF 字体【免费下载链接】d2D2 is a modern diagram scripting language that turns text to diagrams.项目地址: https://gitcode.com/GitHub_Trending/d2/d2D2 在渲染图表时默认使用内置字体普通、斜体、粗体、中粗体来自 Source Sans Pro等宽字体来自 Source Code Pro。如果你希望导出结果使用自己的字体文件可以在执行d2渲染命令时通过--font-regular、--font-bold等参数传入.ttf文件路径。本文基于 D2 仓库中的 CLI 参数定义、man 页和 CLI E2E 测试说明如何完成这次字体替换以及如何判断替换确实生效。前提条件已安装可执行的d2CLI且手头有要使用的.ttf字体文件。参数帮助明确说明传入的应是.ttf文件路径。可用的字体参数及其默认值d2cli/main.go 中定义了 8 个字体参数man 页模板 给出了完整说明。每个参数只替换一种字体槽位作用互不干扰参数环境变量替换的字体未提供时的默认字体--font-regularD2_FONT_REGULAR常规字体Source Sans Pro Regular--font-italicD2_FONT_ITALIC斜体字体Source Sans Pro Regular-Italic--font-boldD2_FONT_BOLD粗体字体Source Sans Pro Bold--font-semiboldD2_FONT_SEMIBOLD中粗体字体Source Sans Pro Semibold--font-monoD2_FONT_MONO等宽字体Source Code Pro Regular--font-mono-boldD2_FONT_MONO_BOLD等宽粗体Source Code Pro Bold--font-mono-italicD2_FONT_MONO_ITALIC等宽斜体Source Code Pro Italic--font-mono-semiboldD2_FONT_MONO_SEMIBOLD等宽中粗体Source Code Pro Semibold参数是逐个独立加载的loadFontsd2cli/main.go#L1117只对非空的参数读取对应 TTF 文件。也就是说只传--font-bold时只有粗体被替换其余槽位仍用默认字体一个都不传时则完全不加载自定义字体。用自定义字体渲染一张图表仓库的 CLI E2E 测试with-fonte2etests-cli/main_test.go#L344-L358演示了完整流程。测试先写入一个 D2 源文件然后带--font-bold参数执行渲染。可以照此操作准备一个 D2 源文件font.d2测试中使用的内容是a: Why do computers get sick often? b: Because their Windows are always open! a - b: italic font把你的 TTF 文件放在工作目录下仓库自带的测试字体是 e2etests-cli/RockSalt-Regular.ttf然后执行渲染。下面的命令中./RockSalt-Regular.ttf为测试使用的字体路径换成你自己的 TTF 相对路径即可d2 --font-bold./RockSalt-Regular.ttf font.d2未指定输出路径时d2默认写出与输入同名的font.svg。测试断言命令成功assert.Success并且读出的font.svg与黄金文件 with-font.exp.svg 一致这就是该命令的预期结果。如果需要同时替换多种字体各参数并列传入即可例如d2 --font-regular./regular.ttf --font-italic./italic.ttf --font-bold./bold.ttf font.d2不想在命令行重复书写时man 页说明这些 flag 也可以用对应环境变量设置如D2_FONT_REGULAR、D2_FONT_BOLD、D2_FONT_MONO等效果相同。验证替换是否生效两点依据均来自仓库文档看退出状态而不是只看输出文件。man 页明确指出不要因为输出文件存在就认为渲染成功应以d2的退出状态为准——渲染出错时 D2 有时仍会写出部分渲染结果。检查 SVG 中嵌入的font-face。生成 SVG 时D2 会把使用的字体以font-face规则内嵌字体族名由图表哈希加后缀构成例如d2-hash-font-regular、d2-hash-font-bold。嵌入逻辑见 d2svg 字体嵌入实现。docs/examples/vector-grid/vector-grid.svg 是一份现成的输出示例其中包含font-family: d2-1314486588-font-regular; font-face { font-family: d2-1314486588-font-regular;以上为文档示例实际哈希值随图表内容变化。替换后打开生成的 SVG确认font-bold槽位对应的font-face指向你的字体子集即说明自定义字体已被内嵌使用。可选分支d2.js 中的字体选项如果渲染走的是 D2 的 JavaScript/WASM 封装而不是 CLId2js/js/README.md 中CompileOptions提供对应的字体选项fontRegular、fontItalic、fontBold、fontSemibold取值是包含.ttf内容的字节数组byte array不提供时使用与 CLI 相同的默认字体。注意该 API 文档只列出这 4 个常规字体选项没有等宽字体选项且是传字体内容而非文件路径与 CLI 的用法不通用。边界与限制参数只接受.ttf文件路径参数帮助原文path to .ttf file文件不存在或读取失败时loadFonts会返回错误渲染不完成。每个参数只影响一种字重/风格槽位文档未说明某个参数会连带替换其他槽位。未传任何字体参数时不会加载自定义字体全部使用内置默认字体。下一步若替换字体后布局或字号表现异常可结合-d打印调试日志定位man 页--debug说明。【免费下载链接】d2D2 is a modern diagram scripting language that turns text to diagrams.项目地址: https://gitcode.com/GitHub_Trending/d2/d2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/4 6:03:13

LM算法深度解析:非线性最小二乘拟合的Python实现与工程实践

简介:面向数值计算与数据拟合学习者,提供基于LM算法的非线性最小二乘拟合MATLAB实现,用于解决模型参数估计与曲线拟合需求,适合正在学习优化算法或需要在MATLAB中快速上手非线性拟合的开发者。资源包共5个文件,包含3个…

2026/11/4 5:58:53

SCRFD人脸检测:300%性能提升的工程拆解与优化实践

人脸检测这个方向,这几年从“能检出”卷到了“又快又准又小”,真正能在生产环境里跑出漂亮指标的方案并不多。SCRFD 算是其中一个让我反复回看、反复拆解的实现——它把检测精度和推理效率这对老矛盾处理得相当漂亮,很多团队在边缘设备上做人…

2026/11/4 5:58:53

SAP Data Services 连接 MySQL:Data Store 与 ODBC 配置入门

简介:面向使用 SAP Data Services 进行数据集成与 ETL 开发的初中级技术人员,这份文档围绕 SAP Data Services 连接 MySQL 的配置流程展开,重点解决数据源建立、ODBC 连通性验证及元数据导入等常见问题。压缩包共 1 个 docx 文件,…

2026/11/4 5:58:53

MySQL数据可视化实战:从数据清洗到图表展示

1. 项目概述MySQL作为最流行的开源关系型数据库,每天都有海量数据在其中流转。但原始数据就像未经雕琢的玉石,只有通过可视化才能真正展现其价值。这个实战指南将带你从零开始,掌握将MySQL数据转化为直观图表的核心技能。我在金融、电商等多个…

2026/11/4 5:58:53

海思Hi3751V350电视Android 9.0字体替换全流程与踩坑指南

智能电视和机顶盒这类嵌入式Android设备上做字体替换,跟手机上的操作完全不是一回事。手机上换个字体,装个主题包或者用Magisk模块挂载一下就行,但在Hi3751V350这种海思芯片方案的Android 9.0电视系统上,字体文件是烧录在系统分区…

2026/11/4 5:58:53

[数字图像处理]数字图像的有理数倍缩放(缩小与放大)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/4 5:53:52

传统客运企业转型:新能源与智慧运营实践

1. 传统客运企业的转型突围之路在客运行业摸爬滚打多年,我亲眼见证了太多传统客运企业面临的困境:高铁网络日益完善、私家车保有量持续攀升、网约车平台蚕食市场份额...这些外部压力让传统道路客运企业的生存空间不断被挤压。烟台星龙客运的案例给我们提…

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/3 14:24:53

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/4 0:03:20

AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年…

2026/11/4 0:03:20

从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你…

2026/11/4 0:03:20

32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统…

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/3 14:24:53

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑