Contents

coenttb/swift-svg-printer

A Swift package for rendering SVG to String or bytes.

Overview

swift-svg-printer provides the rendering layer for the SVG type system, converting swift-svg-types elements into SVG markup as strings or byte arrays.

Features

  • Renders to ContiguousArray<UInt8> for memory efficiency
  • String conversion via render() method
  • Attribute escaping and formatting for valid SVG output
  • Configurable indentation and pretty-printing
  • Dependencies: swift-svg-types, swift-collections, swift-dependencies

Installation

Add swift-svg-printer to your Package.swift:

dependencies: [
    .package(url: "https://github.com/coenttb/swift-svg-printer", from: "0.1.0")
],
targets: [
    .target(
        name: "YourTarget",
        dependencies: [
            .product(name: "SVGPrinter", package: "swift-svg-printer")
        ]
    )
]

Quick Start

import SVGPrinter

// Create a printer
var printer = SVGPrinter()

// Build SVG markup
printer.append("<circle cx=\"50\" cy=\"50\" r=\"40\"/>")

// Get result as string
let svgString = String(decoding: printer.bytes, as: UTF8.self)
// Output: <circle cx="50" cy="50" r="40"/>

Usage Examples

Pretty Printing

import SVGPrinter

var printer = SVGPrinter(.pretty)
printer.append("<svg>")
printer.appendNewlineIfNeeded()
printer.indent()
printer.appendIndentationIfNeeded()
printer.append("<circle cx=\"50\" cy=\"50\" r=\"40\"/>")
printer.outdent()
printer.appendNewlineIfNeeded()
printer.append("</svg>")

let output = String(decoding: printer.bytes, as: UTF8.self)

Attribute Management

import SVGPrinter
import OrderedCollections

var printer = SVGPrinter()
printer.attributes["fill"] = "red"
printer.attributes["stroke"] = "black"

// Attributes can be accessed and managed
let fillColor = printer.attributes["fill"] // "red"

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

License

This project is licensed under the Apache 2.0 License. See LICENSE for details.

Package Metadata

Repository: coenttb/swift-svg-printer

Homepage: https://coenttb.com

Stars: 1

Forks: 0

Open issues: 2

Default branch: main

Primary language: swift

License: Apache-2.0

Topics: graphics, rendering, serialization, svg, svg-rendering, swift, utilities

README: README.md