Build1 distinct publisher2 min readPublished
The Mathematical Alphanumeric Symbols block looks like clean 26-letter runs, but five of its alphabets have holes where mathematicians' named constants already lived, and only a lookup table jumps them.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
The failing call is arithmetically sound. Script capital A sits at U+1D49C, so the offset for B computes U+1D49D, and that slot is empty because Unicode declines to encode a character it has already encoded somewhere else [1][5][4]. Nothing throws. The string gets built and copied, and the renderer draws the box that means no glyph [6][11]. The letter that should have come out is not nearby: script B lives in Letterlike Symbols, U+2100 to U+214F, at least 111,438 code points below where the offset pointed [3][6].
That distance changes the shape of your strings as well as their contents. The dev.to write-up tells you that every character you are producing is astral-plane, two UTF-16 code units [12]. That holds for the arithmetic path. The eleven script substitutes sit below U+FFFF, one code unit each [5], so the code-unit length of a styled string now depends on which letters the user typed. Anything downstream that counts units against a limit is off by one per hole.
Bold has no holes, which is why the demo always works. In script, three of the five letters of "Hello" (H, e and o) come out of the exception table [7], and "World" comes out of the arithmetic clean [6]. Eleven holes across 52 script letters is about 21% of that alphabet [8], and none of it is visible to an eyeball, because an unassigned code point and a missing font draw the same box [11]. Hence the assertion the author recommends: run a pangram, filter the output against a set of reserved code points [9]. That set has 24 entries [2]. Eleven of them are the script holes [8]; the other 13 are one isolated point at U+1D455, five between U+1D506 and U+1D51D, and seven between U+1D53A and U+1D551 [3].
Adoption cost is small and permanent. One table per style, one assertion in CI, and a maintenance risk that is easy to name: a style added later whose holes row nobody wrote, passing a reserved set nobody updated [7][9]. The other transforms have the same shape. Flipping is substitution plus reversal, and the substitution table has to be an involution, because people paste flipped text back in and expect it to come home [15]. The correctness of one of these generators lives in its data, and the offset was only ever a compression of that data.
Ranked by verification strength, evidence, and original report placement.
The RESERVED set given is 0x1D455, 0x1D49D, 0x1D4A0, 0x1D4A1, 0x1D4A3, 0x1D4A4, 0x1D4A7, 0x1D4A8, 0x1D4AD, 0x1D4BA, 0x1D4BC, 0x1D4C4, 0x1D506, 0x1D50B, 0x1D50C, 0x1D515, 0x1D51D, 0x1D53A, 0x1D53F, 0x1D545, 0x1D547, 0x1D548, 0x1D549, 0x1D551.
Upside-down text is substitution of each character for its turned twin plus reversal of the string; skipping the reversal produces mirror writing, the most common bug in these tools, and a table that only maps a to the turned a cannot handle users who arrive with already-flipped text.
The Mathematical Alphanumeric Symbols block, U+1D400 to U+1D7FF, holds about a dozen styled Latin alphabets: bold, italic, bold italic, script, bold script, fraktur, double-struck, sans-serif, monospace, and the digit sets.
The block reads like a clean set of 26-letter runs but is not; five of the alphabets have gaps.
When the block was encoded, some of those letters already existed in the Letterlike Symbols block, U+2100 to U+214F, because mathematicians had used them as named constants for decades: the Hamiltonian, the Lagrangian, the reals.
Unicode does not encode the same character twice, so rather than duplicate those letters it left their slots in the new block permanently unassigned.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 27, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
build
Allow-list the closed set, block-list the open one: 193 thin geo pages, one gate1 distinct publisher
product
AI writes the Dockerfile, and the pipeline is still checking the app code1 distinct publisher
security
Talos: obfuscated JavaScript is phishing kit plumbing, and beautifiers will not read it for you1 distinct publisher
build
Three ways to ask who embedded your iframe, and only one the host cannot switch off1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Checkable against the standard, sourced to nobody
The numbers hold together on their own terms: the eleven script points in the reserved list are exactly the eleven letters in the holes table, and the code path checks the table before the addition, which is the behaviour the reserved-point assertion tests for. What is absent is provenance — no Unicode version, no chart or data file named, no second party who has run the list — so the reader is verifying against the standard rather than against the reporting.
One implementation, and it is the author's
The only shipped code anyone points to is Confileo's own: 26 styles, the full table, seeded glitch, two-way flip, client-side. The headline says every text generator falls into these holes; not one of them is named, and no third-party project is on record having adopted the table-first approach or the reserved-point test.
Headline overreaches; the code under it does not
"Every text generator falls in" generalises from one product the author fixed, and "the most common bug in these tools" arrives without a count. Underneath, the writing is if anything modest: it hands over the exception table, the assertion and the PRNG instead of describing them, which is the opposite of inflation.
Findings and funnel share an address
The piece ends where you would expect a vendor post to end — at Confileo, the author's own text-tool site, with a link to its upside-down page as the suggested way to confirm the involution claim. That does not dent facts a reader can verify in the Unicode charts, but the material was gathered by the party selling the fix, and dev.to publishes it without editorial screening.
Thin sourcing, friendly subject
One author, one publisher, one interested party — normally grounds for caution. Here the subject is a frozen block in a public standard, the easiest possible case for a lone source, and the story invites its own falsification by printing the code points. That combination puts confidence above the sourcing and below what corroboration would buy.