LINUX.ORG.RU

DejaVu Sans, что за магия?

 ,


0

1

Давно ещё в федоре обнаружил такую фигню, когда собираешь себе десктоп из минимальной установки, то могут возникнуть такие проблемы с отображением шрифта.

Я использую везде Roboto, поэтому только его и устанавливаю, но, чтобы он выглядел корректно, надо обязательно поставить DejaVu Sans.

Вот так выглядит проблема, если удалить дежавю: https://i.ibb.co/7JJsnqC/230116152531.png
Вот так выглядит (то есть нормально), если поставить назад: https://i.ibb.co/0Dhz2vX/230116152620.png

Вопрос, какая связь? Почему ширфты робото сами по себе не могут выглядеть как положено, зачем им установленный дежавю?

Попинайте в нужную сторону.

Возможно двоеточие нестандартное и берется из другого шрифта, или там невидимые символы типа неразрывных пробелов вокруг него? Если в ФМе в строке поиска например ввести подобную строку так же рендерится?

e1nste1n ★★★★★
()
Ответ на: комментарий от e1nste1n

Если в ФМе в строке поиска например ввести подобную строку так же рендерится?

Нет: https://i.ibb.co/hH0SqmJ/230116214013.png

Возможно двоеточие нестандартное и берется из другого шрифта, или там невидимые символы типа неразрывных пробелов вокруг него?

Гм, куда копать?

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от Jameson

Ты не написал дистрибутив

Я эту аномалию давно приметил в федорах и уже привык ставить дежавю рядом с робото, а сейчас альмалинукс-8 (клон шапки).

возможно что в пакете со шрифтом дежавю идёт фонтконфиговский конфиг, который и влияет?

В каталоге /etc/fonts/conf.d есть 57-dejavu-sans.conf (в этом каталоге ссылки на кофиги, которые активированы в системе)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "../fonts.dtd">
<!-- /etc/fonts/conf.d/57-dejavu-sans.conf

     Define aliasing and other fontconfig settings for
     DejaVu Sans.

     © 2006-2008 Nicolas Mailhot <nicolas.mailhot at laposte.net>
-->
<fontconfig>
  <!-- Font substitution rules -->
  <alias binding="same">
    <family>Arev Sans</family>
    <accept>
      <family>DejaVu Sans</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>Bepa</family>
    <accept>
      <family>DejaVu Sans</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>Bitstream Prima Sans</family>
    <accept>
      <family>DejaVu Sans</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>Bitstream Vera Sans</family>
    <accept>
      <family>DejaVu Sans</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>DejaVu LGC Sans</family>
    <accept>
      <family>DejaVu Sans</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>Hunky Sans</family>
    <accept>
      <family>DejaVu Sans</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>Olwen Sans</family>
    <accept>
      <family>DejaVu Sans</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>SUSE Sans</family>
    <accept>
      <family>DejaVu Sans</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>Verajja</family>
    <accept>
      <family>DejaVu Sans</family>
    </accept>
  </alias>
  <!-- In case VerajjaPDA stops declaring itself as Verajja -->
  <alias binding="same">
    <family>VerajjaPDA</family>
    <accept>
      <family>DejaVu Sans</family>
    </accept>
  </alias>
  <!-- Generic name assignment -->
  <alias>
    <family>DejaVu Sans</family>
    <default>
      <family>sans-serif</family>
    </default>
  </alias>
  <!-- Generic name aliasing -->
  <alias>
    <family>sans-serif</family>
    <prefer>
      <family>DejaVu Sans</family>
    </prefer>
  </alias>
</fontconfig>

Вот содержимое каталога

