Innstille Fontconfig

Oversikt over Fontconfig

Hvis du kun leser tekst på engelsk, og er fornøyd med vanlige libre fonter som er oppført på neste side, trenger du kanskje aldri å bekymre deg for detaljer om hvordan Fontconfig virker. Men det er mange ting som kan endres hvis de ikke passer dine behov, hvorfor de kanskje ikke alltid fungerer, og for å identifisere nettbasert informasjon som ikke lenger er hensiktsmessig.

Men før du bruker lang tid på å prøve ut forskjellige innstillinger vær oppmerksom på at moderne applikasjoner og skrivebordsmiljøer kan ignorere innstillinger for fontconfig - se Elementer som kan overstyre Fontconfig.

Selv om denne siden er lang, skraper den knapt overflaten, og det du vil kunne finne mange alternative synspunkter på nettet (men husk at noen ting har endret seg gjennom årene, for eksempel autohinteren er ikke lenger standard). Målet her er å gi deg nok informasjon for å forstå endringene du gjør, hvorfor de kanskje ikke alltid fungerer, og for å identifisere online informasjon som ikke lenger er hensiktsmessig.

Dessverre er noe av terminologien tvetydig (f.eks. 'font face' kan betyr et navn kjent for Fontconfig, eller det vanlige, kondenserte, etc variasjoner av en font) og 'stil' kan brukes til skille 'vanlig' fra 'kursiv', eller ved å beskrive noen klasser av Serif fonter.

Følgende lenker er for å hjelpe navigering på denne siden.

Xft Font Protokoll

Xft fontprotokollen gir kantutjevnet skriftgjengivelse gjennom freetype, og fonter styres fra klientsiden ved bruk av Fontconfig (utenom rxvt-unicode-9.31 som kan bruke fonter oppført i ~/.Xresources, og AbiWord-3.0.5 som bruker kun den angitte fonten). Standard søkesti er /usr/share/fonts og ~/.local/share/fonts, selv om for øyeblikket den gamle og utdaterte plasseringen ~/.fonts virker fortsatt. Fontconfig søker mapper i stien sin rekursivt og opprettholder en hurtigbuffer med fontkarakteristikkene i hver mappe. Hvis hurtiglageret ser ut til å være utdatert, ignoreres den, og informasjon hentes fra selve fonten (det kan ta noen få sekunder hvis du har mange fonter installert).

Hvis du har installert Xorg i et hvilket som helst prefiks annet enn /usr, ingen X fonter ble installert i et sted kjent for Fontconfig. Symbolkoblinger var opprettet fra OTF og TTF X font mapper til /usr/share/fonts/X11-{OTF,TTF} i Xorg Fonter. Dette tillater Fontconfig å bruke OpenType og TrueType fonter levert av X, selv om mange vil foretrekke å bruke mer moderne fonter.

Fontconfig bruker navn for å definere fonter. Applikasjoner bruker vanligvis generiske skriftnavn som "Monospace", "Sans" og "Serif". Fontconfig løser disse navnene til en font som har alle tegn som dekker ortografien til språket som er angitt av lokalinnstillingene.

Nyttige kommandoer

Følgende kommandoer kan være nyttige når du arbeider med Fontconfig, spesielt hvis du er interessert i å overstyre hvilken font som skal bli brukt.

fc-list | less : viser en liste over alle tilgjengelige fonter (/sti/til/filnavn: Fontnavn:stil). Hvis du installerte en font og den ikke vises, kan ikke mappen den finnes i leses av brukeren din.

fc-match 'Font Name' : forteller deg hvilken font som brukes hvis den navngitte fonten er forespurt. Vanligvis vil du bruke dette til å se hva som skjer hvis en font du ikke har installert blir forespurt, men du kan også bruke den hvis systemet gir deg en annen font enn hva du forventet (kanskje fordi Fontconfig tror ikke at fonten støtter språket ditt).

fc-match TYPE : viser hvilken font vil bli brukt på gjeldende språk for TYPE (Monospace, Sans, Serif (første stor bokstav er valgfritt)). Hvis den skriften ikke kartlegger et kodepunkt, Fontconfig kan ta en glyph fra hvilken som helst tilgjengelig skrift, selv om den ikke er av den angitte typen. Enhver annen verdi for TYPE vil antas å være Sans.

fc-match 'Serif :lang=ja:weight=bold' vil fortelle deg hvilken font og vekt som skal velges for japansk tekst i fet skrift. Det betyr ikke at den rapporterte fonten nødvendigvis vil kunne vises Japanske ideogrammer, så en reserve kan brukes, eller noen glyfer kan være savnet. For språkkoder, bruk ISO-639-verdier som 'fr', 'ja', 'zh-cn'. Merk at en ukjent verdi som bare 'zh' ikke vil returnere noen samsvar. For å illustrere tilbakefallet, på et system hvor både Noto Sans Mono og DejaVu Sans Mono er installert, fc-match 'monospace :lang=en viser Noto Sans Mono vil bli brukt, men hvis lang er endret til 'ar' (arabisk) DejaVu Sans vil bli brukt.

