Нужно внедрить нестандартный шрифт на веб страницу?
Нестандартный шрифт — это шрифт, который не будет установлен в ОС большинства посетителей сайта. Результат — пользователи не смогут увидеть, оценить и в полной мере восхититься фантазией дизайнера. Следствие — дизайнер не в восторге от твоей беспомощности. Следствие следствия — поиск способа сделать по макету.
Решение по старинке — картинками. Нарезали, к примеру, пункты меню, вставили на сайт и готово. Но у этого способа есть тьма недостатков. Самый неприятный из них — это отсутствие гибкости. Например, в том же меню, владелец сайта сам не сможет изменить/добавить пункт меню (если он конечно как минимум не знаком с photoshop, HTML и CSS).
По очевидным причинам, такой способ не даст возможности оформить красиво, к примеру, заголовки статей. Поэтому верстальщик вынужден искать более "сильное" решение. Одно из таких, которое достойно твоего внимания — javascript плагин Cufon.
Позволяет внедрить любой шрифт на веб страницу без жесткой привязки к дизайну (т.е. тексты, заголовки, меню и т.п. можно будет изменять, не прибегая к услугам веб разработчиков).
Обычный текст при загрузке страницы. заменяется на SVG объект (для браузеров, поддерживающий стандарты) или на VML (для IE) — графические области, в которых символы отрисовываются с помощью javascript.
Подключаем библиотеку и сгенерированный js-файл, указываем, к какому элементу(ам) применить данный шрифт
<script type="text/javascript" src="path-to/cufon-yui.js"></script>
<script type="text/javascript" src="path-to/[имя файла, который сделает cufon-генератор]"></script>
<script type="text/javascript">
Cufon.replace("h1");
</script>
| set | задает опции шрифта | Cufon.set(option, value) | Cufon.set("fontFamily", "Amaze") |
| replace | заменяет обычный шрифт на указанный | Cufon.replace(selector[, options]) | Cufon.replace('h1')('h2'); |
| now | команда для начала замены текста Cufonом. Иногда нужно для IE, чтобы замена начала происходить после полной загрузки DOM струкутры | Cufon.now() | |
| refresh | обновляет указанный селектор. Нужно для динамически сгенерированного/измененного контента | Cufon.refresh([selector, ..]) | Cufon.refresh |
| Опция | Описание | Возможные значения | По умолчанию |
|---|---|---|---|
| autoDetect | Если установлен true, имя шрифта берется из CSS свойства font-family (не работает в Opera) | true, false | false |
| color | Цвет текста. Значение берется из CSS свойства color, если не используется градиент | "red", "#f62315", .. | из CSS |
| fontFamily | Имя шрифта, который будет применен | Имя любого загруженного шрифта | Последний загруженный шрифт |
| fontSize | Размер шрифта. Если не задан в опциях, берется из CSS (font-size). Доступны значения только в px. | "14px", "24px", "72px", .. | из CSS |
| fontStretch | Ширина символов. Если не задан в опциях, берется из CSS (font-stretch). | "160%", "condensed", "semi-expanded", .. | "normal" |
| fontStyle | Стиль шрифта. Если не задан в скрипте, берется из CSS свойства font-style | "normal", "italic", "oblique" | Из CSS |
| fontWeight | Жирность шрифта. Если не задан явно в скрипте, берется из CSS свойства font-weight | 100-900, "normal", "bold" | Из CSS |
| forceHitArea | Фиксирует кликабильную область элемента для IE. (если у элемента, к которому применен Cufon, задано фоновое изображение, по умолчанию в IE становятся некликабильными прозрачные участки — то что не начертание букв) | true, false | false |
| hover | Включать ли поддержку :hover. Можно так же явно указать как реагировать на наведение (тип значения Object) | true, false, Object | false |
| hoverables | Определяет какие теги будут реагировать на :hover (в IE6 применимо только к ссылкам) | { tag: true, .. } | { a: true } |
| letterSpacing | Расстояние между буквами. Если не задано явно в скрипте, берется из CSS свойства letter-spacing | "-1px", .. | Из CSS |
| separate | Как переносится многострочный текст. | "words" — слов не разрывать, "none" — не переносить на вторую строку, "characters" — слова можно разрывать | "words" |
| textShadow | Отображает тень текста. Если не задано явно в скрипте, берется из CSS свойства text-shadow | "1px 1px #000", .. | "none" |
| textTransform | Преобразование текста. Если не задано явно в скрипте, берется из CSS свойства text-transform | "uppercase", "lowercase", "capitalize", "none" | из CSS |
| trim | Как-то влияет на смежные пробелы и переносы строк. Толком не понял, нужно тестировать. | "simple", "advanced" | "simple" |
Подключение разных шрифтов на одной странице:
<script type="text/javascript" src="path-to/cufon-yui.js"></script>
<script type="text/javascript" src="path-to/name-font-1.js"></script>
<script type="text/javascript" src="path-to/name-font-2.js"></script>
<script type="text/javascript">
Cufon.set("fontFamily", "NameFont1");
Cufon.replace("#welcome");
Cufon.replace("h1");
Cufon.replace(".header #topMenu");
Cufon.set("fontFamily", "NameFont2");
Cufon.replace("h2");
</script>
Добавление градиента и тени заголовку. Для меню включаем hover:
Cufon.replace(";h1", {
color: "-linear-gradient(white, black)",
fontFamily: "Nice font",
textShadow: "1px 1px rgba(0, 0, 0, 0.2)"
});
Cufon.replace("#nav a", {
hover: true
});
Источник:
Recent Comments