From 3763561c196913579e8f7bd25205c9dc47f11138 Mon Sep 17 00:00:00 2001 From: ffreyer Date: Fri, 22 May 2026 19:45:23 +0200 Subject: [PATCH] cache fontpath --- src/engine/fonts.jl | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/engine/fonts.jl b/src/engine/fonts.jl index 0d94dd7..ad12acb 100644 --- a/src/engine/fonts.jl +++ b/src/engine/fonts.jl @@ -1,4 +1,14 @@ const FONTS = RelocatableFolders.@path joinpath(@__DIR__, "..", "..", "assets", "fonts") +# joinpath() (and its ispath() check) becomes expensive when repeated for every +# ascender, descender and TeXChar +const FONTNAME_TO_FULLPATH = Dict{String, String}() + +function full_fontpath(fontname::String) + isfile(fontname) && return fontname + return get!(FONTNAME_TO_FULLPATH, fontname) do + return joinpath(FONTS, fontname) + end +end function full_fontpath(fontname::AbstractString) isfile(fontname) && return fontname @@ -92,7 +102,7 @@ function FontFamily(fonts ; thickness = 0.0375) fonts = merge(_default_fonts, Dict(fonts)) - + return FontFamily( fonts, font_mapping, @@ -235,7 +245,7 @@ scenario. """ function texfont(font_desc=:text) family = FontFamily() - + haskey(family.fonts, font_desc) && return load_font(family.fonts[font_desc]) haskey(family.font_mapping, font_desc) && return load_font(family.fonts[family.font_mapping[font_desc]])