Take the 2-minute tour ×
Graphic Design Stack Exchange is a question and answer site for Graphic Design professionals, students, and enthusiasts. It's 100% free, no registration required.

Suppose that I have a font in a modestly popular format (.ttf, .otf, etc.), and I have the legal rights to modify it. As it stands, it is a normal font with different charaters (glyphs?) varying in widths and spacings. How would I go about turning said font into a monospaced font (e.g. all characters are same dimensions, etc.)?

If possible, are there any automated tools that can do some of the guesswork for you? (The results don't have to be perfect.) The font may be large (many characters), and editing it could be tedious.

Any suggestions on the problem are much appreciated! :)


Disclaimer: Sorry if this is considered a simple howto, but Google has very little information on the subject, and for a programmer that doesn't deal with graphics or fonts much, it sure isn't simple. Also, sorry if my terminology is off... :P

share|improve this question
    
What font software are you using if any? Fontlab? Fontforge? –  thomasrutter Sep 24 '12 at 23:53

2 Answers 2

If you don't already have any font editing software, the good news is that Fontforge is free and open source. The bad news is that it has a relatively high learning curve and a somewhat unusual user interface.

Basically, for a font to be considered monospace, every glyph has to be the same width, right down to the exact same number of units. This includes even glyphs that should normally be zero width, or a certain width (such as em spaces, em dashes, etc).

See the FAQ entry "How do I mark a font as monospaced?"

To actually edit the width of all glyphs at once in a batch, you can just go to "Metrics" -> "Set Width" on the menu, but I wouldn't expect it to work for all characters. You'll probably have to manually edit all the wide characters such as 'W', 'M', '@', etc so they don't end up overlapping. And combining diacriticals (accents intended to be "combined" with letters at render-time) may have all their positions messed up (which is hard to test if you're American/English and you almost never use them).

A person who knows how to create and edit fonts would be able to do this task but it still wouldn't be straightforward.

share|improve this answer

thomasrutter offers more of a technical answer; I'll show you some principles of typography to discourage you from doing what you want to do unless you really need to.

Zoom in on an 'i' and an 'm' in Consolas or Courier and then Corbel or Verdana. Notice how different the letters have to be in order to make monospace work. To properly convert a font to monospace takes a lot of knowledge and work. The general idea of stretching fonts at all is frowned upon by any designer worth their salt, that's why even going from normal to a condensed variant takes a redraw of all of the glyphs.

So, look at Consolas vs. Corbel here and see how, when it's zoomed in, you can look at 1) spacing between letters, 2) consistency of stroke thickness, and 3) how each letter fits into its box. Look at the monospaced face (first) compared to the variable spaced face (second), then see the third and fourth to see what happens when you try to stretch and space to make it equal. For the fourth, I made the Ms squish to 75% to get in the box, but now they're much skinnier than the Is. that will be noticeable when it's used.

Comparison of monospace and variable space typefaces

So, in short: don't mess with typefaces; they're a lot more formidable than you'd expect!

share|improve this answer
1  
Yes, stretching wide glyphs like M is not a good enough solution for exactly the reason Brendan points out: its vertical strokes become narrower than other letters and that looks bad. You have to actually edit the glyphs by hand, by selecting control points and moving them. Hopefully this gives the OP some idea of how doing this right (or nicely) is no small task. Especially if you want to have a somewhat decent glyph coverage. –  thomasrutter Sep 26 '12 at 0:06

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.