v0.6.0 43c5a7c

0006-css-and-text-scope.md RawHistoryFolder

ADR 0006 — CSS and text scope

Status: accepted

CSS

  • Units: logical px, %, em, rem, unitless zero and auto. A NeferGUI px is a logical pixel; the renderer converts to physical pixels with the Wayland scale.
  • Not supported: viewport and physical units, calc, min, max, clamp.
  • Selectors: type, class, ID, descendant, direct child; pseudo-classes hover, active, focus, focus-visible, disabled.
  • A property table is frozen before parser work (docs/css.md). Unknown declarations are ignored with a diagnostic. A malformed rule never corrupts its neighbours.
  • Row and Column ship overridable flex defaults. Stack paints its first child at the back, sizes to the largest child and hit-tests in reverse paint order. Semantic helpers set a CSS type and an accessibility role.

Text and images

  • go-text/typesetting handles font parsing, segmentation, bidi, fallback and shaping.
  • golang.org/x/image/font/sfnt with a Go rasterizer produces grayscale masks.
  • Glyph positions stay fractional. Atlas keys include face, glyph, physical size, variation coordinates and subpixel phase.
  • Mono-channel bounded atlases, premultiplied alpha, linear-light blending, sRGB output. No LCD or SDF/MSDF text.
  • Font fixtures are pinned with their licenses. Golden images need explicit human approval and are backed by independent metric and coverage checks.
  • Images: Go image.Image, PNG and JPEG from the standard library. No SVG or animation.
source
1# ADR 0006 — CSS and text scope
2
3Status: accepted
4
5## CSS
6
7- Units: logical `px`, `%`, `em`, `rem`, unitless zero and `auto`. A NeferGUI `px` is a logical pixel; the renderer converts to physical pixels with the Wayland scale.
8- Not supported: viewport and physical units, `calc`, `min`, `max`, `clamp`.
9- Selectors: type, class, ID, descendant, direct child; pseudo-classes `hover`, `active`, `focus`, `focus-visible`, `disabled`.
10- A property table is frozen before parser work (`docs/css.md`). Unknown declarations are ignored with a diagnostic. A malformed rule never corrupts its neighbours.
11- `Row` and `Column` ship overridable flex defaults. `Stack` paints its first child at the back, sizes to the largest child and hit-tests in reverse paint order. Semantic helpers set a CSS type and an accessibility role.
12
13## Text and images
14
15- `go-text/typesetting` handles font parsing, segmentation, bidi, fallback and shaping.
16- `golang.org/x/image/font/sfnt` with a Go rasterizer produces grayscale masks.
17- Glyph positions stay fractional. Atlas keys include face, glyph, physical size, variation coordinates and subpixel phase.
18- Mono-channel bounded atlases, premultiplied alpha, linear-light blending, sRGB output. No LCD or SDF/MSDF text.
19- Font fixtures are pinned with their licenses. Golden images need explicit human approval and are backed by independent metric and coverage checks.
20- Images: Go `image.Image`, PNG and JPEG from the standard library. No SVG or animation.

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 1

Tags 12

↑↓ moveenter openesc close