{"adoption": {"forks": 122, "observed_at": "2026-08-28T04:05:42.398483+00:00", "stars": 1833}, "canonical_url": "https://ross.abutalabs.com/products/tdewolff-canvas", "card": {"archived": false, "artifact_type": "library", "description": "Vector graphics in Go", "domain": ["graphics", "web-development", "developer-tools"], "enriched": true, "function": ["graphics", "image-processing", "pdf", "math"], "health_score": 79, "homepage": null, "language": "Go", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["tdewolff/canvas"], "name": "tdewolff/canvas", "platform": ["go", "cross-platform", "wasm"], "pushed_at": "2026-08-22T21:12:41+00:00", "repo": "tdewolff/canvas", "stars": 1833, "tags": ["vector-graphics", "rasterizer", "path-manipulation", "font-subsetting", "cairo-alternative", "text-layout", "latex", "svg"], "topics": ["path", "vector-graphics", "html-canvas", "opengl", "cairo", "svg", "eps", "rasterizer", "canvas", "pdf"], "urls": [], "use_cases": ["generate pdf documents with vector graphics in go", "render svg images programmatically", "convert text and fonts to outlines", "draw paths with precise dashing and stroking", "rasterize vector graphics to png images", "render latex formulas as vector paths", "perform boolean operations on paths", "embed and subset fonts in generated documents"], "what_it_is": "A Go library providing a common vector drawing target that can output SVG, PDF, EPS, raster images, HTML Canvas via WASM, OpenGL, and Gio. It includes path manipulation (flattening, stroking, dashing, boolean operations), text formatting with font embedding/subsetting, and serves as a Cairo or node-canvas alternative in Go.", "when_to_avoid": ["you need a full GUI application framework rather than a drawing library", "you need 3D graphics or game rendering", "you need bitmap image editing rather than vector drawing"], "when_to_choose": ["you need a pure-Go vector graphics library without cgo dependencies", "you need consistent output across multiple formats like SVG, PDF, EPS, and PNG", "you need advanced text layout with complex scripts, RTL support, and font subsetting", "you want a Cairo or node-canvas alternative in Go"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/tdewolff-canvas", "repo": "tdewolff/canvas", "role": "main", "score": 77}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.398483+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:18:40.634332+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "605e2a1176946bb2b9f5141264f8b31a617844707add958ab3006ac6607caff3", "fetched_at": "2026-08-28T04:05:42.398483+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tdewolff/canvas"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.398483+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:18:40.634332+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "605e2a1176946bb2b9f5141264f8b31a617844707add958ab3006ac6607caff3", "fetched_at": "2026-08-28T04:05:42.398483+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tdewolff/canvas"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:18:40.634332+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "605e2a1176946bb2b9f5141264f8b31a617844707add958ab3006ac6607caff3", "fetched_at": "2026-08-28T04:05:42.398483+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tdewolff/canvas"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.398483+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.398483+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.398483+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:18:40.634332+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "605e2a1176946bb2b9f5141264f8b31a617844707add958ab3006ac6607caff3", "fetched_at": "2026-08-28T04:05:42.398483+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tdewolff/canvas"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.398483+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.398483+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:18:40.634332+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "605e2a1176946bb2b9f5141264f8b31a617844707add958ab3006ac6607caff3", "fetched_at": "2026-08-28T04:05:42.398483+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tdewolff/canvas"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.398483+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.398483+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.398483+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:18:40.634332+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "605e2a1176946bb2b9f5141264f8b31a617844707add958ab3006ac6607caff3", "fetched_at": "2026-08-28T04:05:42.398483+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tdewolff/canvas"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.398483+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.398483+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:18:40.634332+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "605e2a1176946bb2b9f5141264f8b31a617844707add958ab3006ac6607caff3", "fetched_at": "2026-08-28T04:05:42.398483+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tdewolff/canvas"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:18:40.634332+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "605e2a1176946bb2b9f5141264f8b31a617844707add958ab3006ac6607caff3", "fetched_at": "2026-08-28T04:05:42.398483+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tdewolff/canvas"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:18:40.634332+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "605e2a1176946bb2b9f5141264f8b31a617844707add958ab3006ac6607caff3", "fetched_at": "2026-08-28T04:05:42.398483+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tdewolff/canvas"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:18:40.634332+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "605e2a1176946bb2b9f5141264f8b31a617844707add958ab3006ac6607caff3", "fetched_at": "2026-08-28T04:05:42.398483+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tdewolff/canvas"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3392, "days_push": 11, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 77, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}