Softanza
DémarrerEnglish
Softanza
Visuel et spatial

Graphisme

Un seul moteur Zig sur douze couloirs : texte, couleur, cartographie, GPU, sous un seul système gouverné.

6 Strong · 3 Solid · 2 Partial · 1 Emerging

Mesuré contre : Skia · D3 · Graphviz · Dossiers : base/graphics(s'ouvre dans un nouvel onglet) · Pour les programmeurs : la référence de ce domaine

un planétaire de la galerie d'œuvres
un planétaire de la galerie d'œuvres. rendu par le garde gg_gallery de la bibliothèque et commis avec lui à 0e72e2e2c sous le nom gallery_4_orrery.png · la source(s'ouvre dans un nouvel onglet)

Repensé depuis les premiers principes

Ce que Softanza a gardé de ce qui marche, et ce qu'elle a repensé, tel que la bibliothèque l'a écrit dans ses documents de conception et ses narrations.

La manière SoftanzaLe graphisme n'est pas un nouveau moteur : c'est la couche GPU que Softanza possède déjà, à laquelle on apprend à dessiner en plus de calculer.

Gardé des meilleures pratiques

  • La mise en forme du texte est confiée à HarfBuzz, et l'ordre bidirectionnel à SheenBidi. Bien façonner l'arabe est une spécialité de longue haleine, qu'on ne réinvente pas. source(s'ouvre dans un nouvel onglet)
  • Les fenêtres, sur les trois systèmes de bureau, viennent de GLFW, une petite bibliothèque éprouvée, plutôt que de trois couches écrites à la main. source(s'ouvre dans un nouvel onglet)
  • Le système de couleurs garde des idées éprouvées. Chaque palier de teinte nomme son rôle (fond, bordure, texte), et chaque remplissage a sa couleur lisible associée. source(s'ouvre dans un nouvel onglet)

Repensé

  • Calcul et dessin partagent un seul processeur graphique : une simulation alimente l'image sans copie. Dans un essai, 16 octets par image partaient vers la carte au lieu de 1,7 Mo. source(s'ouvre dans un nouvel onglet)
  • Le texte Unicode est exigé dès le premier jour, avec l'arabe comme test d'acceptation. Une seule mise en page sert toutes les sorties : vecteur et pixels ne peuvent pas diverger. source(s'ouvre dans un nouvel onglet)
  • Tout dessin peut toujours devenir du SVG, sans GPU, et donc être produit et vérifié partout. Sans carte graphique, une demande de PNG est refusée et comptée. source(s'ouvre dans un nouvel onglet)
  • Les dégradés de couleur sont calculés en OKLCH : chaque palier s'éclaircit régulièrement, sans jamais se désordonner. Le contraste devient un nombre qui peut faire refuser un thème. source(s'ouvre dans un nouvel onglet)

Most of the field ships one lane well: Skia renders, D3 charts the web, Graphviz lays out graphs, spatstat does the statistics and draws nothing. Softanza is one Zig engine behind declarative Haro faces that reaches across twelve of those lanes at once; its advantage is being coherent across twelve lanes under one governed colour and text system, which no single competitor is.

Ce qu'un artisan en fait, et ce qui se distingue

  • coherent across twelve lanes under one governed colour and text system
  • Arabic kashida justification at font-declared points
  • the rare lane where a graphics library also computes the statistics it draws
  • compute and render zero-copy on one wgpu device

Ce qui est dû

  • general paths, curves & transforms
  • complete the chart family
  • colour-blindness simulation
  • PDF export & the raster floor

La manière Softanza, exécutée

Ce que Softanza fait autrement dans ce domaine, montré par du code tiré de ses narrations et de ses gardes, et exécuté pour cette page.

Le mot Softanza écrit en arabe est façonné en une seule séquence de huit glyphes, de droite à gauche ; placé entre deux mots latins, il donne trois séquences.

Softanza
# the guard's fixture: a committed Arabic font subset
cFixture = "../gpu/fixtures/amiri_arabic_subset.ttf"
oF = new stzFont(cFixture)
cAr = char(0xD8)+char(0xB3) + char(0xD9)+char(0x88) + char(0xD9)+char(0x81) +
      char(0xD8)+char(0xAA) + char(0xD8)+char(0xA7) + char(0xD9)+char(0x86) +
      char(0xD8)+char(0xB2) + char(0xD8)+char(0xA7)
chk("Arabic measures positive (a real shaped advance)", oF.WidthOf(cAr, 24) > 0)
chk("Arabic is ONE visual run", oF.RunCountOf(cAr, 24) = 1)
chk("mixed script is THREE runs", oF.RunCountOf("abc " + cAr + " xyz", 24) = 3)
chk("8 Arabic codepoints shape to 8 glyphs", len(oF.GlyphsOf(cAr, 24)) = 8)
Sortie
  [OK] Arabic measures positive (a real shaped advance)
  [OK] Arabic is ONE visual run
  [OK] mixed script is THREE runs
  [OK] 8 Arabic codepoints shape to 8 glyphs

exécuté le 2026-10-01 21:17 dans la bibliothèque au commit 0e72e2e2c ; tiré de base/test/graphics/graphics_faces_narrated.ring(s'ouvre dans un nouvel onglet)

La lisibilité est un nombre qui peut dire non : du gris moyen sur blanc est refusé, du noir sur blanc passe, et une couleur sur elle-même est refusée.

Softanza
chk("mid-grey on white is REFUSED", NOT StzIsLegible("#999999", :White))
chk("black on white passes", StzIsLegible(:Black, :White))
chk("a colour on itself is refused", NOT StzIsLegible(:Danger, :Danger))
Sortie
  [OK] mid-grey on white is REFUSED
  [OK] black on white passes
  [OK] a colour on itself is refused

exécuté le 2026-10-01 21:17 dans la bibliothèque au commit 0e72e2e2c ; tiré de base/test/graphics/gg_color_c3.ring(s'ouvre dans un nouvel onglet)

Les articles de ce domaine (2)

Les couloirs, un par un

Les couloirs et leurs notes sont cités tels qu'ils ont été lus à la source, le Read from the source on 2026-09-15.

Text & typography
Strong
SheenBidi -> HarfBuzz -> stb_truetype: bidi reorder, OpenType shaping, Arabic kashida justification at font-declared points, fallback chains, vertical CJK
Colour system
Strong
OKLCH/Oklab throughout, monotonic ramps, a five-value semantic family under a constitution, ten themes, WCAG 2 + APCA contrast as gate-able numbersStzIsLegible / StzContrastLc; SOFTANZA_COLOR_SYSTEM.md
Cartography & projections
Strong
44 projections with inverses, WGS84 geodesy, GeoJSON/TopoJSON, choropleth/symbol/flow/hex-bin, insets, Tissot, scale bar, north arrow, terminatorstz_geo.dll
Spatial statistics
Strong
Clark-Evans z-test, Ripley K/L, G & F, envelopes, kernel density, contours, IDW, variograms, ordinary kriging with variance; seven null models
Diagramming
Strong
25+ notations all closed (DN0-DN24), many constraint-solved; own deterministic layout engine (GG1-GG6) plus a live picture-as-input modeSOFTANZA_GRAPH_PLANE_PLAN.md (DN0-DN24, GG1-GG6)
GPU compute + render
Strong
In-house wgpu surface: instanced multi-texture render and compute (matmul, fft, softmax, topk, pairdist) zero-copy on one device, W-string -> WGSLstz_gpu.dll
2D vector rendering
Solid
Retained display-list canvas with an SVG floor that always answers, GPU-backed PNG; no Bezier/arc/AddPath, no transform stack, CPU rasteriser never written
Accessibility
Solid
An accessibility tree with roles, names, reading order and ToJSON, a screen-reader bridge, contrast maths gating colour; CVD simulation owed
Output & portability
Solid
SVG everywhere, lossless PNG with a returned encode decision, native window and browser tiers; no PDF/JPEG/WebP, only Windows runtime-verified
Charts & data-viz
Partial
Bar, multi-bar, line, scatter, histogram, surface, treemap with SVG/PNG/terminal renderers; no pie/donut, area, heatmap, box/violin, candlestickstzDataSet
Interactivity & animation
Partial
Canvas hit-testing (Pick), SVG ids/classes for hover, a drag-driven live diagram; animation and tweening explicitly deferred to GUI G5
Perception — the plane can draw, not yet see
Emerging
VISION plane's first rung: a draw->read round trip through Windows.Media.Ocr and onnxruntime (10 ms, glyph-accurate incl. Arabic shaping)