Forum Discussion

OG_OTT's avatar
OG_OTT
Visitor
8 years ago

roFontRegistry

Does `roFontRegistry` work with RSG?  Do I have a typo or is there a better way than below?  


     font_registry = CreateObject("roFontRegistry")
     font = font_registry.GetDefaultFont()
     fontRegistry = CreateObject("roFontRegistry")
     townFont = fontRegistry.GetDefaultFont()
     townFont.size = 80
     lineHeight = townFont.GetOneLineHeight()

///

Current Function:
005:  sub InitWidget()
006:      font_registry = CreateObject("roFontRegistry")
007:*     font = font_registry.GetDefaultFont()
008:      fontRegistry = CreateObject("roFontRegistry") 
009:      townFont = fontRegistry.GetDefaultFont()
010:      townFont.size = 80
011:      _lineHeight = townFont.GetOneLineHeight()
'Dot' Operator attempted with invalid BrightScript Component or interface reference. (runtime error &hec) in pkg:/components/widgets/LocationWidget.brs(7)
007:     font = font_registry.GetDefaultFont()

2 Replies

  • RokuKC's avatar
    RokuKC
    Roku Employee
    "OG_OTT" wrote:
    Does `roFontRegistry` work with RSG?  Do I have a typo or is there a better way than below?  


    It seems that you can only use roFontRegistry from the Main function or in a RSG Task node.

    I don't know for myself whether you can get metrics from that that will work perfectly for RSG.

    RSG has:
    https://sdkdocs.roku.com/display/sdkdoc/Font

    I'm not making any recommendation, but I have the impression that some people have used Label nodes along with https://sdkdocs.roku.com/display/sdkdoc ... undingRect to figure out other layout metrics.
  • Thank you.  The `BoundingRect()` idea did work for my purposes!

    To future reviews of this thread, the below snippet shows setting of my primary label and I get `BoundingRect` so I can get the height to place an element just beneath it - this worked for me:  

    sub init()
         InitWidget()
    end sub
         
    sub InitWidget()
         townLabel = m.top.findNode("TownName")
         townLabel.font.size = 80
         townLabelRect = townLabel.BoundingRect()
         
         stateLabel = m.top.findNode("StateName")
         stateLabel.font.size = 40
         stateLabel.translation = [0, townLabelRect.height+5]
    end sub