10-hinting-slight.conf
10-scale-bitmap-fonts.conf
10-sub-pixel-rgb.conf
11-lcdfilter-light.conf
20-unhint-small-dejavu-sans.conf
20-unhint-small-vera.conf
25-unhint-nonlatin.conf
30-metric-aliases.conf
31-cantarell.conf
40-nonlatin.conf
45-generic.conf
45-latin.conf
49-sansserif.conf
50-user.conf
51-local.conf
57-dejavu-sans.conf
59-liberation-mono.conf
59-liberation-sans.conf
59-liberation-serif.conf
60-generic.conf
60-latin.conf
61-urw-bookman.conf
61-urw-c059.conf
61-urw-d050000l.conf
61-urw-fallback-backwards.conf
61-urw-gothic.conf
61-urw-nimbus-mono-ps.conf
61-urw-nimbus-roman.conf
61-urw-nimbus-sans.conf
61-urw-p052.conf
61-urw-standard-symbols-ps.conf
61-urw-z003.conf
64-google-roboto-condensed.conf
64-google-roboto.conf
64-google-roboto-slab-fontconfig.conf
65-fonts-persian.conf
65-google-droid-sans.conf
65-nonlatin.conf
69-unifont.conf
80-delicious.conf
90-synthetic.conf

Я файлы полистал, ничего подозрительного не заметил, но я в этом и не разбираюсь.

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от e1nste1n

Возможно двоеточие нестандартное и берется из другого шрифта

Поменял на другой шрифт — то же самое: https://i.ibb.co/ZLJpJKr/230116215439.png

Ещё шрифт дроид попробовал — то же самое.

papin-aziat ★★★★★
() автор топика
Последнее исправление: papin-aziat (всего исправлений: 2)
Ответ на: комментарий от e1nste1n

Кроме как в интерфейсе гном-шелла и наутилуса больше нигде косяк не обнаружен пока, впрочем трудно найти что-то с двоеточием, нашёл только в qbittorrent, но там всё норм.

Во всяких редакторах, терминале, везде где можно вводить символы — проблем нет.

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от Ja-Ja-Hey-Ho

Спасибо! Всё теперь ясно. Там в комментах предлагается тот же самый воркараунд, какой я сам давно нашёл, — установка дежавю.

Для Ъ. Виноват гном. Он в панели и походу в прочих интерфейсах умеет только двоеточия в колонку, типа как в моноширных, а двоеточие с пропорциями не умеет делать красиво, то есть хорошо будут выглядеть только некоторые шрифты

Note that the character in question isn’t a colon, but the ratio symbol. If your font makes that character wider than it should be, then that’s a font issue 🤷

Ну и знаменитый гномовский перл — «not a bug».

…non-default fonts are rendered like they are, not how the user thinks they should be
…is not a bug, sorry.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2331#note_740558

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от e1nste1n

А всё-таки ещё вопросик возник. Почему именно дежавю? Ведь кантарель, который у них самый правильный гномий шрифт, у меня установлен (его не удалить в этой системе, жёсткая зависимость).

papin-aziat ★★★★★
() автор топика
Последнее исправление: papin-aziat (всего исправлений: 1)
Ответ на: комментарий от papin-aziat

Note that the character in question isn’t a colon, but the ratio symbol.

Чёрт, англичане, меня там что-то с толку сбило и никто не поправит (читал быстро и по-диагонали, а с английским у меня по-прежнему туго) 🤣

Оказывается это разные символы — colon & ratio, просто похожи визуально, так ведь?

papin-aziat ★★★★★
() автор топика
Последнее исправление: papin-aziat (всего исправлений: 1)
Ответ на: комментарий от e1nste1n
$ fc-match sans -s | head
Roboto-Regular.ttf: "Roboto" "Regular"
NimbusSans-Regular.otf: "Nimbus Sans" "Regular"
DroidSansHebrew-Regular.ttf: "Droid Sans" "Regular"
DroidSansArmenian.ttf: "Droid Sans" "Regular"
DroidSansGeorgian.ttf: "Droid Sans" "Regular"
DroidSansEthiopic-Regular.ttf: "Droid Sans" "Regular"
DroidSansArabic.ttf: "Droid Sans" "Regular"
DroidSansDevanagari-Regular.ttf: "Droid Sans" "Regular"
DroidSansTamil-Regular.ttf: "Droid Sans" "Regular"
DroidSansThai.ttf: "Droid Sans" "Regular"

