OpenNBS / OpenNoteBlockStudio

An open-source Minecraft music maker.
https://noteblock.studio
MIT License
746 stars 51 forks source link

Feature Request: Unicode Character Support #52

Open KabanFriends opened 5 years ago

KabanFriends commented 5 years ago

I'm not sure GMS/GMS2 supports unicode character but it's nicer to have unicode chars in NBS song name/interface (especially the file names because some languages like Chinese, Japanese or other have a lot of unicode characters which can't be displayed in Note Block Studio)

also it should support unicode characters/default windows right click popup in song name/description field and other input box.

I'm sure GameMaker 8.0 doesn't support unicode characters but I don't know about unicode characters in new GameMaker Studio and Studio 2. So please make this if possible

ShinkoNet commented 5 years ago

The way Note Block Studio handles text is custom coded (see https://github.com/HielkeMinecraft/OpenNoteBlockStudio/blob/master/scripts/draw_text_edit/draw_text_edit.gml) . Game Maker 8 didn't have proper text editing functions, so if I were to add unicode support, I would need to reimplement all of the text tools (which it does need, when the program is lagging, text inputs are hard to register) or modify the existing code to support unicode somehow.

HielkeMinecraft commented 5 years ago

It's not about GameMaker Studio, it's about the font that's being used.

The fonts used in ONBS are Open Sans, Tahoma and Arial. They all do not support Chinese or Japanese characters. So the only solution is to change fonts.

I recently switched to those fonts to allow Cyrillic characters, and updating ONBS afterwards was hell. Because the fonts were a bit more spaced apart, nothing seemed to fit anymore.

I like the fonts we have right now, so I see no direct reason to change.

Marcono1234 commented 4 years ago

Note that this is not only about fonts. Currently only characters whose code point is <= 255 can be saved due to: https://github.com/HielkeMinecraft/OpenNoteBlockStudio/blob/4625011fb889c9d5e1386fadec931a8d6ee57353/scripts/buffer_write_string_int/buffer_write_string_int.gml#L10

This can be seen when using for example Ő (U+0150), which becomes P (U+0050) when being saved.