“We must dare to invent the future” (Thomas Sankara)
typho's vision can be explained on three levels (from generic to specific; or equivalently “holds true forever” to “might change tomorrow”):
High-level
Digital typesetting is the composition of text by means of arranging glyphs in digital systems representing characters (letters and other symbols).
As such it is the process of taking content elements and placing them in a machine-readable media format for human consumption.
This originates from the process of creating books but also includes generating websites with semantic elements in an outline these days.
Applications include …
generation of product catalogues
academic publishing
generation of API references
generation of static content websites
book publication
invoice generation
We acknowledge that many standards — such as the Unicode and OpenType standard — exist. We acknowledge that many tools like LaTeχ, LibreOffice, Adobe Illustrator, Skribus, … exist. And users need interoperability with these tools.
We acknowledge that there is a lack of tools for today's requirements. We want a tool …
… that is open source so we can study the algorithms in use
… that can output multiple output formats from a single input file so we are not limited a certain medium when writing the content
… that supports all scripts offered in Unicode Unicode started in 1988, so it is not much to ask for that
… that offers modern font support through standards like OpenType
… that separates concerns so we can easily extract text without layout instructions
… that provides a sufficiently good user experience for the non-tech-savy general public helpful error messages, trivial installation process, intuitive input organization
… that is sufficiently fast by using smart algorithms
We acknowledge this goal cannot be achieved short-term. We need a sustainable business model with a small core development team to fund this project.
Mid-level
We want to support plain text files in UTF-8 as input input formats have arbitrary complexity and plain text files is where we start the first several years; specifically markup languages like Markdown, AsciiDoc, and XML. We don't see any value in supporting text encodings outside UTF-8 but it might be reevaluated in the future for the CJK community
We want to support images as input to be included in the output files {JPEG, PNG, SVG} for sure; {EPS, WEBP, TIFF} are desirable
We want to support fonts as input OpenType for sure; {TrueType, WOFF/WOFF2, EOT, PostScript fonts like Type 3, Type 2, Type 1} are desirable
We want to support mathematical/symbolic content as input {MathML, Teχ mathmode} for sure; many more domain-specific languages are desirable
We want to support paged and reflowable document formats as output {EPUB, PDF} for sure; {HTML5, DjVu, XML, RTF, LibreOffice document, man pages} desirable
Font development is underfunded and end users have too little overview if typho receives sufficient funds, we plan to forward some funds towards font development. And we certainly need better tools on the intersection of linguistics and fonts
We want to document all interfaces thoroughly so user programs can modify the generated output between pipeline stages (e.g. add items to a table of contents)
In general, we want to focus on standards which support an open development process, but acknowledge that non-free standards are often dominant and need to be supported as well.
We want to utilize concurrency to achieve comparable or improved performance compared to LaTeχ. Our choice for implementation is rust.
We discuss our progress, our deliverables and design decisions in public talks/presentations to support an open development process we give public talks and make content publicly accessible through this website
All official content of typho needs to be available in English as a pragmatic lingua franca. This includes all content on this website as well as presentations and meetings minutes.
Low-level
We develop parser/readers, writers, syntax highlighters, language server protocol implementations for markup languages AsciiDoc is work in progress, Markdown is available
XML is cumbersome for some users, but standardizes many required tools for typho. We consider taking over maintainership of xml-rs a strong support of XML standards without requiring it everywhere is the way to go
The state of mathematical typesetting is pretty shit (MathML support is insufficient and Teχ is only representational notation) we need a well-defined data model based on MathML and an image renderer for compatibility
Lua is an acceptable language for user programs to interface with the typho pipeline And Lua is popular in the typesetting community, see LuaTeχ, SILE, and speedata
We also develop tools to parse Teχ content, because much academic content (e.g. arxiv.org) is provided in Teχ implementing macro expansion fully and partially is in progress
Our deliverables include a typesetting pipeline called typho and a web editor called typhed for a sustainable development model a prototype for typho exists, typhed was not started yet
Development model
tajpulo's words:
Development will be
fast
if a small team can spend fulltime on this project,
average
if I can spend fulltime on this project and
slow (current state)
slow if I work on this project few hours per week.
This development status and prospect is detailed in each year's transparency report.
One-person fulltime corresponds to at least 3000€/month here in Austria.
This project is my lifetime project and I will retain this infrastructure at least until 2032.
My goal is to have all required features ready in 2027. It is difficult to make promises so far in the future, but I understand supporters want to have some predictable roadmap.