Gradle插件AsciidoctorPdf:如何扩展字体搜索路径
问题描述
使用Gradle结合AsciidoctorJVM PDF插件将Asciidoctor文件转换为PDF时,自定义了继承默认主题的PDF主题(默认主题依赖捆绑的Noto Serif字体),并通过setFontsDirs(listOf("fonts"))指定了存放EB Garamond自定义字体的目录。构建时出现找不到notoserif-regular-subset.ttf的错误,原因是setFontsDirs会直接覆盖默认的字体搜索路径,导致插件无法找到捆绑的Noto Serif字体。需要在保留默认捆绑字体搜索路径的同时,添加自定义字体目录。
解决方案
不要使用setFontsDirs方法直接覆盖字体目录列表,而是通过追加自定义目录到默认搜索路径的方式来实现。通过fontsDirs属性的plus方法,将自定义目录添加到已有的默认路径集合中,既保留插件自带的捆绑字体路径,又加入自定义字体的搜索目录。
修改后的配置
修改build.gradle.kts中的asciidoctorPdf任务配置:
tasks.asciidoctorPdf { dependsOn("asciidoctor") // 替换setFontsDirs,改为追加自定义目录到默认路径 fontsDirs = fontsDirs.plus(file("fonts")) setTheme("play-book") }
其他配置(pdfThemes、tasks.build以及settings.gradle.kts、play-book-theme.yml)保持不变即可。
原理说明
fontsDirs属性默认包含插件捆绑字体的搜索路径,使用plus方法可在原有路径基础上添加新目录,而非直接覆盖。- 主题配置中的
merge: true已确保自定义字体目录与默认字体目录的字体列表合并,配合修改后的字体路径设置,插件就能同时找到捆绑的Noto Serif字体和自定义的EB Garamond字体。
内容的提问来源于stack exchange,提问作者Olaf
相关产品推荐
相关产品推荐

