Text Tool and Unicode

Next
 From:  Timspfd
2464.1 
Hello,
This may not have come up before, but it appears that the tool to create text only supports Unicode Basic Multilingual Plane (Plane 0) glyphs. When I try to use a glyph from one of the Unicode supplemental planes such as Plane 1 - Supplementary Multilingual, I can go to my font tool and copy the glyphs I want to use and paste them into the text tool box, but MoI isn't able to actually form the shapes. I am using an OpenType font in this instance but this occurs for both OpenType and TrueType fonts. The same fonts work fine for glyphs in Plane 0. I don't think there is a way to save this except to show you a screen cap. Granted not all that many people will be wanting to use Linear B or Cuneiform but there are some nifty glyphs out there that can be handy for historical or sci-fi use. Also effected is the supplementary CJK ideogram plane, one that I assume is used more often than Cuneiform.



Secondarily, for some reason the text tool isn't able to recognize things you type into it fresh, I have to close the tool and reopen it for the text to appear properly in the 3D views. It holds the last used text to reopen with, but I can't find a way to refresh the text being created while the tool is open. Am I missing something obvious? (Wouldn't be the first time ;-) )
Attachments:

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
2464.2 In reply to 2464.1 
Hi Tim, just to answer your second question first:

> Secondarily, for some reason the text tool isn't able to recognize
> things you type into it fresh, I have to close the tool and reopen
> it for the text to appear properly in the 3D views.

There is a bug where it can fail to recognize the very first keystroke that you type in, but it should then kick in and work properly on the second and subsequent keystrokes.

So for the moment, a workaround is to type in an extra character and then hit backspace, please let me know if that does not work for you.

I'll see if I can fix up the "first keystroke" bug - it is actually a bug in Windows that I have to work around, but I should be able to work around it.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
2464.3 In reply to 2464.1 
Hi Tim - re: Unicode - right now MoI is using the simplified UCS-2 encoding in this case where it strictly uses 2 bytes per character which doesn't allow for the surrogate pair mechanism needed to handle planes above 0.

Normally this isn't much of an issue since plane 0 covers all the stuff in use in current living languages... The main area where it doesn't work are for glyphs used in ancient languages like you're working with here.

I think I should be able to fix it up, but it would be helpful if I could have a sample to test with instead of trying to work on it blindly.

Do you know of a particular font that I could download and install and some character codes that I could use to test with over here that don't currently work so I can reproduce the problem over here and test the fix?

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Timspfd
2464.4 In reply to 2464.3 
Hi Michael,

I'm at work just now but will try that workaround when I get home. (yes, I know MoI can be carried on a key but my work computer is running windows 2000 and has a graphics card that isn't up to it :) )

For the fonts you could use any of the free fonts available at http://users.teilar.gr/~g1951d/
I've tried out characters from 3 or 4 of them when I was testing/playing about.
The one in my example is the Aegean font using a few characters from Linear B including unicode # u+10024 and u+10025
The Unicode Symbols font might be good for testing also since it includes a bunch of technical and mathematical symbols that someone might actually want to use some time.
This isn't any huge issue for me, just something I ran across when working on a sci-fi art project in Vue. Vue isn't able to handle any of these characters either. My new desktop is powerful enough I can work in both Vue and MoI at the same time, hopping into MoI whenever I want to create some unique object for a scene. It makes for a nice creative workflow.
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
2464.5 In reply to 2464.4 
Hi Tim, thanks for the link.

I've looked into this today and unfortunately it appears that there are limitations in Windows which prevent this from working.

MoI calls a Windows function called GetGlyphOutline to retrieve the geometry for a given character glyph.

Previously, MoI was not decoding "surrogate pairs" properly so it would see Unicode characters above U+FFFF as 2 garbage characters instead of as a single character value.

I have now fixed this part of MoI up for the next v2 beta so that it can correctly decode character values above U+FFFF now in the Text command. However, when MoI calls the Windows function GetGlyphOutline with a character greater than FFFF, the Windows function ignores the high bits, it only seems to use the low 16 bits.

So for example when MoI requests the geometry for character U+10024 , instead Windows decides to give the geometry for character U+0024 instead.

I've got it all set up now so it passes the correct value to Windows so hopefully in the future if Microsoft can correct this problem it will then start to work. But until then there doesn't seem to be anything that I can do about it, short of developing a completely custom font parser that hits the font data directly rather than using the Windows API call. Unfortunately it would take a significant amount of work to accomplish that. There are actually some libraries out there that could help with this part but even incorporating a library can still take a fair amount of time.

If you have any other programs out there that are able to extract geometry from Unicode characters above U+FFFF, please let me know and maybe I can see what they are doing to accomplish that. But my guess is that other programs will likely have the same issue as MoI.

Other parts of Windows are able to understand the special characters such as the font rasterizer, but it seems that this specific GetGlyphOutline function with the GGO_NATIVE flag unfortunately was not updated along with the rest of Windows when Unicode was expanded to have these special new characters. The original Unicode 1.0 specification did not include these characters and only had characters with values up to U+FFFF.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Timspfd
2464.6 In reply to 2464.5 
Thanks a lot for looking into it Michael. I wouldn't even have attempted a ticket on this with Vue or most other programs. MoI is just so good it gets held to a higher standard. ;)
I appreciate your taking the time on this. It certainly isn't important enough to take the time for coding a special parser or anything. (The layers and colors crowd would have my scalp :D )
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  eric (ERICCLOUGH)
2464.7 In reply to 2464.6 
You bet ! :)
eric
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Frenchy Pilou (PILOU)
2464.8 
You have a very simple thing to make :)
Just type your text with any True Type Police in the Window caracters' table and copy paste Inside Moi Text !!!
so try with the "Analectica" from the site above
That works like a charm :)
Have fun hieroglyphics :D
Edit : Alas seems not work for extra Unicode like U + 2CB7 :(

EDITED: 5 Mar 2009 by PILOU

Attachments:

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Frenchy Pilou (PILOU)
2464.9 
Ok more subtile !
Type your Unicode at the end of the follow line here 2CB7
http://unicode.org/cldr/utility/character.jsp?a=2CB7
goto the page result copy / past the character inside Moi et voilĂ  :)
for another just modify the end address in your navigator :)
Only default it's letter by letter for extra Unicode! :)


EDITED: 5 Mar 2009 by PILOU

Attachments:

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
2464.10 In reply to 2464.9 
Hi Pilou, that should work fine for all Unicode characters in the range of U+0000 to U+FFFF, which includes characters for all current languages in use around the globe, and also quite a lot of symbols are in there too - this is for the Unicode 1.0 standard.

However, in later versions of the Unicode standard they ran out of space in that range and have produced new characters for some specialized purposes like support for archaic languages, etc...

It is these new characters that will not work, due to a limitation in Windows which I described above. But they tend to be not used very often, since for example people don't write very often in Cuneiform these days...

Windows does support these extended characters in other parts like for drawing the text on the screen with the Windows drawing methods. Unfortunately it does not support it in the particular function that MoI needs to use which involves extracting the bezier path information of the characters.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
 From:  Frenchy Pilou (PILOU)
2464.11 In reply to 2464.10 
You right!
We can see the result for the Cuneiform Font Cuneiform Akkadian, Unicode 12219
http://unicode.org/cldr/utility/character.jsp?a=12219
but the copy past don't work! :(

Attachments:

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged
 

Reply to All Reply to All