
TheEndless
Channel Surfer
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-08-2015
08:58 PM
Re: Russian (Cyrillic) letters
"EnTerr" wrote:
Which pretty much is "include Cyrillic code points in the system font", easy-peasy.
May be a bit more involved than that. If the font(s) they currently license don't support Cyrillic characters, then it could potentially cause a real pain UI-wise. I'm pretty sure the 2D APIs support Cyrillic characters already, but the built-in font for the 2D APIs is different than the one used for the SDK screens.
My Channels: http://roku.permanence.com - Twitter: @TheEndlessDev
Instant Watch Browser (NetflixIWB), Aquarium Screensaver (AQUARIUM), Clever Clocks Screensaver (CLEVERCLOCKS), iTunes Podcasts (ITPC), My Channels (MYCHANNELS)
Instant Watch Browser (NetflixIWB), Aquarium Screensaver (AQUARIUM), Clever Clocks Screensaver (CLEVERCLOCKS), iTunes Podcasts (ITPC), My Channels (MYCHANNELS)

YoJae
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-18-2015
05:45 PM
Re: Russian (Cyrillic) letters
Hi guys,
Could someone give me an example how to use Cyrillic (or different language) on roImageCanvas?
Here is what I have tried and it didn't work:
The text prints on the console as various symbols
I have also tried Webdings font (which is all icons) and it displays as squares.
Any ideas why its not working?
Thanks,
Gary
Could someone give me an example how to use Cyrillic (or different language) on roImageCanvas?
Here is what I have tried and it didn't work:
textUtl=createObject("roUrlTransfer")
textUtl.SetUrl("http:// -this brings me an xml with body containing cyrillic- ")
textUtl.GetToFile("tmp:/text.xml")
xml= CreateObject("roXMLElement")
xml.Parse(ReadAsciiFile("tmp:/text.xml"))
text=xml.GetNamedElements("body").getText()
fontReg = CreateObject("roFontRegistry")
fontReg.Register("pkg:/fonts/OpenSans.ttf")
font = fontReg.Get("OpenSans",20,40,false)
Textbox = {TargetRect:{x:int((width/2)-(boxW/2)),y:130,w:boxW,h:boxH}, text:text, TextAttrs:{Font:font, HAlign:"Justify", VAlign:"Top" }}
canvas.SetLayer(2, textBox)
The text prints on the console as various symbols
BrightScript Debugger> ? xml.GetNamedElements("body").getText()
’ ¶ µ ´ ° ² ½ ¾ ² – ´ ¾ ¼ ¾, ‰ ¾ ‡ ¸ ‚ ° ± µ » Œ ½ � ² ¸ º ¾ € ¸ � ‚ ° ½ ½ � Lorem Ipsum ¿ ¾ » � ³ ° ” µ º � ‚." ¦ µ € ¾ ± ¸ ‚
I have also tried Webdings font (which is all icons) and it displays as squares.
Any ideas why its not working?
Thanks,
Gary
belltown
Roku Guru
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-18-2015
11:03 PM
Re: Russian (Cyrillic) letters
I was never able to get Cyrillic fonts working with roImageCanvas. However, roScreen does seem to handle them.
Make sure that the font you use includes the Cyrillic character set.
Note that the console does not support custom fonts, so you cannot use Print statements to check whether your Cyrillic characters will be rendered correctly. You'll have to display them using a BrightScript component, e.g. roScreen.
Also, make sure you check ifXmlElement.Parse () returns True.
For example:
Make sure that the font you use includes the Cyrillic character set.
Note that the console does not support custom fonts, so you cannot use Print statements to check whether your Cyrillic characters will be rendered correctly. You'll have to display them using a BrightScript component, e.g. roScreen.
Also, make sure you check ifXmlElement.Parse () returns True.
For example:
<?xml version="1.0" encoding="utf-8"?>
<корень>
<элемент>Привет мир!</элемент>
</корень>
Sub Main ()
ui = CreateObject ("roScreen")
ui.SetPort (CreateObject ("roMessagePort"))
xml = CreateObject ("roXmlElement")
If Not xml.Parse (ReadAsciiFile ("pkg:/xml/test.xml")) Then Print "Parse Fail" : Return
hello = xml.GetNamedElements ("элемент")[0].GetText ()
fr = CreateObject ("roFontRegistry")
fr.Register ("pkg:/fonts/OpenSans-Regular.ttf")
font = fr.GetFont ("Open Sans", 72, False, False)
fw = font.GetOneLineWidth (hello, ui.GetWidth ())
fh = font.GetOneLineHeight ()
x% = (ui.GetWidth () - fw) / 2
y% = (ui.GetHeight () - fh) / 2
ui.DrawText (hello, x%, y%, &hebebebff, font)
ui.Finish ()
Wait (0, ui.GetMessagePort ())
End Sub

YoJae
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-19-2015
06:35 PM
Re: Russian (Cyrillic) letters
Gentlemen,
I figured this out. My mistake was in font usage.
1. The thing that is not in SDK, use font = fontReg.Get("Open Sans",20,40,false) instead of fontReg.GetFont() on roImageCanvas. On roScreen, use fontReg.GetFont()
2. Check font family names using ? fontReg.GetFamilies() to get the right thing.
3. You can get the UTF-8 string with simple text = urlTransfer.GetToString() - so for it can be stored and passed around as a String (to check, if the string contains unreadable glyphs on the console - should work)
Many thanks to belltown for the idea.
-Gary
I figured this out. My mistake was in font usage.
1. The thing that is not in SDK, use font = fontReg.Get("Open Sans",20,40,false) instead of fontReg.GetFont() on roImageCanvas. On roScreen, use fontReg.GetFont()
2. Check font family names using ? fontReg.GetFamilies() to get the right thing.
3. You can get the UTF-8 string with simple text = urlTransfer.GetToString() - so for it can be stored and passed around as a String (to check, if the string contains unreadable glyphs on the console - should work)
Many thanks to belltown for the idea.
-Gary
- « Previous
- Next »