FS#80005 - Disable ligatures on all monospace fonts by default

Attached to Project: Arch Linux
Opened by Eric Toombs (ewtoombs) - Thursday, 19 October 2023, 07:58 GMT
Last edited by Toolybird (Toolybird) - Thursday, 19 October 2023, 19:34 GMT
Task Type Bug Report
Category Packages: Extra
Status Closed
Assigned To No-one
Architecture All
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

##Description:
There are [instructions](https://wiki.archlinux.org/title/Font_configuration/Examples#Disable_ligatures_for_monospaced_fonts) on the wiki for doing this. But for monospace plaintext, I can't imagine anybody wanting the letters "f f i", for example, to get crammed into the space of a single character. This really really should be the default.

##Additional info:
```
> pacman -Qi (pacman -Qsq font) | grep -iE '^(name|version)'
Name : adobe-source-code-pro-fonts
Version : 2.042u+1.062i+1.026vf-1
Name : cantarell-fonts
Version : 1:0.303.1-1
Name : fluidsynth
Version : 2.3.4-1
Name : fontconfig
Version : 2:2.14.2-1
Name : freetype2
Version : 2.13.2-1
Name : gnu-free-fonts
Version : 20120503-8
Name : gsfonts
Version : 20200910-3
Name : libfontenc
Version : 1.1.7-1
Name : libxfont2
Version : 2.0.6-2
Name : libxft
Version : 2.3.8-1
Name : python-fonttools
Version : 4.43.1-1
Name : t1lib
Version : 5.1.2-8
Name : texlive-basic
Version : 2023.66594-19
Name : texlive-latex
Version : 2023.66594-19
Name : texlive-latexextra
Version : 2023.66594-19
Name : texlive-latexrecommended
Version : 2023.66594-19
Name : woff2
Version : 1.0.2-4
Name : xorg-fonts-encodings
Version : 1.0.7-1
```

```
> fc-list
/usr/share/fonts/gsfonts/D050000L.otf: D050000L:style=Regular
/usr/share/fonts/gnu-free/FreeSerifItalic.otf: FreeSerif:style=Italic,курсивен,cursiva,kurzíva,kursiv,Λειψίας,Kursivoitu,Italique,Dőlt,Corsivo,Cursief,kursywa,Itálico,cursiv,Курсив,ตัวเอียง,İtalik,kursif,Ležeče,kursīvs,kursivas,nghiêng,Etzana,तिरछा
/usr/share/fonts/gnu-free/FreeSerifBoldItalic.otf: FreeSerif:style=Bold Italic,получерен курсивен,negreta cursiva,tučné kurzíva,fed kursiv,Fett-Kursiv,Negrita Cursiva,Lihavoitu Kursivoi,Gras Italique,Félkövér dőlt,Grassetto Corsivo,Vet Cursief,Halvfet Kursiv,Pogrubiona kursywa,Negrito Itálico,gros cursiv,Обычный Курсив,Tučná kurzíva,Fet Kursiv,ตัวเอียงหนา,Kalın İtalik,huruf tebal kursif,жирний курсив,Polkrepko Pežeče,treknais kursīvs,pusjuodis kursyvas,nghiêng đậm,Lodi etzana,धृष्ट-तिरछा
/usr/share/fonts/gsfonts/URWBookman-DemiItalic.otf: URW Bookman:style=Demi Italic
/usr/share/fonts/gsfonts/NimbusMonoPS-BoldItalic.otf: Nimbus Mono PS:style=Bold Italic
/usr/share/fonts/adobe-source-code-pro/SourceCodePro-BlackIt.otf: Source Code Pro,Source Code Pro Black:style=Black Italic,Italic
/usr/share/fonts/adobe-source-code-pro/SourceCodeVF-Upright.otf: SourceCodeVF:style=Semibold
/usr/share/fonts/gsfonts/URWBookman-LightItalic.otf: URW Bookman:style=Light Italic
/usr/share/fonts/adobe-source-code-pro/SourceCodePro-LightIt.otf: Source Code Pro,Source Code Pro Light:style=Light Italic,Italic
/usr/share/fonts/gsfonts/NimbusRoman-Bold.otf: Nimbus Roman:style=Bold
/usr/share/fonts/adobe-source-code-pro/SourceCodeVF-Upright.otf: SourceCodeVF:style=Medium
/usr/share/fonts/gnu-free/FreeMonoOblique.otf: FreeMono:style=Oblique,наклонен,cursiva,kurzíva,kursiv,Πλάγια,Kursivoitu,Italique,Dőlt,Corsivo,Cursief,Kursywa,Itálico,oblic,Курсив,İtalik,huruf miring,похилий,ležeče,slīpraksts,pasvirasis,nghiêng,Etzana,तिरछा
/usr/share/fonts/adobe-source-code-pro/SourceCodeVF-Italic.otf: SourceCodeVF:style=Medium Italic
/usr/share/fonts/adobe-source-code-pro/SourceCodePro-Bold.otf: Source Code Pro:style=Bold
/usr/share/fonts/adobe-source-code-pro/SourceCodeVF-Upright.otf: SourceCodeVF
/usr/share/fonts/gsfonts/P052-Roman.otf: P052:style=Roman
/usr/share/fonts/gnu-free/FreeSerif.otf: FreeSerif:style=Regular,нормален,normal,obyčejné,Mittel,µεσαία,Normaali,Normál,Normale,Gemiddeld,odmiana zwykła,Обычный,Normálne,ปกติ,menengah,прямій,Navadno,vidējs,normalusis,عادی,vừa,Arrunta,सामान्य
/usr/share/fonts/gnu-free/FreeSansBold.otf: FreeSans:style=Bold,получерен,negreta,tučné,fed,Fett,Έντονα,Negrita,Lihavoitu,Gras,Félkövér,Grassetto,Vet,Halvfet,Pogrubiony,Negrito,gros,Полужирный,Fet,Kalın,huruf tebal,жирний,Krepko,treknraksts,pusjuodis,đậm,Lodia,धृष्ट
/usr/share/fonts/adobe-source-code-pro/SourceCodePro-Regular.otf: Source Code Pro:style=Regular
/usr/share/fonts/gsfonts/URWBookman-Light.otf: URW Bookman:style=Light
/usr/share/fonts/adobe-source-code-pro/SourceCodeVF-Italic.otf: SourceCodeVF:style=Semibold Italic
/usr/share/fonts/adobe-source-code-pro/SourceCodePro-Medium.otf: Source Code Pro,Source Code Pro Medium:style=Medium,Regular
/usr/share/fonts/cantarell/Cantarell-VF.otf: Cantarell:style=Bold
/usr/share/fonts/adobe-source-code-pro/SourceCodeVF-Upright.otf: SourceCodeVF:style=Black
/usr/share/fonts/adobe-source-code-pro/SourceCodePro-MediumIt.otf: Source Code Pro,Source Code Pro Medium:style=Medium Italic,Italic
/usr/share/fonts/gsfonts/NimbusSans-Italic.otf: Nimbus Sans:style=Italic
/usr/share/fonts/adobe-source-code-pro/SourceCodeVF-Italic.otf: SourceCodeVF:style=Black Italic
/usr/share/fonts/gsfonts/URWGothic-BookOblique.otf: URW Gothic:style=Book Oblique
/usr/share/fonts/gsfonts/NimbusSans-Bold.otf: Nimbus Sans:style=Bold
/usr/share/fonts/adobe-source-code-pro/SourceCodeVF-Italic.otf: SourceCodeVF:style=Bold Italic
/usr/share/fonts/adobe-source-code-pro/SourceCodePro-Light.otf: Source Code Pro,Source Code Pro Light:style=Light,Regular
/usr/share/fonts/adobe-source-code-pro/SourceCodeVF-Italic.otf: SourceCodeVF:style=Light Italic
/usr/share/fonts/gsfonts/P052-Bold.otf: P052:style=Bold
/usr/share/fonts/gsfonts/NimbusMonoPS-Regular.otf: Nimbus Mono PS:style=Regular
/usr/share/fonts/gsfonts/NimbusSans-Regular.otf: Nimbus Sans:style=Regular
/usr/share/fonts/gnu-free/FreeSans.otf: FreeSans:style=Regular,нормален,Normal,obyčejné,Mittel,µεσαία,Normaali,Normál,Medio,Gemiddeld,Odmiana Zwykła,Обычный,Normálne,menengah,прямій,Navadno,vidējs,normalusis,vừa,Arrunta,सामान्य
/usr/share/fonts/gsfonts/NimbusRoman-BoldItalic.otf: Nimbus Roman:style=Bold Italic
/usr/share/fonts/adobe-source-code-pro/SourceCodeVF-Italic.otf: SourceCodeVF:style=Italic
/usr/share/fonts/gsfonts/StandardSymbolsPS.otf: Standard Symbols PS:style=Regular
/usr/share/fonts/cantarell/Cantarell-VF.otf: Cantarell:style=Light
/usr/share/fonts/cantarell/Cantarell-VF.otf: Cantarell:style=Regular
/usr/share/fonts/adobe-source-code-pro/SourceCodePro-Black.otf: Source Code Pro,Source Code Pro Black:style=Black,Regular
/usr/share/fonts/adobe-source-code-pro/SourceCodePro-ExtraLight.otf: Source Code Pro,Source Code Pro ExtraLight:style=ExtraLight,Regular
/usr/share/fonts/gnu-free/FreeMonoBoldOblique.otf: FreeMono:style=Bold Oblique,получерен наклонен,Negreta cursiva,tučné kurzíva,fed kursiv,Fett-Kursiv,Έντονα Πλάγια,Negrita Cursiva,Lihavoitu Kursivoi,Gras Italique,Félkövér dőlt,Grassetto Corsivo,Vet Cursief,Halvfet Kursiv,Pogrubiona kursywa,Negrito Itálico,gros oblic,Полужирный Курсив,Tučná kurzíva,Fet Kursiv,Kalın İtalik,huruf tebal miring,жирний похилий,polkrepko ležeče,treknais slīpraksts,pusjuodis pasvirasis,Lodi etzana,धृष्ट-तिरछा
/usr/share/fonts/gsfonts/NimbusMonoPS-Bold.otf: Nimbus Mono PS:style=Bold
/usr/share/fonts/gsfonts/Z003-MediumItalic.otf: Z003:style=Medium Italic
/usr/share/fonts/gsfonts/NimbusSansNarrow-Bold.otf: Nimbus Sans Narrow:style=Bold
/usr/share/fonts/gsfonts/NimbusRoman-Regular.otf: Nimbus Roman:style=Regular
/usr/share/fonts/gsfonts/P052-Italic.otf: P052:style=Italic
/usr/share/fonts/gnu-free/FreeSansOblique.otf: FreeSans:style=Oblique,наклонен,negreta cursiva,kurzíva,kursiv,Πλάγια,Cursiva,Kursivoitu,Italique,Dőlt,Corsivo,Cursief,kursywa,Itálico,oblic,Курсив,İtalik,huruf miring,похилий,Ležeče,slīpraksts,pasvirasis,nghiêng,Etzana,तिरछा
/usr/share/fonts/gsfonts/NimbusRoman-Italic.otf: Nimbus Roman:style=Italic
/usr/share/fonts/gsfonts/NimbusSansNarrow-BoldOblique.otf: Nimbus Sans Narrow:style=Bold Oblique
/usr/share/fonts/adobe-source-code-pro/SourceCodeVF-Upright.otf: SourceCodeVF:style=Bold
/usr/share/fonts/gsfonts/URWGothic-Demi.otf: URW Gothic:style=Demi
/usr/share/fonts/gsfonts/C059-Bold.otf: C059:style=Bold
/usr/share/fonts/adobe-source-code-pro/SourceCodePro-BoldIt.otf: Source Code Pro:style=Bold Italic
/usr/share/fonts/adobe-source-code-pro/SourceCodePro-ExtraLightIt.otf: Source Code Pro,Source Code Pro ExtraLight:style=ExtraLight Italic,Italic
/usr/share/fonts/gsfonts/NimbusSansNarrow-Oblique.otf: Nimbus Sans Narrow:style=Oblique
/usr/share/fonts/adobe-source-code-pro/SourceCodeVF-Italic.otf: SourceCodeVF
/usr/share/fonts/gsfonts/C059-Italic.otf: C059:style=Italic
/usr/share/fonts/gnu-free/FreeMonoBold.otf: FreeMono:style=Bold,получерен,negreta,tučné,fed,Fett,Έντονα,Negrita,Lihavoitu,Gras,Félkövér,Grassetto,Vet,Halvfet,Pogrubiony,Negrito,gros,Полужирный,Fet,Kalın,huruf tebal,жирний,polkrepko,treknraksts,pusjuodis,đậm,Lodia,धृष्ट
/usr/share/fonts/cantarell/Cantarell-VF.otf: Cantarell
/usr/share/fonts/adobe-source-code-pro/SourceCodeVF-Upright.otf: SourceCodeVF:style=Regular
/usr/share/fonts/gsfonts/P052-BoldItalic.otf: P052:style=Bold Italic
/usr/share/fonts/gsfonts/NimbusSansNarrow-Regular.otf: Nimbus Sans Narrow:style=Regular
/usr/share/fonts/cantarell/Cantarell-VF.otf: Cantarell:style=Extra Bold
/usr/share/fonts/gsfonts/NimbusMonoPS-Italic.otf: Nimbus Mono PS:style=Italic
/usr/share/fonts/gsfonts/C059-BdIta.otf: C059:style=Bold Italic
/usr/share/fonts/gsfonts/C059-Roman.otf: C059:style=Roman
/usr/share/fonts/gsfonts/URWBookman-Demi.otf: URW Bookman:style=Demi
/usr/share/fonts/gsfonts/NimbusSans-BoldItalic.otf: Nimbus Sans:style=Bold Italic
/usr/share/fonts/adobe-source-code-pro/SourceCodePro-SemiboldIt.otf: Source Code Pro,Source Code Pro Semibold:style=Semibold Italic,Italic
/usr/share/fonts/gnu-free/FreeMono.otf: FreeMono:style=Regular,нормален,normal,obyčejné,Standard,µεσαία,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,menengah,прямій,navadno,vidējs,normalusis,thường,Arrunta,सामान्य
/usr/share/fonts/gnu-free/FreeSansBoldOblique.otf: FreeSans:style=Bold Oblique,получерен наклонен,negreta cursiva,tučné kurzíva,fed kursiv,Fett-Kursiv,Έντονη Πλάγια,Negrita Cursiva,Lihavoitu Kursivoi,Gras Italique,Félkövér dőlt,Grassetto Corsivo,Vet Cursief,Halvfet Kursiv,Pogrubiona kursywa,Negrito Itálico,gros oblic,Обычный Курсив,Tučná kurzíva,Fet Kursiv,Kalın İtalik,huruf tebal miring,жирний похилий,polkrepko ležeče,treknais slīpraksts,pusjuodis pasvirasis,nghiêng đậm,Lodi etzana,धृष्ट-तिरछा
/usr/share/fonts/adobe-source-code-pro/SourceCodeVF-Upright.otf: SourceCodeVF:style=Light
/usr/share/fonts/cantarell/Cantarell-VF.otf: Cantarell:style=Thin
/usr/share/fonts/adobe-source-code-pro/SourceCodePro-It.otf: Source Code Pro:style=Italic
/usr/share/fonts/gsfonts/URWGothic-DemiOblique.otf: URW Gothic:style=Demi Oblique
/usr/share/fonts/gsfonts/URWGothic-Book.otf: URW Gothic:style=Book
/usr/share/fonts/adobe-source-code-pro/SourceCodePro-Semibold.otf: Source Code Pro,Source Code Pro Semibold:style=Semibold,Regular
/usr/share/fonts/gnu-free/FreeSerifBold.otf: FreeSerif:style=Bold,получерен,negreta,tučné,fed,Fett,Negrita,Lihavoitu,Gras,Félkövér,Grassetto,Vet,Halvfet,Pogrubiony,Negrito,gros,Обычный,Fet,ตัวหนา,Kalın,huruf tebal,жирний,Polkrepko,treknraksts,pusjuodis,ضخیم,đậm,Lodia,धृष्ट
```

```
> fc-list |grep -i mono
/usr/share/fonts/gsfonts/NimbusMonoPS-BoldItalic.otf: Nimbus Mono PS:style=Bold Italic
/usr/share/fonts/gnu-free/FreeMonoOblique.otf: FreeMono:style=Oblique,наклонен,cursiva,kurzíva,kursiv,Πλάγια,Kursivoitu,Italique,Dőlt,Corsivo,Cursief,Kursywa,Itálico,oblic,Курсив,İtalik,huruf miring,похилий,ležeče,slīpraksts,pasvirasis,nghiêng,Etzana,तिरछा
/usr/share/fonts/gsfonts/NimbusMonoPS-Regular.otf: Nimbus Mono PS:style=Regular
/usr/share/fonts/gnu-free/FreeMonoBoldOblique.otf: FreeMono:style=Bold Oblique,получерен наклонен,Negreta cursiva,tučné kurzíva,fed kursiv,Fett-Kursiv,Έντονα Πλάγια,Negrita Cursiva,Lihavoitu Kursivoi,Gras Italique,Félkövér dőlt,Grassetto Corsivo,Vet Cursief,Halvfet Kursiv,Pogrubiona kursywa,Negrito Itálico,gros oblic,Полужирный Курсив,Tučná kurzíva,Fet Kursiv,Kalın İtalik,huruf tebal miring,жирний похилий,polkrepko ležeče,treknais slīpraksts,pusjuodis pasvirasis,Lodi etzana,धृष्ट-तिरछा
/usr/share/fonts/gsfonts/NimbusMonoPS-Bold.otf: Nimbus Mono PS:style=Bold
/usr/share/fonts/gnu-free/FreeMonoBold.otf: FreeMono:style=Bold,получерен,negreta,tučné,fed,Fett,Έντονα,Negrita,Lihavoitu,Gras,Félkövér,Grassetto,Vet,Halvfet,Pogrubiony,Negrito,gros,Полужирный,Fet,Kalın,huruf tebal,жирний,polkrepko,treknraksts,pusjuodis,đậm,Lodia,धृष्ट
/usr/share/fonts/gsfonts/NimbusMonoPS-Italic.otf: Nimbus Mono PS:style=Italic
/usr/share/fonts/gnu-free/FreeMono.otf: FreeMono:style=Regular,нормален,normal,obyčejné,Standard,µεσαία,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,menengah,прямій,navadno,vidējs,normalusis,thường,Arrunta,सामान्य
```

##Steps to reproduce:
Open any plaintext document in firefox, like file:///etc/fstab .
This task depends upon

Closed by  Toolybird (Toolybird)
Thursday, 19 October 2023, 19:34 GMT
Reason for closing:  Upstream
Additional comments about closing:  See comments. Is covered in the wiki anyway.
Comment by Eric Toombs (ewtoombs) - Thursday, 19 October 2023, 08:05 GMT
The wiki says this has to be done on a per-font basis, so all ttf-font providers should be prioritised:

```
> sudo pacman -S --asdeps ttf-font
:: There are 8 providers available for ttf-font:
:: Repository extra
1) gnu-free-fonts 2) noto-fonts 3) ttf-bitstream-vera 4) ttf-croscore 5) ttf-dejavu 6) ttf-droid
7) ttf-ibm-plex 8) ttf-liberation

Enter a number (default=1):
```
especially the default, `gnu-free-fonts`.
Comment by loqs (loqs) - Thursday, 19 October 2023, 08:40 GMT
Which of the monospace fonts you listed contain standard ligatures?

$ otfinfo -f /usr/share/fonts/adobe-source-code-pro/SourceCodePro-Regular.otf
case Case-Sensitive Forms
ccmp Glyph Composition/Decomposition
cv01 Character Variants 1
cv02 Character Variants 2
cv04 Character Variants 4
cv06 Character Variants 6
cv07 <unknown feature>
cv08 <unknown feature>
cv09 <unknown feature>
cv10 <unknown feature>
cv11 <unknown feature>
cv12 <unknown feature>
cv14 <unknown feature>
cv15 <unknown feature>
cv16 <unknown feature>
cv17 <unknown feature>
dnom Denominators
frac Fractions
mark Mark Positioning
mkmk Mark to Mark Positioning
numr Numerators
onum Oldstyle Figures
ordn Ordinals
salt Stylistic Alternates
sinf Scientific Inferiors
size Optical Size
ss01 Stylistic Set 1
ss02 Stylistic Set 2
ss03 Stylistic Set 3
ss04 Stylistic Set 4
ss05 Stylistic Set 5
ss06 Stylistic Set 6
ss07 Stylistic Set 7
subs Subscript
sups Superscript
zero Slashed Zero
$ otfinfo -f /usr/share/fonts/noto/NotoSansMono-Regular.ttf
aalt Access All Alternates
c2sc Small Capitals From Capitals
ccmp Glyph Composition/Decomposition
dnom Denominators
frac Fractions
mark Mark Positioning
mkmk Mark to Mark Positioning
numr Numerators
onum Oldstyle Figures
ordn Ordinals
rtlm Right-to-left Mirrored Forms
smcp Small Capitals
ss03 Stylistic Set 3
subs Subscript
sups Superscript
zero Slashed Zero
Comment by Eric Toombs (ewtoombs) - Thursday, 19 October 2023, 10:59 GMT
## ligatures
- Nimbus Mono PS

## no ligatures
- FreeMono
- Source Code Pro
- Source Code VF

Well, I'll be damned, it really is just Nimbus Mono PS that does that. At least, on my system. Somehow, it ended up as the default, though. Nimbus is from gsfonts. Why is gsfonts the default and not gnu-free-fonts, which I selected for ttf-font?
Comment by Eric Toombs (ewtoombs) - Thursday, 19 October 2023, 12:23 GMT
The issue with Nimbus is known upstream:
https://github.com/ArtifexSoftware/urw-base35-fonts/issues/31
There's no movement on it, though... It's been open for over two years, now.

Loading...