An icon set where every mark has a number and a stated
meaning, rather than a bag of glyphs. The precedent is Ron Cobb's Semiotic
Standard, and the precedent is all that transfers — 🔴 the artwork,
the names and the trademarks are not ours to relicense, and the idea was
the valuable half anyway. These are authored here, in
tools/icons.py, which is the register and the source.
⭐ The frame is the category and the mark is the
meaning. That is decoration needs a rule applied to iconography, and
it gives the set a property almost no icon font has: an unfamiliar symbol is
still half-readable, because the triangle tells you it is a hazard before you
have worked out what is inside it. The number carries the same information, so
a symbol referred to by number alone is also half-understood — and
because both say it, they can be checked against each other. They are:
tools/gen_icons.py refuses to emit if any symbol has drifted out
of its family.
The set is eight families of at most nine marks, which
is what two digits can number. The first five report on a machine — what
it is doing, what will hurt you, which part you are looking at, what is moving
through it, what you may do to it. The last three are about the ship and the
people in it, which is the half of the precedent a console-only set leaves out
and the half that is actually painted on bulkheads. 🔴 The ninth tens digit is
deliberately unspent: a register that fills its own numbering the moment
it can has no room to be wrong about a category later.
⭐ A mark never crowds its frame, because the frame is
what carries the category and it has to survive being looked at quickly.
tools/clearance.py measures the visible gap on every symbol and
refuses if any is tight — and the margin is not one number, because the
frames are not the same size inside. The margin is one ninth of the room the
frame has: the state circle holds an inscribed disc of 9.00 and the hazard
triangle holds 5.40, so one figure generous enough for the circle would shrink
hazard marks back to the size that already failed a pass. Every frame gives up
the same proportion of its interior instead.
11 nominalreading is within its declared range and current12 cautionreading is real and outside its comfortable band13 faultthe thing reporting is broken, not the reading14 offlinenothing is reporting and nothing is expected to15 no readingno value has arrived. deliberately a dash, which is the refusal idiom the segment readouts use, and deliberately not a zero16 standbypowered, correct, and doing nothing. the hollow dot is the empty end of the fill ladder that 11 fills and 17 half-fills17 degradedrunning, and not at full capability. ⭐ the half-filled dot is the middle of the ladder, so the three states are one gradient rather than three unrelated marks18 stalea value did arrive and is too old to be trusted. ⭐ NOT the same as 15: this one has a number to show you and is telling you not to believe it19 projectedthis value was computed forward, not measured. ⭐ the solid dot is the last real reading and the dashes are what comes after it, because a readout that refuses to invent still has to be allowed to extrapolate OUT LOUD. ⚠️ the first drawing was a solid line going dashed as it rose, and a diagonal inside the state circle is 14 offline - a mark cannot borrow the negation slash to mean something that is not negation
21 pressurepressure differential across this boundary22 thermalsurface or medium at a harmful temperature23 electricallive conductor present24 radiationionising source25 vacuumthis space is or may become unpressurised. the dash is the same absence mark 15 carries, and the frame is what says which kind26 corrosivea substance here attacks what it touches, including you27 contaminatedthe atmosphere here is present and must not be breathed. ⭐ the mark is 34 atmosphere wearing the slash, which is the whole system working: a borrowed mark and a known modifier, read in the frame that says danger
31 powerelectrical supply32 commssignal link to somewhere else33 coolantheat transfer loop34 atmospherebreathable supply and its handling35 storageheld material or held data36 propulsionthrust, and the machinery that makes it37 navigationwhere the vehicle is and where it is pointed. ⚠️ drawn as an outline this is a capital A, and deepening the notch does not help because the SILHOUETTE is what reads as the letter. filling it does: letterforms are strokes, so a solid shape cannot be one. same class of mistake as the bowtie 39 had to be redrawn out of38 computeprocessing, and the machine that does it. the mark is a clock because a clock is the part of a computer you can actually point at39 structurehull, frame, and whatever everything else is bolted to. ⚠️ drawn first as a braced bay, which is an X between two rails and therefore a BOWTIE at size - the same mistake the hazard marks already cost a pass. a beam section is the thing itself and cannot collapse
41 intakeflow entering the system here42 exhaustflow leaving the system here43 circulateflow returning to where it came from44 blockedflow that cannot pass. ⚠️ the first drawing was 41 with the wall doubled, and at 30px the two were indistinguishable - which is a real failure in a set whose whole claim is that you can read it. it now carries the slash, the same negation 14 carries45 ventflow released to the outside, on purpose46 leakflow leaving the channel where nothing was meant to leave. ⭐ 45 is the same event authorised, and keeping them apart is most of why this register exists47 filteredflow passes, and something is taken out of it on the way48 surgeflow above its rated rate. the doubled chevron is the fast end of the rate ladder 49 sits at the slow end of49 trickleflow present and below its rated rate. ⭐ the broken line is the rate, drawn rather than labelled - which is the same argument as the fill ladder in the state circle
actionan operation the reader can perform
51 engagestart, and keep running52 holdsuspend without releasing the state53 purgeempty this, discarding what is in it54 isolatebreak the connection and leave both sides intact55 overrideproceed past a refusal. the only symbol in the set for doing something the system has already declined, so it is deliberately not comfortable56 abortstop now and do not resume. 52 keeps the state and this one does not57 resetreturn to the declared starting state. ⚠️ the head is solid because a stroked one left a ring with a nub, and a ring with a nub is 31 power58 acknowledgeyou have seen it, and it stops asking. ⭐ it does not stop being true, which is why this is not the same control as 5659 stepadvance exactly one increment and stop. ⚠️ 51 with a wall added, which is the 41-against-44 shape of mistake - it survives only because the transport idiom is already learned everywhere, and it was checked against 51 at 30px before it was kept
wayfindinga place, and the way into or out of it
61 airlocka chamber with a door at each end, to be passed one at a time62 hatcha single closure that can be dogged shut against pressure63 laddera route between decks, climbed64 corridora route along this deck, walked65 decka level. the long stroke is the one you are standing on66 muster stationwhere people gather when something has gone wrong. ⭐ it is 71 crew present, twice, read in the frame that means A PLACE - which is the clearest case in the set of the frame doing the work67 exitthe way out of this space, in an emergency68 positionyou are here. the only symbol in the set that means something different depending on where it is printed, which is why it is a pin and not a dot69 restricteda doorway you may not go through. the slash is the same negation 14, 44 and 76 carry
crewsomething required of the person standing here
71 crew presentthis space is occupied72 suit requireddo not be here without a pressure suit. ⚠️ the visor was first a chord across a circle, which is the 15 absence dash wearing a different frame and therefore already spoken for73 eye protectiondo not be here without eye protection74 hearing protectiondo not be here without hearing protection75 medicaltreatment, and the people qualified to give it76 unmannednobody is meant to be in here. ⭐ it is the crew figure negated, so a person in this space is the anomaly rather than the default
maintenancehardware, and the servicing it expects
81 fastenera bolted joint. ⭐ a bolt says THIS FACE IS FIXED, which is exactly what stops the bolts on a rack faceplate being decoration82 seala gasket or ring that is consumed by being opened, and is replaced rather than reused83 filter elementa consumable that gets dirty on purpose so nothing downstream does84 fusea part that is meant to fail, so that the expensive part does not85 calibration pointwhere an instrument is told what true is. ⭐ every readout in this kit that refuses to invent a value is relying on somebody having come here86 lockoutdeliberately dead for servicing, and not to be re-energised by anyone who did not kill it. the most important mark in this family
Asking what one means
measuring…
The refusal, which is the whole difference
a name in the register
Draws symbol 33, states its meaning on the element, and takes its
accessible name from the register rather than from whatever the caller
happened to type.
a name that is not
🔴 There is no generic fallback glyph. A question mark, a blank, or
a nearest-match would all be the display inventing a meaning nobody
assigned, which is the same failure as a seven-segment readout closing the
gap on 1.5. Symbol 00 is reserved for saying the register has no
answer, and it is not a symbol in the set.
a caller's own label
The register supplies the accessible name and a caller may override it,
because "disconnect the loop" is a better button label than "isolate". It
cannot silently have no name, which is where icon-only controls
usually fail.
Ten themes
Every stroke is currentColor, so a symbol takes
the surrounding ink and therefore the theme, with no per-theme rule anywhere
and no second implementation.