Как я могу переопределить минимальный размер шрифта в Firefox? - PullRequest
11 голосов
/ 11 марта 2010

Мой сайт отображается так же, как и в IE и Opera, но в Firefox я не могу (с помощью CSS) получить размер шрифта меньше, чем у Firefox минимальный размер шрифта по умолчанию.Конечно, я могу зайти в Инструменты> Параметры и удалить это значение, но другие пользователи увидят, что некоторые элементы смещены.

Я пробовал использовать! Важное, но это не работает.И я не могу заменить текст изображениями, это динамические поля.

Ответы [ 8 ]

49 голосов
/ 28 сентября 2012

Хорошо. Я собираюсь объяснить, как вы это делаете, но сначала вам нужно знать несколько вещей.

1. Вы не должны этого делать.

Существует и очень хорошая причина, по которой существует минимальный размер шрифта. Проще говоря, с большинством шрифтов уже трудно прочитать что-либо ниже 12px, не говоря уже о минимальном значении по умолчанию 9px. Если ваш дизайн требует таких размеров шрифта для чего угодно, кроме крайне ограниченного набора обстоятельств¹, то ваш дизайн просто плохой и исключает огромную категорию пользователей.

2. Вы действительно не должны этого делать.

Сеть является гибкой средой, и хороший дизайн должен учитывать это. Дизайн, для работы которого требуется фиксированный размер шрифта, подходит для печати, но не подходит для Интернета. Любой дизайнер, который не может работать с этим требованием, не понимает среду, и ни один достойный руководитель не должен расставлять приоритеты плохих решений дизайнера над практичностью и удобством использования. У вас есть гораздо большие, более фундаментальные проблемы, если вы не можете оспорить это решение.

3. Вы действительно действительно не должны этого делать.

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

Как это сделать в любом случае

Довольно просто настроить Firefox для отображения шрифтов с размерами, меньшими указанного минимального размера: просто используйте свойство font-size-adjust .

А вот и бит науки

У каждого шрифта есть нечто, называемое аспектным значением , которое является отношением между его высотой x (высотой буквы x) ² и фактическим установленным вами размером шрифта. Например, в Comic Sans это действительно большое значение (0,55), как можно судить по тому, насколько большие более короткие буквы (a, c, e…) сравниваются с более высокими (b, d, h…), тогда как в Courier Новый это намного меньше (0,43).

Эта изменчивость может вызвать некоторые проблемы. Например, допустим, вы задаете супер-необычный шрифт для своего основного текста, но, поскольку вы хороший дизайнер, вы предоставляете несколько запасных шрифтов. Это прекрасно, но поскольку некоторые из этих запасных вариантов имеют разные значения сторон, буквы могут быть меньше и менее разборчивы в указанном вами размере. font-size-adjust позволяет вам убедиться, что любой запасной вариант имеет ту же высоту x, что и ваш супер-необычный шрифт.

К сожалению, мы также можем использовать его, чтобы сделать текст менее разборчивым. Допустим, ваша основная копия - это Segoe UI в 12px:

body {
    font-family: "Segoe UI";
    font-size: 12px;
}

Значение аспекта пользовательского интерфейса Segoe почти точно равно 0,5, поэтому, если вы укажете это значение font-size-adjust, размер шрифта не изменится:

body {
    font-family: "Segoe UI";
    font-size: 12px;
    font-size-adjust: 0.5; /* x-height = 12px × 0.5 = 6px */
}

Что произойдет, если мы установим его на что-то меньшее? Ну, браузер настроит размер шрифта, чтобы использовать высоту x, равную font-size × font-size-adjust. Например, приведенное ниже приведёт к эффективному размеру шрифта 6 пикселей:

body {
    font-family: "Segoe UI";
    font-size: 12px;
    font-size-adjust: 0.25; /* x-height = 12px × 0.25 = 3px */
}

Это составляет основу нашей атаки. Оказывается, что Firefox будет соблюдать font-size-adjust, даже если он переопределяет минимальный размер шрифта. (Само собой разумеется, что это ошибка .)

Демо