Hvis du vil finne ut om en skriftfil har hinting (mange eldre skrifter har ikke, fordi det var patentert) bruk fc-query /sti/til/fontfil | grep 'fonthashint:': som vil rapportere 'True(s)' eller 'False(s)'. Noen nyere fonter med både TTF og OTF versjoner vil ha hinting i TTF filene.

Hvis du ønsker å vite hvilken font vil brukes til en tekststreng (dvs. en eller flere glyfer, innledet av et mellomrom), lim inn følgende kommando og erstatt xyz av teksten du vil sjekke:

FC_DEBUG=4 pango-view --font=monospace -t xyz | grep family : dette krever Pango-1.54.0 og ImageMagick-7.1.1-36 - det vil display vise teksten i et lite vindu, og etter å ha lukket det den siste linjen av utdata vil vise hvilken font som ble valgt. Dette er spesielt nyttig for CJK språk, og du kan også gi et språk, f.eks. PANGO_LANGUAGE=en;ja (engelsk, anta deretter japansk) eller bare zh-cn (eller andre varianter som zh-sg eller zh-tw).

Konfigurasjonsfilene

Hovedfilene er i /etc/fonts/conf.d/, som var ment å være en mappe fylt med symbolkoblinger til noen av filene i /usr/share/fontconfig/conf.avail/. Men mange mennesker, og noen pakker, lager filene direkte. Hvert filnavn må være i form av to sifre, en bindestrek, somename.conf og de leses inn i rekkefølge.

Etter konvensjon er tallene tildelt som følger:

  • 00-09 ekstra fontmapper

  • 10-19 systemgjengivelsesstandarder (som kantutjevnelse)

  • 20-29 alternativer for fontgjengivelse

  • 30-39 familiesubstitusjon

  • 40-49 kartlegg familie til generisk type

  • 50-59 last inn alternative konfigurasjonsfiler

  • 60-69 generiske aliaser, kartlegg generisk til familie

  • 70-79 justere hvilke skrifter som er tilgjengelige

  • 80-89 samsvar med målskanning (endre skannede mønstre)

  • 90-99 fontsyntese

Du kan også ha en personlig fonts.conf i $XDG_CONFIG_HOME (which is ~/.config/fontconfig/).

Reglene for å velge en font

Hvis den forespurte fonten er installert, og forutsatt at den inneholder kodepunkter nødvendig for gjeldende språk (i kilden, se .orth-filene i fc-lang/ mappen), vil den bli brukt.

Derimot, hvis dokumentet eller siden ba om en font som ikke er installert (eller noen ganger ikke inneholder alle de nødvendige kodepunktene) følgende regler kommer inn: Først, 30-metric-aliases.conf brukes til å kartlegge aliaser for noen fonter med samme beregninger (samme størrelse osv.). Merk at det finnes både svake og sterke aliaser slik at aliaser for en form som f.eks Helvetica eller Times New Roman kan tilfredsstilles av den andre stilen, dvs. alt som er et alias for Arial eller Times i disse eksemplene. noen eksempler på latinske skrifter med samme beregninger finner du i 'Erstatninger' PDFer på typosetting.co.uk.

Etter det vil en ukjent font bli søkt etter i 45-latin.conf: 'Latin' dekker kyrillisk og gresk, og kartlegger nå også system-ui fonter som brukes for brukergrensesnittmeldinger i andre alfabeter. Hvis fonten er funnet vil det bli kartlagt som serif, sans-serif, monospace, fantasy, kursiv, eller system-ui. Ellers vil 49-sansserif.conf anta at det er Sans.

Deretter 60-latin.conf gir ordnede lister over reservene - Noto fonts vil bli brukt hvis du installerte dem. Kyrillisk og gresk ser ut til å bli behandlet på samme måte. Alle disse filene foretrekker kommersielle fonter hvis de er til stede, selv om moderne libre fonter er ofte minst like. Til slutt, hvis et kodepunkt fortsatt ikke er funnet, kan det tas fra hvilken som helst tilgjengelig systemfont. Følgende detaljer nevner kun fritt tilgjengelige fonter.

Standard persiske fonter behandles i 65-fonts-persian.conf. Det ser ut som om alle de oppførte fonter er kommersielle. Bruke skrifter som støtter persisk (som har sin egen variant av det arabiske alfabetet, og dets egne skriftstiler) er utenfor ferdighetene til BLFS redaktørene.