FC_DEBUG=4 nautilus | grep family: — выхлоп огромный, начало такое

	family: "Roboto"(s)
	family: "Roboto"(s)
	family: "Roboto"(s)
	family: "Roboto"(s)
	family: "Roboto"(s) "sans-serif"(w)
	family: "Roboto"(s) "Roboto"(w) "sans-serif"(w)
	family: "Roboto"(s) "Roboto"(w) "Roboto"(w) "sans-serif"(w)
	family: "Roboto"(s) "Roboto"(w) "Roboto"(w) "Bitstream Vera Sans"(w) "DejaVu Sans"(w) "Verdana"(w) "Arial"(w) "Albany AMT"(w) "Luxi Sans"(w) "Nimbus Sans L"(w) "Nimbus Sans"(w) "Helvetica"(w) "Lucida Sans Unicode"(w) "BPG Glaho International"(w) "Tahoma"(w) "sans-serif"(w)
	family: "Roboto"(s) "Roboto"(w) "Roboto"(w) "Bitstream Vera Sans"(w) "DejaVu Sans"(w) "Verdana"(w) "Arial"(w) "Albany AMT"(w) "Luxi Sans"(w) "Nimbus Sans L"(w) "Nimbus Sans"(w) "Nimbus Sans"(w) "Helvetica"(w) "Lucida Sans Unicode"(w) "BPG Glaho International"(w) "Tahoma"(w) "sans-serif"(w)
	family: "Roboto"(s) "Roboto"(w) "Roboto"(w) "Bitstream Vera Sans"(w) "DejaVu Sans"(w) "Verdana"(w) "Arial"(w) "Albany AMT"(w) "Luxi Sans"(w) "Nimbus Sans L"(w) "Nimbus Sans"(w) "Nimbus Sans"(w) "Helvetica"(w) "Lucida Sans Unicode"(w) "BPG Glaho International"(w) "Tahoma"(w) "URW Gothic"(w) "sans-serif"(w)
	family: "Roboto"(s) "Roboto"(w) "Roboto"(w) "Bitstream Vera Sans"(w) "DejaVu Sans"(w) "Verdana"(w) "Arial"(w) "Albany AMT"(w) "Luxi Sans"(w) "Nimbus Sans L"(w) "Nimbus Sans"(w) "Nimbus Sans"(w) "Helvetica"(w) "Lucida Sans Unicode"(w) "BPG Glaho International"(w) "Tahoma"(w) "URW Gothic"(w) "sans-serif"(w) "sans-serif"(w)
	family: "Roboto"(s) "Roboto"(w) "Roboto"(w) "Bitstream Vera Sans"(w) "DejaVu Sans"(w) "Verdana"(w) "Arial"(w) "Albany AMT"(w) "Luxi Sans"(w) "Nimbus Sans L"(w) "Nimbus Sans"(w) "Nimbus Sans"(w) "Helvetica"(w) "Lucida Sans Unicode"(w) "BPG Glaho International"(w) "Tahoma"(w) "URW Gothic"(w) "sans-serif"(w) "sans-serif"(w) "ITC Avant Garde Gothic"(w)
...
papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от e1nste1n

Я перечитываю тот тред сейчас не торопясь, но ещё не всё прочитал.

Пока не ясно тогда, почему одни шрифты ставят двоеточие, а другие знак деления, что за фигня?

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от papin-aziat

Ты запретил подгружать шрифты браузеру?

Вроде ничего такого не делал.

Почитал эту тему -> пошел посмотреть, что у меня-то самого с шрифтами -> решил поудалять все, которые не помню зачем устанавливал -> доудалялся до квадратов вместо звезд -> вернул обратно ttf-dejavu.

