Cantonese Font v2 - Development Roadmap & Status

2.5 (2024-03-06)

This version is a major milestone, folding in four sets of changes:

  1. all known pronunciation updates (char, words)
  2. the full series of bold, standard jyutping, and no jyutping; in 黑體 as fixed width
  3. adopting a fluid-fixed width effect
  4. invisible to users, 2.5 uses a new importing procedure. This no longer causes memory bloat / crashes.

2.5 is release-ready and is the first version to take on the VF Cantonese name.


1. All known pronunciation updates.

See separate post about updates to default readings. All compounds from previous default reading updates are now patched.

2. Full series

VF Cantonese includes three font variants that share compatible metrics. These include bold, standard, and no jyutping. All three support mixed scripts / Latin and CJK punctuations, and takes on application color.

3. Fluid-fixed width

This encompasses two sets of changes.

First, the inter-character spacing in 2.4 Fixed Width was set to 900, which I thought was too much white space. The new character widths are 860. About 90% of the glyphs fall under this mark.

This creates an issue for the glyphs wider than 860, as neighbor wide glyphs will clash against one another in the Jyutping. This was resolved by classifying the characters into four kerning groups:

  • < 860 (narrow)
  • 860–1050 (medium-wide)
  • 1050–1200 (wide)
  • larger than 1200 (SUPER; these 31 glyphs are all bisyllabic)

This creates 4 x 4 = 16 (symmetric) kerning pairs, and these were assigned a specific kerning that minimizes the chances of clash. The effect is very nice and natural, and it totally doesn’t seem like it took so much work to get just right.

I think this, in some way, captures exactly the overall feel and why I felt right to christen this VF Cantonese. At least on CoreText rendered systems, the fonts “just work” together like a normal font, supporting all the features one expects from a font. The horrific details are hidden so well that it looks effortless.