I was recently looking over part two of this series, when it occurred to me that there were some easy ways to fix some of the problems we had with FSM GDOS and SpeedoGDOS back in those days.

When the scaled font set up was first introduced to GEM VDI, the programmers did a pretty good job of maintaining backwards compatibility with older programs. However there were certain things that still broke in a lot of programs.

GEM VDI had two API calls for setting font size. The vst_height() function allowed programs to request font size by absolute height, which would scale fonts to any size as needed. This worked great with the font scaler, but the results were rarely pleasing to the eye with bitmapped fonts and the original GDOS. This led to a common practice which was the source of many of the incompatibilities with the new font scaler.

To avoid the poor quality resulting from the scaling of low-resolution bitmapped fonts, legacy GDOS-based programs often followed the practice of restricting font selection to the specific font sizes which were installed. However, GEM VDI did not have any simple means of providing a list of those sizes. To get around this, programs were in the habit of doing a loop which called the vst_point() API function to set each font size in a particular range, say from 6 to 100 points, and then checked to see what size actually got set. With bitmapped fonts, if your program requested a point size of 99 points, but 36 points was the largest size actually available, you’d get 36 points.

This would not work properly with the vector font API because if you asked for a font size of 99 points, it would simply scale a font to 99 points. These older programs were simply not designed for the idea that they would actually get every size they requested, so this caused performance issues with all the requests being made to the font scaler, and also typically broke something in the program’s user interface.

Looking back, I think we should’ve added an extra API call that simply told the font scaler that the program was aware of the new API and enabled the full functionality of the scaler. Programs that didn’t make this API call would have still gotten nicely scaled vector fonts, but within a backwards compatibility mode. For example, in this mode, only certain sizes would have shown as available to programs trying to set a precise point size.

We could have had a Control Panel for the scaler to allow the user to select which sizes were available, and altering the other behavior which might affect backwards compatibility. It could have allowed the user to save presets for different applications as needed.

This seems pretty obvious in retrospect, so I have to wonder why we didn’t think of something like this back then? Or if someone did think about of it, why didn’t we do it?