Making an IME writing system

Hello, I am a complete newbie to all things coding. I know some very basic HTML and that’s about it. I don’t even know where to start looking online, so I thought I’d come here.

Despite not having much of an interest in tech, I have an interest in language and have created one with its own writing system. I know that there are simple ways to create fonts for free out there, but this writing system involves a lot of graphemes that change based on their surrounding letters. Plus, digraphs are often presented as their own graphemes.

I have been pondering for many years about a way to type the words with the English alphabet, but have them appear on screen as the writing system I’ve invented. Similar to how you can write in Japanese or Chinese with an English keyboard through something I think is called IME?

Again I have never coded anything in my life except for extremely basic HTML work on webpages when I was a teenager over a decade ago. This is something I’ve wanted to do for a long time but have never had the knowledge, and I’m sure there IS a way to do it. If anyone can point me in the right direction towards figuring out how and through what means, I would appreciate it.

It’s not an easy thing to program for someone who has never programmed before. First of all, of course you would need to create all the fonts for the language. Second, you have to learn a good amount of programming.

It’s probably a bigger project in itself than you think and you have to learn quite a lot of new things on top of that. You could start by reading about the Event-Bus design pattern that most, if not all, IMEs are based upon, then choose a language to learn (it should probably be a low-level language, since it has to be running most of the time the computer is turned on and be quite optimized to not eat too much ram). I would recommend the language Rust, since it promises memory safety and has a friendly compiler that guides you in the right direction when doing something wrong or non-idiomatic.

Well… I don’t hope this answer is too confusing, but feel free to @ me and ask again if I didn’t explain everything too well. Good luck!