Alle gjenværende skript for hvilke Fontconfig har preferanser (CJK-skript, Indiske skript) er behandlet i 65-nonlatin.conf. Disse er igjen nominelt gruppert som Serif, Sans-Serif, Monospace. Av gratis fonter, WenQuanYi Zen Hei (Pan-CJK Sans) kommer først for både Serif og for Sans. Derfor, hvis du installerer dette som en reserve, men ønsker å bruke forskjellige fonter for japansk eller koreansk du må sette opp en preferanse. På samme måte er den gamle fireflysung Serif-fonten også oppført for Sans.

Etter Pan-CJK og kinesiske fonter kommer flere japanske fonter og deretter flere koreanske fonter (begge delt riktig mellom Sans og Serif). Til slutt kommer de forskjellige Lohit Indic-familiene (én fontfil per skript), merket som både Sans og Serif.

Monospace fontene som er oppført i 65-nonlatin.conf inkludere ikke WenQuanYi Zen Hei selv om det vil være tilgjengelig som en fallback hvis installert. Flere japanske gotiske fonter er oppført, fulgt av AR PL KaitiM GB (en zh-sc 'Brush'-font), AR PL Serif-fonter for zh-sc (SungtiL) og zh-tw (Mingti2L), noen koreanske Sans-fonter og de forskjellige Lohit Indic-familier.

For UI fonter er forskjellige Noto Sans UI fonter de eneste oppførte gratis skriftene.

De forskjellige Noto CJK fontene er ikke blant de oppførte fonter, muligens foretrakk RedHat utviklerne andre fonter. Disse kommer nå i mange varianter, og de fleste brukere som bruker disse vil ikke installere andre CJK fonter.

Før Fontconfig-2.14 var den første foretrukne latinske fontfamilien Bitstream Vera. I praksis ble det lite brukt fordi det dekket så lite. Etter at DejaVu var den neste foretrukne familien, så folk ble anbefalt å installer det. Det har nå endret seg, Bitstream Vera er erstattet av relevante Noto fonter (Serif, Sans, Sans Mono), så disse vil bli foretrukket hvis de er installert, etterfulgt av DejaVu.

For serif kunne Times New Roman ha blitt alias fra Liberation Serif eller Tinos og Times fra TeX Gyre Termes, så selv om de navngitte fontene ikke er gratis, de metriske kompatible skriftene kan brukes. Ignorerer andre ikke-frie skrifter, den resterende rekkefølgen for serif er: Times New Roman, Luxi Serif, Nimbus Roman No9 L, og Times. I praksis betyr det disse skriftene på slutten av listen vil neppe bli brukt med mindre en nettside ber om dem.

For sans-serif er den gjenværende rekkefølgen alt som er tilordnet Arial, Luxi Sans, Nimbus Sans L, og alt som er kartlagt til Helvetica.

De resterende alternativene for monospace er Inconsolata, alt kartlagt til Courier New, Luxi Mono, Nimbus Mono og alt som er kartlagt til Courier.

For 'fantasy' er det ingen gratis fonter, så Fontconfig vil falle tilbake til sans-serif.

For 'kursiv' er den eneste gratis fonten TeX Gyre Chorus som et alias for ITC Zapf kanselli, ellers vil Fontconfig igjen falle tilbake til sans-serif.

System-ui kategorien er uvanlig. Det er for grensesnittmeldinger, så noen skript trenger spesialversjoner for å passe inn i den tilgjengelige plassen. For latin, Gresk og kyrillisk en vanlig sans-font burde passe uten problemer. Derimot, den første foretrukne fonten er Cantarell, etterfulgt av Noto Sans UI. Cantarell startet som en latinsk sans-serif font, som har blitt forgrenet i Gnome under samme navn, men de gir bare kilden. Noto Sans UI fontene er for andre språk.

Siden Fontconfig-2.12.5, er det også generisk familietilpasning for noen emoji og matematiske fonter, se {45,60}-generic.conf.

I de sjeldne tilfellene hvor en font ikke inneholder alle forventede kodepunkter, se 'Prøv den første:' på I stared into the fontconfig for de lange detaljene.

Antyding og Anti-aliasing

Det er mulig å endre hvordan, eller om, fonter antydes. Følgende eksempelfil inneholder standardinnstillingene, men med kommentarer. Innstillingene er mye ned til brukerens preferanser og til valget av fonttyper, så en endring som forbedrer noen sider kan forverre andre. Den foretrukket plassering for denne filen er: ~/.config/fontconfig/fonts.conf

For å prøve ut forskjellige innstillinger, må du kanskje avslutte Xorg og deretter kjøre startx en gang til slik at alle applikasjoner bruker de nye innstillingene. Flere ting kan overstyre fontconfig innstillingene, se Elementer som kan overstyre Fontconfig nedenfor for mer detaljer. For å utforske mulighetene, lag en fil for brukeren din:

