package d2fonts

Import Path
	github.com/pancsta/d2/d2renderers/d2fonts (on go.dev)

Dependency Relation
	imports 23 packages, and imported by 10 packages

Involved Source Files bundled_faces.go bundled_fallback.go TODO write a script to do this as part of CI Currently using an online converter: https://dopiaza.org/tools/datauri/index.php d2fonts_embed.go Package d2fonts provides D2's embedded font families and bounded native fallback resolution for renderer text. fallback.go noto_color_emoji_native.go
Package-Level Type Names (total 10)
/* sort by: | */
BundledFallbackLimits bound all requests and returned bytes over the lifetime of one composite resolver. MaxBundledBytes reserves an explicit sub-budget for owned copies of D2's trusted font; MaxResolvedBytes bounds those copies plus downstream results. The downstream resolver remains responsible for its own discovery and coverage-work limits. MaxBundledBytes defaults to MaxResolvedBytes when zero. MaxRequestedRunes int MaxResolvedBytes int64 func NewBundledFallbackResolver(next FallbackResolver, limits BundledFallbackLimits) (*BundledFallbackResolver, error)
BundledFallbackResolver resolves supported symbols and emoji from D2's pinned Noto Color Emoji face before consulting the host. This makes those glyphs deterministic across machines while leaving other scripts to a bounded downstream resolver. On js/wasm the bundled face is absent and all requests pass through to downstream. HasTrusted reports whether PrepareTrusted has retained its trusted resource. PrepareTrusted copies and hashes the resolver's trusted source exactly once for this cache. A canceled attempt publishes neither data nor accounting. (*BundledFallbackResolver) ResolveFallbacks(ctx context.Context, request FallbackRequest) ([]FallbackFont, error) *BundledFallbackResolver : FallbackResolver func NewBundledFallbackResolver(next FallbackResolver, limits BundledFallbackLimits) (*BundledFallbackResolver, error)
FallbackFont is one fully resolved host font face. Data is owned by the result and may be retained in a network-free renderer scene. FaceIndex selects a face when Data contains an OpenType collection. Data []byte FaceIndex uint16 MIMEType string Name string func (*BundledFallbackResolver).ResolveFallbacks(ctx context.Context, request FallbackRequest) ([]FallbackFont, error) func FallbackResolver.ResolveFallbacks(context.Context, FallbackRequest) ([]FallbackFont, error) func (*SystemFallbackResolver).ResolveFallbacks(ctx context.Context, request FallbackRequest) ([]FallbackFont, error)
FallbackRequest carries both missing code points and the source text style. Resolvers may ignore style when a face is intrinsically universal, but must preserve it when delegating so bold, italic, semibold, and monospace text do not silently fall back to an unrelated regular proportional face. Family string Runes []rune Style string Weight int func (*BundledFallbackResolver).ResolveFallbacks(ctx context.Context, request FallbackRequest) ([]FallbackFont, error) func FallbackResolver.ResolveFallbacks(context.Context, FallbackRequest) ([]FallbackFont, error) func (*SystemFallbackResolver).ResolveFallbacks(ctx context.Context, request FallbackRequest) ([]FallbackFont, error)
FallbackResolver resolves an ordered set of font faces covering runes not present in a D2 label's configured primary font. An empty or partial result means the remaining runes have no available face; it is not an error. Implementations must return owned immutable bytes and must honor context cancellation between bounded I/O operations. Malformed resources and work or byte limit violations remain errors. ( FallbackResolver) ResolveFallbacks(context.Context, FallbackRequest) ([]FallbackFont, error) *BundledFallbackResolver *SystemFallbackResolver func NewBundledFallbackResolver(next FallbackResolver, limits BundledFallbackLimits) (*BundledFallbackResolver, error)
Family FontFamily Size int Style FontStyle ( Font) GetEncodedSubset(corpus string) string func FontFamily.Font(size int, style FontStyle) Font func AddFontStyle(font Font, style FontStyle, ttf []byte) error func github.com/pancsta/d2/lib/textmeasure.(*Ruler).Measure(font Font, s string) (width, height int) func github.com/pancsta/d2/lib/textmeasure.(*Ruler).MeasureMono(font Font, s string) (width, height int) func github.com/pancsta/d2/lib/textmeasure.(*Ruler).MeasurePrecise(font Font, s string) (width, height float64)
( FontFamily) Font(size int, style FontStyle) Font func AddFontFamily(name string, regularTTF, italicTTF, boldTTF, semiboldTTF []byte) (*FontFamily, error) func github.com/pancsta/d2/d2renderers/d2svg.EmbedFonts(buf *bytes.Buffer, diagramHash, source string, fontFamily *FontFamily, monoFontFamily *FontFamily, corpus string) func github.com/pancsta/d2/d2renderers/d2svg.EmbedFonts(buf *bytes.Buffer, diagramHash, source string, fontFamily *FontFamily, monoFontFamily *FontFamily, corpus string) func github.com/pancsta/d2/d2exporter.Export(ctx context.Context, g *d2graph.Graph, fontFamily *FontFamily, monoFontFamily *FontFamily) (*d2target.Diagram, error) func github.com/pancsta/d2/d2exporter.Export(ctx context.Context, g *d2graph.Graph, fontFamily *FontFamily, monoFontFamily *FontFamily) (*d2target.Diagram, error) func github.com/pancsta/d2/d2graph.GetTextDimensions(mtexts []*d2target.MText, ruler *textmeasure.Ruler, t *d2target.MText, fontFamily *FontFamily) *d2target.TextDimensions func github.com/pancsta/d2/d2graph.GetTextDimensionsWithMono(mtexts []*d2target.MText, ruler *textmeasure.Ruler, t *d2target.MText, fontFamily *FontFamily, monoFontFamily *FontFamily) *d2target.TextDimensions func github.com/pancsta/d2/d2graph.GetTextDimensionsWithMono(mtexts []*d2target.MText, ruler *textmeasure.Ruler, t *d2target.MText, fontFamily *FontFamily, monoFontFamily *FontFamily) *d2target.TextDimensions func github.com/pancsta/d2/d2graph.(*Graph).SetDimensions(mtexts []*d2target.MText, ruler *textmeasure.Ruler, fontFamily *FontFamily, monoFontFamily *FontFamily) error func github.com/pancsta/d2/d2graph.(*Graph).SetDimensions(mtexts []*d2target.MText, ruler *textmeasure.Ruler, fontFamily *FontFamily, monoFontFamily *FontFamily) error func github.com/pancsta/d2/d2graph.(*Object).GetDefaultSize(mtexts []*d2target.MText, ruler *textmeasure.Ruler, fontFamily *FontFamily, monoFontFamily *FontFamily, labelDims d2target.TextDimensions, withLabelPadding bool) (*d2target.TextDimensions, error) func github.com/pancsta/d2/d2graph.(*Object).GetDefaultSize(mtexts []*d2target.MText, ruler *textmeasure.Ruler, fontFamily *FontFamily, monoFontFamily *FontFamily, labelDims d2target.TextDimensions, withLabelPadding bool) (*d2target.TextDimensions, error) func github.com/pancsta/d2/d2graph.(*Object).GetLabelSize(mtexts []*d2target.MText, ruler *textmeasure.Ruler, fontFamily *FontFamily, monoFontFamily *FontFamily) (*d2target.TextDimensions, error) func github.com/pancsta/d2/d2graph.(*Object).GetLabelSize(mtexts []*d2target.MText, ruler *textmeasure.Ruler, fontFamily *FontFamily, monoFontFamily *FontFamily) (*d2target.TextDimensions, error) func github.com/pancsta/d2/lib/textmeasure.LayoutMarkdown(mdText string, ruler *textmeasure.Ruler, fontFamily *FontFamily, monoFontFamily *FontFamily, fontSize int) (*textmeasure.MarkdownLayout, error) func github.com/pancsta/d2/lib/textmeasure.LayoutMarkdown(mdText string, ruler *textmeasure.Ruler, fontFamily *FontFamily, monoFontFamily *FontFamily, fontSize int) (*textmeasure.MarkdownLayout, error) func github.com/pancsta/d2/lib/textmeasure.MeasureMarkdown(mdText string, ruler *textmeasure.Ruler, fontFamily *FontFamily, monoFontFamily *FontFamily, fontSize int) (width, height int, err error) func github.com/pancsta/d2/lib/textmeasure.MeasureMarkdown(mdText string, ruler *textmeasure.Ruler, fontFamily *FontFamily, monoFontFamily *FontFamily, fontSize int) (width, height int, err error) func github.com/pancsta/d2/lib/textmeasure.(*Ruler).HasFontFamilyLoaded(fontFamily *FontFamily) bool const HandDrawn const SourceCodePro const SourceSansPro
func AddFontStyle(font Font, style FontStyle, ttf []byte) error func FontFamily.Font(size int, style FontStyle) Font const FONT_STYLE_BOLD const FONT_STYLE_ITALIC const FONT_STYLE_REGULAR const FONT_STYLE_SEMIBOLD
SystemFallbackLimits bounds deterministic host-font discovery for the lifetime of one resolver. FileBytes bounds one candidate; every other work/byte limit is cumulative across indexing attempts and ResolveFallbacks calls. A CLI export owns one resolver, so these are operation-wide ceilings rather than per-board or per-style allowances. MaxCoverageChecks int64 MaxDirectoryEntries int MaxFaces int MaxFileBytes int64 MaxFiles int MaxRequestedRunes int MaxResolvedBytes int64 MaxScannedBytes int64 func NewSystemFallbackResolver(limits SystemFallbackLimits) (*SystemFallbackResolver, error)
SystemFallbackResolver discovers fonts only under the operating system's conventional system font roots. It does not follow symlinks or consult a platform API, keeping discovery CGO-free and auditable. User-installed D2 primary fonts continue to flow through AddFontFamily and do not need this resolver. (*SystemFallbackResolver) ResolveFallbacks(ctx context.Context, request FallbackRequest) ([]FallbackFont, error) *SystemFallbackResolver : FallbackResolver func NewSystemFallbackResolver(limits SystemFallbackLimits) (*SystemFallbackResolver, error)
Package-Level Functions (total 4)
func AddFontFamily(name string, regularTTF, italicTTF, boldTTF, semiboldTTF []byte) (*FontFamily, error)
func AddFontStyle(font Font, style FontStyle, ttf []byte) error
Package-Level Constants (total 14)
const FONT_SIZE_L = 20
const FONT_SIZE_M = 16
const FONT_SIZE_S = 14
const FONT_SIZE_XL = 24
const FONT_SIZE_XS = 13
const FONT_SIZE_XXL = 28
const FONT_SIZE_XXXL = 32
const FONT_STYLE_BOLD FontStyle = "bold"
const FONT_STYLE_ITALIC FontStyle = "italic"
const FONT_STYLE_REGULAR FontStyle = "regular"
const FONT_STYLE_SEMIBOLD FontStyle = "semibold"
const HandDrawn FontFamily = "HandDrawn"
const SourceCodePro FontFamily = "SourceCodePro"
const SourceSansPro FontFamily = "SourceSansPro"