Friday, November 25, 2005

lm-sensors


# sudo apt-get install lm-sensors ksensors
# sudo sensors-detect

- "yes" to all questions

# cat /etc/modules

# I2C adapter drivers
i2c-nforce2
i2c-isa
# I2C chip drivers
eeprom
it87

# sudo /etc/init.d/module-init-tools
# sensors

it8712-isa-0290
Adapter: ISA adapter
VCore 1: +1.39 V (min = +1.42 V, max = +1.57 V) ALARM
VCore 2: +0.00 V (min = +2.40 V, max = +2.61 V) ALARM
+3.3V: +6.53 V (min = +3.14 V, max = +3.46 V) ALARM
+5V: +5.00 V (min = +4.76 V, max = +5.24 V)
+12V: +11.97 V (min = +11.39 V, max = +12.61 V)
-12V: -4.29 V (min = -12.63 V, max = -11.41 V) ALARM
-5V: -13.64 V (min = -5.26 V, max = -4.77 V) ALARM
Stdby: +4.95 V (min = +4.76 V, max = +5.24 V)
VBat: +3.07 V
fan1: 0 RPM (min = 0 RPM, div = 8)
fan2: 0 RPM (min = 664 RPM, div = 8)
fan3: 5625 RPM (min = 664 RPM, div = 8)
M/B Temp: +39°C (low = +15°C, high = +40°C) sensor = thermistor
CPU Temp: +41°C (low = +15°C, high = +45°C) sensor = thermistor
Temp3: +25°C (low = +15°C, high = +45°C) sensor = thermistor

- ALT+F2 in KDE -> 'ksensors'

Thursday, November 24, 2005

FreeNX server


# sudo vi /etc/apt/sources.list

deb http://seveas.ubuntulinux.nl/ breezy-seveas all

# sudo apt-get install freenx

- use NoMachine key for a simple setup or generate custom key /var/lib/nxserver/home/.ssh/client.id_dsa.key and import it to NX clients

# sudo nxserver --adduser username
# sudo nxserver --passwd username
# sudo vi /etc/ssh/sshd_config

AuthorizedKeysFile %h/.ssh/authorized_keys2

# sudo /etc/init.d/ssh restart

Wednesday, November 23, 2005

Firefox - user.js


//
// user.js
//
// for Mozilla Firefox 1.0.7+
//
// by Obi Bok
// ----------
// Gmail: obibok
// http://linuxtuneup.blogspot.com
//
// place in ~/.mozilla/firefox/xxxxxxxx.xxxx/
//

// set search from URL Bar using Google
user_pref("keyword.URL", "http://www.google.com/search?btnG=Google+Search&q=");

// display errors in web pages instead of dialog boxes
user_pref("browser.xul.error_pages.enabled", true);

// force frames to be resizable
user_pref("layout.frames.force_resizability", true);

// disable Find As You Type (Find must be invoked manually)
user_pref("accessibility.typeaheadfind", false);

// disable Find As You Type sound
user_pref("accessibility.typeaheadfind.enablesound", false);

// enable automatic highlight in Find As You Type while typing
user_pref("accessibility.typeaheadfind.autostart", true);

Tuesday, November 22, 2005

Firefox - userChrome.css


/*
* userChrome.css
*
* version 6.1.25
*
* for Mozilla Firefox 1.5+
* on Ubuntu 5.10 GNU/Linux
*
* by Obi Bok
* ----------
* Gmail: obibok
* http://linuxtuneup.blogspot.com
*
* place in ~/.mozilla/firefox/xxxxxxxx.xxxx/chrome/
*/

@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");



/* --- TOOLBAR --- */

/* merge 'Stop' and 'Reload' buttons
* 'Stop' must be placed before 'Reload' on toolbar
*/
#stop-button[disabled="true"] { display: none; }
#stop-button:not([disabled="true"]) + #reload-button { display: none; }

/* set URL bar color for high security */
#urlbar[level="high"] > .autocomplete-textbox-container {
background-color: #99FF99 !important;
color: black !important;
}

/* set URL bar color for low security */
#urlbar[level="low"] > .autocomplete-textbox-container {
background-color: #FFFF99 !important;
color: black !important;
}

/* set URL bar color for broken security */
#urlbar[level="broken"] > .autocomplete-textbox-container {
background-color: #FF3366 !important;
color: black !important;
}

/* remove text from 'Go' button */
#go-button .toolbarbutton-text { display: none !important; }



/* --- MESSAGE BAR --- */
/* top bar activated by XPI installs, popups, etc. */

/* set browser message bar margins, padding and colors */
browsermessage {
background-color: #FF0000 !important;
color: #FFFFFF !important;
margin: 0px !important;
padding: 0px !important;
}

/* set browser message bar text margins */
browsermessage .messageText { margin: 0px !important; }

/* set browser message bar 'Options' button margins */
browsermessage .messageButton { margin: 0px -3px 0px 0px !important; }

/* set browser message bar close button margins and padding */
browsermessage .tabs-closebutton {
margin: 0px 0px 0px 0px !important;
padding: 0px !important;
}



/* --- TAB BAR --- */

/* set tab bar margins and padding */
.tabbrowser-tabs {
height: 26px !important; /* set tab height when tab close button is disabled */
margin: 0px 0px -2px 0px !important;
padding: 0px !important;
}

/* set tab borders, margins and padding */
tab {
border: 2px inset !important;
border-color: inherit !important;
margin: 0px !important;
padding: 0px 0px 1px 2px !important; /* set favicon and text placement; must be set the same for active tab */
}

/* disable theme support in tabs to set their background colors */
tab { -moz-appearance: none !important; }

