How to Choose a Good Programming Font for EditPad and Other Text Editors
EditPad Can Use Any Font
The good news is that EditPad can use any font available on your computer. It doesn’t matter if the font is bitmapped or TrueType, monospaced or proportionally spaced. TrueType fonts like Verdana may look a bit better, but your favorite bitmap font like FixedSys will work just fine. Rectangular selections require a monospaced font like Courier New, but Arial will work great for everything else.
To install a font you’ve downloaded, right-click the .ttf file in Windows Explorer and choose Install in the context menu. To quickly install multiple fonts, drag-and-drop them onto the C:\Windows\Fonts folder in Windows Explorer. If EditPad is running, shut it down with File|Exit. Next time you start it the new fonts will be available.
Benefits of Monospaced Fonts
Most software developers prefer to use a monospaced font. Courier New is a classic, simply because it ships with all versions of Windows since 1995. As every programmer knows, the benefit of a monospaced font is that you can use spaces to indent logical blocks in source code. As spaces and all characters have the same width, all your columns will line up nicely. If you use a proportionally spaced font, you can still use spaces at the start of each line for indentation. But after the first non-space on a line, columns won’t line up any more, because characters like “i” and “m” have rather different widths.
Requirements for Programming Fonts
There are countless proportionally spaced fonts available everywhere. These have a broad appeal because they look nice. Monospaced fonts put text in a fixed grid. Programmers love that, but most other people don’t. So monospaced fonts are in limited supply. Great monospaced fonts are even rarer.
The biggest problem is that many monospaced fonts are not monospaced when you mix the plain and bold variants. Lucida Console and Andale Mono use wider characters for their bold variants. All the fonts shown below have plain and bold characters of equal width.
Syntax highlighting text editors often use bold to highlight keywords. If the bold variant is wider, the text editor has three choices. It can display the font accurately, resulting in columns that don’t line up perfectly at the pixel level. It can force the font to be monospaced, usually causing the bold characters to be squished together. Alternatively, plain characters can be spaced more widely to match the bold characters. EditPad supports all 3 options.
Many freely available fonts are bitmap fonts. These fonts come in fixed sizes, like 10 and 12 point. Other sizes are not available. If the font provides the size you want, that’s great. But if it’s too small or too large, you’re out of luck. Bitmapped fonts don’t scale to screen resolution. A font designed for a 96 DPI or even an old 72 DPI screen will be impossibly tiny on a 4K monitor. The fonts recommended below are all TrueType and OpenType fonts that look good at any size on any screen.
Windows uses ClearType to smooth the edges of fonts to make them appear more nicely on LCD screens. On Windows 7 and later you can tune or even disable ClearType by clicking the Windows Start button, typing cttune, and pressing Enter. Most fonts look much better with ClearType, as they’re designed with ClearType in mind. That includes all the fonts recommended below. But older fonts that don’t provide the hinting that ClearType depends on may look worse with ClearType.
The ability to easily distinguish similar characters is important. In source code, a zero is not the same as an oh, and a one is not an ell. These characters are often very similar in fonts designed to produce appealing typography. They may even be identical in fonts simulating typewriters. The mechanical typewriter I inherited from my parents didn’t have separate keys for zero and one. Typing an upper case O and a lower case l was the only way.
The fonts recommended below all have a dot or slash inside the zero. The characters “1” and “l” are also easy to distinguish, at least within the same font.
The font needs a repertoire of characters suitable for your language. Not all monospaced fonts can display all the accented letters used in Eastern Europe, or the Greek and Cyrillic alphabets. Asian scripts are generally not supported, because most of them are hard to fit into a rectangular grid.
Font spacing and weight are largely a personal preference. But they can be very important in how comfortable you feel with a font. Wider spacing between lines and characters can make text easier to read. Tighter spacing allows more text to fit on the screen. EditPad’s text layout settings do give you some control over a font’s spacing. The weight of the font is the thickness of the lines and curves it uses to draw characters. A light font with thin lines can be very elegant. But it can also be hard to read in low contrast situations, such as when using a laptop outdoors. A heavy or bold font would then remain readable. But it can also may overwhelm. If you prefer a heavy font you may also prefer a color palette with less contrast.
A new trend among programming fonts is to form ligatures between ASCII characters that are often combined into operators or other symbols in programming languages. EditPad 8 supports programming fonts that form ASCII ligatures when using the “monospaced left-to-right” text layout. These ligatures change the appearance of characters depending on the characters next to them. When two equals signs are followed by a greater-than sign the font could make the equals signs a bit wider so they connect and draw the greater-than sign as the head of an arrow to make those three characters look like one long arrow. They can also make certain meanings clearer. != means “not equal to” in many programming languages. A font could render the ! as the left half of the ≠ symbol and the = as the right half of the ≠ symbol so that together != are rendered as ≠. The file still contains the original ASCII characters. You can still put the cursor between the two and edit them separately.
Consolas is included with Windows Vista and later. It’s a great choice if you can’t download and install fonts on your (corporate) PC. It’s a great choice if you can pick any font you like too.
Consolas is a perfectly monospaced TrueType font, designed for ClearType, with clearly distinguishable characters. It supports all accented letters as well as the Cyrillic, Greek, and Armenian scripts. It even has box drawing symbols and supports the international phonetic alphabet. Characters are widely spaced and are rather small relative to other fonts. You’ll probably want to select a slightly larger font size with Consolas than with other fonts.
|Using the Consolas font in EditPad Pro|
Fira Code is probably the most well-known programming font supporting ASCII ligatures. It supports more ligatures than the other fonts on this page. It is a perfectly monospaced TrueType font, with clearly distinguishable characters. Its repertoire includes many accented letters as well as the Cyrillic and Greek scripts and box drawing symbols.
The font is very widely spaced. You may want to use a pixel or two of negative line spacing and maybe even one pixel of negative character spacing in EditPad’s text layout configuration to allow more text to fit on the screen.
Fira Code comes in 4 different weights. These are labeled, from lighter to heavier: Fira Code Light, Fira Code, Fira Code Retina, Fira Code Medium. The labels are appropriate. Fira Code Light is among the lightest of programming fonts. Fira Code Medium has a weight similar to fonts like Consolas. In EditPad you can select the weight you want via Options|Configure Text Layout. Selecting a weight via Options|Font is not reliable.
|Using the Fira Code font in EditPad Pro|
Monoid is an open source font developed by Andreas Larsen. It supports many ligatures. It is a perfectly monospaced TrueType font, with clearly distinguishable characters. Its repertoire includes many accented letters and the Cyrillic and Greek alphabets, but no supplemental Cyrillic or Greek characters.
The font is fairly light weight. Characters are tightly spaced. They are larger and particularly taller than with the other fonts on this page. This makes the font very easy to read. But fewer lines will fit the screen at a given font size.
|Using the Monoid font in EditPad Pro|
Bitstream Vera Sans Mono and DejaVu Sans Mono
Other than being quite a mouthful, Bitstream Vera Sans Mono is one of the fonts in Bitstream’s open source Vera font collection. It was originally designed for the Gnome project. You can get the font on the Gnome website, or right here.
Bitstream Vera Sans Mono is a perfectly monospaced TrueType font, designed for ClearType, with clearly distinguishable characters. Its repertoire is limited to the English alphabet with a basic set of accented letters. Characters are tightly spaced, resulting in larger characters for a given font size. Vera Sans Mono is heavier than the other fonts on this page.
This font may be freely copied in its unmodified form. If you modify it, you have to rename your version to something completely different. A wide number of derivatives are available. Most aim to expand the font’s repertoire to other alphabets. The DejaVu font family merges most of these. It adds a wide range of accented letters, the Greek, Cyrillic, and Armenian scripts, the international phonetic alphabet, mathematical symbols, and box drawing symbols.
Note that the Vera font family includes more fonts than Vera Sans Mono. The Sans Mono font is the only monospaced one. Not all the additional scripts supported by the derived font families are in the Mono variant of the font.
|Using the Bitstream Vera Sans Mono font in EditPad Pro|
|Using the DejaVu Sans Mono font in EditPad Pro|
Envy Code R
Envy Code R was created by Damian Guard, who makes it available as a free download on his blog. The download actually includes two sets of fonts, one of which is labeled “VS” for “Visual Studio”. The unlabeled variant works great with EditPad.
Envy Code R is a perfectly monospaced TrueType font, designed for ClearType. It supports many accented letters. Other alphabets are not supported. It does support the most common box drawing symbols. Characters are widely spaced, resulting in smaller characters for a given font size. Envy Code R is lighter than the other fonts on this page.
|Using the Envy Code R font in EditPad Pro|
Hasklig was developed specifically for Haskell programmers. Haskell makes extensive use of complicated operators such as =>, -<, and >>=. Hasklig makes these easier to read by forming ligatures. Hasklig limits its ligatures to those useful in Haskell. /= is rendered as ≠, for example, but != does not form a ligature. Fira Code supports all of Hasklig’s ligatures but Monoid does not.
Hasklig is a perfectly monospaced OpenType font. Its repertoire includes many accented letters as well as the Cyrillic and Greek scripts and box drawing symbols. It is widely spaced with short and wide characters. This allows more lines to fit on the screen despite the wide spacing.
Hasklig comes in 6 different weights. These are labeled, from lighter to heavier: Hasklig ExtraLight, Hasklig Light, Hasklig, Hasklig Medium, Hasklig Semibold, Hasklig Black. The regular Hasklig has a similar weight to fonts like Consolas. Hasklig Semibold appears rather bold and Hasklig Black seems unusable at font sizes typically used for programming. In EditPad you can select the weight you want via Options|Configure Text Layout. Selecting a weight via Options|Font is not reliable.
|Using the Hasklig font in EditPad Pro|
The Ultimate Oldschool PC Font Pack
The Ultimate Oldschool PC Font Pack is a large set of fonts that emulate the fonts used by character-based computers in the 1980s. These fonts are all monospaced because those character-based systems could only display text on a fixed character grid. These fonts are all heavy and some very heavy because they were designed for very low resolution screens. They are not monospaced when mixing plain and bold variants. The fonts don’t actually include bold variants. Windows simulates bold by making the characters wider. Since the fonts are heavy to begin with, it’s best to use these a palette that does not make any text bold.
The font pack contains three sets of fonts. The “Bm437” fonts are bitmapped fonts. They will appear so tiny in EditPad they’re not useful. The “Px437” fonts are TrueType fonts. Those are usable because you can change the font size to match your screen. At larger sizes they will appear as blocky as they did on the original systems in the 1980s. At smaller sizes ClearType will smooth their edges. The “Bm437” and “Px437” sets only support the characters in the DOS 437 code page. Though you can use them with any code page in EditPad, only ASCII characters, a limited set of accented letters for Western European languages, and the DOS box drawing symbols will be displayed correctly.
The “PxPlus” fonts are also TrueType fonts. Their character repertoire has been expanded significantly to include smart quotes, many accented letters, and the Greek, Cyrillic, and Hebrew scripts. If you like the fat and pixelated appearance of the old style fonts, then the “PxPlus” fonts are perfectly usable in EditPad.
For Hebrew letters to appear in the correct order, you need to select the text layout that matches your file. If your files were created by modern Windows software then they likely store text in logical order. EditPad’s complex script text layout will correctly support that, including bidirectional editing. Your files may store text in visual order if they were created on an old DOS system that only works from left to right. EditPad’s “monospaced left-to-right only” text layout will then display your files like the old software did. Editing may be difficult as you’d have to type Hebrew backwards.
|Using the PxPlus IBM VGA8 font in EditPad Pro|
Text Layout in EditPad 7 and 8
EditPad 7 introduced a new “text layout” system for configuring how EditPad displays your text. With the right set of options, you can make your text look just the way you like it, even with an imperfect font.
In the Options|Text Layout submenu you’ll see 8 text layouts by default. The “left-to-right” layout does what EditPad 6 and earlier did. It displays text from left to right and follows the font’s spacing exactly as the font’s designer intended. If you have syntax coloring mix bold and plain variants of fonts like Andale Mono or Lucida Console that aren’t perfectly monospaced, columns may end up shifted by a few pixels here and there. The default font is Courier New or Consolas, depending on your version of Windows. The “proportionally spaced left-to-right” layout does the same as “left-to-right”, except that the default font is Tahoma or Segoe UI. These text layouts do not support ligatures.
The “monospaced left-to-right” layout forces text to be monospaced. The text will say monospaced even if you use a proportionally spaced font. This text layout allows you to use fonts like Andale Mono or Lucida Console and have all columns line up perfectly. By default the bold characters will be squished together a little bit to fit within the grid of plain characters. This text layout also supports ASCII ligatures if the font uses one glyph per character when forming ligatures. All the fonts recommended on this page do. If you select one character in a ligature, the ligature is temporarily broken.
The “monospaced ideographic width” layout is intended to be used when editing text in Chinese, Japanese, or Korean. It is the same as the “monospaced left-to-right” layout, but forces all ASCII characters to be the same width as ideographs. Unicode fonts have special “full-width” variants of the ASCII characters for this purpose. EditPad 7 uses them when you select this text layout.
The other predefined text layouts are complex script layouts. These are primarily intended to support scripts that are not written strictly from left to right. You can use monospaced fonts with them. But the text is not forced to be monospaced and rectangular selections are not supported regardless of the font. ASCII ligatures are supported, even with fonts like DejaVu Sans Code that use a single glyph to render ligatures. If the font uses multiple glyphs to render a ligature, you can partially select a ligature.
For full control, select Options|Text Layout|Configure Text Layout in the menu. The configuration screen shown to the right appears. The “text layout and direction” group has the options relevant to this discussion. The “left-to-right” layout uses the “left-to-right only” option. The two monospaced layouts use the “monospaced left-to-right only” option. When you choose this option, the “ASCII characters with full ideographic width” checkbox determines whether ASCII characters are displayed normally or whether they’re stretched to be as wide as ideographs.
The “line and character spacing” group has the options for fine-tuning the display. The default layouts have everything set to zero, making EditPad Pro use the font’s default spacing. To fit more lines on a page, set the “line height” option to a negative number of pixels. To put more space between lines, set either “line height” or “extra space between lines” to a positive number of pixels. The difference is that when you select a block of line, increasing the space between lines will leave a gap between selected lines, while increasing the line height does not.
When using the “monospaced left-to-right only” text layout and direction with a font that isn’t perfectly monospaced, you can increase or decrease the character width to get the look you want. By default EditPad uses the width of the plain characters, which may cause bold characters to appear squished. If you add a pixel (or two for big font sizes) of character width, bold characters will look better. If you’re forcing a proportionally spaced font to be monospaced, the default spacing may be too wide to your taste if some characters like “m” are significantly wider than others like “i”. Set the character width to a negative number of pixels to space the characters more closely.
The best part of the text layout configuration in EditPad is that you can choose a different text layout for each file type. So you can use a strictly monospaced layout for file types with data in columns, while using the font’s exact spacing for other file types. You can configure as many (or as few) text layouts as you like.
|Text Layout Configuration|
|File type editor settings where you can select a text layout. The edit button opens the Text Layout Configuration screen.|