HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
davejarvis
keentype
HISTORICAL RECORD2023–2023
davejarvis / keentype · Not publicly available

keentype

Discover this repository through its Hacker News conversations.

2Distinct people
6Mentions
0Explicit recommenders
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A public description has not been verified.

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by week6 dated mentions

Observed mentions: 2023-01-23 17:01:29 UTC to 2023-07-31 17:45:48 UTC. Weeks start Monday, UTC.

012023-01-23 00:00:00 UTC to 2023-01-30 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 commentsJan 232023-01-30 00:00:00 UTC to 2023-02-06 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-06 00:00:00 UTC to 2023-02-13 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023-02-13 00:00:00 UTC to 2023-02-20 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-20 00:00:00 UTC to 2023-02-27 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-27 00:00:00 UTC to 2023-03-06 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023-03-06 00:00:00 UTC to 2023-03-13 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-03-13 00:00:00 UTC to 2023-03-20 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-03-20 00:00:00 UTC to 2023-03-27 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-03-27 00:00:00 UTC to 2023-04-03 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-04-03 00:00:00 UTC to 2023-04-10 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-04-10 00:00:00 UTC to 2023-04-17 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023-04-17 00:00:00 UTC to 2023-04-24 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-04-24 00:00:00 UTC to 2023-05-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsApr 242023-05-01 00:00:00 UTC to 2023-05-08 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023-05-08 00:00:00 UTC to 2023-05-15 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-05-15 00:00:00 UTC to 2023-05-22 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-05-22 00:00:00 UTC to 2023-05-29 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-05-29 00:00:00 UTC to 2023-06-05 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-06-05 00:00:00 UTC to 2023-06-12 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-06-12 00:00:00 UTC to 2023-06-19 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-06-19 00:00:00 UTC to 2023-06-26 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-06-26 00:00:00 UTC to 2023-07-03 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-07-03 00:00:00 UTC to 2023-07-10 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-07-10 00:00:00 UTC to 2023-07-17 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-07-17 00:00:00 UTC to 2023-07-24 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-07-24 00:00:00 UTC to 2023-07-31 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-07-31 00:00:00 UTC to 2023-08-07 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsJul 31

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Jan 232023-01-23 00:00:00 UTC2023-01-30 00:00:00 UTC110
Jan 302023-01-30 00:00:00 UTC2023-02-06 00:00:00 UTC000
Feb 62023-02-06 00:00:00 UTC2023-02-13 00:00:00 UTC101
Feb 132023-02-13 00:00:00 UTC2023-02-20 00:00:00 UTC000
Feb 202023-02-20 00:00:00 UTC2023-02-27 00:00:00 UTC000
Feb 272023-02-27 00:00:00 UTC2023-03-06 00:00:00 UTC101
Mar 62023-03-06 00:00:00 UTC2023-03-13 00:00:00 UTC000
Mar 132023-03-13 00:00:00 UTC2023-03-20 00:00:00 UTC000
Mar 202023-03-20 00:00:00 UTC2023-03-27 00:00:00 UTC000
Mar 272023-03-27 00:00:00 UTC2023-04-03 00:00:00 UTC000
Apr 32023-04-03 00:00:00 UTC2023-04-10 00:00:00 UTC000
Apr 102023-04-10 00:00:00 UTC2023-04-17 00:00:00 UTC101
Apr 172023-04-17 00:00:00 UTC2023-04-24 00:00:00 UTC000
Apr 242023-04-24 00:00:00 UTC2023-05-01 00:00:00 UTC000
May 12023-05-01 00:00:00 UTC2023-05-08 00:00:00 UTC101
May 82023-05-08 00:00:00 UTC2023-05-15 00:00:00 UTC000
May 152023-05-15 00:00:00 UTC2023-05-22 00:00:00 UTC000
May 222023-05-22 00:00:00 UTC2023-05-29 00:00:00 UTC000
May 292023-05-29 00:00:00 UTC2023-06-05 00:00:00 UTC000
Jun 52023-06-05 00:00:00 UTC2023-06-12 00:00:00 UTC000
Jun 122023-06-12 00:00:00 UTC2023-06-19 00:00:00 UTC000
Jun 192023-06-19 00:00:00 UTC2023-06-26 00:00:00 UTC000
Jun 262023-06-26 00:00:00 UTC2023-07-03 00:00:00 UTC000
Jul 32023-07-03 00:00:00 UTC2023-07-10 00:00:00 UTC000
Jul 102023-07-10 00:00:00 UTC2023-07-17 00:00:00 UTC000
Jul 172023-07-17 00:00:00 UTC2023-07-24 00:00:00 UTC000
Jul 242023-07-24 00:00:00 UTC2023-07-31 00:00:00 UTC000
Jul 312023-07-31 00:00:00 UTC2023-08-07 00:00:00 UTC101

