I woul like to reopen this discussion but switch from the IME approach to OTF design with approapriate tables for GSUB, GPOS. GDEF, etc. I am using Microsoft VOLT. Does anyone have experience with this program? There is a tutorial available for download which explains how to adapt a ttf format to an Otf with ligatures and substitutions. Unless one knows the Arabic language the example given in the tutorial is not helpful because one cannot see the cause-effect, so to speak. The tutorial was written by Paul Foster from Microsoft. Can he be contacted? Has anyone done any work with a Latin based character set and Microsoft VOLT and wishes to start a new discussion on this subject?
why not start this as a new subject?
Yes. This is not related to the IME issue at all, so I have split the topic and given it an appropriate title to attract users who are familiar with VOLT.
I searched for a MS VOLT forum, but didn’t immediately find one. I suspect that one would get more help on Typophile than here.
I haven’t used VOLT, but I know there are at least a few FontCreator users who have.
algrass has already posted to the “official” VOLT forum at fontlab forums, as much good as that will do. In general, OpenType and its interactions with Uniscribe is by far the most complicated typography subject I know of - and I have intimate knowledge of Unicode technical standards - but the VOLT forum is notoriously underwhelming in its support.
Hi chaps,
I confess that maxwell’s equations are far easier than navigating through this forum. Somehow I can’t get the hang of it. So if you want to strat a new topic under VOLT please go ahead and do it. It seems appropriate to do so. But I do not know how to go about doing it. I am struggling with finding the reply button!
That said, I have made a little bit of progress with VOLT. I think one of the key issues is to get the syntax correct. My feeling is that if some of you are keen to progress with making OTF fonts then through cobstructive forum exchanges we will be successful. What do you think? Let me know.
If you change the name of the title kindly tell me how to find it. Or is it enough to go into the search bar and type VOLT?
Cheers.
Apparently your already found it, because you just posted in it.
VOLT is too difficult for me. I have always used the method described in the Tutorial thread — Adding OpenType Features. Understanding how to write the script with the correct syntax is initially somewhat difficult, but with an example to follow its just a careful copy/paste job to modify the script for one’s own use. It took me less than a week to get up and running with it.
Still, if you want, keep the thread going telling us about your progress with VOLT. The discussion may be helpful to others.
OK! I am going to prepare a ttf font file with some alternative characters and make it available as a platform for this VOLT discussion on my next posting. I am going to choose a cursive style font because that is where alternatives glyphs are really required. Most cursive (or copperplate) fonts available use the trick of providing only one joining stroke whereas a real script requires both the front and trailing stroke. To simplify the task I will adapt the commercially available Palace font for the standard Latin glyphs and add some new ones for the substitution glyphs. I probably need to add about a dozen at the most for this exercise hence it should not take me long to get this job done.
I am thinking of putting the substitution glyphs in the private area Unicode mapping. If you think this area mapping is not appropriate please let me know.
The Private Use Area is fine, but there’s no need to map them at all. OpenType features don’t need mappings.
I always map my extra glyphs for two reasons:
- Most apps don’t support OpenType features so the glyphs will not be available at all if they are not mapped.
- FontCreator uses the mappings to automatically generate glyphs for OpenType features like Small/Petite Caps, OldStyle Figures, etc., using the Glyph Transformer wizard. Without mappings, the scripts wouldn’t know where to generate the glyphs. Although the Transform scripts only provide a starting point, they save a huge amount of time, and ensure consistency between all fonts created with FontCreator.
However, I read somewhere on Typophile that mapping these extra glyphs is bad (presumably because there is no standard way to map them, and if users insert these extra glyphs, then change the font, glyphs will change to something else or disappear). Since I only consistently use the same mappings, I don’t have to worry about this problem even in my old apps that don’t support OpenType. I just have to limit myself to using my own fonts.
May I suggest that you do not adapt a commercially available font, because there might then be copyright issues, or worries about the possibilities of copyright issues, that will deter some people from participating in the attempt to learn about it, for fear of being caught up in a legal situation over copyright and not wanting to do something wrong anyway.
May I suggest that you start a new font, making it public domain and use that. If that is a problem I will gladly try to help with that. The font does not necessarily need to have a whole alphabet for the learning experience of how to add the alternate glyphs usable in an OpenType context. I would like to learn how to do it too, using a public domain font.
I feel that it needs a straightforwardly public domain font, not one of those licensing things with documents and so on.
If the font is public domain then people can add glyphs as they feel like it and the learning experience can take place happily.
I hope that this helps.
William Overington
13 November 2012
My own experience of OpenType is limited. I did, some years ago, manage to use VOLT to produce a font that successfully substituted the sequence of a c and a t with a ct ligature: the font also had a few other ligature substitutions as well. This was using liga in VOLT. I am not sure whether it is called a liga table or what. I will need to start again learning how to do it.
What I would like to say in this post is that there are two different things.
One is ligatures. The other is stylistic alternates.
A ligature is where two or more glyphs are not displayed and instead a single glyph is displayed.
This is, I think, always automated.
So, for example, if the liga table or whatever it is called is set up so that c followed by t is substituted by ct then if one displayes the word actually then the ct ligature glyph will be displayed in the word.
However, it is not quite that straightforward as there is a liga and a dlig and I think that c t changing to ct is often put in dlig (dlig standing for discretionary ligatures). However, as we are learning it might be best to put all ligatures into liga as a first attempt as it might be easier to get them to display as I think, but am not sure, that liga tends to be turned on in applications by default whereas dlig is turned off by default if indeed it is implemented in the application program.
For a cursive, “running writing” type font there may be many glyph substitutions.
For example, the letter n might be different at the right in note and need.
At the left the n may be different in tin and on.
Stylistic alternates are for one character on its own.
I think, though I am not totally sure, that choosing a stylistic alternate is always done manually in something like a desktop publishing application.
For example, suppose that a poem ends as follows.
Beneath the tree a cone
One might like to make the display look more artistic by substituting the glyph for the e in the word cone with an e with a flourish out to the right.
I have not yet learned how one adds a stylistic alternate glyph into an OpenType font. I would be interested to try to find out how to do it.
William Overington
13 November 2012
I noted William’s remarks on copyright and I endorse them. I will try to work on a public domain font set. They do not have to be perfect but good enough for the exercise.
Regarding the ligatures my personal feelings as a calligrapher is that they are not so useful other than if one is making medieval manuscripts, or in some commercial ads. Nontheless I am in favour of adding them.
To me personally the most important aspect is smart font substitution. I am not fully familiar with the typographic correct teminology and I will pay attention to it so that I can also speak the same language. But let me explain where I think open type features are relevant for making cursive fonts, the old fashioned style of writing that used to be taught in schools in Europe and America until recently.
First of all, the most available cursive scripts as fonts are a compromise as generally only one stroke in used to join adjacent letters. A proper cursive script uses two strokes to join adjacent letters: one to the left and one to the right, or if you like, the leading stroke and the trailing stroke, both being thin line strokes.
Most letters have trailing strokes that end somewhere between the baseline and 1/3 up the x-height. But some letters, such as the letter “o”, “v”, “w” invariably end with a trailing stroke that terminates at about the x-height or just above. Hence, if such a letter is followed by another letter that start with a leading stroke from the bottom, the two do not join. For example the word "horror"presents such a problem twice: between the first “o” and “r” and the second “o” and “r” at the end of the word. The two consecutive “r” and “r” are not a problem as the first “r” ends in low trailing stroke and the second “r” starts also with a low leading stroke. Thus, provided the kerning is correct, they will join perfectly.
This is really the main problem with font design for professional cursive type fonts. In my view this is more important than ligatures and should be assigned the highest priority.
Stylistic alternative, as you well explained in your example, are also important because in a cursive script effectively there is no limit to how one can alter the glyph with flourishes. I also find these much desirable. For example: the miniscule letter “z” can be written with a long looped descender or without descender. The descender in the letter “f” can also be written in at least three different ways. All of these features would make such a font unique and possibly commercially attractive. But I am not interested in the commericial aspects, personally.
As a calligrapher the order of priority ought to be:
1- Glyph substitution to repair the errors in character joining as I explained above. When we write with our hand we adjsut the strokes perfectly to match as the combination requires. In a font this degree of intelligence is absent, understandably.
2- Stylistic alternates.
3- Ligatures
This is why I originally had opted for an IME similar to the Japanese language but confined to the Latin alphabet. But now I started with VOLT. As the saying goes: necessity is the mother of inventions.
I get working on the font.
Addendum
William I thought yu were in the US. Cursive is what we call here in England Copperplate.
I think Contextual Ligatures are what you want in a cursive script. Stylistic Alternates require the user to pick the alternate glyphs manually. It is quite impractical for typing fluently.
I added some Stylistic Alternates to my fonts just to test out this feature. The user can select alternate glyphs to substitute for * + © ® † ‡ etc.
Well, whilst copperplate is one type of cursive, as far as I am aware cursive includes lots of styles, one of which is copperplate.
Though I am not expert on that.
What do others say please?
William Overington
16 November 2012
I have this morning started a public domain font in case it might be helpful to making progress in the learning exercise.
Here is the font.
PCURSIVE.TTF (5.24 KB)
Readers who wish to do so are welcome to use this font as they wish, altering it, adding glyphs, trying to add OpenType tables and so on. Please feel free to post updated versions of the font so that we can all hopefully learn more about OpenType and typography generally.
Here are some notes that I made.
Monday 19 November 2012
11:22 am
Start a new font, Public Domain Cursive
PCURSIVE.TTF
A font for learning more about fontmaking
Change the word created to become started in the Description section of two platforms.
Set the metrics to 2048, 0, -1024
Design a .notdef glyph.
Make all characters have an advance width of 1280 font units to start.
This may be altered later to become wider for some capitals and less for some characters, but just do that to start.
That has moved the .notdef glyph to the left by 128 font units.
Move the .notdef glyph to the right by 128 font units.
Construct a lowercase o by adapting two copies of the disc from my Stardisc font.
One copy is at 50% both horizontally and vertically.
The other copy is counterclockwise at 37.5% both horizontally and vertically, so as to give a line width of 128 font units.
Try a b by adapting a copy of o.
Try a p by adapting a copy of o.
Try an n by adapting a copy of p.
Try an H.
Try a q by adapting a copy of o.
Try two ligature glyphs as a start. Leave both unmapped at present.
Try on and ob.
12:29 pm
Validate the font.
The ligatures were each produced by adding a seven point contour.
For the on ligature
640, 1024 on curve
1280, 1024 off curve
1408, 1152 on curve
1536, 1152 on curve
1536, 1024 on curve
1280, 896 off curve
640, 896 on curve
For the ob ligature
640, 1024 on curve
1280, 1024 off curve
1408, 1920 on curve
1536, 1920 on curve
1536, 1792 on curve
1280, 896 off curve
640, 896 on curve
William Overington
19 November 2012
This reply refers to Khikkhu and William in reverse order.
Pcursive.ttf font is not a cursive font, William. It is a sanserif geometric typofont therefore not suitable for this exercise.
Regarding Bhikkhu’s comment on Contextual Ligatures and Stylistic Alternates, as well as the useful attachment, I have to confess my ignorance on the current typographic definitions. However, let me explain with the following example what I mean then you tell me which classification applies.
This a high quality cursive script I have developed. The first line shows disjunctions between the first letter o and the first following letter r, plus you can see another disjunction between the final letter o and the third r.
The line below shows that by inserting an alternative or substitute glyph of the letter r which has a short stem rather than a long one, then the disjunction goes away. This implies that my font contains two different glyphs for the letter r and two different codepoints.
Now tell me what is the correct definition for this type of operation which in a cursive script becomes dominant. The word cursive must be understood as a calligraphic term, a book-hand script. Normal handwriting is also generally cursive but it is largely free of the ductus rules of calligraphy, i.e. informal.
As a rule of thumb a calligraphic cursive script requires a font set where the minuscule letters are at least two sets: one set is used mostly and the other set is used whenever the previous letter is an “o”, a “v” and a “w”. As well as the letter “b”, actually.
By stylistic alternatives I refer to letters which follow the same shape of the normal letters but in addition present flourishes and tails. Also there are several ways of writing some capital letters. For example capita; “A” can be written in at least three common styles, and each style is a different glyph. Likewise the minuscule letter can e written in four different styles, hence four different glyphs. Tell me how you would categorise these options.
So, you create an alternattive design for “r2” which is designed to join b, o, v, or w. Then you add a ContextualLigatures (clig) feature to the font, which, when enabled will automatically make the substitution of r2 for r whenever the user types br, or, vr, or wr. In this quick test, since I don’t have a font with an alternative “r2” glyph, I have substituted Capital R instead. The OpenType Viewer shows what happens if the clig feature is enabled.
script latn {
feature ContextualLigatures;
}
feature ContextualLigatures clig {
lookup ContextualLigatures;
}
group @group1 [b o v w];
group @group2 [r];
lookup ContextualLigatures{
context (@group1) @group2;
sub 0 joiner1;
} lookup joiner1 {
sub r -> R;
}
Very good input Bhikkhu. Where do I get that Open Type Viewer from? I don’t think that it’s part of VOLT.
Can’t you produce some kind of tutorial as I personally need to get those OT feature I explained, in my previous input, built into my font asap. You seem to have the best knowledge in this field. Can you make a statement of the current art and advise how to proceed?
The truetypeviewer can be downloaded here: http://home.kabelfoon.nl/~slam/fonts/truetypeviewer.html
In the last mail I sent you I thought that contextual lookups were the way to go, but as Bhikkhu Pesala nicely presented it’s also possible with chained contextual lookups and hence you can use the tool I e-mailed you. With a little help from Bhikkhu Pesala and me you should be able to write a script that solves your problem(s).
León Fridsma
I really don’t like repeating myself. Please read the replies that I already gave you, and follow the links provided.