New keyboard

Using Keyman Developer, I want to create a new keyboard from an ancient script that has no Unicode codes. I can only copy and paste the characters from copies of the script that I have saved in .pdf form. Unfortunately, I am not very computer-savvy so please try to keep your answer as simple as possible. Thanks!

You must have a font with the characters you want in the font. There is no way for Keyman to insert graphics of the characters. If you do have a font that encodes the characters at Private Use
Area (PUA) codepoints we can show you how to create a keyboard using the PUA.

How can I make a font " that encodes the characters at Private Use

Area (PUA) codepoints"? I don’t even know what that means.

There are various applications that you can create fonts. However, it’s not something most people will want to tackle. The free app that some people use is FontForge. There are other apps that cost, but I suspect that’s not something you are wanting to do. If I were you I’d try to find someone to create a font for you or find an existing font. Even if the script isn’t in Unicode it’s quite possible a font exists. This is kind of out of scope of keyboarding though. Once you have a font, you can create a keyboard.

Lorna’s answer is correct. Before you can create a key mapping, you have to have a font that the key mapping can address. Now, have you actually checked the current Unicode specification to be absolutely sure that no Unicode code positions have to date been assigned to the characters you want to be able to type? The Unicode Consortium has been assiduous in encoding all kinds of fonts, modern and ancient, for characters that have a proven use. What is the language of your “ancient script,” if I may ask?

If, however, you have satisfied yourself that a new font is needed, either for a currently or historically used set of glyphs, I would next make a posting at the Unicode discussion list, carefully providing information on the characters to be encoded, what language they are to be used for, and detailing any publications or manuscripts that can be shown to actually use these particiular characters. This will establish the need for Unicode to include these characters in a future iteration. If and when the Unicode Consortium accepts your proposal and decides to encode the characters, they will choose some available code positions and assign these to your script.

In the meantime, to get started using the characters before Unicode officially includes them, you can have someone with type design experience create a font from your PDF version. This person needs to have some artistic sense and type design experience. Because the characters are not yet official, they need to be temporarily assigned to the Private Use Artea until they are eventually accepted and incorporated into Unicode.

Once your characters become part of the newest Unicode Standard, it is pointless to continue retaining them at their former Private Use Area positions. At that point, you should take any documents you created whilst using the PUA characters and run a conversion utility to remap all the PUA characters to their official Unjicode code points. At that point, your font will also need to be converted, with the new Unicode codepoints assigned to the existing characters.

You can subscribe to the Unicode Digest, a once-a-week mailing list, at unicode (dot) org .

Thanks for your input.

Upon further searching, I found that someone did in fact make a font of the script that I am working with, although he did not do such a good job, as the way the glyphs are assigned to keys is confusing, and, upon installing the font, it does not type out in the correct right to left order. The script is Paleo-Hebrew. The closest to it in Unicode is Phoenician, which, although similar, is very different to the trained eye. I have had a personalized Keyman Desktop for several languages for years and want to add a good Paleo-Hebrew keyboard to it.

What is the " Private Use Area" you refer to, and how can I use it in the meantime that there is no Unicode to use?

Paleo Hebrew is unified with Phoenician in Unicode.

What you will need is a font supporting the Phoenician block that has the appropriate glyphs for Paleo Hebrew

If Paleo Hebrew is unified with Phoenician in Unicode, how can I use the Paleo-Hebrew font that I do have to create an improved Keyman keyboard or to enable the font to support the Phoenician block?

One core issue is license font was released under. A font should only be modified and adapted if it’s license allows such modifications or if you have permission from the font’s copyright holder.

I had a quick search for Paleo Hebrew fonts. There seems to be two types:

  1. “hacked fonts” that overlay Paleo Hebrew characters overlayed onto Hebrew block. A very bad approach (both Unicode and codepage versions exist).

  2. updated “hacked” fonts that have the Paleo Hebrew glyphs in both Hebrew and Phonicean Unicode blocks. Also less that ideal.

The keyboard is the easier part. A modified Hebrew layout or a phonetic layout generating characters in the phonecian block

I would just use a type two font. If it’s license permits modifications I would strip out the Hebrew block just leaving support for phonecian block.

