Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

For programming, I like to turn off font antialiasing (i.e. select the Monochrome option) because it makes the terminal text look a lot sharper at smaller font sizes. But then everything in the web browser looks worse.

Is there a way to have the best of both worlds, and have non-antialiased Terminal fonts, but antialiased web browser fonts?

share|improve this question
add comment

2 Answers 2

up vote 7 down vote accepted

You can control the antialiasing of fonts in ~/.fonts.conf. Doing so on an individual program basis requires some trickery, though.

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
  <dir>~/.fonts</dir>
  <alias>
    <family>XTerm</family>
    <prefer><family>Envy Code R</family></prefer>
    <default><family>monospace</family></default>
  </alias>
  <match target="pattern">
    <test name="family">
      <string>XTerm</string>
    </test>
    <edit mode="assign" name="family">
      <string>Envy Code R</string>
    </edit>
    <edit mode="assign" name="antialias">
      <bool>false</bool>
    </edit>
  </match>
</fontconfig>

This creates a font alias called XTerm which maps to Envy Code R but disables antialiasing. Run fc-cache ~/.fonts, and you should then be able to select that font in Terminal.

If you don't mind (or even prefer) the font used in the Terminal always being non-antialiased in any program, it's a bit simpler:

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
  <dir>~/.fonts</dir>
  <match target="pattern">
    <test name="family">
      <string>Envy Code R</string>
    </test>
    <edit mode="assign" name="antialias">
      <bool>false</bool>
    </edit>
  </match>
</fontconfig>

which doesn't require any other font hackery and insures that Envy Code R is always antialiased.

You can also constrain the font sizes where antialiasing can be performed:

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
  <dir>~/.fonts</dir>
  <match target="pattern">
    <test name="family">
      <string>Envy Code R</string>
    </test>
    <test name="size" qual="any" compare="less">
      <double>8</double>
    </test>
    <edit mode="assign" name="antialias">
      <bool>false</bool>
    </edit>
  </match>
</fontconfig>

to prevent antialiasing for Envy Code R when it is smaller than 8 point.

This article on the Arch Wiki shows how to tweak fonts in more detail. man fonts.conf is a reference to the configuration language, but without much in the way of practical examples.

share|improve this answer
    
Nice answer. fonts.conf can be very powerful, but the weird XML-based syntax makes it very difficult to use. –  Adam Byrtek Mar 30 '11 at 22:07
    
@Adam: True. It would be nice if there were a font configuration utility that let you build this nicely. –  geekosaur Mar 30 '11 at 22:12
add comment

I have spent lots of time mucking with font and system configurations to get a decent non-anti-aliased font in Ubuntu Terminal. One solution was to install a dedicated non-anti-aliased TrueType font, such as Terminus. Set your Terminal preferences to use the Terminus 8 font, or use the Ubuntu Advanced Settings tool to set the global console font to Terminus 8.

sudo apt-get install xfonts-terminus console-terminus

I've yet to find a solution that lets me use my favourite font (X11 6x13) in Terminal. In the mean time, I have been using pterm and Putty instead of Terminal. The only downside is that pterm and Putty don't support tabs.

share|improve this answer
add comment

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.