An idea. Currently there is the CJK Guide custom parameter which allows you to establish the Ideographic Character Face while working on East Asian font projects. The value set here provides all the relevant information necessary to generate a standard BASE table.
And since the CJK Guide parameter is set on a master-by-master basis, you’re actually able given sufficient information to vary the BASE table across a variable axis.
Obviously there is still the option to include the BASE table as a Prefix item, but automatically generating one would be handy.
Sure. I cropped an instance of Noto Sans CJK and provided a Glyphs version (with the CJK Guide included) as well as an exported TTF with the original BASE table merged back in. BASE_sample.zip (13.1 KB)
Adobe uses this structure for the BASE table in AFDKO:
You can see the ideo is -120, aligning with the descender value. In this font, the Ideographic Character Face (ICF) value is 46, which is also represented by the CJK Guide. So to calculate the relevant fields, ICFB is -120+46 (-74) and ICFT is 1000-120-46 (834).
A similar calculation can be made for the vertical setting, except that ICFB is just 46 (0+46), and ICFT is 1000-46. And the Roman baseline is 120 above the bottom of the ideograph (0), so it is just 120.
There are a variety of possible baseline tags available.
A couple of additional bits and bobs that come out of this investigation—it would be useful to be able to set the CJK guide unequally—which is to say to have it be slightly different on the top/bottom vs the sides. While this may not be as common, it is not out of the realm of possibility. I also wonder if it would be useful to be able to customize the em-square dimensions to be able to fully customize the CJK design process.
I was one of the originators of the BASE table entries for CJK layout (‘ideo’, ‘idtp’, ‘icft’ and ‘icfb’). Before they existed, CJK fonts lacked any consistent ideographic embox metrics, and text engines needed their own heuristics to calculate them font by font, or simply suffer the consequences of using the font origin for aligning different runs on the line.
The ‘ideo’ and ‘idtp’ BASE table entries correspond to the bottom and top of the ideographic embox of the font, and thus are to be used to set the line height for that font when using embox-style layout. I consider them to be required for all Chinese and Japanese fonts, so that a consistent glyph alignment and line height can be achieved across all fonts.
Another use for the BASE ‘ideo’ and ‘idtp’ metrics is to allow the designers of non-CJK fonts to tell the engine how their non-CJK fonts’ glyphs should be positioned relative to ideographs in other fonts (and perhaps scaled up or down so their emboxes match).
The ideographic character face metrics (‘icft’ and ‘icfb’) are to be used as stand-ins for the “average” ideograph’s bounding box. These can then show what size ideograph (relative to the embox) with which a given font is designed to be used. Kana-only fonts could include these BASE table entries. When included in a font containing ideographs, the entries are useful to characterize the average character face of the ideographs quickly and allow for use in grids or other glyph alignment scenarios.
I’d like to add a use case from the Latin font side.
I found that all Adobe fonts — not just CJK fonts — include a BASE table. For example, Adobe Garamond Pro contains: BASE.horizAxis.ideo: -170
BASE.horizAxis.latn: -170
This value of -170 corresponds to the bottom of the em square, allowing InDesign to correctly align Latin fonts with CJK ideographs in mixed-composition settings.
The BASE table is not exclusive to CJK fonts — it is part of Adobe’s broader multilingual typography strategy, ensuring consistent baseline alignment across scripts. Supporting BASE table round-tripping in Glyphs v3 should be considered essential for high-quality font production, not just for CJK fonts but for any font designed with multilingual co-composition in mind.
In Glyphs v2, this table was preserved on export. In v3, it is silently dropped with “Unsupported table ‘BASE’; ignoring.” This is a regression that affects professional font workflows.