Looking at this issue (the problem if the object isn't open), it might be better to refactor the act of measuring text relative to an object into MCObject. i.e. add a 'measuretext' function to MCObject:
```
MCRectangle MCObject::measuretext(const MCString& p_text, bool p_is_unicode)
{
    bool t_mapped_font;
    t_mapped_font = false;
    if (!opened && m_font == nil)
    {
       mapfont();
       t_mapped_font = true;
    }

   MCRectangle t_bounds;
   t_bounds . x = 0;
   t_bounds . width = MCFontMeasureText(m_font, p_text . getstring(), p_text . getlength(), p_is_unicode);
   t_bounds . y = -MCFontGetAscent(t_font);
   t_bounds . height = MCFontGetDescent(t_font) + MCFontGetAscent(t_font);

   if (t_mapped_font)
     unmapfont();

   return t_bounds;
}
```
This encapsulates ensuring the object has a fontref inside the object and would be useful in a couple of places elsewhere which have a need to get metrics of the text in an object when the object isn't necessarily open.