View Issue Details

IDProjectCategoryView StatusLast Update
0001412NoesisGUIUnity3Dpublic2019-02-25 21:44
ReporternokolaAssigned Tojsantos 
PrioritynormalSeveritymajorReproducibilityalways
Status assignedResolutionopen 
Product Version2.2.0b6 
Target VersionFixed in Version 
Summary0001412: Noesis fails to render Bengali/Sinhala/other fonts with ligatures and unicode characters
DescriptionSee summary :)
Steps To Reproduce1. Display any ligature/non-English compound character font.
Example:
<TextBlock Text="প্লাবনের পরে সমস্ত পৃথিবী" FontFamily="Fonts/#Nirmala UI" FontSize="48"/>
(attached Nirmala.zip font used above)
OR
<TextBlock Text="প্লাবনের পরে সমস্ত পৃথিবী" FontSize="48"/> (just use default font)


Expected: displays correctly (same as Word or Google Translate:
https://translate.google.com/#view=home&op=translate&sl=auto&tl=en&text=%E0%A6%AA%E0%A7%8D%E0%A6%B2%E0%A6%BE%E0%A6%AC%E0%A6%A8%E0%A7%87%E0%A6%B0%20%E0%A6%AA%E0%A6%B0%E0%A7%87%20%E0%A6%B8%E0%A6%AE%E0%A6%B8%E0%A7%8D%E0%A6%A4%20%E0%A6%AA%E0%A7%83%E0%A6%A5%E0%A6%BF%E0%A6%AC%E0%A7%80

Actual:
Both default and Nirmala fonts are wrong. Displayed correctly in Word and online for comparison

Note: this has been issue in Noesis 2.1. I opened it now because we got reports from 2 different users last week, and I was waiting to try and test Noesis 2.2 beta.
TagsNo tags attached.
PlatformAny

Activities

nokola

nokola

2019-02-24 01:01

reporter  

Nirmala.zip (2,135,613 bytes)
ExampleFontIssue.jpg (91,614 bytes)
ExampleFontIssue.jpg (91,614 bytes)
jsantos

jsantos

2019-02-24 04:16

manager   ~0005454

Yes, ligatures aren't implemented yet. Thanks for the ticket.
nokola

nokola

2019-02-24 06:37

reporter   ~0005456

Thank for the info! Is it possible for me to implement them somehow? (maybe expose some access to the text renderer/options?)
I'm not sure what's involved in implementing them, however it will significantly hinder a group of customers from using the app our team is making. I'm willing to do some work to get them done faster, if needed.
nokola

nokola

2019-02-24 19:36

reporter   ~0005458

Also confirmed issue with Arabic, Hindi, Tamil, Telugu. Btw, our app's biggest user base currently is India (if it helps with prioritization.)
Not sure how many Noesis users are affected overall across all Noesis apps.
just checking - are you using Skia for font rendering? I'm looking into Skia + HarfBuzz combination to render everything (same libraries used in Chrome)
jsantos

jsantos

2019-02-24 21:02

manager   ~0005459

Ligatures are not implemented. It's been requested many times. Unfortunately this feature won't go in 2.2 (we need to release this version before GDC). We use our own internal renderer (+ a few parts of FreeType), so probably the way we will go is using HarfBuzz.

For now the only workaround is preprocessing the text yourself and change the unicode points accordingly. How urgent is this for you?
nokola

nokola

2019-02-24 21:08

reporter   ~0005461

Thanks for the info! I would like to have it in our app's next release (~1 week.) Deciding whether to release now and do this later. Generally it's the next top 2 issue on our task list (after startup performance, which is ongoing investigation.)
Do you know if HarfBuzz can pre-process text and generate new codepoints? Or is it another solution? If you don't know yet no problem! I am researching on my own too. Haven't worked with HarfBuzz until last week when we got the issue reports.
jsantos

jsantos

2019-02-24 21:18

manager   ~0005464

Yes, HarfBuzz can do that.
nokola

nokola

2019-02-24 21:27

reporter   ~0005465

Just discussed with my coworker.

We have two font rendering tasks:
1. UI, currently Noesis
I'll look into HarfBuzz for that part.
2. Render to texture, currently uses TextMesh with Unity's native OS font rendering. We were hoping to use Noesis since 2.2 mentioned support for OS fonts
For #2 we just decided to try OS font rendering instead of TextMesh (Android only, since 90% of our users are on Android in India), because we haven't tested Noesis 2.2's font support for OS fonts yet. Example: does Noesis load the full OS font? or just characters needed? When is memory freed, etc. I'll ask on the forums.
We'll render to texture from a native plugin, then draw in Unity with mesh.

Thanks again for the info!
nokola

nokola

2019-02-24 21:34

reporter   ~0005466

Just realized HarfBuzz may substitute characters, but will also reposition glyphs -> not sure how this will work with the current Noesis. Thus will wait for Noesis to support ligatures for #1 above (the UI) and will use OS-side font rendering for #2.

Either way I don't want to take too much time from your GDC work, no problem to pick up the discussion later.
jsantos

jsantos

2019-02-25 21:44

manager   ~0005471

Thanks!

Yes, please ask about those font doubts you have on the forums.

Issue History

Date Modified Username Field Change
2019-02-24 01:01 nokola New Issue
2019-02-24 01:01 nokola File Added: Nirmala.zip
2019-02-24 01:01 nokola File Added: ExampleFontIssue.jpg
2019-02-24 04:16 jsantos Assigned To => jsantos
2019-02-24 04:16 jsantos Status new => assigned
2019-02-24 04:16 jsantos Note Added: 0005454
2019-02-24 06:37 nokola Note Added: 0005456
2019-02-24 19:36 nokola Note Added: 0005458
2019-02-24 21:02 jsantos Note Added: 0005459
2019-02-24 21:02 jsantos Status assigned => feedback
2019-02-24 21:08 nokola Note Added: 0005461
2019-02-24 21:08 nokola Status feedback => assigned
2019-02-24 21:18 jsantos Note Added: 0005464
2019-02-24 21:27 nokola Note Added: 0005465
2019-02-24 21:34 nokola Note Added: 0005466
2019-02-25 21:44 jsantos Note Added: 0005471