One way of thinking about linearity in inkjet printing is to remove any “fingerprint” of the device on the final print. Basically the process is to understand how the device behaves, and then account for that character.
In theory an inkjet printer takes in data, and then squirts out ink accordingly. A profile (or curve) is made by a manufacturer (OEM or 3rd party) based on a statistically “standard” device to tell printer the ratios of ink to use for a given paper. The challenge is there are lots of variables to account for that can happen once that profile is our in the wild. Variance in manufacturing, wear-and-tear of components, variance in paper coating, and variances ink are examples of things that can cause non-linear behavior.
When you print out a step-tablet and measure it, you are characterizing the printer. When you take that data, along with the original profile (or curves) use to print the test, a “linearized” profile can be created.