A bit more information on what has been discovered since.
OTF features “isol”, “init”, “medi”, “fina”, “rand” and possibly others cannot be selected via the “Features” button although present in the font. harfbuzz
and fontforge
show these features, and LibreOffice 6.x.y showed the fonts the same way. Fonts that show correctly in harfbuzz
(use hb-view
to show the rendering) and fontforge
metrics preview may not show correctly in LibreOffice 7.x.y. Why that happens would have to be investigated with a minimal example of the font that does not work the same way in all applications.
See this discussion about “isol”, “init”, “medi”, “fina”.
Some features, such as the “isol”, “init”, “medi”, “fina” were meant only for some languages, but designers of Latin fonts have also used them in handwriting fonts, such as Jena1330. Download OTF. Jena1330 does work in LibreOffice 7.6.4. It might be that “calt” feature with “isol”, “init”, “medi”, “fina” and “rand” have changed, which would call for a test font to be created to see what LibreOffice actually does with these features without additional programming in “calt” feature.
Is it possible to automatically create a fully randomized handwritten font?
What is wanted is often a fully randomized letter substitution which takes care of if the letter is in the beginning of a word, in the middle of the word, or at the end of a word, with many variations of these forms, positioned at different heights to simulate handwriting. Something like:
Priority
- Special handwriting effects, example: “#typing-effect#” replaced by a characteristic glyph which is likely never to occur unintended. (randomized)
- 4-letter ligatures (randomized)
a. beginning of words (randomized)
b. middle of words (randomized)
c. end of words (randomized)
- 3-letter ligatures (randomized)
a. beginning of words (randomized)
b. middle of words (randomized)
c. end of words (randomized)
- 2-letter ligatures (randomized)
a. beginning of words (randomized)
b. middle of words (randomized)
c. end of words (randomized)
- single glyphs in the beginning of words (randomized)
- single glyphs in the middle of words (randomized)
- single glyphs at the end of words (randomized)
The best way to achieve this behavior, with any set of glyphs properly named to be identified by a python script running inside fontforge
that ultimately will create all feature tables in the correct order and with the correct content is still not known. Some ideas for these scripts could be gathered from these scripts which would need to be adapted to fontforge
and run in a sequence.
Other randomization algorithms
There are other clever substitutions made in advanced fonts such as can be tested on Liza renderer. Here is a PDF description of the inner workings of the font for the one who may be interested how handwriting simulation could be achieved with some programming behind the logic and automatic creation of all tables with python.
Some fonts use a 1-2-3 substitution looking 10 characters back to simulate “rand” feature. When the same character is found before, a replacement is made.
TT2020 OTF font uses a randomization algorithm and works in LibreOffice 7.6.4.
Punk Nova OTF uses the “rand” feature and works in LibreOffice 7.6.4.
“rand” feature is assumed to be set to “ON” by LibreOffice by default. Most probably, “isol”, “init”, “medi”, “fina” are also set to “ON”.
The feature can be controlled with “+rand” (=ON), “-rand” (=OFF), or “rand=0” (=OFF) or “rand=1”(=ON). It could be so that anything above zero means the feature is ON.
LibreOffice font selection example
If the feature cannot be selected by a click, it can still be accessed with something like:
MyFont:calt=255&-isol&+init&-midi&+fina&rand=0
MyFont:aalt=3
may work to select alternative 3 of a glyph.