Merge pull request #1706 from kyoshino/bug-973396-locale-fonts

Fix Bug 973396 - Find a better way to serve locale-specific fonts
This commit is contained in:
Craig Cook 2014-06-30 10:31:41 -07:00
Родитель 88ba73b113 bc120124e0
Коммит 3957301691
55 изменённых файлов: 396 добавлений и 187 удалений

Просмотреть файл

@ -37,6 +37,8 @@
{% include 'includes/canonical-url.html' %}
{% endblock shared_meta %}
{{ l10n_css() }}
{% block tabzilla_css %}
{{ css('tabzilla') }}
{% endblock %}
@ -65,8 +67,6 @@
{# Extra header stuff (scripts, styles, metadata, etc) seen by all browsers. Use the 'page_css' block for CSS you want to hide from IE7 and lower. #}
{% endblock %}
{% include 'includes/locale-font-faces.html' %}
{% block favicon %}<link rel="shortcut icon" href="{{ media('img/favicon.ico') }}">{% endblock %}
{{ js('site') }}

Просмотреть файл

@ -35,6 +35,8 @@
{% include 'includes/canonical-url.html' %}
{% endblock shared_meta %}
{{ l10n_css() }}
{% block tabzilla_css %}
{{ css('tabzilla') }}
{% endblock %}
@ -63,8 +65,6 @@
{# Extra header stuff (scripts, styles, metadata, etc) seen by all browsers. Use the 'page_css' block for CSS you want to hide from IE7 and lower. #}
{% endblock %}
{% include 'includes/locale-font-faces.html' %}
{% block favicon %}<link rel="shortcut icon" href="{{ media('img/favicon.ico') }}">{% endblock %}
{{ js('site') }}

Просмотреть файл

@ -1,44 +0,0 @@
{%- if LANG in ['ar', 'fa'] -%}
{#- bug 958321 -#}
<style type="text/css">
@font-face {
font-family: 'Droid Arabic Naskh';
src: url({{ media('fonts/DroidNaskh-Regular.eot?#iefix') }}) format('embedded-opentype'),
url({{ media('fonts/DroidNaskh-Regular.woff') }}) format('woff'),
url({{ media('fonts/DroidNaskh-Regular.ttf') }}) format('truetype');
font-style: normal;
font-weight: normal;
}
@font-face {
font-family: 'Droid Arabic Naskh';
src: url({{ media('/fonts/DroidNaskh-Bold.eot?#iefix') }}) format('embedded-opentype'),
url({{ media('/fonts/DroidNaskh-Bold.woff') }}) format('woff'),
url({{ media('/fonts/DroidNaskh-Bold.ttf') }}) format('truetype');
font-style: normal;
font-weight: bold;
}
</style>
{%- endif -%}
{%- if LANG in ['ff'] -%}
{#- bug 776967 -#}
<style type="text/css">
@font-face {
font-family: 'Mplus Fulah Light';
src: url({{ media('fonts/mplus-2c-light-fulah-subset.eot?#iefix') }}) format('embedded-opentype'),
url({{ media('fonts/mplus-2c-light-fulah-subset.woff') }}) format('woff'),
url({{ media('fonts/mplus-2c-light-fulah-subset.ttf') }}) format('truetype');
font-style: normal;
font-weight: normal;
}
@font-face {
font-family: 'Mplus Fulah';
src: url({{ media('fonts/mplus-2c-regular-fulah-subset.eot?#iefix') }}) format('embedded-opentype'),
url({{ media('fonts/mplus-2c-regular-fulah-subset.woff') }}) format('woff'),
url({{ media('fonts/mplus-2c-regular-fulah-subset.ttf') }}) format('truetype');
font-style: normal;
font-weight: normal;
}
</style>
{%- endif -%}

Просмотреть файл

@ -9,12 +9,12 @@ from funfactory.settings_base import path as base_path
from funfactory.urlresolvers import reverse
L10N_IMG_PATH = base_path('media', 'img', 'l10n')
L10N_MEDIA_PATH = base_path('media', '%s', 'l10n')
def _l10n_media_exists(locale, url):
def _l10n_media_exists(type, locale, url):
""" checks if a localized media file exists for the locale """
return path.exists(path.join(L10N_IMG_PATH, locale, url))
return path.exists(path.join(L10N_MEDIA_PATH % type, locale, url))
@jingo.register.function
@ -103,16 +103,58 @@ def l10n_img(ctx, url):
locale = settings.LANGUAGE_CODE
# We use the same localized screenshots for all Spanishes
if locale.startswith('es') and not _l10n_media_exists(locale, url):
if locale.startswith('es') and not _l10n_media_exists('img', locale, url):
locale = 'es-ES'
if locale != settings.LANGUAGE_CODE:
if not _l10n_media_exists(locale, url):
if not _l10n_media_exists('img', locale, url):
locale = settings.LANGUAGE_CODE
return media(path.join('img', 'l10n', locale, url))
@jingo.register.function
@jinja2.contextfunction
def l10n_css(ctx):
"""
Output the URL to a locale-specific stylesheet if exists.
Examples
========
In Template
-----------
{{ l10n_css() }}
For a locale that has locale-specific stylesheet, this would output:
<link rel="stylesheet" media="screen,projection,tv"
href="{{ MEDIA_URL }}css/l10n/{{ LANG }}/intl.css">
For a locale that doesn't have any locale-specific stylesheet, this would
output nothing.
In the Filesystem
-----------------
Put files in folders like the following::
$ROOT/media/css/l10n/en-US/intl.css
$ROOT/media/css/l10n/fr/intl.css
"""
locale = getattr(ctx['request'], 'locale', 'en-US')
if _l10n_media_exists('css', locale, 'intl.css'):
markup = ('<link rel="stylesheet" media="screen,projection,tv" href='
'"%s">' % media(path.join('css', 'l10n', locale, 'intl.css')))
else:
markup = ''
return jinja2.Markup(markup)
@jingo.register.function
def field_with_attrs(bfield, **kwargs):
"""Allows templates to dynamically add html attributes to bound

Просмотреть файл

@ -0,0 +1 @@
/* Some style goes here */

Просмотреть файл

@ -0,0 +1 @@
/* Some style goes here */

Просмотреть файл

@ -20,7 +20,7 @@ from bedrock.newsletter.tests.test_views import newsletters
TEST_FILES_ROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)),
'test_files')
TEST_L10N_IMG_PATH = os.path.join(TEST_FILES_ROOT, 'media', 'img', 'l10n')
TEST_L10N_MEDIA_PATH = os.path.join(TEST_FILES_ROOT, 'media', '%s', 'l10n')
TEST_DONATE_LOCALE_LINK = {
'de': 'https://sendto.mozilla.org/page/contribute/EOYFR2013-webDE',
@ -73,7 +73,7 @@ class TestSecureURL(TestCase):
self._test('', 'https://' + self.host + self.test_path, True)
@patch('bedrock.mozorg.helpers.misc.L10N_IMG_PATH', TEST_L10N_IMG_PATH)
@patch('bedrock.mozorg.helpers.misc.L10N_MEDIA_PATH', TEST_L10N_MEDIA_PATH)
@patch('django.conf.settings.LANGUAGE_CODE', 'en-US')
class TestImgL10n(TestCase):
rf = RequestFactory()
@ -124,7 +124,50 @@ class TestImgL10n(TestCase):
self._render('is', 'dino/does-not-exist.png')
exists_mock.assert_called_once_with(os.path.join(
TEST_L10N_IMG_PATH, 'is', 'dino', 'does-not-exist.png'))
TEST_L10N_MEDIA_PATH % 'img', 'is', 'dino', 'does-not-exist.png'))
@patch('bedrock.mozorg.helpers.misc.L10N_MEDIA_PATH', TEST_L10N_MEDIA_PATH)
class TestL10nCSS(TestCase):
rf = RequestFactory()
media_url_dev = '/media/'
media_url_prod = '//mozorg.cdn.mozilla.net/media/'
cdn_url = '//mozorg.cdn.mozilla.net'
markup = ('<link rel="stylesheet" media="screen,projection,tv" href='
'"%scss/l10n/%s/intl.css">')
def _render(self, locale):
req = self.rf.get('/')
req.locale = locale
return render('{{ l10n_css() }}', {'request': req})
@override_settings(DEV=True)
@override_settings(MEDIA_URL=media_url_dev)
def test_dev_when_css_file_exists(self):
"""Should output a path to the CSS file if exists."""
eq_(self._render('de'), self.markup % (self.media_url_dev, 'de'))
eq_(self._render('es-ES'), self.markup % (self.media_url_dev, 'es-ES'))
@override_settings(DEV=True)
@override_settings(MEDIA_URL=media_url_dev)
def test_dev_when_css_file_missing(self):
"""Should output nothing if the CSS file is missing."""
eq_(self._render('en-US'), '')
eq_(self._render('fr'), '')
@override_settings(DEV=False)
@override_settings(MEDIA_URL=media_url_prod)
def test_prod_when_css_file_exists(self):
"""Should output a path to the CSS file if exists."""
eq_(self._render('de'), self.markup % (self.media_url_prod, 'de'))
eq_(self._render('es-ES'), self.markup % (self.media_url_prod, 'es-ES'))
@override_settings(DEV=False)
@override_settings(MEDIA_URL=media_url_prod)
def test_prod_when_css_file_missing(self):
"""Should output nothing if the CSS file is missing."""
eq_(self._render('en-US'), '')
eq_(self._render('fr'), '')
class TestVideoTag(TestCase):

Просмотреть файл

@ -129,6 +129,10 @@ CSS Style
See the `Mozilla CSS Style Guide
<http://mozweb.readthedocs.org/en/latest/css-style.html>`_.
Use the ``.open-sans``, ``.open-sans-light`` and ``.open-sans-extrabold`` mixins
to specify font families to allow using international fonts. See the :ref:
`CSS<l10n>` section in the l10n doc for details.
Configuring your code editor
----------------------------

Просмотреть файл

@ -318,3 +318,91 @@ You can specify a list of locales to update:
$ ./manage.py l10n_check fr
$ ./manage.py l10n_check fr de es
CSS
---
If a localized page needs some locale-specific style tweaks, you can add the
style rules to the page's stylesheet like this:
html[lang="it"] {
#features li {
font-size: 20px;
}
}
html[dir="rtl"] {
#features {
float: right;
}
}
If a locale needs site-wide style tweaks, font settings in particular, you can
add the rules to ``/media/css/l10n/{{LANG}}/intl.css``. Pages on Bedrock
automatically includes the CSS in the base templates with the `l10n_css` helper
function. The CSS may also be loaded directly from other Mozilla sites with such
a URL: ``//mozorg.cdn.mozilla.net/media/css/l10n/{{LANG}}/intl.css``.
*Open Sans*, the default font on mozilla.org, doesn't offer non-Latin glyphs.
``intl.css`` can have ``@font-face`` rules to define locale-specific fonts using
custom font families as below:
* *X-LocaleSpecific-Light*: Used in combination with *Open Sans Light*. The font
can come in 2 weights: normal and optionally bold
* *X-LocaleSpecific*: Used in combination with *Open Sans Regular*. The font can
come in 2 weights: normal and optionally bold
* *X-LocaleSpecific-Extrabold*: Used in combination with *Open Sans Extrabold*.
The font weight is 800 only
Here's an example of ``intl.css``:
@font-face {
font-family: X-LocaleSpecific-Light;
font-weight: normal;
src: local(mplus-2p-light), local(Meiryo);
}
@font-face {
font-family: X-LocaleSpecific-Light;
font-weight: bold;
src: local(mplus-2p-medium), local(Meiryo-Bold);
}
@font-face {
font-family: X-LocaleSpecific;
font-weight: normal;
src: local(mplus-2p-regular), local(Meiryo);
}
@font-face {
font-family: X-LocaleSpecific;
font-weight: bold;
src: local(mplus-2p-bold), local(Meiryo-Bold);
}
@font-face {
font-family: X-LocaleSpecific-Extrabold;
font-weight: 800;
src: local(mplus-2p-black), local(Meiryo-Bold);
}
Localizers can specify locale-specific fonts in one of the following ways:
* Choose best-looking fonts widely used on major platforms, and specify those
with the ``src: local(name)`` syntax
* Find a best-looking free Web font, add the font files to ``/media/fonts/``,
and specify those with the ``src: url(path)`` syntax
* Create a custom Web font to complement missing glyphs in *Open Sans*, add the
font files to ``/media/fonts/``, and specify those with the ``src: url(path)``
syntax. The `M+ font family
<http://mplus-fonts.sourceforge.jp/mplus-outline-fonts/index-en.html>`_ offers
various international glyphs and looks similar to *Open Sans*. You can create a
subset of the *M+ 2c* font using a tool found on the Web. See `Bug 776967
<https://bugzilla.mozilla.org/show_bug.cgi?id=776967>`_ for the Fulah (ff)
locale's example.
Developers should use the ``.open-sans`` mixin instead of ``font-family: 'Open
Sans'`` to specify the default font family in CSS. This mixin has both *Open
Sans* and *X-LocaleSpecific* so locale-specific fonts, if defined, will be
applied to localized pages. The variant mixins, ``.open-sans-light`` and
``.open-sans-extrabold``, are also available.

Просмотреть файл

@ -32,7 +32,7 @@
background: radial-gradient(ellipse at center, rgba(234,239,242,1) 0%,rgba(212,221,228,.5) 50%),
linear-gradient(to bottom, rgba(202,225,244,1) 0%,rgba(125,185,232,0) 100%);
.border-radius(10px);
font-family: 'Open Sans Light', sans-serif;
.open-sans-light;
text-align: center;
}

Просмотреть файл

@ -2,6 +2,8 @@
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
@import "../../sandstone/lib.less";
@baseLine: 20px;
@font-face {
@ -398,7 +400,7 @@ html[lang^="en"] {
right: 30px;
width: 220px;
min-height: 58px;
font-family: 'Open Sans';
.open-sans;
font-size: 13px;
color: #0095dd;
background: #fff url(data:image/png;base64,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) 10px 10px no-repeat;

Просмотреть файл

@ -293,7 +293,7 @@ html[lang^="en"] {
span {
display: block;
font-family: 'League Gothic', 'Open Sans', sans-serif;
font-family: 'League Gothic', @baseFontFamily;
text-transform: uppercase;
color: #5d7489;
}

Просмотреть файл

@ -269,7 +269,7 @@ section p, header p {
right: 28px;
a {
font-family: 'Open Sans Light', sans-serif;
.open-sans-light;
font-size: 16px;
font-weight: normal;
}

Просмотреть файл

@ -7,12 +7,12 @@
@import "../../firefox/mwc-2014-map.less";
@font-face {
font-family: 'Open Sans ExtraBoldItalic';
font-family: 'Open Sans Extrabold';
src: url('/media/fonts/OpenSans-ExtraBoldItalic-webfont.eot?#iefix-2013') format('embedded-opentype'),
url('/media/fonts/OpenSans-ExtraBoldItalic-webfont.woff') format('woff'),
url('/media/fonts/OpenSans-ExtraBoldItalic-webfont.ttf') format('truetype');
font-weight: normal;
font-style: normal;
font-weight: 800;
font-style: italic;
}
/* {{{ Template overrides */
@ -82,10 +82,10 @@ html, body {
h1 {
color: #fff;
text-shadow: none;
font-family: 'Open Sans ExtraBoldItalic';
.open-sans-extrabold;
font-style: italic;
font-size: 78px;
letter-spacing: -3px;
font-weight: normal;
text-transform: uppercase;
margin-bottom: 8px;
}

Просмотреть файл

@ -5,12 +5,12 @@
@import "../sandstone/lib.less";
@font-face {
font-family: 'Open Sans ExtraBoldItalic';
font-family: 'Open Sans Extrabold';
src: url('/media/fonts/OpenSans-ExtraBoldItalic-webfont.eot?#iefix-2013') format('embedded-opentype'),
url('/media/fonts/OpenSans-ExtraBoldItalic-webfont.woff') format('woff'),
url('/media/fonts/OpenSans-ExtraBoldItalic-webfont.ttf') format('truetype');
font-weight: normal;
font-style: normal;
font-weight: 800;
font-style: italic;
}
@localBlue: #43a6e2;
@ -346,7 +346,8 @@
text-align: center;
margin-top: 20px;
font-size: 28px;
font-family: 'Open Sans ExtraBoldItalic';
.open-sans-extrabold;
font-style: italic;
text-transform: uppercase;
text-shadow: none;
}
@ -825,7 +826,7 @@
right: 0;
color: #fff;
font-family: 'Open Sans', sans-serif;
.open-sans;
font-size: 16px;
padding: 5px 28px 5px 5px;
cursor: pointer;

Просмотреть файл

@ -1163,20 +1163,3 @@ html[lang='pt-BR'] .sus-links ul a.sus-faq {
html[lang='sv-SE'] .sus-links ul a.sus-faq {
font-size: 17px;
}
/* No Italic in Chinese */
html[lang='zh-CN'] body h2,
html[lang='zh-CN'] body h3,
html[lang='zh-CN'] body aside.pull,
html[lang='zh-CN'] body p.pull,
html[lang='zh-CN'] body .sus-links ul small,
html[lang='zh-CN'] body p em,
html[lang='zh-TW'] body h2,
html[lang='zh-TW'] body h3,
html[lang='zh-TW'] body aside.pull,
html[lang='zh-TW'] body p.pull,
html[lang='zh-TW'] body .sus-links ul small,
html[lang='zh-TW'] body p em {
font-style: normal ;
}

Просмотреть файл

@ -186,7 +186,7 @@
h5 {
font-weight: bold;
font-family: 'Open Sans','Droid Arabic Naskh','Mplus Fulah Light',sans-serif;
.open-sans;
margin: 1em 0 1em 0;
font-size: 14px;
color: #333;
@ -199,7 +199,7 @@
text-decoration: underline;
display: inline;
color: #333;
font-family: 'Open Sans','Droid Arabic Naskh','Mplus Fulah Light',sans-serif;
.open-sans;
}
.section-header + p:not(.new-line-opening-p) {

Просмотреть файл

@ -0,0 +1,23 @@
/* Bug 958321 */
@font-face {
font-family: X-LocaleSpecific;
font-weight: normal;
src: url('/media/fonts/l10n/DroidNaskh-Regular.eot?#iefix') format('embedded-opentype'),
url('/media/fonts/l10n/DroidNaskh-Regular.woff') format('woff'),
url('/media/fonts/l10n/DroidNaskh-Regular.ttf') format('truetype');
}
@font-face {
font-family: X-LocaleSpecific;
font-weight: bold;
src: url('/media/fonts/l10n/DroidNaskh-Bold.eot?#iefix') format('embedded-opentype'),
url('/media/fonts/l10n/DroidNaskh-Bold.woff') format('woff'),
url('/media/fonts/l10n/DroidNaskh-Bold.ttf') format('truetype');
}
/* Bug 944269 */
* {
letter-spacing: normal !important;
}

Просмотреть файл

@ -0,0 +1,5 @@
/* Bug 944269 */
* {
letter-spacing: normal !important;
}

Просмотреть файл

@ -0,0 +1,23 @@
/* Bug 958321 */
@font-face {
font-family: X-LocaleSpecific;
font-weight: normal;
src: url('/media/fonts/l10n/DroidNaskh-Regular.eot?#iefix') format('embedded-opentype'),
url('/media/fonts/l10n/DroidNaskh-Regular.woff') format('woff'),
url('/media/fonts/l10n/DroidNaskh-Regular.ttf') format('truetype');
}
@font-face {
font-family: X-LocaleSpecific;
font-weight: bold;
src: url('/media/fonts/l10n/DroidNaskh-Bold.eot?#iefix') format('embedded-opentype'),
url('/media/fonts/l10n/DroidNaskh-Bold.woff') format('woff'),
url('/media/fonts/l10n/DroidNaskh-Bold.ttf') format('truetype');
}
/* Bug 944269 */
* {
letter-spacing: normal !important;
}

Просмотреть файл

@ -0,0 +1,17 @@
/* Bug 776967 */
@font-face {
font-family: X-LocaleSpecific-Light;
font-weight: normal;
src: url('/media/fonts/l10n/mplus-2c-light-fulah-subset.eot?#iefix') format('embedded-opentype'),
url('/media/fonts/l10n/mplus-2c-light-fulah-subset.woff') format('woff'),
url('/media/fonts/l10n/mplus-2c-light-fulah-subset.ttf') format('truetype');
}
@font-face {
font-family: X-LocaleSpecific;
font-weight: normal;
src: url('/media/fonts/l10n/mplus-2c-regular-fulah-subset.eot?#iefix') format('embedded-opentype'),
url('/media/fonts/l10n/mplus-2c-regular-fulah-subset.woff') format('woff'),
url('/media/fonts/l10n/mplus-2c-regular-fulah-subset.ttf') format('truetype');
}

Просмотреть файл

@ -0,0 +1,5 @@
/* Bug 944269 */
* {
letter-spacing: normal !important;
}

Просмотреть файл

@ -0,0 +1,5 @@
/* Bug 973171 */
* {
font-style: normal !important;
}

Просмотреть файл

@ -0,0 +1,5 @@
/* Bug 973171 */
* {
font-style: normal !important;
}

Просмотреть файл

@ -0,0 +1,5 @@
/* Bug 973171 */
* {
font-style: normal !important;
}

Просмотреть файл

@ -0,0 +1,5 @@
/* Bug 973171 */
* {
font-style: normal !important;
}

Просмотреть файл

@ -90,8 +90,7 @@
margin-bottom: @baseLine / 6;
a:after {
content: " »";
font-family: 'Open Sans Light',sans-serif;
font-weight: 300;
.open-sans-light;
}
}

Просмотреть файл

@ -64,7 +64,7 @@
p {
font-size: 150%;
font-family: 'Open Sans Light', sans-serif;
.open-sans-light;
}
}
@ -108,7 +108,7 @@
h2 {
font-size: 150%;
font-family: 'Open Sans Light', sans-serif;
.open-sans-light;
font-weight: bold;
letter-spacing: 0;
text-transform: uppercase;

Просмотреть файл

@ -262,7 +262,10 @@
.message {
color: #fff;
font: italic 24px/1.15 'Open Sans Light', sans-serif;
.open-sans-light;
font-size: 24px;
line-height: 1.15;
font-style: italic;
letter-spacing: -.025px;
text-shadow: 0 1px 1px rgba(0,0,0,.1);
}

Просмотреть файл

@ -72,8 +72,7 @@ ul.links {
margin-bottom: @baseLine / 6;
a:after {
content: " »";
font-family: 'Open Sans Light',sans-serif;
font-weight: 300;
.open-sans-light;
}
}

Просмотреть файл

@ -56,8 +56,7 @@ ul.links {
margin: (@baseLine/2) 5px;
a:after {
content: " »";
font-family: 'Open Sans Light',sans-serif;
font-weight: 300;
.open-sans-light;
}
}
}

Просмотреть файл

@ -13,7 +13,7 @@
h1, h2 {
padding: 0;
margin: 0;
font-family: 'Open Sans Light', sans-serif;
.open-sans-light;
font-weight: normal;
color: #484848;
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.75);
@ -94,7 +94,7 @@
.download-other {
color: #bbb;
display: block;
font-family: 'Open Sans', sans-serif;
.open-sans;
font-size: 11px;
text-align: center;
}

Просмотреть файл

@ -9,7 +9,7 @@
font-size: 24px;
letter-spacing: -0.25px;
margin-bottom: 0;
font-family: 'Open Sans Light', sans-serif;
.open-sans-light;
font-weight: normal;
margin-bottom:0;
line-height: 100%;
@ -58,7 +58,7 @@
tbody th {
font-size: 18px;
font-weight: normal;
font-family: 'Open Sans Light',sans-serif;
.open-sans-light;
}
}
}

Просмотреть файл

@ -59,8 +59,7 @@
margin-bottom: @baseLine / 6;
a:after {
content: " »";
font-family: 'Open Sans Light',sans-serif;
font-weight: 300;
.open-sans-light;
}
}
p {

Просмотреть файл

@ -55,3 +55,28 @@
font-weight: normal;
font-style: italic;
}
/*
* The list above should be minimized to reduce the number of downloaded fonts.
* If you'd like to use one of the following font faces on a specific page, just
* copy it to the LESS file of that page:
@font-face {
font-family: 'Open Sans';
src: url('/media/fonts/OpenSans-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'),
url('/media/fonts/OpenSans-BoldItalic-webfont.woff') format('woff'),
url('/media/fonts/OpenSans-BoldItalic-webfont.ttf') format('truetype');
font-weight: bold;
font-style: italic;
}
@font-face {
font-family: 'Open Sans Extrabold';
src: url('/media/fonts/OpenSans-ExtraBoldItalic-webfont.eot?#iefix-2013') format('embedded-opentype'),
url('/media/fonts/OpenSans-ExtraBoldItalic-webfont.woff') format('woff'),
url('/media/fonts/OpenSans-ExtraBoldItalic-webfont.ttf') format('truetype');
font-weight: 800;
font-style: italic;
}
*/

Просмотреть файл

@ -1,7 +1,11 @@
// Fonts and color
// The custom X-LocaleSpecific font family is defined with a @font-face rule in
// locale-specific stylesheets which can be found at /media/css/l10n/. See
// /docs/l10n.rst for details.
@baseFontFamily: 'Open Sans', X-LocaleSpecific, sans-serif;
@baseFontSize: 14px;
@baseFontFamily: 'Open Sans', 'Droid Arabic Naskh', 'Mplus Fulah', sans-serif;
@baseLine: 20px;
@smallFontSize: 12px;
@largeFontSize: 16px;
@ -27,14 +31,19 @@
@buttonBlueDark: #277ac1;
.open-sans() {
font-family: 'Open Sans', 'Droid Arabic Naskh', 'Mplus Fulah', sans-serif;
font-family: @baseFontFamily;
}
.open-sans-light() {
font-family: 'Open Sans Light', 'Droid Arabic Naskh', 'Mplus Fulah Light', sans-serif;
font-family: 'Open Sans Light', X-LocaleSpecific-Light, @baseFontFamily;
font-weight: normal;
}
.open-sans-extrabold() {
font-family: 'Open Sans Extrabold', X-LocaleSpecific-Extrabold, @baseFontFamily;
font-weight: 800;
}
// Button shadows
@shadowPartBottom: 0px 1px 0px 0px rgba(0, 0, 0, 0.2);

Просмотреть файл

@ -7,22 +7,6 @@
html { background: #fff; }
// Locales with jointed scripts should always have normal letter-spacing
html[lang='ar'] *,
html[lang='fa'] *,
html[lang='hi-IN'] *,
html[lang='bn-IN'] * {
letter-spacing: normal !important;
}
// No italic for CJKT locales (Bug 973171)
html[lang='ja'] *,
html[lang='ko'] *,
html[lang|='zh'] * {
font-style: normal !important;
}
body {
font-size: @baseFontSize;
line-height: 1.5;

Просмотреть файл

@ -8,21 +8,6 @@
html { background: #fff; }
// Locales with jointed scripts should always have normal letter-spacing
html[lang='ar'] *,
html[lang='fa'] *,
html[lang='hi-IN'] *,
html[lang='bn-IN'] * {
letter-spacing: normal !important;
}
// No italic for CJKT locales (Bug 973171)
html[lang='ja'] *,
html[lang='ko'] *,
html[lang|='zh'] * {
font-style: normal !important;
}
body {
font-size: @baseFontSize;
line-height: @baseLine;

Просмотреть файл

@ -40,8 +40,12 @@
@borderColor: #d6d6d6;
// The custom X-LocaleSpecific font family is defined with a @font-face rule in
// locale-specific stylesheets which can be found at /media/css/l10n/. See
// /docs/l10n.rst for details.
@baseFontFamily: 'Open Sans', X-LocaleSpecific, sans-serif;
@baseFontSize: 14px;
@baseFontFamily: 'Open Sans', sans-serif;
@baseLine: 20px;
@smallFontSize: 12px;
@ -52,15 +56,20 @@
@gridRowWidth: (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1));
.open-sans {
font-family: 'Open Sans', sans-serif;
.open-sans() {
font-family: @baseFontFamily;
}
.open-sans-light {
font-family: 'Open Sans Light', sans-serif;
.open-sans-light() {
font-family: 'Open Sans Light', X-LocaleSpecific-Light, @baseFontFamily;
font-weight: normal;
}
.open-sans-extrabold() {
font-family: 'Open Sans Extrabold', X-LocaleSpecific-Extrabold, @baseFontFamily;
font-weight: 800;
}
.clearfix {
zoom: 1;
&:after {

Просмотреть файл

@ -359,22 +359,21 @@
margin-bottom: 60px;
}
p.opensans-extra-bold {
font-family: 'Open Sans ExtraBold';
.open-sans-extrabold;
font-style: italic;
}
p.opensans-bold-italic {
font-family: "Open Sans";
font-weight: 600;
font-style: italic;
.open-sans;
font-weight: bold;
font-style: italic;
}
p.opensans-italic {
font-family: "Open Sans";
font-weight: normal;
font-style: italic;
.open-sans;
font-style: italic;
}
p.opensans-light-italic {
font-family: "Open Sans Light";
font-weight: normal;
font-style: italic;
.open-sans-light;
font-style: italic;
}
}
}
@ -405,14 +404,15 @@
margin-bottom: 60px;
}
p#approved-headlines {
font-family: 'Open Sans ExtraBold';
.open-sans-extrabold;
font-style: italic;
font-size: 60px;
line-height: 90%;
color: #0095dd;
text-transform: uppercase;
}
p#headlines {
font-family: "Open Sans Light";
.open-sans-light;
font-size: 60px;
line-height: 90%;
color: #0095dd;

Просмотреть файл

@ -47,7 +47,7 @@
}
.top-figcaption {
font-family: 'Open Sans Light';
.open-sans-light;
font-size: 16px;
color: #eee;
}

Просмотреть файл

@ -2,29 +2,9 @@
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
@import "../sandstone/fonts.less";
@import "../sandstone/lib.less";
@font-face {
font-family: 'Open Sans Light';
src: url('/media/fonts/OpenSans-LightItalic-webfont.eot');
src: url('/media/fonts/OpenSans-LightItalic-webfont.eot?#iefix') format('embedded-opentype'),
url('/media/fonts/OpenSans-LightItalic-webfont.woff') format('woff'),
url('/media/fonts/OpenSans-LightItalic-webfont.ttf') format('truetype'),
url('/media/fonts/OpenSans-LightItalic-webfont.svg#OpenSansLightItalic') format('svg');
font-weight: normal;
font-style: italic;
}
@font-face {
font-family: 'Open Sans';
src: url('/media/fonts/OpenSans-Bold-webfont.eot');
src: url('/media/fonts/OpenSans-Bold-webfont.eot?#iefix') format('embedded-opentype'),
url('/media/fonts/OpenSans-Bold-webfont.woff') format('woff'),
url('/media/fonts/OpenSans-Bold-webfont.ttf') format('truetype'),
url('/media/fonts/OpenSans-Bold-webfont.svg#OpenSansBold') format('svg');
font-weight: 600;
}
@font-face {
font-family: 'Open Sans';
src: url('/media/fonts/OpenSans-BoldItalic-webfont.eot');
@ -32,17 +12,19 @@
url('/media/fonts/OpenSans-BoldItalic-webfont.woff') format('woff'),
url('/media/fonts/OpenSans-BoldItalic-webfont.ttf') format('truetype'),
url('/media/fonts/OpenSans-BoldItalic-webfont.svg#OpenSansBoldItalic') format('svg');
font-weight: 600;
font-weight: bold;
font-style: italic;
}
@font-face {
font-family: 'Open Sans ExtraBold';
font-family: 'Open Sans Extrabold';
src: url('/media/fonts/OpenSans-ExtraBoldItalic-webfont.eot');
src: url('/media/fonts/OpenSans-ExtraBoldItalic-webfont.eot?#iefix') format('embedded-opentype'),
url('/media/fonts/OpenSans-ExtraBoldItalic-webfont.woff') format('woff'),
url('/media/fonts/OpenSans-ExtraBoldItalic-webfont.ttf') format('truetype'),
url('/media/fonts/OpenSans-ExtraBoldItalic-webfont.svg#OpenSansLightItalic') format('svg');
font-weight: 800;
font-style: italic;
}
@darkThemeText: #9a9ea1;
@ -180,7 +162,7 @@ a[href="#TODO"] { color: #f00 !important; }
}
&.path > a {
.open-sans;
font-weight: 600;
font-weight: bold;
letter-spacing: -0.02em;
color: @textColorSecondary;
}

Просмотреть файл

@ -3,19 +3,21 @@
// IE does not like file-relative (e.g. '../fonts/*') URLs due to our
// redirects. Always use domain-relative urls like the font URLs below.
@import "../sandstone/lib.less";
// Fonts
// Open Sans Extra Bold Italic for Firefox OS promo
@font-face {
font-family: 'Open Sans ExtraBoldItalic';
font-family: 'Open Sans Extrabold';
src: url('/media/fonts/OpenSans-ExtraBoldItalic-webfont.eot');
src: url('/media/fonts/OpenSans-ExtraBoldItalic-webfont.eot?#iefix') format('embedded-opentype'),
url('/media/fonts/OpenSans-ExtraBoldItalic-webfont.woff') format('woff'),
url('/media/fonts/OpenSans-ExtraBoldItalic-webfont.ttf') format('truetype'),
url('/media/fonts/OpenSans-ExtraBoldItalic-webfont.svg#OpenSansExtraBoldItalic') format('svg');
font-weight: normal;
font-style: normal;
font-weight: 800;
font-style: italic;
}
@font-face {
@ -103,7 +105,7 @@ html[dir='rtl'] #tabzilla {
#tabzilla-panel {
height: 0;
background: #fff;
font-family: 'Open Sans', sans-serif;
.open-sans;
font-style: normal;
font-weight: normal;
line-height: 1.3;
@ -178,7 +180,7 @@ html[dir='rtl'] #tabzilla {
#tabzilla-panel #tabzilla-nav h2 {
margin: 0;
padding: 0;
font-family: 'Open Sans', sans-serif;
.open-sans;
color: #484848;
font-style: normal;
font-weight: normal;
@ -413,10 +415,10 @@ html[dir='rtl'] #tabzilla {
h4 {
text-shadow: none;
color: #fff;
font-family: Open Sans ExtraBoldItalic;
.open-sans-extrabold;
font-style: italic;
text-transform: uppercase;
letter-spacing: -.1ex;
font-weight: normal;
font-size: 40px;
line-height: 1;
margin-bottom: 10px;

Просмотреть файл

Просмотреть файл

Просмотреть файл