Попробуйте это в Firefox с минимальным размером шрифта. Он использует две ошибки: вышеупомянутую проблему font-size-adjust и отдельную проблему с сообщением о размере отрисованного шрифта через getComputedStyle.

Вам необходимо знать значение аспекта шрифта, который вы используете для этого, чтобы вычислить правильное значение font-size-adjust, для которого этот список значений аспектов может вам помочь. (В качестве альтернативы, попробуйте расчетную высоту x для шрифтов, установленных в вашей системе .)

Но подождите! Там хуже!

TheВышеуказанная техника работает только в Firefox. Еще проще переопределить минимальный размер шрифта для элемента в Webkit, включая Safari, iOS Safari и Chrome - просто используйте нестандартное свойство -webkit-text-size-adjust:

-webkit-text-size-adjust: none;

Это еще один баг , кстати. text-size-adjust - это нестандартное предложение, предназначенное для ограничения степени, в которой размер текста автоматически раздувается на мобильных устройствах. Он не предназначен для работы на настольных компьютерах, тем более предотвращает изменение размера текста вручную.

Последнее слово: это не будет длиться вечно

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

Тем не менее, если вас принуждают к этому, я искренне защищаю решение, которое в конечном итоге заставит вовлеченные стороны переосмыслить свое решение.


¹ Подсказка: если ваш текст содержит какую-либо информацию, которая предназначена для чтения кем-либо когда-либо, то вам не следует возиться с настройками доступности браузера. Законные случаи включают чисто декоративные эффекты (сложное искусство ASCII, поэзия формы) и предварительный просмотр документов.

² Вернее, расстояние от базовой линии до средней высоты, которая является высотой буквы x в большинстве шрифтов.

2 голосов
/ 12 февраля 2013

Вы можете эффективно уменьшить текст ниже минимального размера, используя синтаксис CSS3 transform: scale(x), где x < 1. Это гарантированно сработает в будущих браузерах (так как это точка масштабирования), но оно имеет свои собственные проблемы / предостережения.

2 голосов
/ 26 сентября 2012

Вы не можете сделать это. Это настройка, предоставляемая Firefox, чтобы такие люди, как мы, не могли переопределить ее некоторыми настройками CSS.

1 голос
/ 26 сентября 2012

На всякий случай это может кому-нибудь помочь, в итоге я заменил небольшие текстовые области, первоначально в HTML, на зоны SVG. Я заполняю эти зоны библиотекой Raphaël JS с кодом вроде

logo_text = $j("#logo_text").val();
logo_text_preview_paper.clear();
logo_text_preview_paper.text(0, 4, logo_text).attr({"font-family": 'Helvetica', "font-size": 7, "text-anchor": 'start'});

Я не использовал холст HTML из-за его отсутствия в некоторых браузерах и из-за того, что SVG предлагает гораздо лучший пользовательский интерфейс на экранах Retina.

Это может показаться излишним, но мне не удалось найти более простое решение проблемы минимального размера шрифта в FF.

0 голосов
/ 01 мая 2013

вы можете попробовать следующий код

тело {

min-font-size: 15px!important;

}

0 голосов
/ 29 декабря 2011

Если вы установите размер шрифта CSS по умолчанию на своих веб-страницах в процентах ... тогда с помощью изменения размера вы можете обеспечить кросс-браузерную масштабируемость ... Настройка размера шрифта на 62,5% является основой для изменения масштаба шрифтов base hx размеры до 10px.

body {

    font-size: 62.5%;

}

p  {

    font-size: 1em;
}

Так что, если вы действительно хотите, чтобы ваш стандартный абзац имел текст 10px ... Вы бы просто указали его в CSS как 1em, и он будет отображаться как 10px. Обратите внимание, что если вы действительно хотите сделать это правильно ... вам нужно также выполнить сброс CSS, чтобы обеспечить согласованность отображения ...

Эрик Мейерс Сброс CSS НТН

0 голосов
/ 27 августа 2010

В некоторых случаях вы можете использовать element и fillText ().

0 голосов
/ 11 марта 2010

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

body
{
    font-size: 12px;
}
...