"Expert" fonts

Hi to all, and please forgive my naive question.
In order to use true small caps and true exponents in MS Word, I am going through the process of creating "expert" fonts for myself, derived from the commercial Opentype fonts. In these expert fonts I copy/paste the small caps glyphs in the lowercase slots, and I do the same with the exponents. I do this with Fontforge.

Now I have two questions:
1. Am I allowed to do that, provided I only use the modified fonts for personal purposes excluding any commercial purpose?

2. Is there any automatic means to achieve the same results, such as a script or something? I have succeded in doing by hand, but it's a fairly long work as I have to repeat the steps for every weight/style of the fonts.

Thanks in advance.
Tagged:

Comments

  • AbrahamLee
    AbrahamLee Posts: 262
    Now I have two questions:
    1. Am I allowed to do that, provided I only use the modified fonts for personal purposes excluding any commercial purpose?

    2. Is there any automatic means to achieve the same results, such as a script or something? I have succeded in doing by hand, but it's a fairly long work as I have to repeat the steps for every weight/style of the fonts.
    1. It depends on what the font's license allows or doesn't. When in doubt, ask the foundry you got the original fonts from. Don't assume it's ok, because most of the time it's not, at least without getting permission first. Who knows? The foundry just might do it for you!

    2. FF's python and internal scripting API make doing this very easy. All described here: https://fontforge.github.io/scripting.html
  • Thomas Phinney
    Thomas Phinney Posts: 2,899
    edited March 2017
    With regards to (2), that's easily done with Python scripting in FontLab—or any of the major font editing apps.
  • Michel Boyer
    Michel Boyer Posts: 120
    edited March 2017
    It seems to me there is a much more simple solution. Word does not allow activating smcp but allows choosing styles. Why not just open the font with Fontforge, select Elements > Font info > Lookups, right click smcp and ask to edit the metadata and then change smcp with ss10 or some other appropriate style number and generate the font. To get the smallcaps in Words, you can then simply choose that style without needing an additional font.

    If smcp is needed for another application, I guess the solution is to have a style that is a copy of it but I don't know how to do that in just two or three clicks. I would need to use feature files.
  • If you’re allowed to do that by the type foundry / license (and that’s a big if), the FontSquirrel web font generator can flatten features into the font (in Expert mode). Simply select the feature you need and it will replace the default character for that feature. It exports a TrueType file that you can then use to install on your computer.

    Again, this is most likely against the foundry’s EULA, but this should be by far the quickest way to get your desired result if it is allowed by the foundry.
  • @Thierrey

    If you flatten with FontSquirrel, you then need to edit the names table of the resulting font so as to get two fonts with different names. Is it not faster to replace smcp by ss10 than changing names?
  • Thomas Phinney
    Thomas Phinney Posts: 2,899
    With regards to (2), that would be fairly easily scripted in FontLab (or any of the major font editing apps)
  • Michel Boyer
    Michel Boyer Posts: 120
    edited March 2017

    With regards to (2), even if copying the smallcap glyph to the lowercase position as is suggested in the first paragraph can be automated with a script, the resulting font will not be properly kerned. You then need to work more. To me, that does not look optimal (and I am not sure it is so easy; I can get a useful font much faster from the line command with ttx).

    Here is Arno small caps obtained as style 10 in Word. Bold and Italic stay functional that way. Unfortunately, Word does not accept activating multiple styles, which remains limiting.


  • This script by Adam Twardoch uses the Python FontTools to "freeze" OpenType features. It could be used to switch on the Small Caps feature permanently.
  • Kent Lew
    Kent Lew Posts: 944
    Michel is not wrong about the consideration for moving kerning data. But a script can deal with renaming in groups and kerning data pretty readily, if one just accounts for it.

    Still, if the objective is to work in Word (and only in one’s own closed environment), then the {scmp} → {ssXX} hack actually seems like a pretty efficient & effective one.

    But if one is intent on hacking a font to display small caps by default in place of lowercase — i.e., like an “expert” font of old — then it might be more efficient to just remap the <cmap> so that lowercase codepoints direct to small-cap glyphs. That way, kerning is not an issue (since it relies upon glyph names, which have not been changed).

    Depending upon how a font has its glyphs named, I can imagine this could be mostly a straightforward GREP operation on a TTX dump or otherwise scripted through FontTools. Although I suspect it gets a little more complicated if you have to deal agnostically with a range of fonts.
  • Thanks all.
    I'd like to have a separate "expert" font, as it would be useful in other softwares as well (in particular in Sibelius, a music-engraving software) but the fact is, I didn't succeed in any of the ways suggested.

    - Fontsquirrel doesn't work for me. The font I get back do have the smallcaps in the lowercase slots, but not the accented letters: è, é, ù, ü, ò (small caps È, Ü, À...) and so on, which I need because I mostly write in Italian.
    Maybe I should try harder, but can't figure out how to get the accented letters. 

    - Python scripts too difficult for me, it's like studying a programming language. Moreover, I tried to use existing scripts just to see ho wthey work, but alas all I got were arcane error messages or just nothing. My fault, of course.

    - the "cmap" hack from Kent I tried but to no avail. I install the resulting font but no small caps, just lower case. I'm disappointed because I do like this solution a lot.

    BUT, I've been able to get Michael Boyer's suggestion working. I am stuck with MS Word, but it does work.


  • I will stick to the old-school practice of accomodating small capitals in seperate fonts.
    This OT substitution business seems to pose more difficulties to the user than it solves.
  • Michel Boyer
    Michel Boyer Posts: 120
    edited March 2017
    The font I get back do have the smallcaps in the lowercase slots, but not the accented letters: è, é, ù, ü, ò (small caps È, Ü, À...) and so on, which I need because I mostly write in Italian.

    In the Font Generator panel did you choose "No Subsetting" or at least "Custom Subsetting" > Italian ? If not you may not get your accented small caps. I tried "No subsetting" on Gentium Plus and FontForge shows me  the accented small caps in the flattened font. There then remains to adjust various names (postscript and TTF).

  • Domenico Statuto
    Domenico Statuto Posts: 7
    edited March 2017
    Thanks a lot Michael, I'll retry. I did choose italian, french and german, maybe I did something wrong.

    @Andreas,
    I agree, I'd like to, but then there is the kerning issue...
    I would like to be able to make Kent's cmap remapping work, seems promising.
  • Nina Stössinger
    Nina Stössinger Posts: 155
    edited March 2017
    Sorry to be the partypooper here but before we get to deep into question (2), can we make sure we don’t forget that the answer to question (1) needs to check out first, especially now you’re going via Fontsquirrel etc etc?
  • Sorry to be the partypooper here but before we get to deep into question (2), can we make sure we don’t forget that the answer to question (1) needs to check out first, especially now you’re going via Fontsquirrel etc etc?
    Of course. In fact, I now know it's not allowed at least by Adobe, a couple of fonts of which I wished to subset for use in Word.

    However, I don't think the technical discussion is useless, there are many opentype opensource fonts one could use.

    (And btw: another limitation in Ms Word is the superscript, which is faked instead of using the real superscripts in the font. I use them extensively for footnotes)
  • Michel Boyer
    Michel Boyer Posts: 120
    edited March 2017
    If you deactivate javascript and go to the page http://www.adobe.com/products/type/font-licensing/additional-license-rights.html you will get detailed information about Adobe fonts. 3 means that you may modify the font. However, in my mind, creating another font requires an additional "seat". If your license allows 5 (or if you got the same font with more than one Adobe product), I guess it is fine for an Adobe original.

    As for the superscripts, in a two fonts setup, here is what you can try. You can't prevent Word from using its mechanism but maybe you can get the superscript to look right as follows: You put the digits in the background of the main font, then you copy the corresponding superscripts from the font, paste them where the digits are and blow them so that they fit the height of the digits behind. It is those big digits that Word will then use to fake superscripts and the result should look close to what you want (maybe after a few adjustments). Of course you will then need the other "expert" font to have the numbers look right in your text.

    I am getting curious. Why do you use Word if you are that fancy about fonts?

    PS. Don't forget to reactivate Javascript for TypeDrawers to work.
  • Kent Lew
    Kent Lew Posts: 944
    I would like to be able to make Kent's cmap remapping work, seems promising.
    Sorry it didn’t work. Seemed like a reasonably sound idea. But I’m also not surprised that there are complications. Hacking like this often involves having to work around unexpected roadblocks.

    Sorry I don’t have time to pursue myself and provide proof-of-concept.

    If you’re just trying to reassign unicodes in a font development app, I wouldn’t be surprised if your values are being overridden by the compiler. I believe that AFDKO has some baked-in routines to assign unicodes based on glyph names and the AGLFN. Others may make similar assumptions.

    You’d have to hack the compiled font directly.

    Or, if your app is using the AFDKO, then  perhaps intercept it and apply the appropriate flags to override the AFDKO mechanism and use your own GlyphOrderAndAliasDB to insure the hacked unicodes. But now we’re getting complicated. ;-)

    another limitation in Ms Word is the superscript, which is faked instead of using the real superscripts in the font. I use them extensively for footnotes
    Can you get in the habit of entering the relevant unicodes for these? The superscripts are usually encoded in a font (in addition to deployment via {sups} feature). ⁰¹²³⁴⁵⁶⁷⁸⁹

    You might want to make yourself a special macro, keyboard shortcut, or something to facilitate this.
  • Michel Boyer
    Michel Boyer Posts: 120
    edited March 2017
    I think the simplest way to get the "expert" font is to use Adam Twardoch's script. You however need the fonttools installed with the compatible version of python2.7. The simplest way to proceed, I think, is as follows
    1. Download and install (if not already done) the Adobe Font Development Kit http://www.adobe.com/devnet/opentype/afdko.html
    2. Download the pyftfeatfreeze script https://github.com/twardoch/fonttools-utils
    You put the script in the same folder as the fonts. Say you are working with Arno. You can then type, in the terminal window,

    <p>AFDKOpython pyftfeatfreeze.py -f 'smcp' -S -U SC -R 'Arno/ArnoExp' ArnoPro-Regular.otf ArnoExpPro-Regular.otf</p><div></div>
    That will make a font with the smallcaps replacing the lowercase; to see the font names resulting from the -R and -S -U SC parameters, you can use  otfinfo that comes with MacTeX.

    <div><p>% otfinfo -i ArnoExpPro-Regular.otf</p><p><br></p><p>Family:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ArnoExp Pro SC</p><p><br></p><p>Subfamily: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Regular<br></p><p>Full name: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ArnoExpProSC-Regular<br></p><p>PostScript name: &nbsp; &nbsp; ArnoExpProSC-Regular<br></p></div><div></div>
    You may need to adjust the -R and -S -U parameters so that the fonts work properly as a family (I have forgotten the details).

    On Windows, otfinto probably comes with TeXlive https://www.tug.org/texlive/windows.html
  • Kent Lew said:
    I would like to be able to make Kent's cmap remapping work, seems promising.
    Sorry it didn’t work. Seemed like a reasonably sound idea. But I’m also not surprised that there are complications. Hacking like this often involves having to work around unexpected roadblocks.

    Sorry I don’t have time to pursue myself and provide proof-of-concept.

    If you’re just trying to reassign unicodes in a font development app, I wouldn’t be surprised if your values are being overridden by the compiler. I believe that AFDKO has some baked-in routines to assign unicodes based on glyph names and the AGLFN. Others may make similar assumptions.

    You’d have to hack the compiled font directly.

    Or, if your app is using the AFDKO, then  perhaps intercept it and apply the appropriate flags to override the AFDKO mechanism and use your own GlyphOrderAndAliasDB to insure the hacked unicodes. But now we’re getting complicated. ;-)

    another limitation in Ms Word is the superscript, which is faked instead of using the real superscripts in the font. I use them extensively for footnotes
    Can you get in the habit of entering the relevant unicodes for these? The superscripts are usually encoded in a font (in addition to deployment via {sups} feature). ⁰¹²³⁴⁵⁶⁷⁸⁹

    You might want to make yourself a special macro, keyboard shortcut, or something to facilitate this.
    Well, the superscripts I only use them for footnotes which are automatically numbered by the software, so I haven't any control on that.
    The rest of your post is just like chinese for me, sorry. I just haven't enough knowledge in font matters to understand what you are saying. And don't be sorry, your suggestions are very fine, it's just me that can't follow them properly.

  • I am getting curious. Why do you use Word if you are that fancy about fonts?

    In fact I use InDesign whenever I can. But I do have to use a word processor for letters, contracts, everyday work, and I would like it to be better laid out than the usual Word documents.

    I am no typographer or type designer but I do love beauty in the books and documents, just like I am no painter but love Botticelli. :)
  • Kent Lew
    Kent Lew Posts: 944
    The rest of your post is just like chinese for me, sorry.
    Well, my father was Chinese . . .  ;-)

    Well, the superscripts I only use them for footnotes which are automatically numbered by the software
    Right. That makes sense. Too bad EndNote and such don’t have greater typographic facility for formatting superiors for references.

    It is ironic that now Stylistic Sets are better supported in Word than [fairly essential] typographic features like Small Caps and Superiors.

  • I think the simplest way to get the "expert" font is to use Adam Twardoch's script. You however need the fonttools installed with the compatible version of python2.7. The simplest way to proceed, I think, is as follows
    1. Download and install (if not already done) the Adobe Font Development Kit http://www.adobe.com/devnet/opentype/afdko.html
    2. Download the pyftfeatfreeze script https://github.com/twardoch/fonttools-utils
    You put the script in the same folder as the fonts. Say you are working with Arno. You can then type, in the terminal window,

    <p>AFDKOpython pyftfeatfreeze.py -f 'smcp' -S -U SC -R 'Arno/ArnoExp' ArnoPro-Regular.otf ArnoExpPro-Regular.otf</p><div></div>
    That will make a font with the smallcaps replacing the lowercase; to see the font names resulting from the -R and -S -U SC parameters, you can use  otfinfo that comes with MacTeX.

    <div><p>% otfinfo -i ArnoExpPro-Regular.otf</p><p><br></p><p>Family:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ArnoExp Pro SC</p><p><br></p><p>Subfamily: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Regular<br></p><p>Full name: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ArnoExpProSC-Regular<br></p><p>PostScript name: &nbsp; &nbsp; ArnoExpProSC-Regular<br></p></div><div></div>
    You may need to adjust the -R and -S -U parameters so that the fonts work properly as a family (I have forgotten the details).

    On Windows, otfinto probably comes with TeXlive https://www.tug.org/texlive/windows.html
    Awesome! Thanks a lot, Michael, that did the trick.

    One strange thing, however. On a Mac, when I install the font, the Font book stops white a red flag saying there an important problem with the font and suggest not using it. However, if I go on installing, the font works as it should. And If I click on file/convalidate the font (sorry I have an italian system and don't know how it says in english system), it says the font is ok. The first image is before installing, the second is after the font is installed.


  • Michel Boyer
    Michel Boyer Posts: 120
    edited March 2017
    On the mac, Fontbook gives me a green check when validating the fontfile I got above. That's what I always do before installing. The font then installed nicely. I don't know what may have occurred with your font; some name clash? Good that the font does what you wanted. 
  • Michel Boyer
    Michel Boyer Posts: 120
    edited March 2017
    [...]  I don't know what may have occurred with your font; some name clash? [...]
    See the thread batch amending specific word within name table.