mkdir -pv ~/.config/fontconfig &&
cat > ~/.config/fontconfig/fonts.conf << "EOF"
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>

  <match target="font" >
    <!-- autohint was the old automatic hinter when hinting was patent
    protected, so turn it off to ensure any hinting information in the font
    itself is used, this is the default -->
    <edit mode="assign" name="autohint">  <bool>false</bool></edit>

    <!-- hinting is enabled by default -->
    <edit mode="assign" name="hinting">   <bool>true</bool></edit>

    <!-- for the lcdfilter see https://www.spasche.net/files/lcdfiltering/ -->
    <edit mode="assign" name="lcdfilter"> <const>lcddefault</const></edit>

    <!-- options for hintstyle:
    hintfull: is supposed to give a crisp font that aligns well to the
    character-cell grid but at the cost of its proper shape. However, anything
    using Pango >= 1.44 will not support full hinting, Pango now uses harfbuzz
    for hinting. Apps which use Skia (e.g. Chromium, Firefox) should not be
    affected by this. 

    hintmedium: is reported to be broken.
    hintslight is the default: - supposed to be more fuzzy but retains shape.

    hintnone: seems to turn hinting off.
    The variations are marginal and results vary with different fonts -->
    <edit mode="assign" name="hintstyle"> <const>hintslight</const></edit>

    <!-- antialiasing is on by default and really helps for faint characters
    and also for 'xft:' fonts used in rxvt-unicode -->
    <edit mode="assign" name="antialias"> <bool>true</bool></edit>

    <!-- subpixels are usually rgb, see
    http://www.lagom.nl/lcd-test/subpixel.php -->
    <edit mode="assign" name="rgba">      <const>rgb</const></edit>

    <!-- thanks to the Arch wiki for the lcd and subpixel links -->
  </match>

</fontconfig>
EOF

Du må nå redigere filen i ditt foretrukne redigeringsprogram. Mange av de ulike innstillinger gir svært subtile forskjeller og resultatene kan variere for noen av skriftene du bruker.

[Notat]

Notat

Hint, hvis aktivert, gjøres i FreeType. Siden FreeType-2.7 er standard TrueType tolk v40. Den originale v35 hint kan aktiveres av en miljøvariabel, men er egentlig bare passende for originale Microsoft TTF fonter (Arial, osv.). V38 hinter (Infinality) er ikke bygget som standard og alle alternativene for å stille den er fjernet. For fullstendige detaljer se subpixel-hinting (Spoiler: det er INGEN sub-piksel hint, koden ignorerer ganske enkelt alle horisontale hint instruksjoner).

Xorg antar at skjermer har 96 punkter per tomme (DPI). De fleste LCD skjermer er nær dette, men noen mennesker oppdager fargekanter hvis skjermen deres avviker fra den størrelsen. Se calc-dpi.

Hvis du har en High DPI skjerm (ofte beskrevet som '4K' eller større), vil du sannsynligvis bruke større skriftstørrelser og dra nytte av å deaktivere hinting.

For flere eksempler se blfs støttetråden som startet på 2016-09/00128, spesielt 2016-09/00137, og originaloppretteren sin foretrukne løsning på 2016-09/00147. Det er andre eksempler i Fontconfig i Arch wiki og Fontconfig i Gentoo wiki.

Deaktivering av Bitmap Fonter

I tidligere versjoner av BLFS var de stygge gamle Xorg bitmap fontene installert. Nå er det mange som ikke trenger å installere noen av dem. Men hvis du av en eller annen grunn har installert en eller flere punktgrafikkfonter, kan du hindre dem i å bli brukt av Fontconfig ved å opprette følgende fil som root bruker :

cat > /etc/fonts/conf.d/70-no-bitmaps.conf << "EOF"
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<!-- Reject bitmap fonts -->
 <selectfont>
  <rejectfont>
   <pattern>
     <patelt name="scalable"><bool>false</bool></patelt>
   </pattern>
  </rejectfont>
 </selectfont>
</fontconfig>
EOF

Syntetiske endringer

I 90-synthetic.conf det finnes eksempler på å aktivere syntetisk skråstilt og dristig til en font. Den syntetiske oppmuntrende kan brukes på en synlig svak skrift, men resultatene er ikke alltid like forventet: Med bare embolden, Epiphany viste mørkere skrifter mens Firefox gjorde ikke - så selv om Cairo brukes nå av firefox kommentaren om innstilling av vekt er ennå gyldig. Men setter begge deler, Epiphany vil vise fet skrift tekst som standard, men den vil vise tung tekst hvis markup for fet brukes. I begge tilfeller heller ikke libreOffice eller falkon viste tykkere tekst.

