SVG export Typst has native SVG export! and SVG is treated just as a vector image format (which it ofc is), so it renders perfectly . problem solved? not yet. lets look at the (simplified) structure of an exported SVG: < svg class = " typst-doc " > < g > < g class = " typst-group " > < g > < g class = " typst-text " > < use xlink : href = " #... " x = " 0 " y = " 0 " /> < use xlink : href = " #... " x = " 9.5326 " y = " 0 " /> < use xlink : href = " #... " x = " 17.063200000000002 " y = " 0 " /> < use xlink : href = " #... " x = " 22.0682 " y = " 0 " /> < use xlink : href = " #... " x = " 27.0732 " y = " 0 " /> < use xlink : href = " #... " x = " 39.4086 " y = " 0 " /> < use xlink : href = " #... " x = " 44.9218 " y = " 0 " /> < use xlink : href = " #... " x = " 54.4544 " y = " 0 " /> < use xlink : href = " #... " x = " 61.985 " y = " 0 " /> < use xlink : href = " #... " x = " 68.453 " y = " 0 " /> </ g > </ g > </ g > </ svg > wheres the actual text?! turns out, to make sure that everything is rendered perfectly , Typst turns text into a group of vector glyphs. a pretty clever solution, albeit pretty bad if i want to do anything except print the text on a piece of paper. selecting it in a web browser? nope, theres no actual text! reading with a screen reader? nope, for the same reason! granted, Typst wasnt made for rendering webpages. and thankfully, its open-source , meaning if i need a feature i can just add it myself and make a PR so that others benefit from it too! which is exactly what i did . one might ask me, did i revert all this beautiful rendering and made Typst rely on *gasp* the renderers in browsers?! nope. instead, my PR makes Typst add an invisible <text> tag to each piece of text it emits: < g class = " typst-text " > < use xlink : href = " #... " x = " 0 " y = " 0 " /> <!-- ... --> < text fill = " transparent " > the actual text goes here! </ text > </ g > its a bit more involved since i also have to make the selection boxes line up (which turned out to be a lot harder than i thought it would be), but you get the idea. if you compile a document into SVG with the forked version of Typst and open that in a browser, you can select text! sadly, browsers are kinda shit at implementing the SVG standard. for example, Firefox does