A 541-point Hacker News joke is carrying its punch line inside an OpenType table. Bastardica takes a base typeface, replaces every nth glyph with one from another font, then hands back a normal font file. The effect looks like a CSS prank, but it remains attached to the text in browsers, design software and print workflows that apply the font's ligature rules.
That distinction explains why a silly tool drew 77 comments in the brief's snapshot of the Hacker News launch. A page can disappear while the downloaded TTF, OTF or WOFF2 keeps the gag intact. For developers, Bastardica is a compact demonstration that a font is more than a folder of letter shapes. It can contain instructions that choose a different shape according to the glyphs around it.
A font mixer with an interval dial
The Bastardica web app starts with two choices: a base font and a mix-in font. Set the interval to seven and every seventh eligible glyph changes. The built-in picker includes familiar faces such as Times New Roman, Arial, Comic Sans and Papyrus, while file inputs accept TTF, OTF, WOFF and WOFF2 uploads. A live preview shows the result before the app builds a downloadable file.
The joke can be faint or loud. Scale, horizontal and vertical offset, and skew controls apply to the incoming glyphs. The supplied Sneaky Bastard preset shrinks the replacement face to 90 percent so the switch is easy to miss. Royal Ransom Note piles several fonts into one result. The app also lets a user exempt punctuation or other chosen characters from replacement, which keeps a regular cadence from wrecking every space and full stop.
Advanced mode adds more mix-in fonts, each with its own interval. Bastardica's own guidance recommends prime-number intervals because collisions then occur less often. If one font replaces every fifth glyph and another replaces every seventh, both target the 35th position. The first mix-in wins while both intervals continue counting. This is a small design decision with a visible result, and the app states it plainly in its usage notes.
The output path is equally concrete. Bastardica first creates a TTF, then offers separate builds for OTF and compressed WOFF2. Those are files a developer can deploy through an ordinary @font-face rule or open in software that supports OpenType shaping. No Bastardica script has to ship with the finished page.
The substitution lives in liga
Text normally begins as characters and ends as positioned glyphs. Between those stages, a shaping engine consults tables embedded in the font. Microsoft's OpenType layout specification describes GSUB as the table for glyph substitutions and GPOS as the table for positioning. Features point to ordered lookups that tell the client which operation to apply and in what context.
Bastardica registers its swaps as chaining contextual substitutions under the standard liga feature. That tag usually handles familiar ligatures such as combining f and i into a single glyph. Here it is used to count through a run and call a replacement lookup at the selected interval. The app's FAQ says it registers the rule for every script and expects browsers to enable it by default. If an application disables ligatures, the mixed font may look unchanged.
This is why the output travels. The page does not alternate CSS font families one character at a time, and it does not turn the sentence into an image. The characters remain text while the font's GSUB program decides which outlines to display. That also makes the effect dependent on a real shaping engine. Copying the text without the font removes the visual joke because the underlying characters were never rewritten, a separation defined by the OpenType layout model.
The method comes from an earlier project, Times New Bastard, which mixes Nimbus Roman No. 9 L with Nimbus Sans and makes every seventh letter sans serif. Its web instructions explicitly enable kern and liga. Bastardica turns that fixed artifact into a browser workshop: the interval, source faces, transformations and number of mix-ins become inputs.
Python builds the font without receiving the upload
The app says uploaded fonts stay on the device. It runs Python in the browser through Pyodide and uses fontTools to read and write the font data. Pyodide's quick start explains that loadPyodide() creates a Python environment inside the page, after which JavaScript can run Python and exchange values with it. Bastardica places that work in a browser worker, so the generation step does not require a font-processing API on its server.
fontTools supplies the lower-level machinery. The project's documentation describes a Python library for manipulating OpenType and TrueType fonts, including the TTFont object used to inspect and save their tables. Bastardica pairs it with Brotli support for WOFF2 output. The result is an unusual but understandable web stack: the interface gathers settings, a WebAssembly-hosted Python runtime edits the binary, and the browser downloads the new asset.
Local processing matters for more than speed. A designer may be testing a licensed font file that cannot be sent to an unknown conversion service. Bastardica's privacy note says the upload never leaves the browser. It does not make an untrusted font harmless, prove that every browser will shape the result identically, or grant permission to modify the input. Those questions remain with the user and the software that later opens the file.
The funny output still has serious boundaries
Bastardica warns that mixing fonts creates a derivative work and tells commercial users to check both source licenses. That warning is easy to miss after choosing a preset. Permission to view a typeface on one machine may differ from permission to alter it, embed it on a website or redistribute a generated font. The original Times New Bastard repository publishes its output under the GNU Affero General Public License with a document-embedding exception. Another pair of fonts can carry completely different terms. Browser-only processing changes where the file is handled, not what its license allows.
Public use also needs a readability decision. Much of the Hacker News discussion consists of people laughing at deliberately bad typography, but one screen-reader user asked others not to deploy it. That comment is community feedback rather than a compatibility test. It still points to the right editorial limit: a type experiment that makes letters unpredictable should not become body copy, a form label or any text a person must read to complete a task. A poster, game prop or private joke has a different risk profile.
There are technical limits as well. The two source fonts need compatible character coverage for a useful swap, and the receiving application has to honor the relevant OpenType feature. A WOFF2 made for the web is only one deliverable. Anyone planning print or cross-application use should test the exported TTF or OTF in the actual software. The app's FAQ says to check whether ligatures are disabled when an output appears unchanged.
What to watch after the laugh
Bastardica has already cleared the attention test. The next useful evidence would be boring on purpose: exported-font samples across shaping engines, clearer license metadata for the built-in choices, and accessibility checks for any proposed public use. Until those exist, its best role is as a hands-on OpenType lesson. Set an interval, download the file, turn liga off, then turn it back on. The 541 points measure how well the joke travelled. That switch reveals where the joke actually lives.