Automatically generate a BASE table

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. :slight_smile:

Obviously there is still the option to include the BASE table as a Prefix item, but automatically generating one would be handy.

I’ll have a look at the base table, soon. You don’t happen to have a small .otf that has a BASE table with those values?

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. (13.1 KB)

Adobe uses this structure for the BASE table in AFDKO:

table BASE {
  HorizAxis.BaseTagList     icfb  icft  ideo  romn;
                DFLT  ideo   -74   834  -120     0,
                hani  ideo   -74   834  -120     0,
                kana  ideo   -74   834  -120     0,
                latn  romn   -74   834  -120     0,
                cyrl  romn   -74   834  -120     0,
                grek  romn   -74   834  -120     0;

  VertAxis.BaseTagList      icfb  icft  ideo  romn;
                DFLT  ideo    46   954     0   120,
                hani  ideo    46   954     0   120,
                kana  ideo    46   954     0   120,
                latn  romn    46   954     0   120,
                cyrl  romn    46   954     0   120,
                grek  romn    46   954     0   120;

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.