Toxo2 ★★★★
()
Последнее исправление: Toxo2 (всего исправлений: 1)
Ответ на: комментарий от Toxo2

У меня звёзды на месте, дежавю удалён.

Про звёзды не замечал, но если запретить браузеру подгружать шрифты, то будут проблемно выглядеть некоторые фишки, ну и емодзи теперь ещё.

Всё таки проверь в настройках, а то может запретил, может адблоком или типа того.

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от e1nste1n

Я бы не сказал, с виду такой же огромный, да ещё наутилус превратился в маленький квадратик и в конце такой выхлоп: X connection to :0 broken (explicit kill or server shutdown)

https://paste.centos.org/view/3053ae0b

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от e1nste1n

Кстати, поставил назад дежавю, чтобы проверить fallback (потом удалил), и команда fc-match sans -s | head выдала

Roboto-Regular.ttf: "Roboto" "Regular"
DejaVuSans.ttf: "DejaVu Sans" "Book"
DejaVuSans-Bold.ttf: "DejaVu Sans" "Bold"
DejaVuSans-Oblique.ttf: "DejaVu Sans" "Oblique"
DejaVuSans-BoldOblique.ttf: "DejaVu Sans" "Bold Oblique"
NimbusSans-Regular.otf: "Nimbus Sans" "Regular"
DroidSansHebrew-Regular.ttf: "Droid Sans" "Regular"
DroidSansEthiopic-Regular.ttf: "Droid Sans" "Regular"
DroidSansArabic.ttf: "Droid Sans" "Regular"
DroidSansDevanagari-Regular.ttf: "Droid Sans" "Regular"

То есть он тупо ищет «двоеточие» перебором вот этого списка, да?

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от papin-aziat

Странный выхлоп, в Droid Sans на котором он остановился ratio я не вижу. Квадратик это окошко pango-view, закрывается q чтобы не ругался на broken connection. Там сам символ-то отрендерился или пустое окно было?

e1nste1n ★★★★★
()
Ответ на: комментарий от papin-aziat

Да, проще добавить Cantarell в список чем заниматься дебагом по переписке. Добавь в ~/.config/fontconfig/fonts.conf:

<alias>
  <family>sans-serif</family>
  <prefer>
    <family>Roboto</family>
    <family>Cantarell</family>
  </prefer>
</alias>

И проверь с fc-match sans -s | head

e1nste1n ★★★★★
()
Ответ на: комментарий от e1nste1n

Там сам символ-то отрендерился или пустое окно было?

Есть символ: https://i.ibb.co/4TNdDfW/230117001410.png

в Droid Sans на котором он остановился ratio я не вижу

Этот шрифт я тоже пробовал — результат в наутилусе тот же самый: https://i.ibb.co/KswSn1r/230117001659.png

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от e1nste1n

Отличные познания, в гном-шелле уже подхватил двоеточие из кантарель, ща разбираюсь, почему в наутилусе не получается, у меня дофига настроек по разным местам, щас пробегусь.

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от e1nste1n

Вот пруф, что ты красавчик: https://i.ibb.co/smCBzm1/230117003912.png

Правда мне пришлось пока отказаться, от глобальной замены кантареля на робото, в общем это вообще не проблема, это было для прикола, чтобы в GDM тоже был робото. Я добавил в /etc/fonts/local.conf

<test name="family"><string>Cantarell</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Roboto</string>
    </edit>

Можно туда дописать что-то, чтобы он из кантареля брал двоеточие?

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от e1nste1n

Должно было заработать, если твое правило уже было до правки alias оно возможно даже и мешало.

Да, мешало, пока не убрал — в наутилусе было по-старому.

В GDM нет конфига чтобы свой шрифт указать?

