I am interested in creating a true cursive font for the Latin alphabet. One of the features that I require is cursive attachment. How do I go about creating such a feature in Font Creator? Specifically, which tables/features do I need to add in the OpenType specifications and what anchors, if any, are required. Any assistance would be greatly appreciated.
Caveat: I have zero experience of using this feature, but this might at least get you started.
- Open the OpenType Designer (Ctrl F8)
- Select the Default language for the Latn script
- Click the Green [+] icon to add a feature
- Add the Cursive Positioning Feature
- Select the Cursive Positioning Feature
- Click the Green [+] icon to add a lookup
- Add a Cursive Attachment Lookup
- Start adding pairs that need to connect
As far as I can tell, you don’t require anchor points on the glyphs, but I assume that it will help in designing the font to add anchors to glyphs that need to connect to several other glyphs.
One doesn’t need to use any OT features for a script font, though using Kerning can make it easier.
The screen shot is one way to do it. Note the RSB (Right Side Bearing) is moved into the right side of the connecting part of the glyph.
Others I have done have the connecting parts of a glyph precisely at the LSB/RSB and one notes the amount of height where one ends and another will begin and make them comply so they abut. This is how I do many script fonts, but not all. It depends on the complexity of the font.
For something like the above screen shot, the RSB method works fine. For a simple brush-type of script, ending at the LSB/RSB also works fine. This is because I usually am drawing them in a vector drawing application and I will use guidelines for where I want the LSB/RSB to be in the design phase and literally slice off any overhanging parts.
Using the Kern feature is mostly handy, to me, when the complexity of the glyphs increase. Script fonts are the most time consuming design for me to make. It takes a lot of back and forth in the design application, a whole lot of testing and adjusting.
Mike
Thank you both for your responses. I have tried both out and I have a problem with having the base glyphs acting correctly when diacritical marks are placed over letters (I am not using precomposed glyphs, so that, for example, m̂ is equal to m + combining diacritical circumflex and the correct placement is achieved using anchors). In such cases, both the kerning and cursive attachments do not work as expected in the font preview. What needs to be done in order that it work in both cases. I am attaching a screen shot showing this issue with exaggeration. The first three examples test kerning, while the last three test cursive attachment.
Thus, from the above figure, we have that the first m̂ŵ is wrong, while the other two both display correctly. With the cursive attachment, the first two my’s are correct, while the last one is not. Why is this happening? I have tried checking the various options at the top, but none seem to make a difference. I assume that in Arabic this issue needs to be also addressed as they have diacritical marks placed over cursive forms.
As well, is there any way for me quickly test whether or not the font I have designed will actually work in say Word or Publisher (I understand how to turn on the required tables). The test font window has multiple display issues and I cannot test the font with the trial version effectively.
Thanks for any suggestions and help.
The preview toolbar (F8) can be used to test the font (as can the preview in the OpenType Designer).
Except that the preview bar does not properly display the font (see my comments above, which still hold for the preview bar). In fact, kerning and cursive attachment are foiled by diacritical marks, for example, m̂ŷ will not kern/connect m and y properly (as in the case where there are no diacritical marks).
The preview shows the source input which is a base character followed by a mark. You expect to see the combined character, which is probably how your word processing software works. We might be able to further improve this in a future update.