-
Notifications
You must be signed in to change notification settings - Fork 32
Description
According to https://googlefonts.github.io/gf-guide/metrics.html#cjk-vertical-metrics, it is suggested that the OS/2.sTypoAscender is set to 0.88 * font UPM and the OS/2.sTypoDescender is set to -0.12 * font UPM. The table is attached below:
Attrib Value Example using 1000upm font OS/2.sTypoAscender 0.88 * font upm 880 OS/2.sTypoDescender -0.12 * font upm -120 OS/2.sTypoLineGap 0 0 hhea.ascender Set to look comfortable (~1.16 * upm) 1160 hhea.descender Set to look comfortable (~0.288 * upm) -288 hhea.lineGap 0 0 OS/2.usWinAscent Same as hhea.ascent 1160 OS/2.usWinDescent abs(value) of hhea.descent 288 OS/2.fsSelection bit 7 (Use_Typo_Metrics) Do not set / disabled 0 Our decision to follow the Adobe schema was based on Dr. Ken Lunde’s comments and his release notes on Source Han Sans:
However, these metrics are only used in Japanese fonts. In Korean font (such as IBM Plex KR developed by Sandoll Inc), the ratio used is 0.8:0.2, which some Chinese font foundries use too. Another typical Chinese font foundry used is 0.85:0.15, as this allows more descender space compared to 0.88:0.12. There are some other combination of values which is used for individual creators too.
The referenced issue provided to justify these values (source-foundry/font-line#2) only explicitly mention this (quoted from @kenlunde):
To add to the discussion with regard to the sTypoAscender and sTypoDescender values in the 'OS/2' table, while I cannot speak with any authority to non-CJK fonts, at least for CJK fonts I feel somewhat strongly that these values 1) add up to equal the UPM and 2) correspond to the top and bottom of the ideographic em-box in which CJK glyphs are optically centered. For the other vertical metrics values, I see little or no disagreement.
Thus, I would like to suggest the guide to change the guidelines to allow any ratio for the OS/2 sTypo
values as long as:
- OS/2.sTypoAscender - OS/2.sTypoDescender = UPM (In the sample it is 880 - (-120) = 1000)
- OS/2.sTypoAscender and OS/2.sTypoDescender reflects the CJK ideographic bounding box only, not any other values.