Никак нет, только костыли. В новых версиях гнома что-то переделали и кантарель отвязали, там теперь выбор системного шрифта влияет и на шелл, про GDM не знаю. У меня 3.32, мне, чтобы поменять шрифт шелла, надо либо отдельный gnome-shell.css (так сделал сейчас), либо глобально вот таким альясом как показал выше, соответственно GDM же стартует от своего пользователя, поэтому с ним работает только глобальный костыль.

papin-aziat ★★★★★
() автор топика
Последнее исправление: papin-aziat (всего исправлений: 2)
Ответ на: комментарий от e1nste1n

Спасибо за разбор темы! Получилось, конечно, не то что хотелось (всё равно нужен дополнительный шрифт, проблема не решабельная), и, кстати, как вижу точки из кантареля какие-то мелкие (кстати, что это в результате — двоеточие или деление?), но это было интересно и по-своему результат прикольный, а также минус два ненужных пакета из системы 😀

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от papin-aziat

Если GDM имеет своего пользователя нельзя ли ему подбросить нужный конфиг с твоим правилом? У sddm например есть /var/lib/sddm/.config, не проверял, но возможно он его читает.

e1nste1n ★★★★★
()
Ответ на: комментарий от e1nste1n

Я когда-то всякое ковырял на тему повлиять на GDM, так что у меня там уже дофига всякого, да, есть /var/lib/gdm/.config.

Создал там каталог fontconfig, кинул туда fonts.conf, реакции ноль.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match>
    <test name="family"><string>Cantarell</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Roboto</string>
    </edit>
  </match>
</fontconfig>

Зашёл из консоли туда и закинул настройку через gsettings, тоже ноль.

[root@my ~]# su - gdm -s /bin/bash
[gdm@my ~]$ export $(dbus-launch)
[gdm@my ~]$ gsettings get org.gnome.desktop.interface font-name
'Roboto 10.5'

