Can't get composite glyphs to work...

Get help with FontCreator here. Please do not post feature requests or bug reports here.
Post Reply
OregonPete
Posts: 12
Joined: Mon Jul 26, 2004 8:31 am

Can't get composite glyphs to work...

Post by OregonPete »

Hi guys! :D

I downloaded Font Creator 4.1 a few days ago and think you're doing a terrific job. It was the only font creation software I could find on the net that was inexpensive enough for normal people like me to purchase ;-).

Let me explain what I'm doing and then explain my problem:

I'm a writer (that is, next to my daytime job *g*) and my first novel, The Traveler, Book One, will be out some time next spring (yes, alright, I know this is cheap advertising. Sorry guys! ;-) ). The Traveler is a fantasy / science-fiction series which is set partly on Earth and partly on a planet called Piral. For this series I have created a completely new language, called Selanian, and I am now attempting to create a font to go with the language.

The font runs from right to left, like Arabic and Hebrew. That in itself isn't a problem, since I have the language support on my system (Windows XP) and my Word version can handle that. What is a problem, though, is that all vowels are formed by diacritical markings over the consonants.

So what I want to happen, is if I press a 'b' and then an 'a', I want the system to wait with the 'b' and then print the composite glyph 'ba'. Does that sound at all feasible?

Well, anyway, I can't get it to work. I have no idea how things with code pages and mappings and so work, so it's very possible that I'm just getting the whole thing wrong.

Can anyone help me with this?

Thanks a bunch and have a great day

Peter
OregonPete
Posts: 12
Joined: Mon Jul 26, 2004 8:31 am

More information...

Post by OregonPete »

Hmmm... Maybe I should give you some more info on what I've already done.

Well, I took an existing font, I think it was Arial, deleted a bunch of the existing glyphs, created my own characters of the existing ones (there are 25 letters in the Selanian alphabet and many of them correspond to normal Latin) and correlated some new ones over existing ones that I don't need in my alphabet.

Then I clicked on the Insert menu and created a new glyph into which I placed the diacritical 'a' mark, then added the 'b' character. With the 'a' character I said in the properties NOT to use the glyph's metrics, but I did on the 'b' character. On the properties of the glyph itself I put in a new name (Benu-Ana), but left the bearings and advance width empty. I also left the mappings empty, it just says Microsoft Unicode under 'Platforms'.

Well, anyway, it doesn't work when I test it under the Font/Test menu. The two glyphs I used are now red in the Glyph Overview, the new composite glyph is blue, but has a border, which means it's not directly available since there is no mapping info.

Do I need to map it to something, and if yes, to what? Since there are 20 characters that need five vowels, I will need to make about 100 such composite glyphs. Do they all need mappings and if yes, what kind? Is there enough room?

Thanks and Greets

Peter
Joop Jagers
Top Typographer
Top Typographer
Posts: 117
Joined: Sun Jun 08, 2003 9:46 pm

Post by Joop Jagers »

To accomplish what you want you need to do two completely different things.

One thing is creating the composite glyphs you need, like ba in your example. Then assign a Unicode value to the new glyph, preferably one in the Private Use Area. If you leave the mapping empty Windows will not be able to locate the glyph.

