LINUX.ORG.RU

Посыпались шрифты в GTK

 , , ,


0

1

Привет, ЛОР!

После очередного апдейта в приложениях с GTK посыпались шрифты. Вместо выбранного Ubuntu теперь какая-то странная странь. Особенно пострадали пробелы и цифры, почему-то. Плюс, пропал раздел с настройками GTK из KDE System Settings.

Скриншот: https://ibb.co/fnWHQG5

Что делать? Куда копать? В целом, это похоже на мою предыдущую проблему (Файловый диалог в KDE растянут на весь экран), вот только теперь ещё и диалог настроек не доступен и шревты поехали не только в файловом диалоге. В LXAppearance же почему-то нельзя выбрать размер шрифта. Вместо этого там вот такое: https://ibb.co/WvsgyCW

NixOS Unstable, KDE 5.18.5, Qt 5.14.2, GTK+3 3.24.21.

Решение: спасибо @papin-aziat, проблема оказалась в моём конфиге.

Ты забыл тег нихОС, поэтому я зашёл, а делать мне здесь нечего, кто ж его знает чего там у вас.

По делу, такое видел, когда флатпак не видит системных шг или наоборот.

papin-aziat ★★★★★ ()

странная странь

Сраная срань!

Для начала стоит посмотреть на выхлоп fc-list и проверить наличие файлов для шрифтов. Например так (покажет только отсутствующие):

IFS=$'\n'
for i in $(fc-list | awk -F: '{print $1}'); do
  if [ ! -f "${i}" ]; then
    echo "${i}"
  fi
done
mord0d ★★★★★ ()

Можешь ещё посмотреть на fc-match "Ubuntu", но это даст только имя файла для шрифта, назначенного для этого имени (оно может быть алиасом) шрифта.

// Твоя аватарка очень подходит под твою проблему. ☺

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

Ты silverblue юзал? Так вот там могут быть неожиданные повороты, а из чего лепят это – я не знаю. Но ты прав, кэш проверить надо.

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

Ты silverblue юзал?

Я вообще не юзаю Linux. ☺

Так вот там могут быть неожиданные повороты

Везде оно есть, но в X11 используется fontconfig, который диагностируется везде одинаково (а вот фикситься может по-разному, да; но чтобы проблему решить, её надо вначале локализовать).

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

но чтобы проблему решить, её надо вначале локализовать

Ага, тогда эта ссылочка самый раз, чтобы разобраться с альясами, и чтобы впредь ничего не сыпалось: https://jichu4n.com/posts/how-to-set-default-fonts-and-font-aliases-on-linux/

А чтобы проверить наличие, у него есть ПМ или чего там у них.

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

Для начала стоит посмотреть на выхлоп fc-list и проверить наличие файлов для шрифтов.

Файлы на месте. Плюс, эта проблема только в GTK проявляется. в Qt всё ок.

Например так (покажет только отсутствующие):

Ничего не показывает.

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

Можешь ещё посмотреть на fc-match «Ubuntu», но это даст только имя файла для шрифта, назначенного для этого имени (оно может быть алиасом) шрифта.

$ fc-match "Ubuntu"  
NotoColorEmoji.ttf: "Noto Color Emoji" "Regular"

А вот это неожиданно!

// Твоя аватарка очень подходит под твою проблему. ☺

Да, я знаю :)

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

Ок, @t184256. Хотя я эту ОС уже пару лет пользую, проблемы со шревтами только сейчас появились. И только в GTK.

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

Что именно ясно?

Кстати

▲ ~ fc-match "Noto Sans"
NotoColorEmoji.ttf: "Noto Color Emoji" "Regular"

 ▲ ~ fc-match "Terminus" 
NotoColorEmoji.ttf: "Noto Color Emoji" "Regular"

 ▲ ~ fc-match "Ubuntu Regular"
NotoColorEmoji.ttf: "Noto Color Emoji" "Regular"

 ▲ ~ fc-match "Source Code Pro"
NotoColorEmoji.ttf: "Noto Color Emoji" "Regular"

То есть fc-match на любой шрифт выдаёт одно и то же. Что это за лажа?

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

Я такой скриптик юзаю для проверки системных и для веба:

#!/usr/bin/bash

for family in 	\
		serif "Times New Roman" Georgia "Palatino Linotype" \
		sans-serif sans Arial "Arial Black" Verdana Helvetica Impact "Lucida Sans Unicode" Tahoma "Trebuchet MS" "Comic Sans MS" \
		monospace "Courier New" "Lucida Console"
	do
  		echo -n "$family: "
  		fc-match "$family"
	done

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

Что именно ясно?

У тебя эмоджи на все шрифты.

Создай ~/.config/fontconfig/fonts.conf (я ссылку дал) и там настрой как надо тебе, например у меня так:

  <alias>
    <family>serif</family>
    <prefer><family>Roboto Slab</family></prefer>
  </alias>
  <alias>
    <family>sans-serif</family>
    <prefer><family>Roboto</family></prefer>
  </alias>
  <alias>
    <family>sans</family>
    <prefer><family>Roboto</family></prefer>
  </alias>
  <alias>
    <family>monospace</family>
    <prefer><family>Roboto Mono</family></prefer>
  </alias>
  <match>
    <test name="family"><string>Arial</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Roboto</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Helvetica</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Roboto</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Verdana</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Roboto</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Tahoma</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Roboto</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Comic Sans MS</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Roboto Condensed</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Times New Roman</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Roboto Slab</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Times</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Roboto Slab</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Courier New</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Roboto Mono</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Georgia</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Roboto Slab</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Palatino Linotype</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Roboto Slab</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Arial Black</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Roboto Black</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Impact</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Roboto Condensed Medium</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Lucida Sans Unicode</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Roboto</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Trebuchet MS</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Roboto</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Lucida Console</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Roboto Mono</string>
    </edit>
  </match>
