LINUX.ORG.RU

Хочется странного - подмена шрифта

 ,


1

1

Пусть есть kubuntu 19.10 и системный шрифт «по умолчанию» = Ubuntu со сглаживанием.
Можно ли установить для конкретной программы свой шрифт «по умолчанию» НЕ МЕНЯЯ настроек в ней ?

Например для kcalc - установить Tahoma без сглаживания ?

★★★★★

пускай из докера со встроенной тахомой вместо шрифта

Anoxemian ★★★★★
()

Не меняя в самой программе? Почему вдруг такое требование?

В принципе, можно попробовать через fontconfig. Вот тут пример изменения свойств шрифта только для xterm: Как изменить параметры отображения шрифта без изменения fonts.conf? (комментарий)

Для kcalc, может быть в настройках Qt можно для конкретных приложений что-то менять? Помню, что был некий qtconfig и там можно подстановки какие-то делать на вкладке «Шрифты». Но только я не уверен, что можно для конкретных приложений, но проверь.

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

Почему вдруг такое требование?

настроек может и не быть вовсе
kcalc взят для примера, цель qtcreator

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

ты уверен, что прочитал первый пост внимательно ?

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

kcalc взят для примера, цель qtcreator

В qtcreator нет настроек шрифта? Надо же.

Ну вот для GTK есть gtkrc. Там, насколько я помню (сам не пользуюсь возможностью) можно было менять темы для каждого приложения (через переменную среды). Скорее всего, и шрифты можно так. А вот с Qt... Может, есть какой-то менеджер тем, который позволяет менять настройки для каждого приложения?

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

Вот типа смена stylesheet не подойдет?

частично да, на примере kcalc смена шрифта combobox прошла - теперь для всех элементов так надо )
хоть чтото уже есть, но qtcreator многим сложнее, там есть свои стили и темы - может быть конфликт

кроме шрифта хотел отключить сглаживание, не уверен что это могут stylesheet

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

хоть чтото уже есть, но qtcreator многим сложнее, там есть свои стили и темы - может быть конфликт

А там нельзя в CSS задать один шрифт для всех виджетов? Для каждого не надо, я думаю. А другие шрифты, которые в настройке (который в поле редактирования кода), qtcreator может применить уже после приложения css. Это надо проверить.

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

А там нельзя в CSS задать один шрифт для всех виджетов?

шрифт редактора другой должен быть )
буду пробовать

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

Набросал ~/.fonts.conf

<?xml version="1.0"?><!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<dir>~/.fonts</dir>
  <match target="font">
    <test name="prgname" compare="eq"><string>kcalc</string></test>
    <edit name="antialias" mode="assign" binding="strong"><bool>false</bool></edit>
  </match>
</fontconfig>


но эффекта на kcal нет - что не так ?

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

Этот вариант оставь на последнее. Лучше через CSS тыкай. Что касается того, почему не работает. Может быть, prgname другой. Это к примеру. Запусти и глянь, какая prgname.

$ FC_DEBUG=1 kcalc | grep "prgname"
Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Имя вроде нормальное

prgname: "kcalc"(s)


Но получилось вписав (временно) те строки в /etc/fonts/fonts.conf
Видимо ~/.fonts.conf не просматривается системой почему то

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

Видимо ~/.fonts.conf не просматривается системой почему то

И не должен:

