diff --git a/d2renderers/d2fonts/d2fonts.go b/d2renderers/d2fonts/d2fonts.go index ea5756fac..e136e1af8 100644 --- a/d2renderers/d2fonts/d2fonts.go +++ b/d2renderers/d2fonts/d2fonts.go @@ -32,6 +32,15 @@ func (f FontFamily) Font(size int, style FontStyle) Font { } } +func (f Font) GetEncodedSubset(cutSet string) string { + fontString, err := fontlib.Subset(FontFaces[f], cutSet) + if err != nil { + // If subset fails, return full encoding + fontString = FontEncodings[f] + } + return fontString +} + const ( FONT_SIZE_XS = 13 FONT_SIZE_S = 14 diff --git a/d2renderers/d2svg/d2svg.go b/d2renderers/d2svg/d2svg.go index 92e9338f9..58124b1b1 100644 --- a/d2renderers/d2svg/d2svg.go +++ b/d2renderers/d2svg/d2svg.go @@ -1382,7 +1382,7 @@ func RenderText(text string, x, height float64) string { return strings.Join(rendered, "") } -func embedFonts(buf *bytes.Buffer, diagramHash, source string, fontFamily *d2fonts.FontFamily) { +func embedFonts(buf *bytes.Buffer, diagramHash, source string, fontFamily *d2fonts.FontFamily, cutSet string) { fmt.Fprint(buf, `