I have seen this thing done at post processor level but never on the control except for the G68 you mention. Consider this, for every line of code to position the tool you would have to have a macro call to adjust the tool position. Very dodgy in my view. I think you would be better writing a program in VB or Java to read in your program, adjust all your X & Y's by a given amount and output a new, compensated version of the program. A sort of second level post processor if you like.
The math is relatively simple except for the cardinal points i.e. 0°, 90°, 180° and 270° where the tangent can be eith 0 or infinity.
Maybe some of the higher end CNC editors have this function. Can anyone tell us?