Configuration files and directories: ~/.fonts.conf/, ~/.fonts.conf.d/ and ~/.fontconfig/*.cache-* are deprecated since fontconfig 2.10.1 (upstream commit) and will not be read by default in the future versions of the package

rbh-17m
()

через кастомный .gtkrc/settings.ini

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

да, нашел, но что странно - файл ~/.fonts.conf был от чистой установки ubuntu

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

<?xml version="1.0"?><!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<dir>~/.fonts</dir>
  <match target="font">
    <test name="prgname" compare="eq"><string>kcalc</string></test>
    <edit name="antialias" mode="assign"><bool>false</bool></edit>

<!--
    <edit name="family" mode="assign" binding="same"><string>Tahoma</string></edit>
    <edit name="family" mode="prepend" binding="strong"><string>Ubuntu</string><string>Arial</string></edit>
-->
    <alias binding="strong">
        <family>Chilanka</family>
        <accept>
            <family>Arial</family>
        </accept>
    </alias>
  </match>
</fontconfig>


пробую на kcalc, в нем установлен шрифт Chilanka - нужно подменить его на Arial

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

Я снова скажу, что считаю, что дергать fontconfig — не та артиллерия пока, она не различает виджеты, не на том уровне работает, а более низком. Лучше, ИМХО, CSS. Но что касается замены в fontconfig, то попробуй (вслепую пишу):

<?xml version="1.0"?><!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="pattern">
    <test name="prgname" compare="eq"><string>kcalc</string></test>
    <test qual="any" name="family"><string>Chilanka</string></test>
    <edit name="family" mode="assign" binding="same"><string>Arial</string></edit>
  </match>
</fontconfig>
Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 3)
Ответ на: комментарий от Zubok

fontconfig — не та артиллерия пока, она не различает виджеты

вот я и думаю именно не различать
шрифт редактора в qtcreator настраивается, а все остальное идет штатным шрифтом - мне бы его и заменить все, без указания что это «дерево», поле ввода и т.д.
я еще не уверен, что CSS может сглаживание отключить - это принципиально важно для шрифта Tahoma, без сглаживания он прекрасен, иначе ужасен (у мена не 4k монитор, я пикселы вижу и кривое сглаживание тоже)

то попробуй (вслепую пишу):

не, не помогло
можно ли както понять как fontconfig парсил этот конфиг и что ему не подошло ?

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

не, не помогло

Сейчас проверю.

можно ли както понять как fontconfig парсил этот конфиг и что ему не подошло ?

FC_DEBUG= (man fonts.conf)

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

FC_DEBUG=255

судя по логу какаято обработка есть, но замены визуально нет

        pattern any prgname Equal "kcalc"
        pattern any family Equal "Chilanka"
[edit]
        Edit family Assign "Arial";

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

Я думаю, что у тебя kcalc запрашивает fontconfig не Chilanka, а какой-то другой шрифт. Почему ты решил, что у тебя идет запрос именно этого шрифта?

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

pattern any family Equal «Chilanka»

Если все-таки он, то попробуй заменить

<test qual="any" name="family"><string>Chilanka</string></test>

на

<test qual="eq" name="family"><string>Chilanka</string></test>

У меня в Qt4 и GTK приложениях замена работает.

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

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

потому что я его установил в kcalc ?

изменил шрифт на Ubuntu в kcalc и конфиг такой

  <match target="pattern">
    <test name="prgname" compare="eq"><string>kcalc</string></test>
    <test qual="any" name="family"><string>Ubuntu</string></test>
    <edit name="family" mode="assign" binding="same"><string>Uroob</string></edit>
  </match>


в логе вижу
Rule Set: /etc/fonts/conf.d/99-zzz-aaa.conf
FcConfigSubstitute test pattern any prgname Equal "kcalc"
FcConfigSubstitute test pattern any family Equal "Ubuntu"
Substitute Edit family Assign "Uroob"

но визуально Ubuntu шрифт остался

на «qual=„eq“» ругается
Fontconfig warning: "/etc/fonts/conf.d/99-zzz-aaa.conf", line 6: invalid test qual "eq"
Fontconfig error: "/etc/fonts/conf.d/99-zzz-aaa.conf", line 6: invalid attribute 'name'


попробую еще не kde приложение а именно qt

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

на «qual=„eq“»

Да, я не в тот атрибут поставил eq. Гляну еще раз. А Ubuntu — это такая family есть? (у меня Debian).

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

Ну вот вопрос в том, есть ли в шаблоне Ubuntu или этот Chilanka.

Беру для примера qtconfig (prgname=«qtconfig»), выставляю в нем фонт Liberation Mono (на закладке «Шрифты»). И проверяю правило

<?xml version="1.0"?><!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="pattern">
    <test name="prgname" compare="eq">
      <string>qtconfig</string>
    </test>
    <test qual="any" name="family">
      <string>Liberation Mono</string>
    </test>
    <edit name="family" mode="assign" binding="same">
      <string>DejaVu Serif</string>
    </edit>
  </match>
</fontconfig>

Оно работает. Если я для теста заменяю в <test> Liberation Mono на любые другие варианты («Mono», «Serif», «DejaVu Sans» и т. д.), то не работает. Откликается только на Liberation Mono.

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

Ты вот проверь: закомментируй <test> со шрифтом. Пусть он тупо всем шрифтам для kcalc <edit> делает. Тупо заменяет family. Показывает твой желаемый шрифт Arial? Если показывает, то, значит, family какой-то другой.

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

оставил только строки:

  <match target="pattern">
    <test name="prgname" compare="eq"><string>qbittorrent</string></test>
    <edit name="family" mode="assign" binding="same"><string>Uroob</string></edit>
  </match>

все файлы, кроме своего в /etc/fonts/conf.d, стер чтобы не мешали
в логе вижу строки

Rule Set: /etc/fonts/conf.d/99-zzz-aaa.conf
FcConfigSubstitute test pattern any prgname Equal "qbittorrent"
Substitute Edit family Assign "Uroob"


но qbittorrent не поменял шрифт
попробую еще на Ubuntu, а не на kubunut как сейчас - может это кактом мешает, не знаю

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

хотя для gnome-calculator замена сработала !

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

но qbittorrent не поменял шрифт

Странно. Это ведь тотально меняет всем шрифтам family.

Я вот сейчас проверил на паре приложений на qt5: qpdfview и librecad. У меня тотальная замена срабатывает. В документации написано, что qt5 использует fontconfig, если он есть на компьютере, а если нет, то fallback на какой-то свой движок, который на всякий пожарный существует.

все файлы, кроме своего в /etc/fonts/conf.d, стер чтобы не мешали

А зачем с системную директорию лезть? Для пользователя есть ~/.config/fontconfig/fonts.conf (или conf.d)

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

все файлы, кроме своего в /etc/fonts/conf.d, стер чтобы не мешали

Не понял. Ты все системные файлы конфигурации fontconfig в conf.d стер, что ли? :)

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

Для пользователя есть ~/.config/fontconfig/fonts.conf (или conf.d)

который не читается, если нет соответствующей конфы в системной директории.

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

А зачем с системную директорию лезть?

временно, конечно потом вернулся бы в домашнюю (это какаято мысль из начала топика была что «лучше» там)

что qt5 использует fontconfig

если собран с ним, наверно да

ты все системные файлы конфигурации fontconfig в conf.d стер, что ли?

да, временно т.к. в логе увидел и их обработку и подумал что они перетирают мой конфиг, уже вернул все взад т.к. получается qt «игнорирует» fontconfig, хотя сглаживание отключал я успешно им
итого странно, непонятно

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

Должен читаться! Это все прописано в документации man fonts.conf. Ты, похоже, потер какие-то системные файлы fontconfig в /etc. Все должно читаться.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok
  <description>Load per-user customization files</description>
       	<!--
            Load per-user customization files where stored on XDG Base Directory
            specification compliant places. it should be usually:
              $HOME/.config/fontconfig/conf.d
              $HOME/.config/fontconfig/fonts.conf
       	-->
       	<include ignore_missing="yes" prefix="xdg">fontconfig/conf.d</include>
       	<include ignore_missing="yes" prefix="xdg">fontconfig/fonts.conf</include>
       	<!-- the following elements will be removed in the future -->
       	<include ignore_missing="yes" deprecated="yes">~/.fonts.conf.d</include>
       	<include ignore_missing="yes" deprecated="yes">~/.fonts.conf</include>
anonymous
()
Ответ на: комментарий от x905

вот я и думаю именно не различать

Но я все равно не понимаю. Если тебе надо тотально поменять умолчательный фонт, то установи в stylesheet фонт для всех виджетов.

QWidget { font:...} 

Он и будет для всех виджетов сразу.

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

Он и будет для всех виджетов сразу.

подумав еще раз (не дурак, с третьего раза понимаю), воспользовался как «QWidget { font-family: „Tahoma“ }» так и «<test name=„prgname“ compare=„eq“><string>qtcreator</string></test><edit name=„antialias“ mode=„assign“><bool>false</bool></edit>» - и вроде то, что нужно: отключено сглаживание через fontconfig и шрифт поменялся !

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

Вместо QWidget можно просто * (звездочку) поставить.

* { font-family: "Tahoma" }

отключено сглаживание через fontconfig

Интересно, а можно ли через stylesheets? Вот здесь кажется, что нельзя. Беглый поиск не обнаруживает такой возможности.

Zubok ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.