The second thing you need to do can't be done in Font Creator. You should create a keyboard layout which instructs the keyboard to wait after b for a second key; if this is an a, it should print the new ba character. To do this you need Microsoft's Keyboard Layour Creator, which can be downloaded free from the Microsoft site (http://www.microsoft.com/globaldev/tools/msklc.mspx). Use the dead key feature, which makes b wait for a second key. If you want to see how this is done you should open the US International keyboard in MSKLC and look how keys like ' ^ ` ~ " are defined.

Good luck!
Bhikkhu Pesala
Top Typographer
Top Typographer
Posts: 9878
Joined: Tue Oct 29, 2002 5:28 am
Location: Seven Kings, London UK
Contact:

Post by Bhikkhu Pesala »

Just thinking about right to left scripts makes me confused :? so forgive me for explaining in terms of left to right scripts. I expect you can reverse the logic easily enough.

I wouldn't use the Private Use area, although that is technically more correct, because it makes additional work with keyboard mappings and your font would be limited to use in Word or other Unicode aware programs.

All I would do is use the A-z characters and define the vowels in your alphabet in the same way as combining diacritical marks are: with zero width and negative left side-bearings.

Like you type an a, then combining diaresis ¨ to get ä. So in your font "a" would be "a", but "b" would be a combining vowel. Take a look at this Burmese font. Burmese is a left to right script, with vowels that are typed after the consonants, and which combine above or below or after the consonants.
myanmar.png
myanmar.png (1.39 KiB) Viewed 6368 times
These combining vowels usually have zero width. A few vowels precede the consonant, as in "me" above, which is typed "em."
My FontsReviews: MainTypeFont CreatorHelpFC15 + MT12.0 @ Win 10 64-bit build 19045.2486
OregonPete
Posts: 12
Joined: Mon Jul 26, 2004 8:31 am

Post by OregonPete »

Hi guys! :-)

Thanks for your quick responses.

Your response, Bhikkhu, actually helped me most and it works great! :-D

I do have another problem, though. I found that the right-to-left doesn't work the way I thought it would in MS Word. Do any of you have any idea how you do get it to work? Easiest would be an a negative advance width, but you can't seem to do that in Font Creator. I'm not even sure if it can be done at all.

Any ideas?

Thanks and have a great day

Peter
OregonPete
Posts: 12
Joined: Mon Jul 26, 2004 8:31 am

Post by OregonPete »

Hey Bhikkhu! :-)

One more question regarding your solution: From the way you described it, I assume that the font must be monospaced, so that the diacritical marks are always centered over or under the character. Or is there a way to define that the diacritical mark must be centered over the character, regardless of proportion?

Thanks

Peter
Bhikkhu Pesala
Top Typographer
Top Typographer
Posts: 9878
Joined: Tue Oct 29, 2002 5:28 am
Location: Seven Kings, London UK
Contact:

Post by Bhikkhu Pesala »

No, the Myanmar font is not monospaced. The vowels don't need to be centred over the consonants - usually they are centred over or under the right half.
myanmar2.png
myanmar2.png (1.92 KiB) Viewed 6368 times
To get around the problem of different combinations, Myanmar has several forms of the same letter, for combining with different vowels. Above is myu, mya, myva, myi. The conjunct consonant "y" is typed first. There are also wide variants of "y" for combination with the double-width consonants.

This makes typing in Burmese very difficult. One could get much better precision with composites, where one can adjust the position of the diacritic to suit different characters, but then one has even more characters to manage. Compare for example:
ï ü ä Ä
If you tried to do this by combining ¨ with i u a A, you would not get a good result:
ï ü ä Ä
My FontsReviews: MainTypeFont CreatorHelpFC15 + MT12.0 @ Win 10 64-bit build 19045.2486
OregonPete
Posts: 12
Joined: Mon Jul 26, 2004 8:31 am

Post by OregonPete »

Hi Bhikkhu

Thanks for your answer. I'll probably go with the monospaced version, so that I can get the vowel centered.

I'm afraid I have another problem now, though. In the original font, which I copied from Arial and then just repainted the characters, the vocalization now works as you described above. I then created a new font, and just copied the glyphs over that I needed. In this version, the vocalization doesn't quite work. What happens is that the vowel begins disappearing the more I decrease the left side bearing.

Let me explain: I will call the two fonts SELANTST1 and SELANTST2. On font 1 I have the left side bearing at -1000 and the advance width at 0. With font 2, I do the same thing, but the vowel is invisible, it just doesn't appear. When I place the left bearing at around -400, it begins to appear to the right of the consonant. It seems as it if just dissapears into some kind of strange void as soon as the left bearing decreases even more.

Any ideas on what the problem could be? I can send you the two fonts by mail, if you wish.

Thanks a bunch

Peter
Post Reply