On Cascadia Code, I received the following warning:
⚠ WARN: Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering?
com.google.fonts/check/gasp
--- Rationale ---
Traditionally version 0 'gasp' tables were set so that font sizes below 8 ppem had no grid fitting but did have antialiasing. From 9-16 ppem, just grid fitting. And fonts above 17ppem had both antialiasing and grid fitting toggled on. The use of accelerated graphics cards and higher resolution screens make this approach obsolete. Microsoft's DirectWrite pushed this even further with much improved rendering built into the OS and apps.
In this scenario it makes sense to simply toggle all 4 flags ON for all font sizes.
ℹ INFO These are the ppm ranges declared on the gasp table:
PPM <= 9: flag = 0x0A - Use grayscale rendering - Use smoothing along multiple axes with ClearType® PPM <= 50: flag = 0x0F - Use grid-fitting - Use grayscale rendering - Use gridfitting with ClearType symmetric smoothing - Use smoothing along multiple axes with ClearType® PPM <= 65535: flag = 0x0A - Use grayscale rendering - Use smoothing along multiple axes with ClearType® [code: ranges] ⚠ WARN The gasp table has a range of 9 that may be unneccessary. [code: non-ffff-range] ⚠ WARN The gasp table has a range of 50 that may be unneccessary. [code: non-ffff-range] * ⚠ WARN The gasp range 0xFFFF value 0x0A should be set to 0x0F. [code: unset-flags]
Expected behaviour
The Fontbakery code does not evaluate for GASP table version 0 or version 1. Given that my font (Cascadia Code) contains a version 1 GASP table, the rationale provided doesn't make sense.
The rationale also suggests turning on all 4 font flags for all font sizes. This does not conform to Microsoft's recommended setting for GASP tables. What I have set in Cascadia Code aligns with their current recommendations:
In this case, grid-fit hinting is disables below 9ppem, and above 50ppem.
The check also does not account for situations where the font is unhinted. In such a case, the GASP table should be set to:
"rangeMaxPPEM": 65535, "rangeGaspBehavior": [1, 3]
Observed behaviour
On Cascadia Code, I received the following warning:
⚠ WARN: Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering? com.google.fonts/check/gasp --- Rationale --- Traditionally version 0 'gasp' tables were set so that font sizes below 8 ppem had no grid fitting but did have antialiasing. From 9-16 ppem, just grid fitting. And fonts above 17ppem had both antialiasing and grid fitting toggled on. The use of accelerated graphics cards and higher resolution screens make this approach obsolete. Microsoft's DirectWrite pushed this even further with much improved rendering built into the OS and apps.
In this scenario it makes sense to simply toggle all 4 flags ON for all font sizes.
ℹ INFO These are the ppm ranges declared on the gasp table: PPM <= 9: flag = 0x0A - Use grayscale rendering - Use smoothing along multiple axes with ClearType® PPM <= 50: flag = 0x0F - Use grid-fitting - Use grayscale rendering - Use gridfitting with ClearType symmetric smoothing - Use smoothing along multiple axes with ClearType® PPM <= 65535: flag = 0x0A - Use grayscale rendering - Use smoothing along multiple axes with ClearType® [code: ranges] ⚠ WARN The gasp table has a range of 9 that may be unneccessary. [code: non-ffff-range] ⚠ WARN The gasp table has a range of 50 that may be unneccessary. [code: non-ffff-range] * ⚠ WARN The gasp range 0xFFFF value 0x0A should be set to 0x0F. [code: unset-flags]
Expected behaviour
The Fontbakery code does not evaluate for GASP table version 0 or version 1. Given that my font (Cascadia Code) contains a version 1 GASP table, the rationale provided doesn't make sense.
The rationale also suggests turning on all 4 font flags for all font sizes. This does not conform to Microsoft's recommended setting for GASP tables. What I have set in Cascadia Code aligns with their current recommendations:
In this case, grid-fit hinting is disables below 9ppem, and above 50ppem.
Resources and exact process needed to replicate
https://github.com/microsoft/cascadia-code/releases/tag/v2009.22