My .font.conf for perfect font rendering
<?xml version="1.0"?><!DOCTYPE fontconfig SYSTEM "fonts.dtd"> | |
<fontconfig> | |
<dir>~/.fonts</dir> | |
<!-- | |
Documented at | |
http://linux.die.net/man/5/fonts-conf | |
To check font mapping run the command at terminal | |
$ fc-match 'helvetica Neue' | |
WARNING :: Droid Sans font with autohinter becomes bad, without autohinter looks great, but becomes smallish, cant help | |
even the smallish is so good, that i am using it on desktop | |
but cannot be used as a substitution for arial, since 12px (which is very common on websites) becomes small as if tahoma 10px | |
Noto sans does better in this case, can be used as arial substitution without loss of size | |
noto sans is slightly fatter than droid sans | |
Open sans is much fat, and open sans bold looks bad, hence we choose noto sans as the replacement for arial | |
Download the following fonts | |
Droid fonts whole sets | |
Download from google web fonts | |
open sans all styles | |
noto sans all styles | |
noto serif all styles | |
--> | |
<!-- | |
.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 | |
Does not work in Chrome properly | |
In chrome 13px evalutes to 17.4px pixelsize test, funny! | |
--> | |
<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. | |
hintfull for all fonts by default | |
--> | |
<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="append" binding="same"> | |
<string>serif</string> | |
</edit> | |
</match> | |
<match target="pattern"> | |
<test qual="any" name="family" compare="eq"> | |
<string>Bitstream Vera Sans</string> | |
</test> | |
<edit name="family" mode="append" binding="same"> | |
<string>sans</string> | |
</edit> | |
</match> | |
<match target="pattern"> | |
<test qual="any" name="family" compare="eq"> | |
<string>DejaVu Sans</string> | |
</test> | |
<edit name="family" mode="append" binding="same"> | |
<string>sans</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> | |
<!-- | |
Dont do this, overriding freesans will cause utf fonts to be come rubbish in chrome | |
--> | |
<!-- | |
<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> | |
--> | |
<!-- | |
ON web pages if font family is like this | |
font-family: 'Helvetica Neue', arial, sans-serif; | |
google chrome will immediately move to next font, if it does not find the first, even if there are append entries | |
But firefox will take the append entry if the font does not exist :) | |
--> | |
<match target="pattern"> | |
<test qual="any" name="family" compare="eq"> | |
<string>Helvetica</string> | |
</test> | |
<edit name="family" mode="append" binding="same"> | |
<string>Sans</string> | |
</edit> | |
</match> | |
<match target="pattern"> | |
<test qual="any" name="family" compare="eq"> | |
<string>Helvetica Neue</string> | |
</test> | |
<edit name="family" mode="append" binding="same"> | |
<string>Sans</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. | |
EDIT Silver Moon : not replacing verdana with arial. | |
hey verdana is slightly fatty, how about replacing it with open sans or noto sans | |
open sans is fattier compared to droid sans | |
BAH, it looks good | |
Open Sans is cramped at 11px with autohint = true | |
'sa' the s and a will stick badly | |
'50' the 5 and 0 will stick badly | |
But 12px onwards Open Sans is better than Noto Sans | |
But the vote goes to noto sans for verdana replaced to maintain beauty at 11px | |
Another note | |
noto sans has single stroke small g , open sans has the 2 round style g | |
noto sans p is thin, open sans p is better looking | |
--> | |
<match target="pattern"> | |
<test qual="any" name="family" compare="eq"> | |
<string>Verdana</string> | |
</test> | |
<edit name="family" mode="prepend" binding="same"> | |
<string>Noto Sans</string> | |
</edit> | |
<edit name="family" mode="prepend" binding="same"> | |
<string>Open Sans</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>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="append" binding="same"> | |
<string>monospace</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>monospace</string> | |
</edit> | |
</match> | |
<match target="pattern"> | |
<test qual="any" name="family" compare="eq"> | |
<string>DejaVu Sans Mono</string> | |
</test> | |
<edit name="family" mode="append" binding="same"> | |
<string>monospace</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"> | |
<!-- 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> | |
<!-- | |
Added by Silver Moon (m00n.silv3r@gmail.com) | |
Changes focussing on Droid Sans, replacing windows old fonts like arial, courier | |
and fixing some fonts like lucida grande bold, and hindi fonts | |
--> | |
<!-- | |
Replace arial fonts larger than 12px by droid sans | |
Works only in firefox, not in chrome | |
--> | |
<match target="pattern"> | |
<test qual="any" name="family" compare="eq"> | |
<string>Arial</string> | |
</test> | |
<test qual="any" name="pixelsize" compare="more"> | |
<double>12.0</double> | |
</test> | |
<edit name="family" mode="assign" binding="strong"> | |
<string>droid sans</string> | |
</edit> | |
</match> | |
<match target="pattern"> | |
<test qual="any" name="family" compare="eq"> | |
<string>Arial</string> | |
</test> | |
<test qual="any" name="pixelsize" compare="less"> | |
<double>13.0</double> | |
</test> | |
<edit name="family" mode="assign" binding="same"> | |
<string>noto sans</string> | |
</edit> | |
</match> | |
<match target="pattern"> | |
<test qual="any" name="family" compare="eq"> | |
<string>Arial</string> | |
</test> | |
<edit name="family" mode="assign" binding="same"> | |
<string>noto sans</string> | |
</edit> | |
</match> | |
<!-- | |
Replace Georgia by Noto Serif | |
--> | |
<match target="pattern"> | |
<test qual="any" name="family" compare="eq"> | |
<string>Georgia</string> | |
</test> | |
<edit name="family" mode="assign" binding="same"> | |
<string>Noto Serif</string> | |
</edit> | |
</match> | |
<!-- | |
Behavioug is similar to droid sans, | |
WITHOUT AUTOHINTER | |
1. becomes smallish, like droid sans, very small on desktop , | |
2. DESKTOP - HIGHLY PROPORTIONATE, HIGHLY CLEAR | |
2. WEBPAGES - less clearer - vertical stands become hazy | |
3. slightly less STRETCHED | |
WITH AUTOHINTER : | |
1. very slightly STRETCHED | |
2. CRYSTAL CLARITY on webpages, | |
3. lesser proportionate on desktop, CLARITY KIND OF OK OK | |
3. bold font ugly with hintfull, good with hintslight | |
Since we are using noto sans as arial replacement, hint it fully with autohinter. | |
hintslight will compromise clarity | |
thought of doing this, above 12px autohint = false | |
below 13px authint = true | |
but autohint false leads to loss of clarity, but makes width correct | |
moreover chrome does not obey pixelsize correctly | |
--> | |
<match target="font"> | |
<test qual="any" name="family" compare="eq"> | |
<string>noto sans</string> | |
</test> | |
<edit mode="assign" name="autohint"> | |
<bool>true</bool> | |
</edit> | |
<edit mode="assign" name="hintstyle"> | |
<const>hintfull</const> | |
</edit> | |
</match> | |
<match target="font"> | |
<test qual="any" name="family" compare="eq"> | |
<string>ubuntu</string> | |
</test> | |
<edit mode="assign" name="autohint"> | |
<bool>true</bool> | |
</edit> | |
<edit mode="assign" name="hintstyle"> | |
<const>hintfull</const> | |
</edit> | |
</match> | |
<!-- | |
DROID SANS | |
WITHOUT AUTOHINTER | |
1.CLEARER 13px onwards | |
2. 12px on webpages very small | |
3. super clear at 12px | |
4. 9pt desktop super clear, super PROPORTIONATE | |
AUTOHINT = TRUE | |
1. LESS CLEARER | |
2. 'n' is cramped | |
3. 9pt desktop, slightly distorted | |
4. 12px webpage is normal sized, but not great as noto sans with autohint = true. but better than arial | |
droid sans with autohinter, becomes more disproportionate on gnome, this is lesser with noto sans | |
in browser there is not much difference between autohint true/false | |
true leads to clarity loss | |
--> | |
<match target="font"> | |
<test qual="any" name="family" compare="eq"> | |
<string>Droid Sans</string> | |
<string>Droid Sans Mono</string> | |
</test> | |
<edit mode="assign" name="autohint"> | |
<bool>false</bool> | |
</edit> | |
<edit mode="assign" name="hintstyle"> | |
<const>hintfull</const> | |
</edit> | |
</match> | |
<match target="font"> | |
<test qual="any" name="family" compare="eq"> | |
<string>liberation mono</string> | |
</test> | |
<edit mode="assign" name="autohint"> | |
<bool>false</bool> | |
</edit> | |
<edit mode="assign" name="hintstyle"> | |
<const>hintmedium</const> | |
</edit> | |
</match> | |
<!-- time for stupid tricks for 2 stupid browsers, namely firefox and chrome --> | |
<!-- stupid trick for firefox | |
firefox obeys pixelsize but not size | |
--> | |
<match target="font"> | |
<test qual="any" name="family" compare="eq"> | |
<string>noto sans</string> | |
</test> | |
<test qual="any" name="pixelsize" compare="less"> | |
<double>16</double> | |
</test> | |
<test qual="any" name="weight" compare="more"> | |
<const>medium</const> | |
</test> | |
<edit mode="assign" name="autohint"> | |
<bool>true</bool> | |
</edit> | |
<edit mode="assign" name="hintstyle" binding="weak"> | |
<const>hintslight</const> | |
</edit> | |
</match> | |
<!-- | |
stupid trick for chrome | |
chrome obeys size, but not pixelsize below 17.4 pixel | |
--> | |
<match target="font"> | |
<test qual="any" name="family" compare="eq"> | |
<string>noto sans</string> | |
</test> | |
<test qual="any" name="size" compare="less"> | |
<double>16</double> | |
</test> | |
<test qual="any" name="weight" compare="more"> | |
<const>medium</const> | |
</test> | |
<edit mode="assign" name="antialias"> | |
<bool>true</bool> | |
</edit> | |
<edit mode="assign" name="autohint"> | |
<bool>true</bool> | |
</edit> | |
<edit mode="assign" name="hintstyle" binding="weak"> | |
<const>hintslight</const> | |
</edit> | |
</match> | |
<!-- use droid sans mono for monospace --> | |
<match target="pattern"> | |
<test qual="any" name="family" compare="eq"> | |
<string>monospace</string> | |
</test> | |
<edit name="family" mode="prepend" binding="same"> | |
<string>Droid Sans Mono</string> | |
</edit> | |
</match> | |
<!-- use droid sans mono for sans-serif --> | |
<match target="pattern"> | |
<test qual="any" name="family" compare="eq"> | |
<string>sans-serif</string> | |
</test> | |
<edit name="family" mode="prepend" binding="same"> | |
<string>Noto Sans</string> | |
</edit> | |
</match> | |
<!-- use droid sans mono for Courier New --> | |
<match target="pattern"> | |
<test qual="any" name="family" compare="eq"> | |
<string>Courier New</string> | |
</test> | |
<edit name="family" mode="prepend" binding="same"> | |
<string>Droid Sans Mono</string> | |
</edit> | |
</match> | |
<!-- replace times new roman with droid serif --> | |
<match target="pattern"> | |
<test qual="any" name="family" compare="eq"> | |
<string>Times New Roman</string> | |
<string>serif</string> | |
</test> | |
<edit name="family" mode="prepend" binding="same"> | |
<string>Noto Serif</string> | |
</edit> | |
</match> | |
<!-- lucida grande bold, with hintfull, becomes stiff looking, with 1 part of a letter more fat than the other, therefor hintslight--> | |
<match target="font"> | |
<test qual="any" name="family" compare="eq"> | |
<string>Lucida Grande</string> | |
</test> | |
<test qual="any" name="weight" compare="more"> | |
<const>medium</const> | |
</test> | |
<edit mode="assign" name="hintstyle"> | |
<const>hintslight</const> | |
</edit> | |
</match> | |
<!-- lucida grande bold, with hintfull, becomes stiff looking, with 1 part of a letter more fat than the other, therefor hintslight--> | |
<match target="font"> | |
<test qual="any" name="family" compare="eq"> | |
<string>Lucida Console</string> | |
</test> | |
<edit name="antialias" mode="assign"> | |
<bool>true</bool> | |
</edit> | |
<edit mode="assign" name="autohint"> | |
<bool>false</bool> | |
</edit> | |
<edit mode="assign" name="hintstyle"> | |
<const>hintfull</const> | |
</edit> | |
</match> | |
<!-- | |
Open sans WITHOUT autohint, becomes fattish in chrome/firefox | |
WITH autohint, becomes crytalline, very good | |
but like noto sans, the bold version is not beautiful | |
need to fix : TODO | |
--> | |
<match target="font"> | |
<test compare="eq" name="family" qual="any"> | |
<string>Open Sans</string> | |
</test> | |
<edit mode="assign" name="autohint"> | |
<bool>true</bool> | |
</edit> | |
<edit mode="assign" name="hintstyle"> | |
<const>hintfull</const> | |
</edit> | |
</match> | |
<!-- | |
Styling for hindi fonts | |
Hindi (hi) | |
--> | |
<!-- force Lohit Hindi for hindi font --> | |
<match target="pattern"> | |
<test compare="eq" name="lang"> | |
<string>hi</string> | |
</test> | |
<edit binding="strong" mode="prepend" name="family"> | |
<string>Lohit Hindi</string> | |
</edit> | |
</match> | |
<!-- do some antialiasing tweak for gargi and lohit hindi font --> | |
<match target="font"> | |
<test compare="eq" name="family" qual="any"> | |
<string>gargi</string> | |
<string>Lohit Hindi</string> | |
</test> | |
<edit mode="assign" name="antialias"> | |
<bool>true</bool> | |
</edit> | |
<edit mode="assign" name="autohint"> | |
<bool>true</bool> | |
</edit> | |
<edit mode="assign" name="hintstyle"> | |
<const>hintslight</const> | |
</edit> | |
</match> | |
<!-- Replace mangal with lohit hindi, mangal is a stupid font --> | |
<match target="pattern"> | |
<test compare="eq" name="family" qual="any"> | |
<string>mangal</string> | |
</test> | |
<edit binding="strong" mode="assign" name="family"> | |
<string>Lohit Hindi</string> | |
</edit> | |
</match> | |
<!-- Hindi (hi) ends --> | |
<match target="font"> | |
<edit name="lcdfilter" mode="assign"> | |
<const>lcddefault</const> | |
</edit> | |
</match> | |
</fontconfig> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
Memo: https://www.reddit.com/r/linux/comments/orbysv/method_get_perfect_font_rendering_on_linux/