Things to do when creating a monospaced font?

One typeface project I’m working on right now is a monospaced all caps font. I’m working on getting it closer to release state, at this point during my test process. Other than ensuring that all glyphs have the same width, are there other things that should be done to have an exported OTF be labeled as a monospaced font?

All the Glyphs are the same width: 600. I created a .notdef glyph with width 600 since makeotfGlyphs seemed to create one with a width of 500, instead. The lowercase glyphs used the uppercase as components. I also created .sc small caps variants.

Without setting custom parameters, the exported OTF doesn’t seem to have settings in it to indicate a monospaced font (e.g., the OS/2 Panose Proportion field is set to 0 [any]). One way I found to force the change is to set a custom parameter in the Font Info section:

postscriptIsFixedPitch CHECKED

With that set, the OS/2 Panose Proportion field is set to 9 (monospaced) in the exported OTF.

Generating features automatically sets the cpsp feature. With a monospaced all caps font, I decided I didn’t want that feature enabled. So, I just remove cpsp each time after making changes to the font that require feature re-generation. Is there a way to ensure that cpsp either doesn’t get generated or is removed on export? No worries, if not; just trying to make sure I don’t forget during the design/test cycle.

Are there other things I should be doing to ensure that the exported font is considered a monospaced font?


I think you’re good to go. Many designers don’t even care about postscriptIsFixedPitch or Panose, actually.

If you want to prevent accidental cpsp generation, you can uncheck the automation option and change ‘<5 0 10 0>’ to ‘<0 0 0 0>’.

Why do you have .sc if even the lowercase are components of the uppercase. Why not just use the .sc glyphs as lowercase?

I've been debating about having both. This typeface started out as one to be used with a simulator application in which the system being simulated (mainframe/line printer from the 1960s) only displayed capital letters. Admittedly, that's a fairly small and specific use case. And, one simple way around that may be to have the user just make sure the caps lock key is pressed; then, it could make sense to consider the .sc glyphs as lowercase. Though, I do like the option of being able to switch between the .sc and uppercase glyphs while leaving the lowercase as the underlying characters.

I added the .sc glyphs as an experiment and decided to keep them.

I’ve also toyed with creating a possible version that uses the .sc glyphs as lowercase and another that uses the uppercase but has them available with the smcp feature (since those kinds of applications are less likely to allow selection of OpenType features).

Got it. I was just wanting to make sure it would be listed as a monospaced font when someone was searching through their fonts. :-) Good idea. And, it allows me to keep adding new glyphs and regenerating the rest of the features. Thanks.

You can just click the arrows next to the feature names to regenerate that feature alone.

Another option, as of version 1.3.21, add to the Instance's custom parameters in the Font Info window:

Remove Features: cpsp