Legge til ekstra fontmapper

Normalt er systemfonter og brukerfonter installert i mapper under stedene spesifisert i Xft Font Protokoll og det er ingen åpenbar grunn til å plassere dem andre steder. Imidlertid en full BLFS installasjon av texlive-20240312 putter mange fonter i /opt/texlive/2024/texmf-dist/fonts/ i opentype/ og truetype/ undermapper. Selv om å trekke inn alle disse filene kan virke nyttige (det lar deg bruke dem i ikke TeX programmer), det er flere problemer med en slik tilnærming:

  1. Det er hundrevis av filer, noe som gjør det vanskelig å velge fonter.

  2. Noen av filene gjør rare ting, for eksempel å vise semaforflagg i stedet for ASCII bokstaver, eller kartlegge kyrilliske kodepunkter til tegnformer passende for gammelkirkeslavisk i stedet for det forventede nåværende form: greit hvis det er det du trenger, men smertefullt for normalt bruk.

  3. Flere fonter har flere størrelser og ugjennomtrengelige korte navn, som begge gjør det enda vanskeligere å velge riktig font.

  4. Når en font legges til CTAN, er den ledsaget av TeX pakker for å bruke de i gamle motorene (xelatex trenger normalt ikke dette), og da er versjonen ofte frosset mens fonten vedlikeholdes separat. Noen av disse fontene som f.eks Dejavu fonts er sannsynligvis allerede installert på BLFS systemet i en nyere versjon, og hvis du har flere versjoner av en font er det uklart hvilken som skal brukes av Fontconfig.

Noen ganger er det imidlertid nyttig å se på disse skriftene i ikke-TeX applikasjoner, om bare for å se om du ønsker å installere en nåværende versjon. Hvis du har installert alle texlive, følgende eksempel vil lage en av Arkandis Open Type fontene tilgjengelig for andre applikasjoner, og alle tre av ParaType TrueType fonter. Juster eller gjenta linjene etter ønske, for enten å lage alle opentype/ eller truetype fonter tilgjengelig, eller for å velge forskjellige fontmapper. Som root bruker:

cat > /etc/fonts/conf.d/09-texlive.conf << "EOF"
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
  <dir>/opt/texlive/2024/texmf-dist/fonts/opentype/arkandis/berenisadf</dir>
  <dir>/opt/texlive/2024/texmf-dist/fonts/truetype/paratype</dir>
</fontconfig>
EOF

Hvis du gjør dette, husk å endre alle forekomster av året i den filen når du oppgraderer texlive til en senere utgivelse.

Foretrekke visse fonter

Med unntak av nettsider som bruker WOFF fonter og enten deler dem eller lenker til google for å laste dem ned, har nettsider tradisjonelt foreslått en liste over foretrukne fontfamilienavn hvis de brydde seg (f.eks. Times New Roman, Serif). Det er mange grunner til at folk ønsker å ha sider som spesifiserer en foretrukket font, bruker en annen font, eller foretrekker spesifikke fonter i Monospace eller Sans eller Serif. Som du forventer, det er en rekke forskjellige måter å oppnå dette på.

Fontconfig brukerdokumentasjon

Fontconfig installerer brukerdokumentasjon som inkluderer et eksempel 'Brukerkonfigurasjonsfil' som bl.a foretrekker WenQuanYi ZenHei (en Sans font) hvis en Serif font er forespurt for kinesisk (denne delen kan være anakronistisk med mindre du har ikke-gratis kinesiske fonter, fordi i 65-nonlatin.conf denne fonten er allerede blant foretrukne fonter når Serif er spesifisert for kinesisk) og foretrekke moderne VL Gothic font hvis en Sans font er spesifisert på en Japansk side (ellers ville et par andre fonter være foretrukket hvis de er installert).

Hvis du har installert gjeldende versjon, er brukerdokumentasjonen tilgjengelig i HTML, PDF og tekst versjoner på /usr/share/doc/fontconfig-2.15.0/ : endre versjonen hvis du installerte en annen versjon.

Foretrekke en bestemt font

For eksempel, hvis du av en eller annen grunn ønsket å bruke Nimbus Roman No9 L font uansett hvor det refereres til Times New Roman (de er metrisk lik, og foretrukket for Times Roman, men Serif-fonten fra Liberation fonts vil bli foretrukket for Times New Roman font hvis installert), som en individuell bruker kan du installere fonten og deretter lage følgende fil:

mkdir -pv ~/.config/fontconfig/conf.d &&
cat >  ~/.config/fontconfig/conf.d/35-prefer-nimbus-for-timesnew.conf << "EOF"
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<!-- prefer Nimbus Roman No9 L for Times New Roman as well as for Times,
 without this Tinos and Liberation Serif take precedence for Times New Roman
 before Fontconfig falls back to whatever matches Times -->
    <alias binding="same">
        <family>Times New Roman</family>
        <accept>
            <family>Nimbus Roman No9 L</family>
        </accept>
    </alias>
