You are not logged in.

#1 2021-04-24 18:31:56

Inxsible
Forum Fellow
From: Chicago
Registered: 2008-06-09
Posts: 9,183

[SOLVED]Non-Latin fonts in Chromium

I am trying to set up different fonts for Arabic on my system. I installed the arabeyes font from AUR & I set up a simple $XDG_CONFIG/fontconfig/fonts.conf file to select the Arabic font that I want:

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

<!-- Default font for the ar_AR locale (no fc-match pattern) -->
 <match>
  <test compare="contains" name="lang">
   <string>ar</string>
  </test>
  <edit mode="prepend" name="family">
      <string>Tholoth</string>
  </edit>
 </match>
</fontconfig>

This works great on Firefox, but Chromium will only display the Roya font (which is too small for me to read which is why I want to change it)

I did an fc-match -v sans: lang=ar and it seems to list the correct font as Tholoth

fc-match -v sans:lang=ar
Pattern has 38 elts (size 48)
	family: "Tholoth"(s)
	familylang: "en"(s)
	style: "Regular"(s)
	stylelang: "en"(s)
	fullname: "Tholoth"(s)
	fullnamelang: "en"(s)
	slant: 0(i)(s)
	weight: 80(f)(s)
	width: 100(f)(s)
	size: 12(f)(s)
	pixelsize: 12.5(f)(s)
	foundry: "PYRS"(w)
	hintstyle: 1(i)(w)
	hinting: True(s)
	verticallayout: False(s)
	autohint: False(s)
	globaladvance: True(s)
	file: "/usr/share/fonts/TTF/arabeyes/ae_Tholoth.ttf"(w)
	index: 0(i)(w)
	outline: True(w)
	scalable: True(w)
	dpi: 75(f)(s)
	scale: 1(f)(s)
	charset: 
	0000: 00000000 ffffffff ffffffff 7fffffff 00000000 ffffffff ffffffff ffffffff
	0001: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ff7fffff
	0002: cfffffff 00afffc0 00000000 00000000 00000000 00000000 00000000 00000000
	0006: 88001000 07fffffe 0007ffff 000027ff 00000000 00000000 00000000 00000000
	001e: ffffffff ffffffff ffffffff ffffffff 0fffffff ffffffff ffffffff 03ffffff
	0020: 0000f000 00007c00 00000000 00000000 00000000 00000000 00000000 00000000
	00e0: 00000000 000027e0 00000000 00000000 00000000 00000000 00000000 80000000
	00fb: 0000005f 00000000 00000000 00000000 00000000 00000000 00000000 00000000
	00fc: 00000000 00040000 00000000 00000000 00000000 00000000 00000000 00000000
	00fd: 00000000 c0000000 00000000 00000000 00000000 00000000 00000000 00040000
	00fe: 00000000 00000000 00000000 00000000 ffffffff ffffffff ffffffff 1fffffff
(w)
	lang: aa|af|ar|ast|ay|bi|br|bs|ca|ch|co|cs|cy|da|de|en|eo|es|et|eu|fi|fj|fo|fr|fur|fy|ga|gd|gl|gn|gv|ho|hr|hu|ia|ig|id|ie|io|is|it|ki|kl|kw|la|lb|lt|lv|mg|mh|mi|mt|nb|nds|nl|nn|no|nr|nso|ny|oc|om|pl|pt|rm|ro|se|sk|sl|sma|smj|smn|so|sq|ss|st|sv|sw|tk|tl|tn|tr|ts|uz|ve|vo|vot|wa|wen|wo|xh|yap|zu|an|crh|csb|fil|hsb|ht|jv|kj|ku-tr|kwm|lg|li|ms|na|ng|pap-an|pap-aw|rn|rw|sc|sg|sn|su|za(s)
	fontversion: 0(i)(s)
	capability: "otlayout:DFLT otlayout:arab otlayout:latn"(w)
	fontformat: "TrueType"(w)
	embeddedbitmap: True(s)
	decorative: False(s)
	namelang: "en"(s)
	prgname: "fc-match"(s)
	postscriptname: "Tholoth"(w)
	color: False(w)
	symbol: False(s)
	variable: False(s)
	fonthashint: True(w)
	order: 0(i)(s)

