Among other things, I started to look into the data that goes into making an italic. In trying to find out what the aforementioned values in hhea meant I came across Apple’s manual noting:
Note that since the slope is a ratio, values may be used which simplify or speed up calculations. A caretSlopeRise
of 8 and caretSlopeRun
of 6 means the same thing as caretSlopeRise
of 4 and caretSlopeRun
of 3.
I also found Adam Twardoch’s
comment about “rational angles,” which used simplified values.
However, as I looked into some italics from fonts I have (Harriet Text, Quadraat, Akko, and others) each had a caretSlopeRise of 1000 units and varied in the caretSlopeRun. Some could not be simplified, but others certainly could be. I figured it had something to do with the bounding box, but that doesn’t make sense considering a vertical font’s values would be the simplified Rise 1, Run 0.
Comments
On my fonts, I (for some reason) decided to keep the numbers small and have an 8-way case statement that uses different scales based on ranges of tan(90-italicAngle). The ranges are set so that the results is within half a degree for all integer values of italicAngle (I keep my italicAngle integers).
I am guessing that the only practical use for the caretSlopeRise/Run values are when drawing the shape of a selection range ... is that correct? If so, I am thinking that finicky precision in setting these is not really needed ... plus or minus half a degree should be OK, yes??
Maybe it has some other use, but yes, within half a degree should be more than enough accuracy for this purpose.