It might be that this capability is already built into Therion. Look in the source files. /mpost/thText.mp line 84: vardef p_label@#(expr txt,pos,rot,mode) = ... elseif mode=2: process_uplabel; elseif mode=3: process_downlabel; elseif mode=4: process_updownlabel; elseif mode=5: process_circledlabel; elseif mode=6: process_boxedlabel; elseif mode=7: process_label(pos,rot); % station name elseif mode=8: process_filledlabel(pos, rot); else: process_label(pos,rot); fi; /mpost/therion.mp line 440: def process_boxedlabel = q:=bbox lab; draw lab; draw q; write_bbox(q); enddef; /mpost/therion.mp line 484: def write_bbox (expr q) = I think we just need to figure out how to invoke the various modes, and we can make use of the predefined label ornaments. Unfortunately I don't have time to play with any of this just now, I'm sure one of you will figure it out. Bruce