Roku Developer Program

Join our online forum to talk to Roku developers and fellow channel creators. Ask questions, share tips with the community, and find helpful resources.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
gman4455
Visitor

Font size always the same no matter what number I put.

I'm drawing text to a roImageCanvas to use as a loading page for a video player. Here is all of the code used to draw on the canvas below:


Sub videoPaintCanvas()
m.Canvas.AllowUpdates(false)
list = []

if m.progress < 100 then
color = "#000000"
titleFont = m.fonts.GetDefaultFont(75, false, false)
padding = 5
rect = {
w: titleFont.GetOneLineWidth(m.content.Title, m.layout.w) + padding * 2
h: titleFont.GetOneLineHeight() + padding * 2
x: 0
y: 0
}
rect.x = Int(m.layout.w / 2) - Int(rect.w / 2)
rect.y = Int(m.layout.h / 2) - rect.h
list.Push({
Text: m.content.Title
TextAttrs: { Font: titleFont }
TargetRect: rect
})
else if m.paused AND NOT m.seeking then
color = "#90000000"
list.Push({
url: "pkg:/images/pause.png"
TargetRect: {
x: Int(m.layout.w / 2) - 64
y: Int(m.layout.h / 2) - 64
w: 128
h: 128
}
CompositionMode: "Source_Over"
})
else if m.seeking AND m.seekSpeed > 0 then
color = "#90000000"
list.Push({
url: "pkg:/images/fast-forward.png"
TargetRect: {
x: Int(m.layout.w / 2) - 64
y: Int(m.layout.h / 2) - 64
w: 128
h: 128
}
CompositionMode: "Source_Over"
})
else if m.seeking AND m.seekSpeed < 0 then
color = "#90000000"
list.Push({
url: "pkg:/images/rewind.png"
TargetRect: {
x: Int(m.layout.w / 2) - 64
y: Int(m.layout.h / 2) - 64
w: 128
h: 128
}
CompositionMode: "Source_Over"
})
else
color = "#00000000"
end if

m.canvas.SetLayer(0, { Color: color, CompositionMode: "Source" })
m.canvas.SetLayer(1, list)
if m.progress < 100 then
m.loadingBar.UpdateProgress(m.progress, 100)
else if m.progress = 100 then
m.canvas.ClearLayer(m.loadingBar.layer1)
m.canvas.ClearLayer(m.loadingBar.layer2)
end if
m.canvas.AllowUpdates(true)
End Sub

m.fonts is a roFontRegistry object
m.canvas is the roImageCanvas used
m.progress is used to show a loading bar for buffering. (always between 1 and 100)

The specific part of this function I'm looking at right now is inside the if statement

if m.progress < 100 then
...
else if ...

No matter what size I specify in the m.fonts.GetDefaultFont(75, false, false), when I run the app, the font is the same size every time. I'm certain it is somehow defaulting to the "Medium" font size.

Any help is greatly appreciated.
0 Kudos
8 REPLIES 8
RokuMarkn
Visitor

Re: Font size always the same no matter what number I put.

For roImageCanvas, you should use roFontRegistry.Get(), not roFontRegistry.GetFont().

--Mark
0 Kudos
gman4455
Visitor

Re: Font size always the same no matter what number I put.

"RokuMarkn" wrote:
For roImageCanvas, you should use roFontRegistry.Get(), not roFontRegistry.GetFont().

--Mark


Okay, so that means I have to give it a font family parameter. What is the font-family for the system font? It doesn't show up on the roFontRegistry.GetFamilies() list.
0 Kudos
gman4455
Visitor

Re: Font size always the same no matter what number I put.

Ah I've got it. It's "Gotham". Thank you for your help.
0 Kudos
renojim
Community Streaming Expert

Re: Font size always the same no matter what number I put.

^ That's new! When was that implemented and is it documented?

-JT
Roku Community Streaming Expert

Help others find this answer and click "Accept as Solution."
If you appreciate my answer, maybe give me a Kudo.

I am not a Roku employee.
0 Kudos
gman4455
Visitor

Re: Font size always the same no matter what number I put.

If you look at the Design Guidelines on the Roku SDK Documentation (http://sdkdocs.roku.com/display/sdkdoc/Design+Guidelines), and go to Typography section (1.3.5), it says "A set of Roku system fonts (a collection of Gotham fonts) is provided through the SDK."
0 Kudos
renojim
Community Streaming Expert

Re: Font size always the same no matter what number I put.

That the system font is Gotham has been known, but the fact that you can pass "Gotham" as the font name to roFontRegistry.Get() I don't believe has ever been documented.

-JT
Roku Community Streaming Expert

Help others find this answer and click "Accept as Solution."
If you appreciate my answer, maybe give me a Kudo.

I am not a Roku employee.
0 Kudos
gman4455
Visitor

Re: Font size always the same no matter what number I put.

"renojim" wrote:
That the system font is Gotham has been known, but the fact that you can pass "Gotham" as the font name to roFontRegistry.Get() I don't believe has ever been documented.

-JT


You actually cannot pass "Gotham" as the font-family. I've tried different variations, and finally found that "Gotham Medium" works for the font-family parameter. I suppose different weights of Gotham are available in the system's fonts, but just "Gotham" does not work.
0 Kudos
renojim
Community Streaming Expert

Re: Font size always the same no matter what number I put.

That's interesting. Just "Gotham" worked for me, but I think I tried it on a v3.1 firmware device. Now that I look at it, it may be no different than using GetDefaultFont(). I think my excitement comes from my memory of having to package a font with my channel because at that time there was no way to use the internal fonts, or no way to get the font metrics of the internal fonts, or something like that. Things have changed since then.

-JT
Roku Community Streaming Expert

Help others find this answer and click "Accept as Solution."
If you appreciate my answer, maybe give me a Kudo.

I am not a Roku employee.
0 Kudos
Need Assistance?
Welcome to the Roku Community! Feel free to search our Community for answers or post your question to get help.

Become a Roku Streaming Expert!

Share your expertise, help fellow streamers, and unlock exclusive rewards as part of the Roku Community. Learn more.