</fontconfig>
EOF

Dette er noe du vanligvis ville gjort i en individuell brukerinnstilling, men filen i dette tilfellet har fått prefikset '35-' slik at den kan om ønskelig brukes over hele systemet i /etc/fonts/conf.d/.

Foretrekke valgte CJK fonter

Følgende eksempel på en lokal konfigurasjon (dvs. en som gjelder for alle brukere av maskinen) gjør flere ting. Det er spesielt passende der det ikke er angitt noe språk, eller for lesing av CJK tekst i et ikke-CJK lokalitet, og hvor de japanske formene for kodepunktene deles med kinesere foretrekkes. Spesielt alternativ tilnærminger ville være å spesifisere en kinesisk font foran en japansk font, noe som betyr at bare Kana symboler vil bli brukt fra den japanske fonten, eller for å ikke spesifisere DejaVu slik at den første fonten i hvert sett av preferanser foretrekkes for tekst som bruker latinske alfabeter.

  1. Hvis en Serif font er spesifisert, foretrekker den Dejavu fonts. Hvis Han kodepunkter blir funnet, eller det japanske språket er spesifisert, Mincho-fonten fra IPAex fonts vil bli brukt. Hvis Hangul kodepunkter er funnet eller det koreanske språket er spesifisert, UnBatang (se Korean fonts) vil bli brukt: Endre den linjen Hvis du installerte en annen koreansk serif font. Etter det, WenQuanYi ZenHei (Sans, men en standard for Serif og monospace) brukes. En tidligere versjon av denne siden nevnt bruker UMing som er en tradisjonell kinesisk font som sendes med en gammel conf-fil som foretrekker den for zh-tw og zh-hk språk koder (og for sans-serif og monospace). Men uten conf-filen, Fontconfig vil bare behandle det som passende for zh-hk. Conf-filen må redigeres til gjeldende stil og vil da bli det prepended, så å spesifisere UMing hører ikke hjemme i denne local.conf filen.

  2. For Sans Serif preferanser begynner igjen med Dejavu fonts, deretter VL Gothic for japansk før man faller tilbake til WenQuanYi Zen Hei som er Sans og dekker både kinesisk og koreansk Hangul.

  3. Monospace fontene tvinges til de foretrukne Sans skriftene. Hvis teksten er på kinesisk eller koreansk da vil WenQuanYi ZenHei bli brukt.

I en ikke-CJK lokale er resultatet at passende fonter vil bli brukt for alle varianter av kinesisk, japansk og Hangul-koreansk (men japanske varianter av tegnene som deles med kinesiske Han, vil bli brukt). Alle andre språk bør allerede fungere hvis en font er til stede. Som root bruker:

cat > /etc/fonts/local.conf << "EOF"
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
    <alias>
        <family>serif</family>
        <prefer>
            <family>DejaVu Serif</family>
            <family>IPAexMincho</family>
            <!-- WenQuanYi is preferred as Serif in 65-nonlatin.conf,
            override that so a real Korean font can be used for Serif -->
            <family>UnBatang</family>
        </prefer>
    </alias>
    <alias>
         <family>sans-serif</family>
         <prefer>
             <family>DejaVu Sans</family>
             <family>VL Gothic</family>
         <!-- This assumes WenQuanYi is good enough for Korean Sans -->
         </prefer>
    </alias>
    <alias>
         <family>monospace</family>
         <prefer>
             <family>DejaVu Sans Mono</family>
             <family>VL Gothic</family>
         <!-- This assumes WenQuanYi is good enough for Korean Monospace -->
         </prefer>
    </alias>
</fontconfig>
EOF

Redigering av gammeldagse conf filer

Noen skrifter, spesielt kinesiske skrifter, leveres med conf filer som kan være installert i /etc/fonts/conf.d. Men hvis du gjør det og deretter bruker en terminal til å kjøre en hvilken som helst kommando som bruker Fontconfig du kan se feilmeldinger som f.eks som :

Fontconfig warning: "/etc/fonts/conf.d/69-odofonts.conf", line 14: Having multiple <family> in <alias> isn't supported and may not work as expected.

I praksis fungerer ikke disse gamle reglene. For ikke-CJK brukere, Fontconfig vil vanligvis gjøre en god jobb uten disse reglene. Deres opprinnelse går tilbake til når CJK brukere trengte håndlagde punktgrafikk for å være lesbare i små størrelser, og de så stygge ut ved siden av kantutjevnede latinske glyfer - de foretrakk å bruke samme CJK skrift for de latinske tegnene. Det er en bivirkning ved å gjøre dette : fonten (Serif) brukes ofte også for Sans, og i en slik situasjon den (engelsk) teksten i Gtk menyene vil bruke denne fonten - sammenlignet med systemfonter, i tillegg til at den er serif både svak og ganske liten. Det kan gjøre det ubehagelig å lese.