/* set unread tab color
* must be defined before active and visited
*/
tab:not([selected="true"]) { color: #0000FF !important; }

/* set active tab colors, margins and padding */
tab[selected="true"] {
margin: 0px !important;
padding: 0px 0px 1px 2px !important; /* same as set for inactive tab */
background-color: #000000 !important;
color: #FFFFFF !important;
}

/* set visited tab color */
tab[selected="false"] { color: #000000 !important; }

/* set busy tab color */
tab[busy] { color: #808080 !important; }

/* set inactive tab hover backround color */
tab:not([selected="true"]):hover { background-color: #FFFFFF !important; }

/* set tab colors for errors 404 and 403 */
.tab-text[value="404 Not Found"], .tab-text[value="403 Access Denied"] {
background-color: #FF0000 !important;
color: #FFFFFF !important;
}

/* disable theme support in tab progress bar to set its background color */
tab progressmeter, .progress-bar { -moz-appearance: none !important; }

/* set tab progress bar color in unread tabs */
tab:not([selected="true"]) .progress-bar { background-color: #0000FF !important; }

/* set tab progress bar color in active tabs */
tab[selected="true"] .progress-bar { background-color: #000000 !important; }

/* set tab progress bar color in visited tabs */
tab[selected="false"] .progress-bar { background-color: #FFFFFF !important; }

/* set tab bar (and message bar) close button color */
.tabs-closebutton { background-color: inherit !important; }



/* --- FIND TOOLBAR --- */

/* set find toolbar size */
#find-field-container, #find-field { -moz-box-flex: 1 !important; } /* any value >0 works */

/* remove text from 'Find Next' and 'Find Previous' buttons */
#find-next .toolbarbutton-text, #find-previous .toolbarbutton-text { display: none !important; }

/* remove status text from find toolbar */
#find-status { display: none !important; }

/* set find toolbar close button color */
#find-closebutton { background-color: inherit !important; }



/* --- STATUS BAR --- */

/* remove security info button from status bar */
#security-button { display: none !important; }



/* --- FULL SCREEN --- */

/* show menu bar in full screen mode
* useful when navigation buttons are on menu bar
*/
#toolbar-menubar { visibility: visible !important; }

/* show status bar in full screen mode */
#status-bar { visibility: visible !important; }



/* --- OTHER --- */

/* remove 'Show Password' button from Password Manager */
#togglePasswords { display: none; }

Monday, November 21, 2005

Keyboard - Win-keys start menu


KDE Control Center->Regional & Accessibility->Xkb Options

[X] Enable xkb options
- Third level choosers
* Press any of the Win-keys to choose 3rd level

KDE Control Center->Regional & Accessibility->Keyboard Shortcuts
Shortcut Schemes->Global Shortcuts


- Panel
* Popup Launch Menu

Shortcut for Selected Action

(O) Custom

[Advanced]

(O) Alternate shortcut

- press the Win-key (ISO_Level3_Shift)

***

- alternatively, when using custom .Xmodmap, substitute

keycode 115 = ISO_Level3_Shift
keycode 116 = ISO_Level3_Shift

Sunday, November 20, 2005

Kernel - CPU optimized


# sudo apt-get install linux-k7
# AMD Duron, Athlon (32-bit Linux distros only)

linux-686 # Intel Celeron, Pentium I, II, III, IV
linux-smp # multi CPUs and dual core CPUs
linux-386 # max compatibility, older systems (non-optimized default)

# sudo apt-get install linux-restricted-modules-x.x.xx-x-arch-nvidia-legacy
# NVIDIA legacy kernel driver supporting TNT, TNT2, GeForce and GeForce2 chips

Saturday, November 19, 2005

TV-out - NVIDIA


# sudo vi /etc/X11/xorg.conf

Section "Device"
Identifier "video card"
BusID "PCI:1:0:0"
# binary 'nvidia' driver must be used
Driver "nvidia"
# force display(s) detection; useful for KVMs
Option "ConnectedMonitor" "CRT, TV"
# TV-out mandatory settings
Option "TwinView"
Option "TwinViewOrientation" "Clone"
# MetaModes: "CRT,TV @virtual; CRT,TV; ..."
Option "MetaModes" "1280x1024,1024x768 @1280x1024; 1024x768,1024x768; 800x600,800x600; 640x480,NULL"
Option "SecondMonitorHorizSync" "30-50"
Option "SecondMonitorVertRefresh" "60"
# TV-out other/optional settings
#Option "TVOutFormat" "SVIDEO"
#Option "TVStandard" "NTSC-M"
#Option "TVOverScan" "1.0" # decimal range 0.0 to 1.0
EndSection

Friday, November 18, 2005

Icons - KDE


- get icons from kde-look.org

- put them in

* for a single user

~/.icons/new_icons_dir/

* for a global system setting

/usr/share/icons/new_icons_dir/

- select new icons

KDE Control Center: Appearance & Themes->Icons->Theme

Thursday, November 17, 2005

Mouse cursors


- get mouse cursors from kde-look.org

- put them in

* for a single user

~/.icons/new_cursors_dir/cursors

* for a global system setting

/usr/share/icons/new_cursors_dir/cursors

- select the new theme

KDE Control Center: Peripherals->Mouse->Mouse Theme

- sync X cursor (visible on X login screen, in Firefox, etc.) with KDE's

# cd ~/.icons
# mkdir default
# vi default/index.theme

[Icon Theme]
Inherits=new_theme

Wednesday, November 16, 2005

Swap like RAID 0


# sudo vi /etc/fstab

/dev/sda2 none swap sw,pri=1 0 0
/dev/sdb2 none swap sw,pri=1 0 0

- if partitions are on different drives and maybe separate controllers, read and write throughput should theoretically nearly double

Monday, November 14, 2005

Monitor power management


# sudo vi /etc/X11/xorg.conf

Section "ServerLayout"
Option "OffTime" "10"

- takes effect as soon as X login screen is up and in misc window managers which don't have power management settings

Sunday, November 13, 2005

KVM switch - mouse problems fix


- press CTRL+ALT+F1 to switch away from X, then log in

# sudo rmmod psmouse
# sudo modprobe psmouse proto=imps
# or 'proto=bare' (disables mouse wheel)

- permanent fix on boot

# sudo vi /etc/modules

psmouse proto=imps

- alternatively

# sudo vi /etc/modprobe.d/options

options psmouse proto=imps

***

- alternatively pass psmouse.proto=imps to kernel in LILO or GRUB

Saturday, November 12, 2005

DMA - CD/DVD


# sudo vi /etc/hdparm.conf

/dev/cdrom {
dma = on
}

Friday, November 11, 2005

Login screen theme - KDE (KDM)


- put themes in

/usr/share/apps/kdm/themes/new_theme/

- point to the new theme

# sudo vi /etc/kde3/kdm/kdmrc

[X-*-Greeter]
Theme=/usr/share/apps/kdm/themes/new_theme

Thursday, November 10, 2005

Firefox form widgets


- download Firefox form widgets from linuxart.com

(there are other hacked widgets to be found on the net)

- extract firefox-forms.tar.gz to

/usr/lib/mozilla-firefox/res/

**

- for Firefox 1.5 tarball from mozilla.org use widgets from http://koti.mbnet.fi/~ots/artwork/

Wednesday, November 09, 2005

Keyboard: 'Win' keys, media buttons - Logitech Ultra-X


# vi ~/.kde/Autostart/Xmodmap

#!/bin/sh
xmodmap ~/.Xmodmap

# vi ~/.Xmodmap

keycode 8 =
keycode 9 = Escape
keycode 10 = 1 exclam
keycode 11 = 2 at
keycode 12 = 3 numbersign
keycode 13 = 4 dollar
keycode 14 = 5 percent
keycode 15 = 6 asciicircum
keycode 16 = 7 ampersand
keycode 17 = 8 asterisk
keycode 18 = 9 parenleft
keycode 19 = 0 parenright
keycode 20 = minus underscore
keycode 21 = equal plus
keycode 22 = BackSpace Terminate_Server
keycode 23 = Tab ISO_Left_Tab
keycode 24 = q Q
keycode 25 = w W
keycode 26 = e E
keycode 27 = r R
keycode 28 = t T
keycode 29 = y Y
keycode 30 = u U
keycode 31 = i I
keycode 32 = o O
keycode 33 = p P
keycode 34 = bracketleft braceleft
keycode 35 = bracketright braceright
keycode 36 = Return
keycode 37 = Control_L
keycode 38 = a A
keycode 39 = s S
keycode 40 = d D
keycode 41 = f F
keycode 42 = g G
keycode 43 = h H
keycode 44 = j J
keycode 45 = k K
keycode 46 = l L
keycode 47 = semicolon colon
keycode 48 = apostrophe quotedbl
keycode 49 = grave asciitilde
keycode 50 = Shift_L
keycode 51 = backslash bar
keycode 52 = z Z
keycode 53 = x X
keycode 54 = c C
keycode 55 = v V
keycode 56 = b B
keycode 57 = n N
keycode 58 = m M
keycode 59 = comma less
keycode 60 = period greater
keycode 61 = slash question
keycode 62 = Shift_R
keycode 63 = KP_Multiply XF86_ClearGrab
keycode 64 = Alt_L Meta_L
keycode 65 = space
keycode 66 = Caps_Lock
keycode 67 = F1 XF86_Switch_VT_1
keycode 68 = F2 XF86_Switch_VT_2
keycode 69 = F3 XF86_Switch_VT_3
keycode 70 = F4 XF86_Switch_VT_4
keycode 71 = F5 XF86_Switch_VT_5
keycode 72 = F6 XF86_Switch_VT_6
keycode 73 = F7 XF86_Switch_VT_7
keycode 74 = F8 XF86_Switch_VT_8
keycode 75 = F9 XF86_Switch_VT_9
keycode 76 = F10 XF86_Switch_VT_10
keycode 77 = Num_Lock Pointer_EnableKeys
keycode 78 = Scroll_Lock
keycode 79 = KP_Home KP_7
keycode 80 = KP_Up KP_8
keycode 81 = KP_Prior KP_9
keycode 82 = KP_Subtract XF86_Prev_VMode
keycode 83 = KP_Left KP_4
keycode 84 = KP_Begin KP_5
keycode 85 = KP_Right KP_6
keycode 86 = KP_Add XF86_Next_VMode
keycode 87 = KP_End KP_1
keycode 88 = KP_Down KP_2
keycode 89 = KP_Next KP_3
keycode 90 = KP_Insert KP_0
keycode 91 = KP_Delete KP_Decimal
keycode 92 =
keycode 93 = Mode_switch
keycode 94 = less greater bar brokenbar bar brokenbar
keycode 95 = F11 XF86_Switch_VT_11
keycode 96 = F12 XF86_Switch_VT_12
keycode 97 = Home
keycode 98 = Up
keycode 99 = Prior
keycode 100 = Left
keycode 101 =
keycode 102 = Right
keycode 103 = End
keycode 104 = Down
keycode 105 = Next
keycode 106 = Insert
keycode 107 = Delete
keycode 108 = KP_Enter
keycode 109 = Control_R
keycode 110 = Pause Break
keycode 111 = Print Sys_Req
keycode 112 = KP_Divide XF86_Ungrab
keycode 113 = Alt_R Meta_R
keycode 114 =
keycode 115 = Super_L
keycode 116 = Super_R
keycode 117 = Menu
keycode 118 =
keycode 119 =
keycode 120 =
keycode 121 =
keycode 122 =
keycode 123 =
keycode 124 = ISO_Level3_Shift
keycode 125 = NoSymbol Alt_L
keycode 126 = KP_Equal
keycode 127 = NoSymbol Super_L
keycode 128 = NoSymbol Hyper_L
keycode 129 =
keycode 130 =
keycode 131 =
keycode 132 =
keycode 133 =
keycode 134 =
keycode 135 =
keycode 136 =
keycode 137 =
keycode 138 =
keycode 139 =
keycode 140 =
keycode 141 =
keycode 142 =
keycode 143 =
keycode 144 =
keycode 145 =
keycode 146 =
keycode 147 =
keycode 148 =
keycode 149 =
keycode 150 =
keycode 151 =
keycode 152 =
keycode 153 =
keycode 154 =
keycode 155 =
keycode 156 = NoSymbol Meta_L
keycode 157 =
keycode 158 =
keycode 159 =
keycode 160 = XF86AudioMute
keycode 161 =
keycode 162 = XF86AudioPlay XF86AudioPause
keycode 163 =
keycode 164 =
keycode 165 =
keycode 166 =
keycode 167 =
keycode 168 =
keycode 169 =
keycode 170 =
keycode 171 =
keycode 172 =
keycode 173 =
keycode 174 =
keycode 175 =
keycode 176 =
keycode 177 =
keycode 178 = XF86WWW
keycode 179 =
keycode 180 =
keycode 181 =
keycode 182 =
keycode 183 =
keycode 184 =
keycode 185 =
keycode 186 =
keycode 187 =
keycode 188 =
keycode 189 =
keycode 190 =
keycode 191 =
keycode 192 =
keycode 193 =
keycode 194 =
keycode 195 =
keycode 196 =
keycode 197 =
keycode 198 =
keycode 199 =
keycode 200 =
keycode 201 =
keycode 202 =
keycode 203 =
keycode 204 =
keycode 205 =
keycode 206 =
keycode 207 =
keycode 208 =
keycode 209 =
keycode 210 =
keycode 211 =
keycode 212 =
keycode 213 =
keycode 214 =
keycode 215 =
keycode 216 =
keycode 217 =
keycode 218 =
keycode 219 =
keycode 220 =
keycode 221 =
keycode 222 =
keycode 223 =
keycode 224 =
keycode 225 =
keycode 226 =
keycode 227 =
keycode 228 =
keycode 229 =
keycode 230 = XF86Favorites
keycode 231 =
keycode 232 =
keycode 233 =
keycode 234 =
keycode 235 =
keycode 236 = XF86Mail
keycode 237 = XF86AudioMedia
keycode 238 =
keycode 239 =
keycode 240 =
keycode 241 =
keycode 242 =
keycode 243 =
keycode 244 =
keycode 245 =
keycode 246 =
keycode 247 =
keycode 248 =
keycode 249 =
keycode 250 =
keycode 251 =
keycode 252 =
keycode 253 =
keycode 254 =
keycode 255 =


To clear modifier keys (mod3, mod4, mod5):

# xmodmap -e "clear mod3"


To use Win-keys as modifiers, add at the end of .Xmodmap:

add mod3 = Super_L


To get key codes (print contents of X events):

# xev

Tuesday, November 08, 2005

Sudoed apps look


# sudo -i

# ln -sf /home/user/.kderc
# ln -sf /home/user/.gtk_qt_engine_rc
# ln -sf /home/user/.gtkrc-2.0
# ln -sf /home/user/.gtkrc
# ln -sf /home/user/.fonts.conf
# ln -sf /home/user/.icons

# cd .kde/share/config/
# ln -sf /home/user/.kde/share/config/kdeglobals
# ln -sf /home/user/.kde/share/config/konquerorrc
# ln -sf /home/user/.kde/share/config/kdesktoprc
# ln -sf /home/user/.kde/share/config/kcminputrc
# ln -sf /home/user/.kde/share/config/khelpcenterrc

# cd .kde/share/apps/
# ln -sf /home/user/.kde/share/apps/konqueror
# ln -sf /home/user/.kde/share/apps/konqiconview
# ln -sf /home/user/.kde/share/apps/konqlistview
# ln -sf /home/user/.kde/share/apps/konqsidebartng

- for KDE 3.5.1 link everything in /root/share/config/ instead of /root/.kde/share/config/ (bug or feature?)

Monday, November 07, 2005

GTK1 - themes and fonts


- install GTK+ theme switcher

# sudo apt-get install gtk-theme-switch

- install themes (e.g. gtk-engines-industrial, gtk-engines-geramik, etc.)

# sudo apt-get install gtk-engines-theme

- run switcher

# switch

***

- alternatively, edit ~/.gtkrc (or /etc/gtk/gtkrc for global settings)

style "user-font"
{
fontset="-*-helvetica-medium-r-*-*-10-*-*-*-*-*-*-*"
}
widget_class "*" style "user-font"

- other good picks:

-*-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*
-*-terminus-medium-r-*-*-12-*-*-*-*-*-*
-*-clean-medium-r-*-*-12-*-*-*-*-*-*-*
-*-fixed-medium-r-*-*-12-*-*-*-*-*-*-*
-*-fixed-medium-r-*-*-14-*-*-*-*-*-*-*
-*-fixed-medium-r-semicondensed-*-12-*-*-*-*-*-*
-*-lucida-medium-r-*-*-12-*-*-*-*-*-*-*

- to view fonts:

# xfontsel

Sunday, November 06, 2005

Fonts - Firefox


sharp non-antialiased fonts for LCDs at 1280x1024 / 96 dpi

Proportional: Sans Serif, size: 16
Serif: Times New Roman
Sans-serif: Arial
Monospace: Courier New, size: 13
Display resolution: 96 dpi
Minimum font size: 9

- additional tweaking through Firefox's about:config

font.FreeType2.enable
font.FreeType2.autohinted
font.FreeType2.unhinted
font.freetype2.shared-library

font.antialias.min
font.embedded_bitmaps.max

font.scale.aa_bitmap.enable
font.scale.aa_bitmap.always
font.scale.aa_bitmap.dark_text.gain
font.scale.aa_bitmap.dark_text.min
font.scale.aa_bitmap.light_text.gain
font.scale.aa_bitmap.light_text.min
font.scale.aa_bitmap.min
font.scale.aa_bitmap.oversize
font.scale.aa_bitmap.undersize

font.scale.bitmap.min
font.scale.bitmap.oversize
font.scale.bitmap.undersize

font.scale.tt_bitmap.dark_text.gain
font.scale.tt_bitmap.dark_text.min

font.scale.outline.min

Saturday, November 05, 2005

Fonts - Konqueror


sharp non-antialiased fonts for LCDs at 1280x1024 / 96 dpi

Settings->Configure Konqueror->Appearance

Standard font: Arial
Font size: 8

Settings->Configure Konqueror->Fonts

Minimum font size: 8
Medium font size: 11

Standard: Arial
Fixed: Courier New
Serif: Times New Roman
Sans serif: Arial
Cursive: Comic Sans MS
Fantasy: Impact

- use the same settings in KDE Help Center

Friday, November 04, 2005

Fonts - LCD optimized (similar to ClearType)


https://wiki.ubuntu.com/Fonts


- set font rendering

# sudo dpkg-reconfigure fontconfig

- select: native, then: never, then: yes (if you want to use fonts like Artwiz)

***

- edit the font config file

# vi ~/.fonts.conf

< ?xml version="1.0"? >
< !DOCTYPE fontconfig SYSTEM "fonts.dtd" >
< fontconfig >

< !--
.fonts.conf
release 6.3.23
Licensed under GNU GPL
================================
LCD optimized 96 dpi
"Sharp'N'Clear" font settings
with emphasis on 'msttcorefonts'

tested on Ubuntu GNU/Linux 5.10
================================
by Obi Bok
Gmail: obibok
http://linuxtuneup.blogspot.com
================================
Why was this conceived?

- some font families look better hinted by Byte Code Interpreter (BCI)
while other fonts look better hinted by Auto-Hinter
- hinting type affects italic and bold fonts differently
- antialiasing needs to be adjusted according to font families and sizes

Essentially, there is no one single rule that works for all fonts.

NOTE:
- Verdana @ 8pt doesn't render '2' and '6' right
- Arial shows 'Z' distorted in Firefox 1.5
-- >

< !--
Make font sizes match the dpi set in Xorg.

Increase or decrease this value if fonts are too small or too large
for your screen resolution.

FIXME: this only affects QT-based apps?
-- >
< match target="pattern" >
< edit name="dpi" mode="assign" >
< double > 96 < /double >
< /edit >
< /match >

< !--
Enable anti-aliasing.

This only works for outline and scalable fonts.
Bitmap and PostScript fonts do not get anti-aliased.

FIXME: is this correct?
-- >
< match target="font" >
< edit name="antialias" mode="assign" >
< bool > true < /bool >
< /edit >
< /match >

< !--
Set sub-pixel order if not detected.

"X knows the sub pixel order already, and if this is enabled as well,
Freetype produces some very strange results. However, if you do still
have problems, consider (...) 'rgb' (the standard for LCD monitors),
'bgr' (unusual), 'vrgb' (vertical rgb, if you have a monitor that
has been rotated by 90 degrees[1]), 'vgbr' (as vrgb, but very rare)."
< http://www.linuxquestions.org/linux/answers/Hardware/ LCD_TFT_Monitor_Configuration_in_X_Org >

Find out your LCD's sub-pixel order:
< http://grc.com/image/cleartype2c.gif >
-- >
< match target="font" >
< test qual="all" name="rgba" compare="eq" >
< const > unknown < /const >
< /test >
< edit name="rgba" mode="assign" >
< const > rgb < /const >
< /edit >
< /match >

< !--
Sub-pixel hinting via BCI enabled by default if compiled in.

"Whole-pixel anti-aliasing does not represent a useful solution for
improving small point-size type. (...) By 'borrowing' sub-pixels from
adjacent whole pixels, we can fine-tune the placement and width of typeface
features with three times more horizontal accuracy then ever before!"
< http://grc.com/ctwhat.htm >
-- >

< !--
Disable anti-aliasing for select fonts based on size and style.

| font | WinXP | Linux |
=========================================
Andale Mono IPA 14 13
Arial 12 13
Arial Black 12 -
Arial Narrow 14 13
Berling Antiqua 12 13
Book Antiqua 12 13
Bookdings 0 ?
Bookman Old Style 22 13
Century Gothic 16 16
Comic Sans MS 11 9/11
Courier New 26 22
Franklin Gothic Medium 12 10/12
Frutiger Linotype 12 10/12
Garamond 18 13/19
Georgia 12 12/13
Impact 16 0
Kartika 12 16
Lucida Console 12 13
Lucida Sans Typewriter 12 12
Lucida Sans Unicode 12 10/13
Marlett ? ?
Microsoft Sans Serif 12 12/13
Palatino Linotype 12 13
SylfaenARM - 13
Symbol 12 ?
Tahoma 12 12/13
Times New Roman 12 13
Trebuchet MS 12 12
Verdana 12 12
Vrinda 12 17
Webdings 20 ?
Wingdings 20 ?
=========================================

"The relationship of pixels to points depends on the number of pixels
per inch, which is typically some 'standard' value corresponding to
default screen fonts. For example, MS Windows has two standard sets of
screen fonts initially designed for IBM display systems: 'small' (VGA)
and 'large' (8514/A). 'Small' fonts are 96 pixels per inch, 'large' are
120. Macintosh systems render type at a nominal 72 pixels per inch, i.e.
one pixel = one point. Some display systems using scalable screen fonts
allow fine tuning of pixels per inch to suit user preferences."
< http://www.hpaa.com/css1/pxnpts.asp >

X pt * 96 dpi / 72 dpi = Y px
-- >

< !--
font group #1: normal roman anti-aliased above 10pt/13.4px
-- >
< match target="font" >
< test qual="any" name="family" compare="eq" >
< string > Franklin Gothic Medium < /string >
< string > Frutiger Linotype < /string >
< !-- Lucida Sans Unicode has no italic and uses artificial oblique -- >
< string > Lucida Sans Unicode < /string >
< /test >
< test qual="any" name="pixelsize" compare="less_eq" >
< double > 13.4 < /double >
< /test >
< test qual="any" name="weight" compare="less_eq" >
< const > medium < /const >
< /test >
< test qual="any" name="slant" compare="eq" >
< const > roman < /const >
< /test >
< edit name="antialias" mode="assign" >
< bool > false < /bool >
< /edit >
< /match >

< !--
font group #2: normal roman anti-aliased above 11pt/14.7px

Must use 15px instead of 14.7px for this to work in QT-based apps
-- >
< match target="font" >
< test qual="any" name="family" compare="eq" >
< !-- Comic Sans MS has no italic and uses artificial oblique -- >
< string > Comic Sans MS < /string >
< /test >
< test qual="any" name="pixelsize" compare="less_eq" >
< double > 15 < /double >
< /test >
< test qual="any" name="weight" compare="less_eq" >
< const > medium < /const >
< /test >
< test qual="any" name="slant" compare="eq" >
< const > roman < /const >
< /test >
< edit name="antialias" mode="assign" >
< bool > false < /bool >
< /edit >
< /match >

< !--
font group #3: normal roman anti-aliased above 12pt/16px

Must use at least 16.1px instead of 16px for this to work in Firefox
-- >
< match target="font" >
< test qual="any" name="family" compare="eq" >
< string > Georgia < /string >
< string > Lucida Sans < /string >
< string > Lucida Sans Typewriter < /string >
< !-- Microsoft Sans Serif has no italic and uses artificial oblique -- >
< string > Microsoft Sans Serif < /string >
< !-- Tahoma has no italic and uses artificial oblique -- >
< string > Tahoma < /string >
< string > Trebuchet MS < /string >
< string > Verdana < /string >
< /test >
< test qual="any" name="pixelsize" compare="less_eq" >
< double > 16.1 < /double >
< /test >
< test qual="any" name="weight" compare="less_eq" >
< const > medium < /const >
< /test >
< test qual="any" name="slant" compare="eq" >
< const > roman < /const >
< /test >
< edit name="antialias" mode="assign" >
< bool > false < /bool >
< /edit >
< /match >

< !--
font group #4: normal roman anti-aliased above 13pt/17.4px
-- >
< match target="font" >
< test qual="any" name="family" compare="eq" >
< string > Arial < /string >
< string > Arial Narrow < /string >
< string > Berling Antiqua < /string >
< string > Book Antiqua < /string >
< string > Bookman Old Style < /string >
< string > Garamond < /string >
< !-- Lucida Console has no italic and uses artificial oblique -- >
< string > Lucida Console < /string >
< string > Palatino Linotype < /string >
< string > SylfaenARM < /string >
< string > Times New Roman < /string >
< /test >
< test qual="any" name="pixelsize" compare="less_eq" >
< double > 17.4 < /double >
< /test >
< test qual="any" name="weight" compare="less_eq" >
< const > medium < /const >
< /test >
< test qual="any" name="slant" compare="eq" >
< const > roman < /const >
< /test >
< edit name="antialias" mode="assign" >
< bool > false < /bool >
< /edit >
< /match >

< !--
font group #5: normal roman anti-aliased above 16pt/21.4px
-- >
< match target="font" >
< test qual="any" name="family" compare="eq" >
< string > Century Gothic < /string >
< string > Kartika < /string >
< /test >
< test qual="any" name="pixelsize" compare="less_eq" >
< double > 21.4 < /double >
< /test >
< test qual="any" name="weight" compare="less_eq" >
< const > medium < /const >
< /test >
< test qual="any" name="slant" compare="eq" >
< const > roman < /const >
< /test >
< edit name="antialias" mode="assign" >
< bool > false < /bool >
< /edit >
< /match >

< !--
font group #6: normal roman anti-aliased above 17pt/23px
-- >
< match target="font" >
< test qual="any" name="family" compare="eq" >
< string > Vrinda < /string >
< /test >
< test qual="any" name="pixelsize" compare="less_eq" >
< double > 23 < /double >
< /test >
< test qual="any" name="weight" compare="less_eq" >
< const > medium < /const >
< /test >
< test qual="any" name="slant" compare="eq" >
< const > roman < /const >
< /test >
< edit name="antialias" mode="assign" >
< bool > false < /bool >
< /edit >
< /match >

< !--
font group #7: normal roman anti-aliased above 22pt/29.4px
-- >
< match target="font" >
< test qual="any" name="family" compare="eq" >
< string > Courier New < /string >
< /test >
< test qual="any" name="pixelsize" compare="less_eq" >
< double > 29.4 < /double >
< /test >
< test qual="any" name="weight" compare="less_eq" >
< const > medium < /const >
< /test >
< test qual="any" name="slant" compare="eq" >
< const > roman < /const >
< /test >
< edit name="antialias" mode="assign" >
< bool > false < /bool >
< /edit >
< /match >

< !--
font group #8: bold roman anti-aliased above 9pt/12px
-- >
< match target="font" >
< test qual="any" name="family" compare="eq" >
< string > Georgia < /string >
< /test >
< test qual="any" name="pixelsize" compare="less_eq" >
< double > 12 < /double >
< /test >
< test qual="any" name="weight" compare="more" >
< const > medium < /const >
< /test >
< test qual="any" name="slant" compare="eq" >
< const > roman < /const >
< /test >
< edit name="antialias" mode="assign" >
< bool > false < /bool >
< /edit >
< /match >

< !--
font group #9: bold roman anti-aliased above 10pt/13.4px
-- >
< match target="font" >
< test qual="any" name="family" compare="eq" >
< string > Tahoma < /string >
< string > Verdana < /string >
< /test >
< test qual="any" name="pixelsize" compare="less_eq" >
< double > 13.4 < /double >
< /test >
< test qual="any" name="weight" compare="more" >
< const > medium < /const >
< /test >
< test qual="any" name="slant" compare="eq" >
< const > roman < /const >
< /test >
< edit name="antialias" mode="assign" >
< bool > false < /bool >
< /edit >
< /match >

< !--
font group #10: bold roman anti-aliased above 12pt/16px
-- >
< match target="font" >
< test qual="any" name="family" compare="eq" >
< string > Courier New < /string >
< /test >
< test qual="any" name="pixelsize" compare="less_eq" >
< double > 16 < /double >
< /test >
< test qual="any" name="weight" compare="more" >
< const > medium < /const >
< /test >
< test qual="any" name="slant" compare="eq" >
< const > roman < /const >
< /test >
< edit name="antialias" mode="assign" >
< bool > false < /bool >
< /edit >
< /match >

< !--
Enable FreeType Auto-Hinter for select fonts.

Auto-Hinter is disabled by default if Bytecode Interpreter was compiled in.
Some Linux "native" fonts look better hinted by Auto-Hinter,
usually in sizes 11pt-13pt; others look better hinted by BCI.
-- >

< !--
Set Auto-Hinter to full hinting style.

'slight' and 'medium' hinting often produce pixel discoloration.
-- >
< match target="font" >
< edit name="hintstyle" mode="assign" >
< const > hintfull < /const >
< /edit >
< /match >

< !--
font group #11: hinted via Auto-Hinter
-- >
< match target="font" >
< test qual="any" name="family" compare="eq" >
< string > Bitstream Charter < /string >
< string > Courier 10 Pitch < /string >
< string > DejaVu Sans Condensed < /string >
< string > DejaVu Serif Condensed < /string >
< string > FreeMono < /string >
< string > FreeSans < /string >
< string > FreeSerif < /string >
< string > Luxi Mono < /string >
< string > Luxi Sans < /string >
< string > Luxi Serif < /string >
< string > MgOpen Canonica < /string >
< string > MgOpen Cosmetica < /string >
< string > MgOpen Modata < /string >
< string > MgOpen Moderna < /string >
< string > URW Bookman L < /string >
< string > URW Chancery L < /string >
< string > URW Gothic L < /string >
< string > URW Palladio L < /string >
< /test >
< edit name="autohint" mode="assign" >
< bool > true < /bool >
< /edit >
< /match >

< !--
font group #12: normal italic hinted via Auto-Hinter at 9-10pt

Arial hinted via BCI at 9pt has distorted 'y', at 10pt - '2'
-- >
< match target="font" >
< test qual="any" name="family" compare="eq" >
< string > Arial < /string >
< /test >
< test qual="any" name="pixelsize" compare="more_eq" >
< double > 12 < /double >
< /test >
< test qual="any" name="pixelsize" compare="less_eq" >
< double > 13.4 < /double >
< /test >
< test qual="any" name="weight" compare="less_eq" >
< const > medium < /const >
< /test >
< test qual="any" name="slant" compare="not_eq" >
< const > roman < /const >
< /test >
< edit name="autohint" mode="assign" >
< bool > true < /bool >
< /edit >
< /match >

< !--
font group #13: normal italic hinted via Auto-Hinter at 12pt

This fixes distorted 'K'
-- >
< match target="font" >
< test qual="any" name="family" compare="eq" >
< string > Book Antiqua < /string >
< /test >
< test qual="any" name="pixelsize" compare="eq" >
< double > 16 < /double >
< /test >
< test qual="any" name="weight" compare="less_eq" >
< const > medium < /const >
< /test >
< test qual="any" name="slant" compare="not_eq" >
< const > roman < /const >
< /test >
< edit name="autohint" mode="assign" >
< bool > true < /bool >
< /edit >
< /match >

< !--
font group #14: normal italic hinted via Auto-Hinter at all sizes
-- >
< match target="font" >
< test qual="any" name="family" compare="eq" >
< !-- 10, 11, 12 -- >
< string > Frutiger Linotype < /string >
< !-- 8-9: 'z', '2'; 10-15, 17, 19: 'z' -- >
< string > Times New Roman < /string >
< !-- 9-10: 'N' 'Q'; 12: 'w', 'C', 'D', 'O', 'Q', 'R', '2', '9', '0' -- >
< string > Verdana < /string >
< /test >
< test qual="any" name="weight" compare="less_eq" >
< const > medium < /const >
< /test >
< test qual="any" name="slant" compare="not_eq" >
< const > roman < /const >
< /test >
< edit name="autohint" mode="assign" >
< bool > true < /bool >
< /edit >
< /match >

< !--
Set minimum allowed size to avoid illegible fonts.
-- >
< !-- 7pt in QT-based apps -- >
< match target="pattern" >
< test qual="any" name="size" compare="less" >
< double > 7 < /double >
< /test >
< edit name="size" mode="assign" >
< double > 7 < /double >
< /edit >
< /match >

< !-- 9.4px (7pt) in GTK-based apps -- >
< match target="pattern" >
< test qual="any" name="pixelsize" compare="less" >
< double > 9.4 < /double >
< /test >
< edit name="pixelsize" mode="assign" >
< double > 9.4 < /double >
< /edit >
< /match >

< !--
TODO: Create rules limiting minimum sizes for these *bold* fonts:

Andale Mono | Andale Mono IPA
Arial
Arial Narrow
Berling Antiqua
Book Antiqua
Bookman Old Style
Century Gothic
Comic Sans MS
Courier New
Franklin Gothic Medium
Frutiger Linotype
Garamond
Georgia
Kartika
Lucida Console
Lucida Sans Typewriter
Lucida Sans Unicode
Microsoft Sans Serif
Palatino | Palatino Linotype
SylfaenARM
Tahoma
Times New Roman
Trebuchet MS
Verdana
Vrinda
-- >

< !--
font group #15: bold fonts no smaller than 10.7px (8pt)

FIXME: for Firefox and other GTK-based apps?
-- >
< match target="font" >
< test qual="any" name="family" compare="eq" >
< string > Arial < /string >
< /test >
< test qual="any" name="pixelsize" compare="less" >
< double > 10.7 < /double >
< /test >
< test qual="any" name="weight" compare="more" >
< const > medium < /const >
< /test >
< edit name="pixelsize" mode="assign" >
< double > 10.7 < /double >
< /edit >
< /match >

< !--
Anti-alias fonts with "fake" styles.

FIXME: QT only? GTK? Firefox?
-- >
< !-- FIXME: dirty_hack(tm) - fontconfig reports syntax errors -- >
< match target="font" >
< test qual="any" name="matrix" compare="not_eq" >
< double > 0 < /double >
< /test >
< !-- another approach - no errors but freezes Firefox 1.5 -- >
< !--
< match target="font" >
< test qual="any" name="matrix" compare="eq" >
< name > matrix < /name >
< /test >
-- >
< edit name="antialias" mode="assign" >
< bool > true < /bool >
< /edit >
< /match >

< !--
Substitute unavailable and/or unwanted fonts.

Aliases will not work if the actual fonts are installed.
Replacing font family works in Firefox (FIXME: and other GTK-based apps?)
QT-based apps also need font foundry replaced.
Grouping fonts for substitution doesn't work in Firefox, so we need each
font family replaced individually.
-- >

< !--
sans-serif

"If the font still has no generic name, add sans-serif"
/etc/fonts.conf

Therefore, we only substitute what we need.
-- >
< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Bitstream Charter < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Arial < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Bitstream Vera Sans < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Arial < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > DejaVu Sans < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Arial < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > DejaVu Sans Condensed < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Arial < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > FreeSans < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Arial < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Helvetica < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Arial < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Lucida < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Arial < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< !-- FIXME: may need to use "Lucida Bright" instead -- >
< string > LucidaBright < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Arial < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Lucida Bright < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Arial < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Luxi Sans < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Arial < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > MgOpen Cosmetica < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Arial < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > MgOpen Modata < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Arial < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > MgOpen Moderna < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Arial < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > System < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Arial < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > URW Gothic L < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Arial < /string >
< /edit >
< /match >

< !--
FIXME: Verdana renders characters '2' and '6' slightly distorted
so it will be substituted with Arial.
-- >
< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Verdana < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Arial < /string >
< /edit >
< /match >

< !--
serif
-- >
< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Bitstream Vera Serif < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Georgia < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > DejaVu Serif < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Georgia < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > DejaVu Serif Condensed < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Georgia < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > FreeSerif < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Georgia < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Luxi Serif < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Georgia < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > MgOpen Canonica < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Georgia < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > New Century Schoolbook < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Georgia < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > New York < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Georgia < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Palatino < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Georgia < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Times < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Georgia < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > URW Bookman L < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Georgia < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > URW Palladio L < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Georgia < /string >
< /edit >
< /match >

< !--
monospace
-- >
< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Andale Mono < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Courier New < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Bitstream Vera Sans Mono < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Courier New < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Courier < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Courier New < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > DejaVu Sans Mono < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Courier New < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Fixedsys < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Courier New < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > FreeMono < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Courier New < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< !-- FIXME: Ubuntu Wiki uses "Lucida Typewriter" instead -- >
< string > LucidaTypewriter < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Courier New < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Lucida Typewriter < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Courier New < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Luxi Mono < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Courier New < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Monaco < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Courier New < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Terminal < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Courier New < /string >
< /edit >
< /match >

< !--
cursive
-- >
< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Apple Chancery < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Comic Sans MS < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Lucida Handwriting < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Comic Sans MS < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > URW Chancery L < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Comic Sans MS < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Zapf Chancery < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Comic Sans MS < /string >
< /edit >
< /match >

< !--
fantasy
-- >
< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Copperplate < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Impact < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Desdemona < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Impact < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Kino < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Impact < /string >
< /edit >
< /match >

< match target="pattern" >
< test qual="any" name="family" compare="eq" >
< string > Techno < /string >
< /test >
< edit name="family" mode="prepend" binding="same" >
< string > Impact < /string >
< /edit >
< /match >

< !--
Provide required aliases for standard names.
-- >
< alias >
< family > sans-serif < /family >
< prefer >
< family > Arial < /family >
< /prefer >
< /alias >

< alias >
< family > serif < /family >
< prefer >
< family > Georgia < /family >
< /prefer >
< /alias >

< alias >
< family > monospace < /family >
< prefer >
< family > Courier New < /family >
< /prefer >
< /alias >

< alias >
< family > cursive < /family >
< prefer >
< family > Comic Sans MS < /family >
< /prefer >
< /alias >

< alias >
< family > fantasy < /family >
< prefer >
< family > Impact < /family >
< /prefer >
< /alias >

< /fontconfig >

Thursday, November 03, 2005

Fonts - custom TrueType


- put custom TrueType fonts in a directory

/usr/share/fonts/truetype/custom

- create font indices for X

# cd /usr/share/fonts/truetype/custom
# sudo mkfontscale
# sudo mkfontdir

- add the new font path in X config

# vi /etc/X11/xorg.conf

FontPath "/usr/share/fonts/truetype/custom"

- rebuild font information cache files

# sudo fc-cache -f -v

***

- add the new font path in fontconfig

# vi /etc/fonts/local.conf

Wednesday, November 02, 2005

Fonts - more TTF


- make a list of available installable fonts

# NEWFONTS=`dpkg -l 'ttf-*' | grep '^[up]n\b' | awk '{print $2}'`
# echo $NEWFONTS

- install all of them

# sudo apt-get install $NEWFONTS

***

- alternatively, install my recommended fonts

# sudo apt-get install ttf-bitstream-vera ttf-dejavu ttf-dustin ttf-f500 ttf-freefont ttf-gentium ttf-isabella ttf-junicode ttf-larabie-deco ttf-larabie-straight ttf-larabie-uncommon ttf-mgopen ttf-opensymbol ttf-staypuft ttf-summersby ttf-thryomanes ttf-ubuntu-title ttf-xfree86-nonfree

Tuesday, November 01, 2005

X-Window DPI


# vi /etc/X11/xorg.conf

Section "Monitor"
# displaysize = {pixelsize}/{dpi}*25.4
#DisplaySize 169 135 # 1280x1024 192dpi
#DisplaySize 225 180 # 1280x1024 144dpi
#DisplaySize 270 216 # 1280x1024 120dpi
DisplaySize 338 270 # 1280x1024 96dpi
#DisplaySize 433 347 # 1280x1024 75dpi
#DisplaySize 451 361 # 1280x1024 72dpi