Well this turned out well. I've modified the script to give consistent wall thickness regardless of angle, give gently rounded exterior corners to sharp letters and by using 2D minkowski processing and then extruding the resultant shape upwards as required, I've managed to reduce the rendering time by up to 10 times for complex rounded characters, even with doubled curve resolution, and the straight characters like "A" render almost instantly despite having rounded corners, even when they're 500mm tall (not that my printer could handle that size.)
For testing prints I recommend setting the base thickness to 0.4mm (2-layers) for speed of printing.
//Sign body maker V3 - bigclivedotcom
letter = "A"; //Sign character to make
style = "Arial"; //See "Help" and "Font List"
size = 50; //Size of character (height)
depth = 10; //Depth of sign character
$fn=100; //Curve facets - higher is smoother
walls = 2; //Side wall thickness
base=.4; //Base thickness (-1 for open back)
face = 1; //Face thickness
//Don't change variables below here
sized=size-(2*walls);
difference(){
linear_extrude(height=depth)
minkowski(){
text(letter,sized,style);
circle(walls);
}
//Lip for front face (half wall thickness)
translate([0,0,depth-face])
linear_extrude(height=2*face)
minkowski(){
text(letter,sized,style);
circle(walls/2);
}
//hollow core of letter
translate([0,0,base])
linear_extrude(height=depth+2)
text(letter,sized,style);
}
//Sign front-face generator V3 - bigclivedotcom
//All variables must match the sign body sizes
letter = "A"; //Sign character to make
style = "Arial"; //See "Help" and "Font List"
size = 50; //Size of character
$fn=100; //Curve facets - higher is smoother
walls = 2; //Side wall thickness
face = 1; //Face thickness
fit = 0.5; //Slight shrink of face for easier fitting
//Don't change variables below here
sized=size-(2*walls);
linear_extrude(height=face)
minkowski(){
text(letter,sized,style);
circle((walls/2)-fit/2);
}