fc-match -s sans shows Roya to be the first that supports Arabic

fc-match -s sans        
NimbusSans-Regular.otf: "Nimbus Sans" "Regular"
MuktiNarrow.ttf: "Mukti Narrow" "Regular"
malayalam.ttf: "malayalam" "Regular"
Sampige.ttf: "Sampige" "Regular"
padmaa-Medium-0.5.ttf: "padmaa" "regular"
TSCu_Paranar.ttf: "TSCu_Paranar" "Regular"
TSCu_paranarb.ttf: "TSCu_Paranar" "Bold"
TSCu_paranari.ttf: "TSCu_Paranar" "Italic"
roya.ttf: "Roya" "Regular"
KacstOne.ttf: "KacstOne" "Regular"
Inconsolata-Regular.ttf: "Inconsolata" "Regular"
Roboto-Regular.ttf: "Roboto" "Regular"
LiberationMono-Regular.ttf: "Liberation Mono" "Regular"
LiberationSerif-Regular.ttf: "Liberation Serif" "Regular"
ae_AlArabiya.ttf: "AlArabiya" "Regular"
SourceCodePro-Regular.otf: "Source Code Pro" "Regular"
Pothana2000.ttf: "Pothana2000" "Regular"
TAMu_Kalyani.ttf: "TAMu_Kalyani" "Regular"
TSCu_Comic.ttf: "TSCu_Comic" "Normal"
Naqsh.ttf: "Naqsh" "Regular"
ae_Tholoth.ttf: "Tholoth" "Regular"
HanaMinA.ttf: "HanaMinA" "Regular"
HanaMinB.ttf: "HanaMinB" "Regular"
oriya.ttf: "orya" "Medium"
GurbaniBoliLite.ttf: "GurbaniBoliLite" "Medium"
LiberationSerif-Italic.ttf: "Liberation Serif" "Italic"
Gargi-1.2b.ttf: "Gargi-1.2b" "1.2b"
ter-u12n.otb: "Terminus" "Regular"
ter-x12n.pcf.gz: "xos4 Terminus" "Regular"

Same thing happens if I install Noto Fonts and remove Arabeyes -- Then Chromium just uses Noto Sans Arabic and does not allow changing it to anything else. If I install Arabeyes fonts again, Chromium just uses Roya sad .  I read a few links about this and it seems due to Sandboxing Chromium doesn't use fonts from the system : https://dev.chromium.org/developers/linux-technical-faq & on Arch wiki : https://wiki.archlinux.org/index.php/Chromium#Fonts.

So since it doesn't respect the fontconfig, is there any other way to change the fc-match -s sans list to put the desired font as the first available one?

Thanks.

EDIT : Did some more testing and it seems that fc-match -s sans:lang=ar shows me the font that I set as the first one but Chromium is just using the first one available from the fc-match -s sans list and not considering my language match while Firefox is.

