LINUX.ORG.RU

Забанить font family на уровне браузера

 , ,


0

1

Коллективный разум ЛОРа, подскажи: как наиболее идиоматично забанить font family на уровне браузера, но только там, где она является частью списка генерик шрифтов (но при этом не сломать сайты, которые хотят именно эту font family и никакую другую)?

Например, я хочу забанить Courier, потому что он уродливый. Но при этом я хочу, чтобы стили, в которых написано font-family: Foo, Bar, Courier, Baz, monospace, были эквивалентны списку Foo, Bar, Baz, monospace, но если в стиле написано конкретно font-family: Courier, то выбирался всё-таки курьер?

В принципе, я могу забанить его на уровне freetype (через $XDG_CONFIG_HOME/fontconfig/conf.d, написав что-то типа цепочки match-test-edit), но есть желание сделать как-то более прицельно и более умно.

★★★★★

Последнее исправление: intelfx (всего исправлений: 1)

Ответ на: комментарий от dataman

Нет. Оно 1) может только заменить основной шрифт сайта (а не забанить конкретный), и 2) даёт выбрать новый шрифт исключительно из закрытого списка, одобренного большим братом.

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

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

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

fontconfig

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

t184256 ★★★★★
()

В принципе, я могу забанить его на уровне freetype (через $XDG_CONFIG_HOME/fontconfig/conf.d, написав что-то типа цепочки match-test-edit)

Но ведь это сработает, только если ты отключишь подгрузку шрифтов в браузере или на странице, а это совсем не вариант же?

papin-aziat ★★★★★
()

забанить его на уровне freetype

Разве GTK-программы всё ещё используют FreeType? Я думал, что FreeType дропнули, когда перешли на HarfBuzz с Pango 1.44 в 2019 году.

timelf
()

«Роботы» советуют через css (например, расширение Stylus):

/* Define preferred font families without Courier */
body {
  font-family: Foo, Bar, Baz, monospace;
}

/* Add Courier to the list of generic font families */
body {
  font-family: Foo, Bar, Baz, monospace, Courier;
}


Но они и соврут - недорого возьмут. )

krasnh ★★★
()

Я не знаю.

Сходу в голову приходит только перегрузка конкретного font-family через @font-face подключенный пользовательским стилем. В таком случае перегрузка будет применяться только в случае если шрифт явно где-то упомянут в правилах. В @font-face можно было бы как подгружать другой шрифт, который тебе нравится, либо подгружать пустой шрифт без глифов, чтобы поиск пропускал его.

Но вот требование с «но если в стиле написано конкретно font-family: Courier, то выбирался всё-таки курьер?» нетривиально. Кмк, тут только разве что динамически детектить все font-family rules на странице с помощью жс, и модифицировать таблицы стилей в рантайме. Но это слишком много делов, учитывая то, что таблицы стилей могут создаваться динамически.

Со вторым требованим даже Fonts API не поможет. С его помощью так же, можно только либо заигнорить совсем шрифт, либо подменить. Но не при условии что он в правиле один.

javascript
()
Последнее исправление: javascript (всего исправлений: 2)