There is also the opposite in type design, that is extreme analytical approaches. Here is our custom Nelder-Mead solver that proposes Houston Mono chamfer nodes in ~2000 iterations. The goal is to smoothly transition from one direction to another using exactly 6 nodes with a 'smooth chamfer', i.e. two rounded 45 deg chamfer corners.
Basically, I care about 3 components for Houston Mono chamfers:
1) How the stroke width smoothly changes from one thickness to another. Here the vertical stroke is 84. It transitions to horizontal at 80. But the midpoint of the chamfer is like ~85.63 (see the table)! It's not linear, but the solver makes this as even as possible.
2) How each of the 45 deg turns curve, i.e. curve tension. Held at 91% by the solver. That means the handles span 91% to the Tunni point (where two handles intersect).
3) How deep the chamfer is...O has deeper chamfers than 2 for example.
There are a few other things like I can bias/skew the stroke change as I see fit visually.
In type design, there are all these tools to help designers. For e.g., you can predefine specific stems (or autodetect) and set their values. So what happens is that the designer now follows these rigid rules and if they're violated, it's exactly like a linter/type checker. Errors are displayed on the screen. The designer tends to correct them, but soooo many times these rules just don't apply. It's a trap. The solution is to keep a printed sheet on your desk with ideal values and unliked from the software. Then nudge them as needed. Auto-hinting will suffer slightly but in vast majority of cases there is a higher priority of making the glyph look consistent with the rest of the typeface.