I've written a new BMPFont plugin. It's designed so that it can also be used by external tools (like a TTF-RFN converter), in addition to being used as a plugin.
The new plugin uses Sapphire's API for extending Surfaces. The following script demonstrates using BMP fonts with Surfaces in Sapphire:
RequireSystemScript("colors.js");
var s = new Surface(64, 64, Black);
var Fonty = GetSystemFont();
s.drawText(Fonty, 0, 0, "Sphere");
s.drawText(Fonty, 4, 16, "Fonts!");
var TextImage = new Image(s);
var DefaultShader = GetDefaultShaderProgram();
var Vertices = [new Vertex(0, 0), new Vertex(64, 0), new Vertex(64, 64), new Vertex(0, 64) ];
var TextShape = new Shape(Vertices, TextImage);
var TextGroup = new Group(TextShape, DefaultShader);
The new BMPFont plugin can handle fonts with up to 2^32 glyphs, in Sphere RFN format version 1 or 2. It can print UTF-8 (v1 and v2) and ASCII strings. Obviously, we'd need to make some unicode RFN fonts to really take advantage of that, but now it's not an inherent limitation.
I plan on making a new TTF-RFN converter that can handle full unicode codepoints that uses this plugin's rfn API as its backend, in combination with SDL_ttf (or perhaps freetype directly?).