fc-match -s sans:lang=ar
ae_Tholoth.ttf: "Tholoth" "Regular"
ae_AlArabiya.ttf: "AlArabiya" "Regular"
NimbusSans-Regular.otf: "Nimbus Sans" "Regular"
MuktiNarrow.ttf: "Mukti Narrow" "Regular"
malayalam.ttf: "malayalam" "Regular"
Sampige.ttf: "Sampige" "Regular"
padmaa-Medium-0.5.ttf: "padmaa" "regular"
TSCu_Paranar.ttf: "TSCu_Paranar" "Regular"
TSCu_paranarb.ttf: "TSCu_Paranar" "Bold"
TSCu_paranari.ttf: "TSCu_Paranar" "Italic"
NotoSans-Regular.ttf: "Noto Sans" "Regular"
roya.ttf: "Roya" "Regular"
KacstOne.ttf: "KacstOne" "Regular"
Inconsolata-Regular.ttf: "Inconsolata" "Regular"
NotoSansAdlam-Regular.ttf: "Noto Sans Adlam" "Regular"
NotoSansHebrew-Regular.ttf: "Noto Sans Hebrew" "Regular"
NotoSansWarangCiti-Regular.ttf: "Noto Sans Warang Citi" "Regular"
Roboto-Regular.ttf: "Roboto" "Regular"
NotoKufiArabic-Regular.ttf: "Noto Kufi Arabic" "Regular"
NotoSansHanifiRohingya-Regular.ttf: "Noto Sans Hanifi Rohingya" "Regular"
NotoSansLisu-Regular.ttf: "Noto Sans Lisu" "Regular"
NotoSansSoraSompeng-Regular.ttf: "Noto Sans Sora Sompeng" "Regular"
LiberationMono-Regular.ttf: "Liberation Mono" "Regular"
LiberationSerif-Regular.ttf: "Liberation Serif" "Regular"
SourceCodePro-Regular.otf: "Source Code Pro" "Regular"
NotoSansMono-Regular.ttf: "Noto Sans Mono" "Regular"
NotoNaskhArabicUI-Regular.ttf: "Noto Naskh Arabic UI" "Regular"
NotoSansArabic-Regular.ttf: "Noto Sans Arabic" "Regular"
NotoSansArmenian-Regular.ttf: "Noto Sans Armenian" "Regular"
NotoSansNewa-Regular.ttf: "Noto Sans Newa" "Regular"
NotoSansSymbols2-Regular.ttf: "Noto Sans Symbols2" "Regular"
NotoSerifAhom-Regular.ttf: "Noto Serif Ahom" "Regular"
NotoSansBalinese-Regular.ttf: "Noto Sans Balinese" "Regular"
NotoSansMarchen-Regular.ttf: "Noto Sans Marchen" "Regular"
NotoSansOlChiki-Regular.ttf: "Noto Sans Ol Chiki" "Regular"
NotoSansOldHungarian-Regular.ttf: "Noto Sans Old Hungarian" "Regular"
NotoSansOldItalic-Regular.ttf: "Noto Sans Old Italic" "Regular"
NotoSansSharada-Regular.ttf: "Noto Sans Sharada" "Regular"
NotoSansTakri-Regular.ttf: "Noto Sans Takri" "Regular"
NotoSansTifinagh-Regular.ttf: "Noto Sans Tifinagh" "Regular"
NotoSansZanabazarSquare-Regular.ttf: "Noto Sans Zanabazar Square" "Regular"
NotoSerifGujarati-Regular.ttf: "Noto Serif Gujarati" "Regular"
NotoSerifKannada-Regular.ttf: "Noto Serif Kannada" "Regular"
NotoSerifSinhala-Regular.ttf: "Noto Serif Sinhala" "Regular"
NotoSansAvestan-Regular.ttf: "Noto Sans Avestan" "Regular"
NotoSansBengali-Regular.ttf: "Noto Sans Bengali" "Regular"
NotoSansBhaiksuki-Regular.ttf: "Noto Sans Bhaiksuki" "Regular"
NotoSansBrahmi-Regular.ttf: "Noto Sans Brahmi" "Regular"
NotoSansCaucasianAlbanian-Regular.ttf: "Noto Sans Caucasian Albanian" "Regular"
NotoSansChakma-Regular.ttf: "Noto Sans Chakma" "Regular"
NotoSansDevanagari-Regular.ttf: "Noto Sans Devanagari" "Regular"
NotoSansGeorgian-Regular.ttf: "Noto Sans Georgian" "Regular"
NotoSansGrantha-Regular.ttf: "Noto Sans Grantha" "Regular"
NotoSansGurmukhi-Regular.ttf: "Noto Sans Gurmukhi" "Regular"
NotoSansKaithi-Regular.ttf: "Noto Sans Kaithi" "Regular"
NotoSansKayahLi-Regular.ttf: "Noto Sans Kayah Li" "Regular"
NotoSansKharoshthi-Regular.ttf: "Noto Sans Kharoshthi" "Regular"
NotoSansKhmer-Regular.ttf: "Noto Sans Khmer" "Regular"
NotoSansKhojki-Regular.ttf: "Noto Sans Khojki" "Regular"
NotoSansLao-Regular.ttf: "Noto Sans Lao" "Regular"
NotoSansLinearB-Regular.ttf: "Noto Sans Linear B" "Regular"
NotoSansMalayalam-Regular.ttf: "Noto Sans Malayalam" "Regular"
NotoSansMandaic-Regular.ttf: "Noto Sans Mandaic" "Regular"
NotoSansMath-Regular.ttf: "Noto Sans Math" "Regular"
NotoSansMeeteiMayek-Regular.ttf: "Noto Sans Meetei Mayek" "Regular"
NotoSansMiao-Regular.ttf: "Noto Sans Miao" "Regular"
NotoSansMongolian-Regular.ttf: "Noto Sans Mongolian" "Regular"
NotoSansMyanmar-Regular.ttf: "Noto Sans Myanmar" "Regular"
NotoSansNKo-Regular.ttf: "Noto Sans NKo" "Regular"
NotoSansNewTaiLue-Regular.ttf: "Noto Sans New Tai Lue" "Regular"
NotoSansSiddham-Regular.ttf: "Noto Sans Siddham" "Regular"
NotoSansSignWriting-Regular.ttf: "Noto Sans SignWriting" "Regular"
NotoSansSundanese-Regular.ttf: "Noto Sans Sundanese" "Regular"
NotoSansSylotiNagri-Regular.ttf: "Noto Sans Syloti Nagri" "Regular"
NotoSansSymbols-Regular.ttf: "Noto Sans Symbols" "Regular"
NotoSansTaiTham-Regular.ttf: "Noto Sans Tai Tham" "Regular"
NotoSansTamil-Regular.ttf: "Noto Sans Tamil" "Regular"
NotoSansTelugu-Regular.ttf: "Noto Sans Telugu" "Regular"
NotoSansTirhuta-Regular.ttf: "Noto Sans Tirhuta" "Regular"
NotoSerifTangut-Regular.ttf: "Noto Serif Tangut" "Regular"
NotoSerifTibetan-Regular.ttf: "Noto Serif Tibetan" "Regular"
NotoMusic-Regular.ttf: "Noto Music" "Regular"
NotoSansAnatolianHieroglyphs-Regular.ttf: "Noto Sans Anatolian Hieroglyphs" "Regular"
NotoSansBamum-Regular.ttf: "Noto Sans Bamum" "Regular"
NotoSansBassaVah-Regular.ttf: "Noto Sans Bassa Vah" "Regular"
NotoSansBatak-Regular.ttf: "Noto Sans Batak" "Regular"
NotoSansBuginese-Regular.ttf: "Noto Sans Buginese" "Regular"
NotoSansBuhid-Regular.ttf: "Noto Sans Buhid" "Regular"
NotoSansCanadianAboriginal-Regular.ttf: "Noto Sans Canadian Aboriginal" "Regular"
NotoSansCarian-Regular.ttf: "Noto Sans Carian" "Regular"
NotoSansCham-Regular.ttf: "Noto Sans Cham" "Regular"
NotoSansCherokee-Regular.ttf: "Noto Sans Cherokee" "Regular"
NotoSansCoptic-Regular.ttf: "Noto Sans Coptic" "Regular"
NotoSansCuneiform-Regular.ttf: "Noto Sans Cuneiform" "Regular"
NotoSansCypriot-Regular.ttf: "Noto Sans Cypriot" "Regular"
NotoSansDeseret-Regular.ttf: "Noto Sans Deseret" "Regular"
NotoSansDuployan-Regular.ttf: "Noto Sans Duployan" "Regular"
NotoSansEgyptianHieroglyphs-Regular.ttf: "Noto Sans Egyptian Hieroglyphs" "Regular"
NotoSansElbasan-Regular.ttf: "Noto Sans Elbasan" "Regular"
NotoSansEthiopic-Regular.ttf: "Noto Sans Ethiopic" "Regular"
NotoSansGlagolitic-Regular.ttf: "Noto Sans Glagolitic" "Regular"
NotoSansGothic-Regular.ttf: "Noto Sans Gothic" "Regular"
NotoSansHanunoo-Regular.ttf: "Noto Sans Hanunoo" "Regular"
NotoSansHatran-Regular.ttf: "Noto Sans Hatran" "Regular"
NotoSansImperialAramaic-Regular.ttf: "Noto Sans Imperial Aramaic" "Regular"
NotoSansIndicSiyaqNumbers-Regular.ttf: "Noto Sans Indic Siyaq Numbers" "Regular"
NotoSansInscriptionalPahlavi-Regular.ttf: "Noto Sans Inscriptional Pahlavi" "Regular"
NotoSansInscriptionalParthian-Regular.ttf: "Noto Sans Inscriptional Parthian" "Regular"
NotoSansJavanese-Regular.ttf: "Noto Sans Javanese" "Regular"
NotoSansKhudawadi-Regular.ttf: "Noto Sans Khudawadi" "Regular"
NotoSansLepcha-Regular.ttf: "Noto Sans Lepcha" "Regular"
NotoSansLimbu-Regular.ttf: "Noto Sans Limbu" "Regular"
NotoSansLinearA-Regular.ttf: "Noto Sans Linear A" "Regular"
NotoSansLycian-Regular.ttf: "Noto Sans Lycian" "Regular"
NotoSansLydian-Regular.ttf: "Noto Sans Lydian" "Regular"
NotoSansMahajani-Regular.ttf: "Noto Sans Mahajani" "Regular"
NotoSansManichaean-Regular.ttf: "Noto Sans Manichaean" "Regular"
NotoSansMendeKikakui-Regular.ttf: "Noto Sans Mende Kikakui" "Regular"
NotoSansMeroitic-Regular.ttf: "Noto Sans Meroitic" "Regular"
NotoSansModi-Regular.ttf: "Noto Sans Modi" "Regular"
NotoSansMro-Regular.ttf: "Noto Sans Mro" "Regular"
NotoSansMultani-Regular.ttf: "Noto Sans Multani" "Regular"
NotoSansNabataean-Regular.ttf: "Noto Sans Nabataean" "Regular"
NotoSansOgham-Regular.ttf: "Noto Sans Ogham" "Regular"
NotoSansOldNorthArabian-Regular.ttf: "Noto Sans Old North Arabian" "Regular"
NotoSansOldPermic-Regular.ttf: "Noto Sans Old Permic" "Regular"
NotoSansOldPersian-Regular.ttf: "Noto Sans Old Persian" "Regular"
NotoSansOldSogdian-Regular.ttf: "Noto Sans Old Sogdian" "Regular"
NotoSansOldSouthArabian-Regular.ttf: "Noto Sans Old South Arabian" "Regular"
NotoSansOldTurkic-Regular.ttf: "Noto Sans Old Turkic" "Regular"
NotoSansOriya-Regular.ttf: "Noto Sans Oriya" "Regular"
NotoSansOsage-Regular.ttf: "Noto Sans Osage" "Regular"
NotoSansOsmanya-Regular.ttf: "Noto Sans Osmanya" "Regular"
NotoSansPahawhHmong-Regular.ttf: "Noto Sans Pahawh Hmong" "Regular"
NotoSansPalmyrene-Regular.ttf: "Noto Sans Palmyrene" "Regular"
NotoSansPauCinHau-Regular.ttf: "Noto Sans Pau Cin Hau" "Regular"
NotoSansPhagsPa-Regular.ttf: "Noto Sans PhagsPa" "Regular"
NotoSansPhoenician-Regular.ttf: "Noto Sans Phoenician" "Regular"
NotoSansPsalterPahlavi-Regular.ttf: "Noto Sans Psalter Pahlavi" "Regular"
NotoSansRejang-Regular.ttf: "Noto Sans Rejang" "Regular"
NotoSansRunic-Regular.ttf: "Noto Sans Runic" "Regular"
NotoSansSamaritan-Regular.ttf: "Noto Sans Samaritan" "Regular"
NotoSansSaurashtra-Regular.ttf: "Noto Sans Saurashtra" "Regular"
NotoSansShavian-Regular.ttf: "Noto Sans Shavian" "Regular"
NotoSansSogdian-Regular.ttf: "Noto Sans Sogdian" "Regular"
NotoSansSoyombo-Regular.ttf: "Noto Sans Soyombo" "Regular"
NotoSansSyriac-Regular.ttf: "Noto Sans Syriac" "Regular"
NotoSansTagalog-Regular.ttf: "Noto Sans Tagalog" "Regular"
NotoSansTagbanwa-Regular.ttf: "Noto Sans Tagbanwa" "Regular"
NotoSansTaiLe-Regular.ttf: "Noto Sans Tai Le" "Regular"
NotoSansTaiViet-Regular.ttf: "Noto Sans Tai Viet" "Regular"
NotoSansThaana-Regular.ttf: "Noto Sans Thaana" "Regular"
NotoSansThai-Regular.ttf: "Noto Sans Thai" "Regular"
NotoSansUgaritic-Regular.ttf: "Noto Sans Ugaritic" "Regular"
NotoSansVai-Regular.ttf: "Noto Sans Vai" "Regular"
NotoSansWancho-Regular.ttf: "Noto Sans Wancho" "Regular"
NotoSansYi-Regular.ttf: "Noto Sans Yi" "Regular"
NotoSansMasaramGondi-Regular.ttf: "Noto Sans Masaram Gondi" "Regular"
NotoSerifDogra-Regular.ttf: "Noto Serif Dogra" "Regular"
NotoSansGunjalaGondi-Regular.ttf: "Noto Sans Gunjala Gondi" "Regular"
NotoSansNushu-Regular.ttf: "Noto Sans Nushu" "Regular"
NotoSansMedefaidrin-Regular.ttf: "Noto Sans Medefaidrin" "Regular"
NotoSansTamilSupplement-Regular.ttf: "Noto Sans Tamil Supplement" "Regular"
NotoTraditionalNushu-Regular.ttf: "Noto Traditional Nushu" "Regular"
TSCu_Comic.ttf: "TSCu_Comic" "Normal"
NotoLoopedLao-Regular.ttf: "Noto Looped Lao" "Regular"
NotoLoopedThai-Regular.ttf: "Noto Looped Thai" "Regular"
NotoSansElymaic-Regular.ttf: "Noto Sans Elymaic" "Regular"
NotoSerifNyiakengPuachueHmong-Regular.ttf: "Noto Serif Hmong Nyiakeng" "Regular"
NotoSerifYezidi-Regular.ttf: "Noto Serif Yezidi" "Regular"
HanaMinA.ttf: "HanaMinA" "Regular"
HanaMinB.ttf: "HanaMinB" "Regular"
oriya.ttf: "orya" "Medium"
GurbaniBoliLite.ttf: "GurbaniBoliLite" "Medium"
LiberationSerif-Italic.ttf: "Liberation Serif" "Italic"
Gargi-1.2b.ttf: "Gargi-1.2b" "1.2b"
ter-u12n.otb: "Terminus" "Regular"
ter-x12n.pcf.gz: "xos4 Terminus" "Regular"

