Paul - I tried my simple example on 8.5 b 4571 (one step newer than yours) and it seems to be working. There is an alternate method that uses scripting, but the same principle. It's what I used to do before Visual Logic became available.
As you can see below, it's doing the same basic thing - getting the font(s) and assigning them as needed. You start with a clean "result" and append the pieces you need. You add the "CurrentFont" line each time you need to change the font style and "AppendToLine" each piece of your text.
'======= sample script ======='
dim awayName, awayRank, awayResult, homeName, homeRank, homeResult as xpTextObject
dim rankFont, nameFont as xpFont
engine.GetFontByName("mb-ranks", rankFont)
engine.GetFontByName("mb-teams", nameFont)
self.GetObjectByName("Away Team Rank", awayRank)
self.GetObjectByName("Away Team Name", awayName)
self.GetObjectByName("Away Team Result", awayResult)
self.GetObjectByName("Home Team Rank", homeRank)
self.GetObjectByName("Home Team Name", homeName)
self.GetObjectByName("Home Team Result", homeResult)
awayResult.Text = ""
awayResult.CurrentFont = rankFont
awayResult.AppendToLine(0, awayRank.text & " ")
awayResult.CurrentFont = nameFont
awayResult.AppendToLine(0, awayName.text)
homeResult.Text = ""
homeResult.CurrentFont = rankFont
homeResult.AppendToLine(0, homeRank.text & " ")
homeResult.CurrentFont = nameFont
homeResult.AppendToLine(0, homeName.text)
#XPression