Closed ericsagnes closed 8 years ago
BTW, is it possible that this is connected to perhaps font and/or fontconfig files not being immediately "visible" #9027? Have you rebooted after adding the fonts?
Thanks for the advices, I tried to reboot but it didn't help.
The IPA Font is present and japanese characters are displayed fine so it shouldn't be related to #9027 . The problem I face is that by default the non proportional IPA fonts are used (the versions without P), but I would like to use the proportional versions instead.
Match Debug:
> FC_DEBUG=1 fc-match sans -s
FC_DEBUG=1
Sort Pattern has 23 elts (size 32)
family: "DejaVu Sans"(s) "Bitstream Vera Sans"(w) "DejaVu Sans"(w) "DejaVu Sans"(s) "Verdana"(w) "Liberation Sans"(s) "Arial"(w) "Liberation Sans"(w) "Liberation Sans"(w) "TeX Gyre Heros"(w) "Arimo"(w) "Albany AMT"(w) "Luxi Sans"(w) "Nimbus Sans L"(w) "Liberation Sans"(s) "TeX Gyre Heros"(s) "Nimbus Sans L"(s) "Helvetica"(w) "TeX Gyre Heros"(w) "Nimbus Sans L"(w) "Droid Sans"(s) "Lucida Sans Unicode"(w) "BPG Glaho International"(w) "Luxi Sans"(s) "DejaVu Sans Condensed"(s) "Tahoma"(w) "Nachlieli"(w) "Lucida Sans Unicode"(w) "Yudit Unicode"(w) "Kerkis"(w) "ArmNet Helvetica"(w) "Artsounk"(w) "BPG UTF8 M"(w) "Waree"(w) "Loma"(w) "Garuda"(w) "Umpush"(w) "Saysettha Unicode"(w) "JG Lao Old Arial"(w) "GF Zemen Unicode"(w) "Pigiarniq"(w) "B Davat"(w) "B Compset"(w) "Kacst-Qr"(w) "Urdu Nastaliq Unicode"(w) "Raghindi"(w) "Mukti Narrow"(w) "malayalam"(w) "Sampige"(w) "padmaa"(w) "Hapax Berbère"(w) "MS Gothic"(w) "UmePlus P Gothic"(w) "SimSun"(w) "PMingLiu"(w) "WenQuanYi Zen Hei"(w) "WenQuanYi Bitmap Song"(w) "AR PL ShanHeiSun Uni"(w) "AR PL New Sung"(w) "MgOpen Modata"(w) "VL Gothic"(w) "IPAMonaGothic"(w) "IPAGothic"(w) "Sazanami Gothic"(w) "Kochi Gothic"(w) "AR PL KaitiM GB"(w) "AR PL KaitiM Big5"(w) "AR PL ShanHeiSun Uni"(w) "AR PL SungtiL GB"(w) "AR PL Mingti2L Big5"(w) "MS ゴシック"(w) "ZYSong18030"(w) "TSCu_Paranar"(w) "NanumGothic"(w) "UnDotum"(w) "Baekmuk Dotum"(w) "Baekmuk Gulim"(w) "KacstQura"(w) "Lohit Bengali"(w) "Lohit Gujarati"(w) "Lohit Hindi"(w) "Lohit Marathi"(w) "Lohit Maithili"(w) "Lohit Kashmiri"(w) "Lohit Konkani"(w) "Lohit Nepali"(w) "Lohit Sindhi"(w) "Lohit Punjabi"(w) "Lohit Tamil"(w) "Meera"(w) "Lohit Malayalam"(w) "Lohit Kannada"(w) "Lohit Telugu"(w) "Lohit Oriya"(w) "LKLUG"(w) "FreeSans"(w) "Arial Unicode MS"(w) "Arial Unicode"(w) "Code2000"(w) "Code2001"(w) "Noto Sans"(w) "Liberation Sans"(w) "DejaVu Sans"(w) "Nimbus Sans L"(w) "Noto Sans CJK JP"(w) "Noto Sans CJK TC"(w) "Noto Sans CJK KR"(w) "Noto Sans CJK SC"(w) "Noto Sans Cherokee"(w) "Noto Sans"(w) "DDC Uchen"(w) "TharLon"(w) "Noto Sans Myanmar"(w) "Faruma"(w) "Noto Sans Buginese"(w) "Noto Kufi Arabic"(w) "LKLUG"(w) "Noto Sans Sinhala"(w) "Noto Sans Kannada"(w) "Noto Sans"(w) "Noto Sans Khmer"(w) "Noto Sans"(w) "Noto Sans Malayalam"(w) "Noto Sans"(w) "Lohit Devanagari"(w) "Lohit Nepali"(w) "Noto Sans Devanagari"(w) "Noto Sans"(w) "Noto Sans Hebrew"(w) "Noto Sans"(w) "Noto Sans Bengali"(w) "Noto Sans"(w) "Noto Sans Lao"(w) "Noto Sans"(w) "Noto Sans Thai"(w) "Noto Sans"(w) "Noto Sans Telugu"(w) "Noto Sans"(w) "Noto Sans Gujarati"(w) "Noto Sans"(w) "Noto Sans Ethiopic"(w) "Noto Sans"(w) "Noto Sans Tamil"(w) "Noto Sans"(w) "Noto Sans Georgian"(w) "Noto Sans"(w) "Noto Sans Brahmi"(w) "Noto Sans"(w) "Noto Sans Kaithi"(w) "Noto Sans"(w) "Noto Sans Vai"(w) "Noto Sans"(w) "Noto Sans Osmanya"(w) "Noto Sans"(w) "Lohit Odia"(w) "Estrangelo Edessa"(w) "Noto Sans Syriac Estrangela"(w) "Noto Sans Syriac Eastern"(w) "Noto Sans Syriac Western"(w) "Euphemia UCAS"(w) "Noto Sans UI"(w) "Noto Sans"(w) "Droid Sans"(w) "DejaVu Sans"(w) "IPAPGothic"(w) "Baekmuk Dotum"(w) "sans-serif"(s) "Roya"(w) "Koodak"(w) "Terafik"(w) "Helvetica"(w) "Liberation Sans"(w) "Arial"(w) "Noto Serif"(w) "Droid Serif"(w) "DejaVu Serif"(w) "IPAPMincho"(w) "Baekmuk Batang"(w) "serif"(w) "serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "serif"(w) "serif"(w) "serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "serif"(w) "sans-serif"(w) "serif"(w)
familylang: "ja"(s) "en-us"(w)
stylelang: "ja"(s) "en-us"(w)
fullnamelang: "ja"(s) "en-us"(w)
slant: 0(i)(s)
weight: 80(i)(s)
width: 100(i)(s)
size: 12(f)(s)
pixelsize: 12.5(f)(s)
hintstyle: 3(i)(s)
hinting: True(s)
verticallayout: False(s)
autohint: False(s)
globaladvance: True(s)
dpi: 75(f)(s)
scale: 1(f)(s)
lang: "ja"(w)
fontversion: 2147483647(i)(s)
embeddedbitmap: True(s)
decorative: False(s)
namelang: "ja"(s)
prgname: "fc-match"(s)
bitmap_monospace: False(w)
... rest truncated
The fonts set in fontconfig.defaultFonts
appears quite at the end of the sort result ("DejaVu Sans"(w) "IPAPGothic"(w) "Baekmuk Dotum"(w)
).
So it seems that for some reason the settings in 98-nixos.conf
have a lower priority than other setting files.
Config files loaded:
> FC_DEBUG=1024 fc-match sans -s
FC_DEBUG=1024
Loading config file /etc/fonts/2.11/fonts.conf
Scanning config dir /nix/store/zqzccqwyz0vaqkq16vk72j2ra8ak6i6s-fontconfig-2.11.1/etc/fonts/conf.d
Loading config file /nix/store/zqzccqwyz0vaqkq16vk72j2ra8ak6i6s-fontconfig-2.11.1/etc/fonts/conf.d/10-scale-bitmap-fonts.conf
Loading config file /nix/store/zqzccqwyz0vaqkq16vk72j2ra8ak6i6s-fontconfig-2.11.1/etc/fonts/conf.d/20-unhint-small-vera.conf
Loading config file /nix/store/zqzccqwyz0vaqkq16vk72j2ra8ak6i6s-fontconfig-2.11.1/etc/fonts/conf.d/30-metric-aliases.conf
Loading config file /nix/store/zqzccqwyz0vaqkq16vk72j2ra8ak6i6s-fontconfig-2.11.1/etc/fonts/conf.d/30-urw-aliases.conf
Loading config file /nix/store/zqzccqwyz0vaqkq16vk72j2ra8ak6i6s-fontconfig-2.11.1/etc/fonts/conf.d/40-nonlatin.conf
Loading config file /nix/store/zqzccqwyz0vaqkq16vk72j2ra8ak6i6s-fontconfig-2.11.1/etc/fonts/conf.d/45-latin.conf
Loading config file /nix/store/zqzccqwyz0vaqkq16vk72j2ra8ak6i6s-fontconfig-2.11.1/etc/fonts/conf.d/49-sansserif.conf
Loading config file /nix/store/zqzccqwyz0vaqkq16vk72j2ra8ak6i6s-fontconfig-2.11.1/etc/fonts/conf.d/60-latin.conf
Loading config file /nix/store/zqzccqwyz0vaqkq16vk72j2ra8ak6i6s-fontconfig-2.11.1/etc/fonts/conf.d/65-fonts-persian.conf
Loading config file /nix/store/zqzccqwyz0vaqkq16vk72j2ra8ak6i6s-fontconfig-2.11.1/etc/fonts/conf.d/65-nonlatin.conf
Loading config file /nix/store/zqzccqwyz0vaqkq16vk72j2ra8ak6i6s-fontconfig-2.11.1/etc/fonts/conf.d/69-unifont.conf
Loading config file /nix/store/zqzccqwyz0vaqkq16vk72j2ra8ak6i6s-fontconfig-2.11.1/etc/fonts/conf.d/80-delicious.conf
Loading config file /nix/store/zqzccqwyz0vaqkq16vk72j2ra8ak6i6s-fontconfig-2.11.1/etc/fonts/conf.d/90-synthetic.conf
Scanning config dir /etc/fonts/2.11/conf.d
Loading config file /etc/fonts/2.11/conf.d/00-nixos.conf
Loading config file /etc/fonts/2.11/conf.d/52-fontconfig-ultimate.conf
Scanning config dir /nix/store/kid35wdkq2bfck7kmcf4ia2pmkfkxn8y-fontconfig-ultimate-20141123/etc/fonts/presets/free
... truncating ultimate settings files ...
Loading config file /etc/fonts/2.11/conf.d/98-nixos.conf
Loading config file /etc/fonts/2.11/conf.d/99-user.conf
DejaVuSans.ttf: "DejaVu Sans" "Book"
DejaVuSans-Bold.ttf: "DejaVu Sans" "Bold"
DejaVuSans-Oblique.ttf: "DejaVu Sans" "Oblique"
DejaVuSans-BoldOblique.ttf: "DejaVu Sans" "Bold Oblique"
LiberationSans-Regular.ttf: "Liberation Sans" "Regular"
luxisr.ttf: "Luxi Sans" "Regular"
ipag.ttf: "IPAゴシック" "Regular"
dotum.ttf: "Baekmuk Dotum" "Regular"
gulim.ttf: "Baekmuk Gulim" "Regular"
FreeSans.ttf: "FreeSans" "нормален"
DejaVuSerif.ttf: "DejaVu Serif" "Book"
DejaVuSerif-Bold.ttf: "DejaVu Serif" "Bold"
DejaVuSerif-Italic.ttf: "DejaVu Serif" "Italic"
DejaVuSerif-BoldItalic.ttf: "DejaVu Serif" "Bold Italic"
FreeMono.ttf: "FreeMono" "нормален"
FreeSerif.ttf: "FreeSerif" "нормален"
FuraMono-Regular Powerline.otf: "Fira Mono for Powerline" "Regular"
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"
luximr.ttf: "Luxi Mono" "Regular"
Anonymice Powerline.ttf: "Anonymous Pro for Powerline" "Regular"
Ubuntu Mono derivative Powerline.ttf: "Ubuntu Mono derivative Powerline" "Regular"
LiberationSerif-Italic.ttf: "Liberation Serif" "Italic"
7x13-ISO8859-1.pcf.gz: "Fixed" "Regular"
7x13.pcf.gz: "Fixed" "Regular"
8x13.pcf.gz: "Fixed" "Regular"
12x13ja.pcf.gz: "Fixed" "ja"
6x12.pcf.gz: "Fixed" "SemiCondensed"
6x13.pcf.gz: "Fixed" "SemiCondensed"
9x15.pcf.gz: "Fixed" "Regular"
18x18ja.pcf.gz: "Fixed" "ja"
10x20.pcf.gz: "Fixed" "Regular"
Caching information:
> FC_DEBUG=32 fc-cache -r -v | grep ipa
/nix/store/qjzppncbdidl8wbbkj3q776wn5gcmcrg-ipafont-003.03: caching, new cache contents: 0 fonts, 1 dirs
/nix/store/qjzppncbdidl8wbbkj3q776wn5gcmcrg-ipafont-003.03/share: caching, new cache contents: 0 fonts, 1 dirs
/nix/store/qjzppncbdidl8wbbkj3q776wn5gcmcrg-ipafont-003.03/share/fonts: caching, new cache contents: 0 fonts, 1 dirs
/nix/store/qjzppncbdidl8wbbkj3q776wn5gcmcrg-ipafont-003.03/share/fonts/opentype: Raw pattern:
file: "/nix/store/qjzppncbdidl8wbbkj3q776wn5gcmcrg-ipafont-003.03/share/fonts/opentype/ipag.ttf"(s)
file: "/nix/store/qjzppncbdidl8wbbkj3q776wn5gcmcrg-ipafont-003.03/share/fonts/opentype/ipag.ttf"(w)
file: "/nix/store/qjzppncbdidl8wbbkj3q776wn5gcmcrg-ipafont-003.03/share/fonts/opentype/ipagp.ttf"(s)
file: "/nix/store/qjzppncbdidl8wbbkj3q776wn5gcmcrg-ipafont-003.03/share/fonts/opentype/ipagp.ttf"(w)
file: "/nix/store/qjzppncbdidl8wbbkj3q776wn5gcmcrg-ipafont-003.03/share/fonts/opentype/ipam.ttf"(s)
file: "/nix/store/qjzppncbdidl8wbbkj3q776wn5gcmcrg-ipafont-003.03/share/fonts/opentype/ipam.ttf"(w)
file: "/nix/store/qjzppncbdidl8wbbkj3q776wn5gcmcrg-ipafont-003.03/share/fonts/opentype/ipamp.ttf"(s)
file: "/nix/store/qjzppncbdidl8wbbkj3q776wn5gcmcrg-ipafont-003.03/share/fonts/opentype/ipamp.ttf"(w)
Re-scanning /nix/store/qjzppncbdidl8wbbkj3q776wn5gcmcrg-ipafont-003.03: caching, new cache contents: 0 fonts, 1 dirs
Re-scanning /nix/store/qjzppncbdidl8wbbkj3q776wn5gcmcrg-ipafont-003.03/share: caching, new cache contents: 0 fonts, 1 dirs
Re-scanning /nix/store/qjzppncbdidl8wbbkj3q776wn5gcmcrg-ipafont-003.03/share/fonts: caching, new cache contents: 0 fonts, 1 dirs
IPA Fonts availability:
> fc-list :lang=ja
/nix/store/zwcwinijsryax739lim93fb9l6q24hhw-font-misc-misc-1.1.2/lib/X11/fonts/misc/12x13ja.pcf.gz: Fixed:style=ja
/nix/store/qjzppncbdidl8wbbkj3q776wn5gcmcrg-ipafont-003.03/share/fonts/opentype/ipamp.ttf: IPA P明朝,IPAPMincho:style=Regular
/nix/store/qjzppncbdidl8wbbkj3q776wn5gcmcrg-ipafont-003.03/share/fonts/opentype/ipagp.ttf: IPA Pゴシック,IPAPGothic:style=Regular
/nix/store/qjzppncbdidl8wbbkj3q776wn5gcmcrg-ipafont-003.03/share/fonts/opentype/ipag.ttf: IPAゴシック,IPAGothic:style=Regular
/nix/store/zwcwinijsryax739lim93fb9l6q24hhw-font-misc-misc-1.1.2/lib/X11/fonts/misc/18x18ko.pcf.gz: Fixed:style=ko
/nix/store/qjzppncbdidl8wbbkj3q776wn5gcmcrg-ipafont-003.03/share/fonts/opentype/ipam.ttf: IPA明朝,IPAMincho:style=Regular
/nix/store/zwcwinijsryax739lim93fb9l6q24hhw-font-misc-misc-1.1.2/lib/X11/fonts/misc/18x18ja.pcf.gz: Fixed:style=ja
The first fc-match
result certainly seems consistent to me: you have DejaVu fonts as the first in defaultFonts
, and that's what fc-match
returns. Even fc-match :lang=ja
will likely do so, as the fonts claim ja support.
Deja Vu fonts first is correct, but the second entry in fontconfig.defaultFonts.sansSerif
IPAPGothic doesn't appear in the match list.
As a test, I changed my fontconfig
options as below:
fonts = {
fonts = [
pkgs.ipafont
pkgs.powerline-fonts
pkgs.baekmuk-ttf
];
fontconfig = {
defaultFonts = {
monospace = [
"IPAGothic"
];
serif = [
"IPAPMincho"
];
sansSerif = [
"IPAPGothic"
];
};
};
};
The generated /etc/fonts/2.11/conf.d/98-nixos.conf
is correct:
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<!-- Default rendering settings -->
<match target="font">
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
<edit mode="assign" name="autohint">
<bool>true</bool>
</edit>
<edit mode="assign" name="hintstyle">
<const>hintfull</const>
</edit>
<edit mode="assign" name="antialias">
<bool>true</bool>
</edit>
<edit mode="assign" name="rgba">
<const>rgb</const>
</edit>
<edit mode="assign" name="lcdfilter">
<const>lcddefault</const>
</edit>
</match>
<!-- Default fonts -->
<alias>
<family>sans-serif</family>
<prefer>
<family>IPAPGothic</family>
</prefer>
</alias>
<alias>
<family>serif</family>
<prefer>
<family>IPAPMincho</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>IPAGothic</family>
</prefer>
</alias>
</fontconfig>
But fc-match
for sans-serif still match DejaVu and there is no IPAPGothic in the results:
> fc-match sans -s
DejaVuSans.ttf: "DejaVu Sans" "Book"
DejaVuSans-Bold.ttf: "DejaVu Sans" "Bold"
DejaVuSans-Oblique.ttf: "DejaVu Sans" "Oblique"
DejaVuSans-BoldOblique.ttf: "DejaVu Sans" "Bold Oblique"
LiberationSans-Regular.ttf: "Liberation Sans" "Regular"
luxisr.ttf: "Luxi Sans" "Regular"
ipag.ttf: "IPAゴシック" "Regular"
dotum.ttf: "Baekmuk Dotum" "Regular"
gulim.ttf: "Baekmuk Gulim" "Regular"
FreeSans.ttf: "FreeSans" "нормален"
FreeMono.ttf: "FreeMono" "нормален"
FreeSerif.ttf: "FreeSerif" "нормален"
FuraMono-Regular Powerline.otf: "Fira Mono for Powerline" "Regular"
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"
DejaVuSerif.ttf: "DejaVu Serif" "Book"
luximr.ttf: "Luxi Mono" "Regular"
Anonymice Powerline.ttf: "Anonymous Pro for Powerline" "Regular"
Ubuntu Mono derivative Powerline.ttf: "Ubuntu Mono derivative Powerline" "Regular"
DejaVuSerif-Italic.ttf: "DejaVu Serif" "Italic"
LiberationSerif-Italic.ttf: "Liberation Serif" "Italic"
7x13-ISO8859-1.pcf.gz: "Fixed" "Regular"
7x13.pcf.gz: "Fixed" "Regular"
8x13.pcf.gz: "Fixed" "Regular"
12x13ja.pcf.gz: "Fixed" "ja"
6x12.pcf.gz: "Fixed" "SemiCondensed"
6x13.pcf.gz: "Fixed" "SemiCondensed"
9x15.pcf.gz: "Fixed" "Regular"
18x18ja.pcf.gz: "Fixed" "ja"
10x20.pcf.gz: "Fixed" "Regular"
Detailed output:
> FC_DEBUG=1 fc-match sans -s
FC_DEBUG=1
Sort Pattern has 23 elts (size 32)
family: "DejaVu Sans"(s) "Bitstream Vera Sans"(w) "DejaVu Sans"(w) "DejaVu Sans"(s) "Verdana"(w) "Liberation Sans"(s) "Arial"(w) "Liberation Sans"(w) "Liberation Sans"(w) "TeX Gyre Heros"(w) "Arimo"(w) "Albany AMT"(w) "Luxi Sans"(w
) "Nimbus Sans L"(w) "Liberation Sans"(s) "TeX Gyre Heros"(s) "Nimbus Sans L"(s) "Helvetica"(w) "TeX Gyre Heros"(w) "Nimbus Sans L"(w) "Droid Sans"(s) "Lucida Sans Unicode"(w) "BPG Glaho International"(w) "Luxi Sans"(s) "DejaVu Sans Conden
sed"(s) "Tahoma"(w) "Nachlieli"(w) "Lucida Sans Unicode"(w) "Yudit Unicode"(w) "Kerkis"(w) "ArmNet Helvetica"(w) "Artsounk"(w) "BPG UTF8 M"(w) "Waree"(w) "Loma"(w) "Garuda"(w) "Umpush"(w) "Saysettha Unicode"(w) "JG Lao Old Arial"(w) "GF Ze
men Unicode"(w) "Pigiarniq"(w) "B Davat"(w) "B Compset"(w) "Kacst-Qr"(w) "Urdu Nastaliq Unicode"(w) "Raghindi"(w) "Mukti Narrow"(w) "malayalam"(w) "Sampige"(w) "padmaa"(w) "Hapax Berbère"(w) "MS Gothic"(w) "UmePlus P Gothic"(w) "SimSun"(w)
"PMingLiu"(w) "WenQuanYi Zen Hei"(w) "WenQuanYi Bitmap Song"(w) "AR PL ShanHeiSun Uni"(w) "AR PL New Sung"(w) "MgOpen Modata"(w) "VL Gothic"(w) "IPAMonaGothic"(w) "IPAGothic"(w) "Sazanami Gothic"(w) "Kochi Gothic"(w) "AR PL KaitiM GB"(w)
"AR PL KaitiM Big5"(w) "AR PL ShanHeiSun Uni"(w) "AR PL SungtiL GB"(w) "AR PL Mingti2L Big5"(w) "MS ゴシック"(w) "ZYSong18030"(w) "TSCu_Paranar"(w) "NanumGothic"(w) "UnDotum"(w) "Baekmuk Dotum"(w) "Baekmuk Gulim"(w) "KacstQura"(w) "Lohit Benga "Lohit Gujarati"(w) "Lohit Hindi"(w) "Lohit Marathi"(w) "Lohit Maithili"(w) "Lohit Kashmiri"(w) "Lohit Konkani"(w) "Lohit Nepali"(w) "Lohit Sindhi"(w) "Lohit Punjabi"(w) "Lohit Tamil"(w) "Meera"(w) "Lohit Malayalam"(w) "Lohit Kannad
a"(w) "Lohit Telugu"(w) "Lohit Oriya"(w) "LKLUG"(w) "FreeSans"(w) "Arial Unicode MS"(w) "Arial Unicode"(w) "Code2000"(w) "Code2001"(w) "Noto Sans"(w) "Liberation Sans"(w) "DejaVu Sans"(w) "Nimbus Sans L"(w) "Noto Sans CJK JP"(w) "Noto Sans
CJK TC"(w) "Noto Sans CJK KR"(w) "Noto Sans CJK SC"(w) "Noto Sans Cherokee"(w) "Noto Sans"(w) "DDC Uchen"(w) "TharLon"(w) "Noto Sans Myanmar"(w) "Faruma"(w) "Noto Sans Buginese"(w) "Noto Kufi Arabic"(w) "LKLUG"(w) "Noto Sans Sinhala"(w) "
Noto Sans Kannada"(w) "Noto Sans"(w) "Noto Sans Khmer"(w) "Noto Sans"(w) "Noto Sans Malayalam"(w) "Noto Sans"(w) "Lohit Devanagari"(w) "Lohit Nepali"(w) "Noto Sans Devanagari"(w) "Noto Sans"(w) "Noto Sans Hebrew"(w) "Noto Sans"(w) "Noto Sa
ns Bengali"(w) "Noto Sans"(w) "Noto Sans Lao"(w) "Noto Sans"(w) "Noto Sans Thai"(w) "Noto Sans"(w) "Noto Sans Telugu"(w) "Noto Sans"(w) "Noto Sans Gujarati"(w) "Noto Sans"(w) "Noto Sans Ethiopic"(w) "Noto Sans"(w) "Noto Sans Tamil"(w) "Not
o Sans"(w) "Noto Sans Georgian"(w) "Noto Sans"(w) "Noto Sans Brahmi"(w) "Noto Sans"(w) "Noto Sans Kaithi"(w) "Noto Sans"(w) "Noto Sans Vai"(w) "Noto Sans"(w) "Noto Sans Osmanya"(w) "Noto Sans"(w) "Lohit Odia"(w) "Estrangelo Edessa"(w) "Not
o Sans Syriac Estrangela"(w) "Noto Sans Syriac Eastern"(w) "Noto Sans Syriac Western"(w) "Euphemia UCAS"(w) "Noto Sans UI"(w) "Noto Sans"(w) "Droid Sans"(w) "IPAPGothic"(w) "sans-serif"(s) "Roya"(w) "Koodak"(w) "Terafik"(w) "Helvetica"(w)
"Liberation Sans"(w) "Arial"(w) "Noto Serif"(w) "Droid Serif"(w) "IPAPMincho"(w) "serif"(w) "serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-se
rif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "serif"(w) "serif"(w) "serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-
serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans
-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "san
s-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "sans-serif"(w) "serif"(w) "sans-serif"(w) "serif"(w)
familylang: "ja"(s) "en-us"(w)
stylelang: "ja"(s) "en-us"(w)
fullnamelang: "ja"(s) "en-us"(w)
slant: 0(i)(s)
weight: 80(i)(s)
width: 100(i)(s)
size: 12(f)(s)
pixelsize: 12.5(f)(s)
hintstyle: 3(i)(s)
hinting: True(s)
verticallayout: False(s)
autohint: False(s)
globaladvance: True(s)
dpi: 75(f)(s)
scale: 1(f)(s)
lang: "ja"(w)
fontversion: 2147483647(i)(s)
embeddedbitmap: True(s)
decorative: False(s)
namelang: "ja"(s)
prgname: "fc-match"(s)
bitmap_monospace: False(w)
First font Pattern has 22 elts (size 22)
family: "DejaVu Sans"(w)
...
IPAPGothic is in your detailed list. Anyway, I don't know the exact semantics of fontconfig and I don't see it directly in the docs. I would think this font gets pruned (see the -a
parameter) because whatever additional font requirements you specify, DejaVu will be in front and shadowing it.
After some research, it seems that priorities for families alias are set by the order of parsing conf files.
98-nixos.conf
being one of the last files read, its settings get the lowest priority.
But there is a binding
property that when set to strong
forces priority of configuration rules.
I tried with a user defined ~/.config/fontconfig/fonts.conf
as below:
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<alias binding="strong">
<family>serif</family>
<prefer>
<family>DejaVu Serif</family>
<family>IPAPMincho</family>
<family>Baekmuk Batang</family>
</prefer>
</alias>
<alias binding="strong">
<family>sans-serif</family>
<prefer>
<family>DejaVu Sans</family>
<family>IPAPGothic</family>
<family>Baekmuk Dotum</family>
</prefer>
</alias>
<alias binding="strong">
<family>monospace</family>
<prefer>
<family>DejaVu Sans Mono for Powerline</family>
<family>IPAGothic</family>
<family>Baekmuk Dotum</family>
</prefer>
</alias>
</fontconfig>
And fc-match
matches correctly the preferred fonts:
> fc-match sans -s
DejaVuSans.ttf: "DejaVu Sans" "Book"
DejaVuSans-Bold.ttf: "DejaVu Sans" "Bold"
DejaVuSans-Oblique.ttf: "DejaVu Sans" "Oblique"
DejaVuSans-BoldOblique.ttf: "DejaVu Sans" "Bold Oblique"
LiberationSans-Regular.ttf: "Liberation Sans" "Regular"
luxisr.ttf: "Luxi Sans" "Regular"
ipagp.ttf: "IPA Pゴシック" "Regular"
dotum.ttf: "Baekmuk Dotum" "Regular"
....
I suppose that adding binding="strong"
to the alias
tags for defaultFonts
in https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/config/fonts/fontconfig.nix should make it work as expected for most of users. (what is the point to set default fonts if they have the lowest priority?)
I am pretty new to NixOS and don't know yet how to make changes to local configuration modules. If someone could point to some documentation or update https://nixos.org/wiki/NixOS_Modifying_Modules , I will be very happy to test the changes and submit a patch if it works as expected.
The docs give an explanation of what binding
means:
There is one special case to this rule; family names are split into two bindings; strong and weak. Strong family names are given greater precedence in the match than lang elements while weak family names are given lower precedence than lang elements. This permits the document language to drive font selection when any document specified font is unavailable.
My understanding is that if we use a strong one, the first font in the defaultFonts
list will be used even if it doesn't support the requested language. That doesn't seem a good default behavior to me.
/cc @ttuegel: you seem to know more about this, judging from 9707ffd973.
My understanding is that if we use a strong one, the first font in the defaultFonts list will be used even if it doesn't support the requested language. That doesn't seem a good default behavior to me.
Yes, that is correct. That would be inappropriate behavior for the default settings.
While the configuration files are parsed in order, that does not mean that later ones have lower priority. On the contrary, consider this, from the manual:
<alias>
Alias elements provide a shorthand notation for the set of common match operations needed to
substitute one font family for another. They contain a <family>
element followed by optional
<prefer>
, <accept>
and <default>
elements. Fonts matching the <family>
element are edited to
prepend the list of <prefer>
ed families before the matching <family>
, append the <accept>
able
families after the matching <family>
and append the <default>
families to the end of the family list.
We may need to move that config file. According to the README
the standard ranges are:
00 through 09 Font directories
10 through 19 system rendering defaults (AA, etc)
20 through 29 font rendering options
30 through 39 family substitution
40 through 49 generic identification, map family->generic
50 through 59 alternate config file loading
60 through 69 generic aliases, map generic->family
70 through 79 select font (adjust which fonts are available)
80 through 89 match target="scan" (modify scanned patterns)
90 through 99 font synthesis
Therefore, it may be more appropriate to do these settings in 60-nixos-generic-aliases.conf
. Moving the settings to a higher precedence would very likely solve this problem.
Thanks!
Just to give some feedback, as a test, I tried to rename my ~/.config/fontconfig/fonts.conf
to ~/.config/fontconfig/conf.d/60-nixos-generic-aliases.conf
(removing the binding="strong"
attributes) but fc-match
failed to match the proportional IPA fonts.
In the same file, putting binding="same"
to the alias
tag makes fc-match
match the proportional IPA fonts.
Please ignore if it is not relevant information.
Just to give some feedback, as a test, I tried to rename my ~/.config/fontconfig/fonts.conf to ~/.config/fontconfig/conf.d/60-nixos-generic-aliases.conf (removing the binding="strong" attributes) but fc-match failed to match the proportional IPA fonts.
The filename should only affect the order a file is loaded in compared to other files in the same directory. Though, come to think of it, that may hose my fix. I will have to think on this more.
If binding="same"
works, then probably some file that ships with fontconfig
or fontconfig-ultimate
is probably using binding="strong"
where it should not.
Yes, I'm afraid we might have a problem from the fact that within a single conf.d/
the file reading order is alphabetical, but we include several dirs and these aren't read "interleaved". I believe the split pushed now only changes order wrt. the "infinality" configs and not wrt. any upstream configs.
To truly interleave the reading, we'd have to join our system conf.d
trees, e.g. by buildEnv
. (However, I'm not yet certain if all should be joined, and it's probably impossible to join system and per-user config together.)
@vcunat buildEnv
might be a little overkill; we really just want something like lndir
. But that's the way we need to go for the system config files. Upstream intends that all the system files be interleaved. We don't need to worry about the user configuration, I think, as that isn't intended to be interleaved.
User config: personally, I would expect that if I put some files into the user config instead of the system one, it will create the same result for that user. But that's probably just nitpicking ATM.
Another minor twist that got introduced: controlling the default font for a family by a file conf.d/30-familyName.conf
installed with the fonts. #6793 That allows choosing among them also by standard nix-env priorities. I think interleaving isn't needed for those and it's enough to process them after the upstream config.
Works perfectly, thanks! Sorry for the late closing.
I am trying to set IPA proportional fonts for Japanese serif & sans-serif, but it seems that fonts set via
fonts.defaultFonts
are not matched byfc-match
.configuration.nix:
/etc/fonts/conf.d/98-nixos.conf
&/etc/fonts/2.11/conf.d/98-nixos.conf
are correctly generated:but
fc-match
seems to ignore it: