Documentation
¶
Overview ¶
Package textrender provides deterministic text layout and rendering functionality.
This package offers consistent, cross-platform text wrapping, alignment, and spacing, with support for multiple output formats including ASCII, SVG, and PNG.
Key Features:
- Deterministic layout that produces identical output across all platforms
- Multiple text alignment options (left, center, right, justify)
- Automatic word wrapping
- Configurable line spacing
- Tab expansion for consistent rendering
- Multiple output formats (ASCII with borders, SVG, PNG)
Basic Usage:
options := textrender.LayoutOptions{
Width: 80,
Alignment: textrender.AlignLeft,
}
layout := textrender.Layout("Your text here", options)
fmt.Println(layout.String())
ASCII with Border:
renderer := &textrender.ASCIIRenderer{
Border: true,
BorderStyle: "double",
}
output := renderer.Render(layout)
SVG Output:
svg := textrender.RenderSVG("Your text", options)
os.WriteFile("output.svg", []byte(svg), 0644)
PNG Output:
img := textrender.RenderBitmap("Your text", options)
// Use img as needed
Index ¶
- Variables
- func RenderASCII(text string, options LayoutOptions, border bool, borderStyle string) string
- func RenderBitmap(text string, options LayoutOptions) image.Image
- func RenderSVG(text string, options LayoutOptions) string
- type ASCIIRenderer
- type Alignment
- type BitmapRenderer
- type BorderChars
- type LayoutOptions
- type SVGRenderer
- type TextLayout
Constants ¶
This section is empty.
Variables ¶
var ( BorderStyleSingle = BorderChars{ TopLeft: "┌", TopRight: "┐", BottomLeft: "└", BottomRight: "┘", Horizontal: "─", Vertical: "│", } BorderStyleDouble = BorderChars{ TopLeft: "╔", TopRight: "╗", BottomLeft: "╚", BottomRight: "╝", Horizontal: "═", Vertical: "║", } BorderStyleASCII = BorderChars{ TopLeft: "+", TopRight: "+", BottomLeft: "+", BottomRight: "+", Horizontal: "-", Vertical: "|", } )
BorderStyles define different border character sets
Functions ¶
func RenderASCII ¶
func RenderASCII(text string, options LayoutOptions, border bool, borderStyle string) string
RenderASCII is a convenience function to render text as ASCII
func RenderBitmap ¶
func RenderBitmap(text string, options LayoutOptions) image.Image
RenderBitmap is a convenience function to render text as a bitmap image
func RenderSVG ¶
func RenderSVG(text string, options LayoutOptions) string
RenderSVG is a convenience function to render text as SVG
Types ¶
type ASCIIRenderer ¶
type ASCIIRenderer struct {
Border bool // Whether to draw a border
BorderStyle string // Border characters (single, double, etc.)
}
ASCIIRenderer renders text layout as ASCII
func (*ASCIIRenderer) Render ¶
func (r *ASCIIRenderer) Render(layout *TextLayout) string
Render renders the text layout as ASCII
type BitmapRenderer ¶
type BitmapRenderer struct {
FontFace font.Face // Font to use for rendering
Background color.Color // Background color
TextColor color.Color // Text color
Padding int // Padding around text in pixels
}
BitmapRenderer renders text layout as a bitmap image
func DefaultBitmapRenderer ¶
func DefaultBitmapRenderer() *BitmapRenderer
DefaultBitmapRenderer returns a renderer with default settings
func (*BitmapRenderer) Render ¶
func (r *BitmapRenderer) Render(layout *TextLayout) image.Image
Render renders the text layout as a PNG image
func (*BitmapRenderer) RenderToPNG ¶
func (r *BitmapRenderer) RenderToPNG(layout *TextLayout, w io.Writer) error
RenderToPNG renders the text layout and writes it as PNG to the writer
type BorderChars ¶
type BorderChars struct {
TopLeft string
TopRight string
BottomLeft string
BottomRight string
Horizontal string
Vertical string
}
BorderChars defines the characters used for drawing borders
type LayoutOptions ¶
type LayoutOptions struct {
Width int // Maximum width in characters
Alignment Alignment // Text alignment
LineSpacing int // Extra lines between text lines (0 = single spacing)
TabWidth int // Number of spaces for tab character (default: 4)
}
LayoutOptions defines options for text layout
func DefaultLayoutOptions ¶
func DefaultLayoutOptions() LayoutOptions
DefaultLayoutOptions returns default layout options
type SVGRenderer ¶
type SVGRenderer struct {
FontFamily string // Font family name
FontSize int // Font size in pixels
LineHeight float64 // Line height multiplier (e.g., 1.2)
Padding int // Padding around text in pixels
Background string // Background color
TextColor string // Text color
}
SVGRenderer renders text layout as SVG
func DefaultSVGRenderer ¶
func DefaultSVGRenderer() *SVGRenderer
DefaultSVGRenderer returns a renderer with default settings
func (*SVGRenderer) Render ¶
func (r *SVGRenderer) Render(layout *TextLayout) string
Render renders the text layout as SVG
type TextLayout ¶
type TextLayout struct {
Lines []string
Options LayoutOptions
}
TextLayout represents laid-out text
func Layout ¶
func Layout(text string, options LayoutOptions) *TextLayout
Layout creates a text layout from input text
func (*TextLayout) String ¶
func (tl *TextLayout) String() string
String returns the laid-out text as a string