Now that I’ve wasted a lot more time waiting out the nearly two-hour load time for some fonts, I’ve realized a few things.
First, why is FontCreator doing anything at all with the outlines on font open? It should just open the file, grab all the metadata (which glyphs are present, OpenType features, font names, etc.) and store the raw outline data somewhere in memory. There is no use for the outline data when showing the grid with all the glyphs…MainType doesn’t need that kind of detail to show the same display. And, it buys us nothing. Here’s a glyph as displayed in the grid for each of 3 versions of FontCreator, along with a zoomed in view from a screen capture:
Yes, the 10.1 is very slightly better than the 10.0 when zoomed, but at the normal size, there is zero visual difference. 10.0 displays the glyphs slightly larger than 8.0, and that is most of the improvement between the two.
What should happen is that outlines aren’t looked at in detail until a glyph is opened for editing, or if you need to convert them to a different format when exporting a font or saving a project. And, it shouldn’t change the outlines at all unless a glyph has been edited, but it obviously does, as saved files are much, much bigger than the original file (at least for PostScript outlines).
But, if that’s not possible, then I have to ask…how in the world have you managed to write the most inefficient PostScript interpreter in the history of computers? The 90MHz processor in the LaserJet 1200 can render (and print) every glyph in a font at a size of 600 pixels in about 2 minutes. Why is it my 3.5GHz processor takes 60 times as long to do essentially the same thing when loading an OpenType font with CFF outlines? And, why are you rasterizing at all? Why not just keep the mathematically perfect PostScript Bézier curves until you need to actually rasterize to a pixel grid (which is really the only time-consuming thing about fonts in PostScript)? I admit, I don’t really know exactly what the code is doing when the font file is opened, but whatever it is, that change to the code in 10.1 doesn’t seem to offer any benefit to end users.
If you are going to keep this same algorithm, at the very least you are going to have to multi-thread (by dividing up the glyphs into partitions based on the number of cores) so you can get this down to a reasonable time. People downloading FontCreator for the first time to try it out are going to open their own fonts, and then give up and not buy when they see how long it takes.