Font forge would be a suitable font editor.

Hi Andrew,

  I'm not a font or glyph expert; as a "language technology consultant" I tend to be an interface between the tech experts and the ordinary users. From this perspective I'm wondering if two or three separate aspects of producing "special characters" are getting conflated somewhat.

  1. The font must have "glyphs" that display Paleo-Hebrew characters. These shapes must be placed in the correct locations in the font character's grid--the Unicode codepoints for Phoenician in this case, it sounds like.

  2. The right-to-left mechanics of the font are, I think (but there could be more to it), determined by the editing software you're using as well as the Unicode language section of codepoints being used. Maybe the font you have does not automatically type Right-to-Left because it is not Unicode; I think you can tell your software to do this manually, but a Unicode solution is preferable. Your question about adding the Paleo-Hebrew glyphs to a Unicode keyboard has been answered as well as it can be by the font experts.

  3. The role of Keyman is to assign font codepoints (with the glyphs provided by the font) to keystrokes. You commented about the font you found, "the way the glyphs are assigned to keys is confusing." This **keystroke** **assignment** is done by Keyman, not inside the font itself. If you have a .kmn file, the basic uncompiled plain text file (Unicode) that Keyman uses to assign keystrokes, you can easily change the keystrokes required to type each character that you need. So you can use the same Keyman file with various fonts as long as those fonts all have glyphs assigned to the same codepoints. You can create a new Keyman control file and have it compiled using Keyman Developer, available at Keyman's website.

I hope this explanation of Keyman’s role helps.


  Language Tech. Consultant


Thanks for your input, Andrew.

The creator of the font I’ve been working with made it clear that the font is free and not copyrighted, so there is no problem with that.

I don’t understand the rest of what you wrote. I have no idea if the font is hacked or not. By the way, most of the fonts advertised on the web as “Paleo-Hebrew” are in fact Phoenician or Canaanite, which, although similar, are very different to the trained eye. I am using the Lachish script. You don’t have to be a professional archeologist to see how different it is from those others.

I don’t understand what you write about “blocks”, and I don’t need to make a new font, since I already have one; I just want to reassign the glyphs to different keys using Keyman Developer.

Thanks for your input, Kim.

1- The font that I am using DOES have glyphs that display Paleo-Hebrew characters. I don’t understand what you mean by locations in the font’s grid or Unicode codepoints. I already have a font that I am working with; I just want to reassign the glyphs to different keys.

2- I don’t understand any of your comments in this #2. I’m just not savvy in the art of fontmaking,

3- Ditto.

Hi Kim

  1. yes the glyphs (although easier to talk about letters or characters for non-devs) will need to be assigned codepounts in the Phoenician range.

  2. Unicode codepoints have properties. One of these properties is directionality, ie strongly LTR, strongly RTL, neutral , etc.

In theory an application should know the directionality of the character and the font rendering system should do the right thing with it. This is normal behaviour. But for some scripts in some applications this will fail. Ie if the script is unsupported on windows then directonality may fail. For IE11 and Edge I had to write a js module to correct directionality for certain African scripts that should be RTL.

I will not bother with the messy details of bidirectional support.

But in certain instances if is useful for font to be aware of directionality. But this isn’t likely the case with Paleo Hebrew.

  1. For Keyman on Windows, Mac OS and Linux. Directionality isn’t an issue. But for keymanWeb and by extension Android and iOS the RTL flag should be set. In this instance the Keyman layout would have rules allowing different keys to generate specific characters in the Phoenician block

The Bottom Line:
After all said and written, can anyone advise me in simple language as how to reassign the keys for the Paleo-Hebrew font that I am using?

@halaywi, I think that any simple answer that could be given is likely to lead to significant data problems in the future.

However, this is the simple answer: if you want to use Keyman Developer to create a layout using an existing Paleo-Hebrew font, you can right-click on the Character Map in Keyman Developer to select that font and then drag and drop from the Character Map onto your keyboard layout. I’m not sure how much further we can help in an online forum – it sounds like there is a wide technical gap and you may have a better outcome if you employ someone to cover off any technical issues.