What Hacker News says

6 sources
> modern languages like Markdown Markdown was created in 2004. From the creator: > ... the single biggest source of inspiration for Markdown’s syntax is the format of plain text email. Email goes back to 1965, though I suspect Markdown's influence stems from the more widely adopted email usage of the 1990s. I'm not sure if I'd call Markdown "modern". Quite popular though! > Part of LaTeX's success was the absolutely beautiful documents it can make with nothing but a personal computer. I'd say that was TeX's success, with LaTeX bolted on later to greatly improve TeX's extensibility. Keep in mind, there are a number of TeX-centric implementations beyond LaTeX. For example, my fork of NTS, called KeenType, is a pure Java version of TeX that can typeset beautifully and has at its core Knuth's original TeX files. I specifically avoided integra
Read the rest
ting LaTeX. https://github.com/DaveJarvis/KeenType/tree/main/tex/src/mai... My Markdown text editor, KeenWrite, uses KeenType to preview math in documents. https://github.com/DaveJarvis/KeenWrite/blob/main/docs/scree... When exporting to PDF, KeenWrite uses ConTeXt to typeset the final document. ConTeXt being another TeX-based system. This is the reason why KeenWrite only uses TeX: to give users the ability to choose what TeX flavour to use for typesetting the PDF. https://wiki.contextgarden.net/Main_Page
In LaTeX3: Programming in LaTeX with Ease (2020)
My port of the New Typesetting System (NTS), called KeenType, whittles down the Java-based implementation to a few of Knuth's files. Namely, "plain.tex" and "hyphen.tex": https://github.com/DaveJarvis/KeenType/tree/main/tex/src/mai... Getting familiar with the fonts required understanding the difference between font metrics (TFM files) and the fonts themselves. To make matters a little less straightforward, Knuth created a special character mapping for indexes into the fonts. It was not easy to find a font that mapped those glyphs exactly. The closest font was BaKoMa: https://github.com/DaveJarvis/KeenType/tree/main/tex/src/mai... This required hard-coding a mapping between Knuth's code points and the actual code points in the target font: https://github.com/DaveJarvis/KeenType/blob/989dbe26f68eda75... Plain TeX has a lot of moving parts,
Read the rest
so it's great to see more people writing about the topic.
In Expanding TeX's \Newif (2021)
A while ago I optimized KeenType, which is a Java-based fork of NTS that can convert TeX commands into SVG images: https://github.com/DaveJarvis/keentype The following tutorial shows the real-time rendering speed of KeenType within my text editor, KeenWrite: https://youtu.be/vgyYXwwF_lc?list=PLB-WIt1cZYLm1MMx2FBG9KWzP... KeenWrite can produce web pages from Markdown with the TeX commands included as either as plain TeX macros (usable by JavaScript TeX renderers) or as pre-rendered SVG elements (no JavaScript required).
In The fastest math typesetting library for the web
When trying to make my editor, KeenWrite[0], render TeX in real time using JMathTeX[1], I used initially used JFreeSVG[2] to generate SVG images (not rasterize them). After running the code through async-profiler[3], it turned out that JFreeSVG was using Java's NumberFormat to convert double values to strings. Comparative benchmarks when generating 1,000,000 SVGs from TeX expressions, 1 run each, no warm-up: * NumberFormat: 778060 milliseconds (~13 minutes) * RyuDouble: 421160 milliseconds (~7 minutes) Eventually I replaced JMathTeX with my NTS fork[4] and replaced the JFreeSVG library with a custom class to create SVG document strings[5]. Going from non-real-time TeX to real-time TeX rendering was worth it. [0]: https://github.com/DaveJarvis/keenwrite [1]: https://jmathtex.sourceforge.net/ [2]: https://github.com/jfree/jfreesvg/ [3]: htt
Read the rest
In Reducing code size in librsvg by removing an unnecessary generic struct
In Java, many number-to-string implementations use NumberFormat. This is abysmally slow if the problem domain doesn't require internationalization, which is the case for machine-readable file formats, such as SVG. When I performance tested JMathTeX for rendering TeX, one major bottleneck for converting TeX into SVG elements was JFreeSVG's use of NumberFormat. Replacing NumberFormat with RyuDouble doubled the throughput[0]. (Reusing a StringBuilder to concatenate strings yielded another doubling.) For KeenType[1], a fork of the New Typesetting System (and more complete plain TeX implementation than JMathTeX), I added an SVG generator that converts floating point numbers to strings using a StackOverflow answer[2], not the Ryu algorithm[3]. Better performance, simpler algorithm. Knuth's advice holds: measure then optimize. [0]: https://githu
Read the rest
In Algorithms for converting binary to decimal floating-point numbers (2021)

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.