Есть ли способ установить моноширинный шрифт * default * в Safari?

11

У меня есть веб-приложение, которое использует моноширинный шрифт браузера по умолчанию. Он настроен таким образом, чтобы пользователь мог выбирать самостоятельно. В Chrome это работает хорошо, так как легко установить шрифты по умолчанию, но в Safari они убрали эту опцию.

Есть ли способ для пользователей установить шрифты по умолчанию в Safari?

Карл Смит
источник

Ответы:

2

Начиная с Safari 12, все возможности для этого были удалены:

  • Панель Внешний вид (долго) исчезла
  • Эти defaultsключи не больше не уважают
  • @font-faceОпределения CSS ограничены встроенным белым списком local()значений, игнорируя любые другие шрифты, установленные в системе, что является частью широкого пакета мер по снятию отпечатков пальцев.

Взятые вместе, это означает, что нет способа изменить значения по умолчанию: «Times» serif, «Helvetica» sans-serifи «Courier» monospace.


Единственное, что вы можете сделать, это создать пользовательскую таблицу стилей для непосредственного оформления различных элементов. Так, например , вы можете изменить семейство шрифтов по умолчанию от serifдо sans-serif:

body { font-family: sans-serif }

Или вы даже можете назвать конкретные локально установленные несистемные шрифты:

body { font-family: 'Open Sans' }

К сожалению, хотя это работает достаточно хорошо для изменения шрифта документа по умолчанию, сложно использовать тот же подход для изменения стиля каждого элемента, который по умолчанию установлен на моноширинный шрифт. Я не уверен, что CSS вообще может полностью эмулировать поведение по умолчанию для таких элементов - хотя раньше это было легко сделать, используя одну defaultsили пользовательскую таблицу стилей с @font-faceправилом для monospace(которая просто переопределяла то, что monospaceозначало, не затрагивая сам стиль по умолчанию, и так позволил поведению по умолчанию применить к тому другому шрифту).

Мне внутренне не нравится читать большие объемы текста, заданные в Courier, так что, похоже, в будущем мне придется использовать другой браузер для чтения RFC ...

Аристотель Пагальцис
источник
Спасибо за обновление, Аристотель. Хотя ответ Лри был очень хорошим, он не очень хорошо состарился, поэтому я перенес проверку на ваш ответ, чтобы направить будущих посетителей к самой актуальной информации.
Карл Смит
Спасибо. Да, я использовал ответ Лри в течение многих лет; к сожалению, музыка сейчас остановилась. Это… прискорбно, если не сказать больше, но так оно и есть.
Аристотель Пагальцис
12

Следующая информация была правильной, когда она была опубликована, но теперь относится только к устаревшим версиям Safari.


Существуют неэкспонированные настройки для изменения шрифтов по умолчанию и размеров шрифтов:

defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2StandardFontFamily Georgia
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2DefaultFontSize 16
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2FixedFontFamily Menlo
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2DefaultFixedFontSize 14

Другой вариант - отредактировать файл CSS, который определяет стили по умолчанию (смотрите « Настройки»> «Дополнительно»> «Таблица стилей» ), добавив что-то вроде этого, например:

@font-face {
   font-family: monospace;
   src: local('Menlo');
}

Это правило заставляет любой элемент, который использует font-family: monospace(а также элементы, такие как <pre>и <code>по умолчанию), использовать Menlo. Просто измените имя шрифта (соблюдайте осторожность, чтобы сохранить в кавычках) на то, что вы предпочитаете.

LRI
источник
1
Неожиданно он не работает для дополнительных шрифтов, установленных через Книгу шрифтов в Мохаве (10.14.2)
Илья Васильевский
Смотрите новый ответ Аристотеля Пагальциса (выше). Это не хорошие новости.
Карл Смит