Likevel kan disse gamle conf filene fikses hvis du ønsker å bruke dem. Følgende eksempel er den første delen av 64-arphic-uming.conf fra UMing - det er mange flere lignende elementer som også må endres :

   <match target="pattern">
       <test qual="any" name="lang" compare="contains">
           <string>zh-cn</string>
           <string>zh-sg</string>
       </test>
       <test qual="any" name="family">
           <string>serif</string>
       </test>
       <edit name="family" mode="prepend" binding="strong">
           <string>AR PL UMing CN</string>
       </edit>
   </match>

Prosessen for å rette opp dette er grei, men kjedelig - for alle elementer som produserer en feilmelding ved å bruke redigeringsprogrammet (som root bruker) rediger den installerte filen for å gjenta hele blokken så mange ganger som det er flere variabler, reduser deretter hvert eksempel til å ha bare ett av dem. Du kan ønske å jobbe med en feil om gangen, lagre filen etter hver rettelse, og fra en eget terminal kjør en kommando som f.eks fc-list 2>&1 | less for å se at reparasjonen fungerte. For blokken ovenfor, den reparerte versjonen vil være :

   <match target="pattern">
       <test qual="any" name="lang" compare="contains">
           <string>zh-cn</string>
       </test>
       <test qual="any" name="family">
           <string>serif</string>
       </test>
       <edit name="family" mode="prepend" binding="strong">
           <string>AR PL UMing CN</string>
       </edit>
    </match>
   <match target="pattern">
       <test qual="any" name="lang" compare="contains">
           <string>zh-sg</string>
       </test>
       <test qual="any" name="family">
           <string>serif</string>
       </test>
       <edit name="family" mode="prepend" binding="strong">
           <string>AR PL UMing CN</string>
       </edit>
    </match>

Om fontvekter

Da denne siden og neste side først ble opprettet, kom latinske fonter med maksimalt to vekter - enten vanlig eller bok (bok typisk har en større X-høyde for å gjøre det lettere å lese i store tekstblokker), og fet - og kanskje en kursiv (eller skråstilt) stil. Noen få fonter hadde også Kondenserte overflater (for å passe inn mer tekst i en linje og brukes vanligvis bare når spesifisert). Uten CSS-markering (Cascading Style Sheets) brukte teksten Vanlig eller bokvekt unntatt når <b> ... </b> markering var brukes til fet tekst. Kursive stiler vil bli påberopt av <i> ... </i> markup, sammen med fet markup for fet kursiv.

Noen overflater inneholder nå opptil 9 vekter, muligens også med variabel skrift (for å spare plass ved å inkludere alle alternativene i én fil og ev tillater mellomvekter). For de fleste skrivebordsbrukere som ikke trenger dette bredt utvalg av vekter for å lage innhold, er det enklere å bare installere en eller to vekter. Hvis et overflate har individuell vekt pluss en variabel skrift, den variable fonten er vanligvis på toppnivået i den medfølgende mappen, med individuelle vekter i en static/ undermappe. Bortsett fra når du først vurderer en skrift, gir det ingen mening å installer både statisk og variabel, og heller ikke alle mulige vekter.

Vektene er merket fra 100 (tynn) til 900 (svart eller tung) i CSS terminologi, hvor 400 er normal og 700 fet. Hele settet med vekter er beskrevet på Tabell over CSS fontvekter.

Hvis du har installert en font med en rekke vekter, kan du kopiere font-weights.html til din lokale maskin. Som sendt vil den bruke din standard Serif font forutsatt du har en. Rediger den for å peke på en spesifikk installert font ved å bruke navnet kjent for Fontconfig (også i *EDITME FONTNAME* tekstelementer) og åpne den fra skrivebordsnettleseren. Du kan også bruke den til å se på en skrift med bare to installerte vekter, f.eks. for testing for å se om du foretrekker andre vekter.

Til tross for detaljene i den Mozilla lenken, ser det ut til at hvis bare normal og fete vekter er installert, SemiBold (600) vises med fet skrift.

Det ser ut til å være et lite rom for å endre hvilke vekter som brukes til normal og fet hvis bare to vekter er installert. Firefox, og sannsynligvis andre nettlesere, vil se etter den neste vekten tyngre enn normalt. Hvis det er mindre enn fet (Medium, kanskje SemiFet - usikker) det vil bli brukt til normal og deretter neste høyere vekt, hvis noen vil være brukes for fet skrift, slik at du kan gjøre skriftene litt mørkere. Omvendt, hvis bare en vekt mindre enn normalt er installert, for eksempel Light, det vil bli brukt for både normale og fete vekter (søket oppover skjer først).

