我想使用Gradle和AsciidoctorPdf插件将Asciidoctor文件转换成PDF文件。为了能够自定义生成的PDF,我定义了一个自定义主题。我使用Google的EB-Garamond字体作为基本字体。
我的主题引用默认主题,该主题引用捆绑的诺托Serif字体:https://github.com/asciidoctor/asciidoctor-pdf/blob/main/data/themes/default-theme.yml
绑定字体的搜索路径由GEM_FONTS_DIR关键字提供:
字体路径可以是绝对的或相对的。绝对路径按原样使用。从字体搜索路径解析相对字体路径。您还可以使用GEM_FONTS_DIR关键字来引用捆绑字体的位置。
https://docs.asciidoctor.org/pdf-converter/latest/theme/custom-font/#declare
我在AsciidoctorPdf的扩展中设置了包含EB-Garamond字体的目录的相对路径:
tasks.asciidoctorPdf {
setFontsDirs(listOf("fonts"))
}
现在,当我运行构建时,我得到一个错误消息:
No such file or directory - notoserif-regular-subset.ttf not found in <absolute-path>/play-books/fonts
Exception in thread "main" org.asciidoctor.gradle.remote.AsciidoctorRemoteExecutionException: Error running Asciidoctor whilst attempting to process <absolute-path>/cocinero.adoc using backend pdf
我怀疑通过调用setFontsDirs,字体的搜索路径被完全重置,因此捆绑字体的路径也丢失了。
如何将我自己的字体目录的路径传递给AsciidoctorPdf而不丢失捆绑字体的路径?
build.gradle.kts:
plugins {
id("org.asciidoctor.jvm.convert")
id("org.asciidoctor.jvm.pdf")
}
tasks.asciidoctorPdf {
dependsOn("asciidoctor")
setFontsDirs(listOf("fonts"))
setTheme("play-book")
}
pdfThemes {
local("play-book") {
themeDir = projectDir
}
}
tasks.build {
dependsOn("asciidoctor")
dependsOn("asciidoctorPdf")
}
settings.gradle.kts:
pluginManagement {
repositories {
gradlePluginPortal()
mavenCentral()
}
plugins {
val versions = object {
val asciidoctor = "3.3.2"
}
id("org.asciidoctor.jvm.convert") version versions.asciidoctor
id("org.asciidoctor.jvm.pdf") version versions.asciidoctor
}
}
dependencyResolutionManagement {
repositories {
mavenCentral()
}
}
rootProject.name = "cartel-deutsch"
include("play-books")
play-book-theme.yml:
extends: default
font:
catalog:
merge: true
EBGaramond:
normal: EB_Garamond/static/EBGaramond-Regular.ttf
italic: EB_Garamond/static/EBGaramond-Italic.ttf
bold: EB_Garamond/static/EBGaramond-Bold.ttf
bold_italic: EB_Garamond/static/EBGaramond-BoldItalic.ttf
page:
size: A5
margin: [ 8mm, 8mm, 12mm, 8mm ]
base:
font-family: EBGaramond
heading:
font-family: Helvetica
1条答案
按热度按时间thtygnil1#
我怀疑通过调用setFontsDirs,字体的搜索路径被完全重置,因此捆绑字体的路径也丢失了。
这是正确的,比较实现1:
如何将我自己的字体目录的路径传递给AsciidoctorPdf而不丢失捆绑字体的路径?
两种形式,第一种是作弊,第二种是有根据的猜测。
merge: true
的时候不要使用绝对路径到你的字体。setFontsDirs(listOf("fonts", "GEM_FONTS_DIR"))
,其中GEM_FONTS_DIR
是此令牌verbatim 2。因此,有根据的猜测是不够的,奥拉夫评论说:
第二个建议的解决办法没有奏效。GEM_FONTS_DIR不被识别为关键字,而是相对路径:
没有这样的文件或目录- notoserif-regular-subset。ttf未在/play-books/fonts:/play-books/GEM_FONTS_DIR中找到
1./groovy/org/asciidoctor/gradle/jvm/pdf/AsciidoctorPdfTask.槽#L101-L111
1.配置字体搜索路径,具体如下:
要在搜索中包含捆绑字体的位置,请在列表中包含
GEM_FONTS_DIR
标记:1.扩展字体目录