papin-aziat ★★★★★ ()
Ответ на: комментарий от papin-aziat

И правда!

Emoji у меня были из-за вот такого:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <match target="pattern">
        <test qual="any" name="family"><string>monospace</string></test>
        <edit name="family" mode="append" binding="weak"><string>Noto Color Emoji</string></edit>
    </match>
    <match target="pattern">
        <test qual="any" name="family"><string>serif</string></test>
        <edit name="family" mode="append" binding="strong"><string>Noto Color Emoji</string></edit>
    </match>
    <match target="pattern">
        <test qual="any" name="family"><string>sans-serif</string></test>
        <edit name="family" mode="append" binding="strong"><string>Noto Color Emoji</string></edit>
    </match>
</fontconfig>

В .config/fontconfig/conf.d/99-emoji.conf. Я слегка забыл о его существовании. Нужен он чтобы emoji в Konsole показывались. Вот только почему его наличие внезапно сломало GTK? Я закомментировал тушку файла и всё починилось.

Конфиг брал, кажется, отсюда: https://gist.github.com/IgnoredAmbience/7c99b6cf9a8b73c9312a71d1209d9bbb

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

Нужен он чтобы emoji в Konsole показывались.

Мсье знает толк в извращениях :-)

Вот только почему его наличие внезапно сломало GTK?

За пределами моего понимания. Я делаю всё тупо, заменил все популярные шрифты своими и таскаю этот конфиг.

Я закомментировал тушку файла и всё починилось.

А как же теперь смайлики в терминале?

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

Мсье знает толк в извращениях :-)

Не, ты не понимаешь. Вот такое (https://raw.githubusercontent.com/kubernetes/minikube/master/site/static/images/screenshot.png) выглядит и правда удобно. Особенно в сравнении с записями типа OK и Fail. Гораздо проще логи глазами парсить в итоге.

А как же теперь смайлики в терминале?

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

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

выглядит и правда удобно

Микки увидел и выдавил себе глаза. (%

Особенно в сравнении с записями типа OK и Fail.

Использую DONE, FAIL, WARN, DEBG, в формате ISO-date level process/function message для логов и в формате level process/function message для stdout/stderr, вот это действительно удобно.

Гораздо проще логи глазами парсить в итоге.

Угу-угу. И что эти цветные точки означают-то хоть?

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

Не, ты не понимаешь. Вот такое (https://raw.githubusercontent.com/kubernetes/minikube/master/site/static/images/screenshot.png) выглядит и правда удобно.

Да, неплохо. Не в таком диком количестве как на скрине, конечно. Но идея хорошая.

Особенно в сравнении с записями типа OK и Fail. Гораздо проще логи глазами парсить в итоге.

Ну, я разными цветами всякие OK и Fail вывожу…

wandrien ()
Ответ на: комментарий от hateyoufeel

выглядит и правда удобно

Забавно, да. Чё только не придумают!

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

Ну, я разными цветами всякие OK и Fail вывожу…

Да все так делают. У меня даже плагин для urxvt был который подсвечивал разные ключевые слова.

Emoji удобнее в этом плане, потому что они занимают одну колонку и при этом ими можно кучу всего обозначить.

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

Препиши на руст, тогда тесты будут не нужны ты не будешь их искать и не напишешь, что не нашел.

anonymous ()
Ответ на: комментарий от RazrFalcon

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

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

Это Silverblue лепят кислое подобие NixOS из RPM-based, а здесь оригинальные идеи, не замутненные соображениями практичности и прочей такой ерундой.

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

Это Silverblue лепят кислое подобие NixOS

Вот прям подобие? Мне шляпники видятся довольно самостоятельными, да и лепят так не кисло и не только сильверблю.

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

Не, ты не понимаешь. Вот такое (https://raw.githubusercontent.com/kubernetes/minikube/master/site/static/images/screenshot.png) выглядит и правда удобно. Особенно в сравнении с записями типа OK и Fail. Гораздо проще логи глазами парсить в итоге.

Я надеюсь, это сарказм.

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

Мне (шляпнику) шляпники тоже видятся довольно самостоятельными, но в сравнении с NixOS Silverblue это не просто недоNixOS, это недонедоNixOS. Свойства, которых они добиваются биекцией совы на глобус, должны обеспечиваться не сбоку припекой, а адекватным пакетным менеджером. То, что в NixOS сделано по уму и работает уже десять нет, в Silverblue придет примерно никогда. Одна только необходимость ребута в новое поколение чего стоит. А когда им говоришь, что можно без ребута, они так искренне удивляются, как будто я на них из 2030 упал.

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

в Silverblue придет примерно никогда

Да может ещё и сама она никогда не придёт, что-то застряли они, вон IoT уже в продакшн пошёл, а этих не слыхать.

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

Нет. Мы на полном серьёзе это используем. Почти у всех макось, там это из коробки в терминале. В KDE тоже сравнительно легко настраивается.

hateyoufeel ★★★★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.