Hvis du fjerner noen vekter av en systemfont, må du kanskje kjøre fc-cache som root bruker og logg deretter helt ut for å tømme hurtiglagre knyttet til brukeren din.

Elementer som kan overstyre Fontconfig

Flere skrivebordsmiljøer, samt noen programmer, vil bruke Fontconfig for å finne fonter, men kan overstyre visse ting.

GNOME: Innstillingene i org.gnome.desktop.interface kan bli oppdatert med dconf-editor. Du kan stille inn fontene til din preferanse og ønsket punktstørrelse. For å bruke skriftene valgt av Fontconfig spesifisere f.eks. 'Sans 12', Serif 11', 'Mono 10' etter ønske. Se også gjennom antialiasing, hinting og rgba innstillinger. Alternativt, gnome-tweaks-46.1 kan også oppdatere fontinnstillingene i et GUI skjema.

LXQt: Endre fontinnstillinger etter behov for å samsvare Fontconfig i lxqt-config-appearance.

KDE Plasma: Innstillingene kan justeres i System Settings under Appearance -> Fonts eller i Edit -> Preferences av den enkelte applikasjonen.

Xfce desktop: Innstillingene kan justeres i Settings -> Appearance -> Fonts. Spesifiser dine foretrukne fonter, f.eks. 'Sans Regular' (for å bruke normal overflate og vekt i stedet for fet og/eller kursiv) og juster punktstørrelsen i alternativet. Se gjennom alternativene for gjengivelse og DPI.

Firefox: Denne nettleseren lar deg spesifisere dens standard fonter. For 128esr-serien, bruk "Hamburger"-menyen for å gå til Innstillinger, Generelt og under Fonts -> Advanced velg Sans Serif, Serif eller Monospace etter behov hvis du ønsker å bruke skriftene som samsvarer med Fontconfig. Still inn punktstørrelsene som ønsket. I senere versjoner er innstillingene på Preferences -> Fonts.

Libreoffice: Tester med engelsk tekst med en gammel japansk font (HanaMinA) som støtter flere europeiske språk men hadde bare én vekt og ingen kursiv eller skråstilte viste at selv om Libreoffice bruker Fontconfig for å finne fonten laget den sin egen fet eller skråstilt tekst. Det er ikke klart om det vil gjøre det samme hvor en font faktisk har fet vekt eller en kursiv stil. Det viser også dokumentasjon at Libreoffice har sine egne erstatningsregler for når et kodepunkt ikke finnes i den valgte fonten, men er uklart om disse reglene gjelder på Linux som bruker Fontconfig.

Pango: som nevnt i eksempelet ~/.config/fontconfig ovenfor, alt som bruker Pango-1.44 (fra 2019) eller senere bruker nå Harfbuzz for hint, FreeType, og hintfull er ikke støttet.

Thunderbird: Skriftinnstillingene kan endres ved å gå til "Rediger -> Innstillinger" og deretter rulle ned til "Fonts & Colors".

Eksterne linker

I stared into the fontconfig ...

Blogginnleggene av Eevee er spesielt nyttige hvis Fontconfig ikke tror den valgte fonten støtter språket ditt, og for å foretrekke noen ikke-MS japanske fonter når en stygg MS-font allerede er installert.

subpixel-hinting

Dokumentasjonen til FreeType v40 tolken på freetype docs forklarer hvordan gjeldende hinter fungerer, og hvorfor den forrige (langsomme) Infinality tolk ble byttet ut.

Beregner DPI

Et gammelt svar på askubuntu gir noen detaljer om beregning av en skjerms punkter per tomme, men i hovedsak måler du bare bredden og høyden på det synlige panelet, konverterer til tommer hvis du bruker metriske mål, og del på antall piksler. Da kan du sende -dpi 90 når du starter Xorg ved å bruke din egen verdi.

Tabell over CSS fontvekter

Kanskje mer enn du noen gang ønsket å vite er på Mozilla CSS docs.

Bruke autohint på en skrift

Hvis du bruker hinting og har en TTF (ikke OTF) font som mangler hint men tillater deg å forgrene den, kan du kanskje bruke hint ved å bruke ttfautohint som er basert på den gamle autohinteren. Fra og med versjon 1.8.4 klarer den ikke å bygge uten Qt5.

Fontconfig i Arch wiki

Arch har mye informasjon i sin wiki på font_configuration.

Fontconfig i Gentoo wiki

Gentoo har noe informasjon i sin wiki på Fontconfig selv om mange av detaljene (hva du skal aktivere, og Infinality) er spesifikke for Gentoo.