How can I change the match filter so that Chromium also acknowledges the language match and accordingly changes the font?

Last edited by Inxsible (2021-04-24 20:18:45)


Forum Rules

There's no such thing as a stupid question, but there sure are a lot of inquisitive idiots !

Offline

#2 2021-04-24 20:17:56

Inxsible
Forum Fellow
From: Chicago
Registered: 2008-06-09
Posts: 9,183

Re: [SOLVED]Non-Latin fonts in Chromium

SOLVED --

Fixed it by using the alias instead.

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


<!-- Fallback fonts preference order -->
 <alias>
  <family>sans-serif</family>
  <prefer>
   <family>Noto Sans</family>
   <family>Open Sans</family>
   <family>Droid Sans</family>
   <family>Roboto</family>
   <family>Tholoth</family>
  </prefer>
 </alias>
 <alias>
  <family>serif</family>
  <prefer>
   <family>Noto Serif</family>
   <family>Droid Serif</family>
   <family>Roboto Slab</family>
   <family>Tholoth</family>
  </prefer>
 </alias>
 <alias>
  <family>monospace</family>
  <prefer>
   <family>Noto Sans Mono</family>
   <family>Droid Sans Mono</family>
   <family>Roboto Mono</family>
  </prefer>
 </alias>

</fontconfig>

This is respected by both Chromium and Firefox -- whereas the match test for language is only respected by Firefox.

Last edited by Inxsible (2021-04-24 20:19:17)


Forum Rules

There's no such thing as a stupid question, but there sure are a lot of inquisitive idiots !

Offline

Board footer

Powered by FluxBB