Здесь брал инструкцию: https://unix.stackexchange.com/questions/361214/disable-gdm-suspend-on-lock-screen/361275#361275

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от e1nste1n
[gdm@my ~]$ fc-match cantarell
Cantarell-Regular.otf: "Cantarell" "Regular"
[gdm@my ~]$ fc-match roboto
Roboto-Regular.ttf: "Roboto" "Regular"
[gdm@my ~]$ fc-conflist
+ /etc/fonts/conf.d/10-hinting-slight.conf: Set hintslight to hintstyle
+ /etc/fonts/conf.d/10-scale-bitmap-fonts.conf: Bitmap scaling
+ /etc/fonts/conf.d/10-sub-pixel-rgb.conf: Enable sub-pixel rendering with the RGB stripes layout
+ /etc/fonts/conf.d/11-lcdfilter-light.conf: Use lcdlight as default for LCD filter
+ /etc/fonts/conf.d/20-unhint-small-vera.conf: Disable hinting for Bitstream Vera fonts when the size is less than 8ppem
+ /etc/fonts/conf.d/25-unhint-nonlatin.conf: Disable hinting for CJK fonts
+ /etc/fonts/conf.d/30-metric-aliases.conf: Set substitutions for similar/metric-compatible families
+ /etc/fonts/conf.d/31-cantarell.conf: No description
+ /etc/fonts/conf.d/40-nonlatin.conf: Set substitutions for non-Latin fonts
+ /etc/fonts/conf.d/45-generic.conf: Set substitutions for emoji/math fonts
+ /etc/fonts/conf.d/45-latin.conf: Set substitutions for Latin fonts
+ /etc/fonts/conf.d/49-sansserif.conf: Add sans-serif to the family when no generic name
+ /etc/fonts/conf.d/50-user.conf: Load per-user customization files
+ /etc/fonts/local.conf: No description
+ /etc/fonts/conf.d/51-local.conf: Load local customization file
+ /etc/fonts/conf.d/59-liberation-mono.conf: No description
+ /etc/fonts/conf.d/59-liberation-sans.conf: No description
+ /etc/fonts/conf.d/59-liberation-serif.conf: No description
+ /etc/fonts/conf.d/60-generic.conf: Set preferable fonts for emoji/math fonts
+ /etc/fonts/conf.d/60-latin.conf: Set preferable fonts for Latin
+ /etc/fonts/conf.d/61-urw-bookman.conf: No description
+ /etc/fonts/conf.d/61-urw-c059.conf: No description
+ /etc/fonts/conf.d/61-urw-d050000l.conf: No description
+ /etc/fonts/conf.d/61-urw-fallback-backwards.conf: No description
+ /etc/fonts/conf.d/61-urw-gothic.conf: No description
+ /etc/fonts/conf.d/61-urw-nimbus-mono-ps.conf: No description
+ /etc/fonts/conf.d/61-urw-nimbus-roman.conf: No description
+ /etc/fonts/conf.d/61-urw-nimbus-sans.conf: No description
+ /etc/fonts/conf.d/61-urw-p052.conf: No description
+ /etc/fonts/conf.d/61-urw-standard-symbols-ps.conf: No description
+ /etc/fonts/conf.d/61-urw-z003.conf: No description
+ /etc/fonts/conf.d/64-google-roboto-condensed.conf: No description
+ /etc/fonts/conf.d/64-google-roboto-slab-fontconfig.conf: No description
+ /etc/fonts/conf.d/64-google-roboto.conf: No description
+ /etc/fonts/conf.d/65-fonts-persian.conf: No description
+ /etc/fonts/conf.d/65-google-droid-sans.conf: No description
+ /etc/fonts/conf.d/65-nonlatin.conf: Set preferable fonts for non-Latin
+ /etc/fonts/conf.d/69-unifont.conf: No description
+ /etc/fonts/conf.d/80-delicious.conf: No description
+ /etc/fonts/conf.d/90-synthetic.conf: No description
+ /etc/fonts/fonts.conf: Default configuration file
- /usr/share/fontconfig/conf.avail/10-autohint.conf: Enable autohinter
- /usr/share/fontconfig/conf.avail/10-hinting-full.conf: Set hintfull to hintstyle
- /usr/share/fontconfig/conf.avail/10-hinting-medium.conf: Set hintmedium to hintstyle
- /usr/share/fontconfig/conf.avail/10-hinting-none.conf: Set hintnone to hintstyle
- /usr/share/fontconfig/conf.avail/10-no-sub-pixel.conf: Disable sub-pixel rendering
- /usr/share/fontconfig/conf.avail/10-sub-pixel-bgr.conf: Enable sub-pixel rendering with the BGR stripes layout
- /usr/share/fontconfig/conf.avail/10-sub-pixel-vbgr.conf: Enable sub-pixel rendering with the vertical BGR stripes layout
- /usr/share/fontconfig/conf.avail/10-sub-pixel-vrgb.conf: Enable sub-pixel rendering with the vertical RGB stripes layout
- /usr/share/fontconfig/conf.avail/10-unhinted.conf: Disable hinting
- /usr/share/fontconfig/conf.avail/11-lcdfilter-default.conf: Use lcddefault as default for LCD filter
- /usr/share/fontconfig/conf.avail/11-lcdfilter-legacy.conf: Use lcdlegacy as default for LCD filter
- /usr/share/fontconfig/conf.avail/65-khmer.conf: No description
- /usr/share/fontconfig/conf.avail/70-no-bitmaps.conf: Reject bitmap fonts
- /usr/share/fontconfig/conf.avail/70-yes-bitmaps.conf: Accept bitmap fonts
papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от e1nste1n

А fc-conflist показывает какие ссылки добавлены в /etc/fonts/conf.d?

По количеству совпадают.

Вот писатели манов, хоть бы какой намёк, откуда я знаю, что такое rulset 😀

DESCRIPTION
       fc-conflist shows the ruleset files' information being installed on the system.
papin-aziat ★★★★★
() автор топика
Последнее исправление: papin-aziat (всего исправлений: 2)