fox script
The full A to Z written alphabet of the Fox digital language, on the same hexagon lattice as the eleven state letters. Three competing systems, each generated from one rule, benched side by side under identical conditions. This page computes every sign from its rule at load: there are no stored glyph drawings anywhere in it.
One master control. Both sliders drive every cell on the page at the same instant, so no two systems are ever being compared at different settings. Deep links: #tiny · #small · #reading · #display.
1 · the three systems, full inventory
26 letters then 10 digits, in every system, at the master size. Every sign below was produced by the rule printed above it. The vowels are marked, because one shared clause of the construction gives them the most symmetric signs in each system.
2 · confusables, isolated
The four named Latin pairs first, because a reader has to tell those apart by name whatever the script does with them. Then the five tightest pairs each system actually produced, which are the ones that matter. Any pair below the floor is printed as a failure, not as a footnote. Floors: Hamming at least 4 cells of 19, Jaccard at least 0.35, symmetry Hamming at least 1 meaning no two signs are the same shape rotated.
3 · real words
A glyph is never judged alone. Every word below is rendered in all three systems at the master size, on the dark field ground, with the measured tracking. Boundaries findable is a measurement, not an impression: the word's rasters are composed into one bitmap, the connected ink components are counted, and the count is compared against the sum of the signs' own component counts. A shortfall means two neighbouring signs have fused.
4 · measured
Every number here comes from the same code that drew the glyphs above, running in this browser.
The identical code produces the identical numbers under node through _measure.js,
because the rasteriser is pure arithmetic with no canvas in it.
the gate
size sweep, worst pair on the rasterised ink
Coverage sampled on a 3 by 3 subgrid per pixel and thresholded at half coverage, then resampled to a common 48 by 48 grid. This is a raster distinctness proxy for legibility, not legibility. It catches features collapsing below a pixel, which is the failure that actually happens at small sizes, and it does not model an eye.
word boundaries against tracking
5 · the winner
6 · probe
The house rule is to ask the engine, never to read pixels. FOXGLYPH.probe('SPINE')
in the console returns per sign lit cell count, ring occupancy, bounding extent in cells, symmetry
order and piece count, plus every pairwise distance and the worst pair on each metric.
FOXGLYPH.sweep(key), FOXGLYPH.minSize(key) and
FOXGLYPH.wordProbe(key, text, R, track) are the other three.