// JavaScript Document // this is used for any GLOBAL javascript. In most cases, things should NOT be added here. function unsetNoJavascript () { // remove default state if we have JS: $('body').removeClass('noJavascript'); } /*! * Copyright (c) 2009 Simo Kinnunen. * Licensed under the MIT license. * * @version ${Version} */ var Cufon = (function() { var api = function() { return api.replace.apply(null, arguments); }; var DOM = api.DOM = { ready: (function() { var complete = false, readyStatus = { loaded: 1, complete: 1 }; var queue = [], perform = function() { if (complete) return; complete = true; for (var fn; fn = queue.shift(); fn()); }; // Gecko, Opera, WebKit r26101+ if (document.addEventListener) { document.addEventListener('DOMContentLoaded', perform, false); window.addEventListener('pageshow', perform, false); // For cached Gecko pages } // Old WebKit, Internet Explorer if (!window.opera && document.readyState) (function() { readyStatus[document.readyState] ? perform() : setTimeout(arguments.callee, 10); })(); // Internet Explorer if (document.readyState && document.createStyleSheet) (function() { try { document.body.doScroll('left'); perform(); } catch (e) { setTimeout(arguments.callee, 1); } })(); addEvent(window, 'load', perform); // Fallback return function(listener) { if (!arguments.length) perform(); else complete ? listener() : queue.push(listener); }; })(), root: function() { return document.documentElement || document.body; } }; var CSS = api.CSS = { Size: function(value, base) { this.value = parseFloat(value); this.unit = String(value).match(/[a-z%]*$/)[0] || 'px'; this.convert = function(value) { return value / base * this.value; }; this.convertFrom = function(value) { return value / this.value * base; }; this.toString = function() { return this.value + this.unit; }; }, addClass: function(el, className) { var current = el.className; el.className = current + (current && ' ') + className; return el; }, color: cached(function(value) { var parsed = {}; parsed.color = value.replace(/^rgba\((.*?),\s*([\d.]+)\)/, function($0, $1, $2) { parsed.opacity = parseFloat($2); return 'rgb(' + $1 + ')'; }); return parsed; }), // has no direct CSS equivalent. // @see http://msdn.microsoft.com/en-us/library/system.windows.fontstretches.aspx fontStretch: cached(function(value) { if (typeof value == 'number') return value; if (/%$/.test(value)) return parseFloat(value) / 100; return { 'ultra-condensed': 0.5, 'extra-condensed': 0.625, condensed: 0.75, 'semi-condensed': 0.875, 'semi-expanded': 1.125, expanded: 1.25, 'extra-expanded': 1.5, 'ultra-expanded': 2 }[value] || 1; }), getStyle: function(el) { var view = document.defaultView; if (view && view.getComputedStyle) return new Style(view.getComputedStyle(el, null)); if (el.currentStyle) return new Style(el.currentStyle); return new Style(el.style); }, gradient: cached(function(value) { var gradient = { id: value, type: value.match(/^-([a-z]+)-gradient\(/)[1], stops: [] }, colors = value.substr(value.indexOf('(')).match(/([\d.]+=)?(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)/ig); for (var i = 0, l = colors.length, stop; i < l; ++i) { stop = colors[i].split('=', 2).reverse(); gradient.stops.push([ stop[1] || i / (l - 1), stop[0] ]); } return gradient; }), quotedList: cached(function(value) { // doesn't work properly with empty quoted strings (""), but // it's not worth the extra code. var list = [], re = /\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g, match; while (match = re.exec(value)) list.push(match[3] || match[1]); return list; }), recognizesMedia: cached(function(media) { var el = document.createElement('style'), sheet, container, supported; el.type = 'text/css'; el.media = media; try { // this is cached anyway el.appendChild(document.createTextNode('/**/')); } catch (e) {} container = elementsByTagName('head')[0]; container.insertBefore(el, container.firstChild); sheet = (el.sheet || el.styleSheet); supported = sheet && !sheet.disabled; container.removeChild(el); return supported; }), removeClass: function(el, className) { var re = RegExp('(?:^|\\s+)' + className + '(?=\\s|$)', 'g'); el.className = el.className.replace(re, ''); return el; }, supports: function(property, value) { var checker = document.createElement('span').style; if (checker[property] === undefined) return false; checker[property] = value; return checker[property] === value; }, textAlign: function(word, style, position, wordCount) { if (style.get('textAlign') == 'right') { if (position > 0) word = ' ' + word; } else if (position < wordCount - 1) word += ' '; return word; }, textShadow: cached(function(value) { if (value == 'none') return null; var shadows = [], currentShadow = {}, result, offCount = 0; var re = /(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)|(-?[\d.]+[a-z%]*)|,/ig; while (result = re.exec(value)) { if (result[0] == ',') { shadows.push(currentShadow); currentShadow = {}; offCount = 0; } else if (result[1]) { currentShadow.color = result[1]; } else { currentShadow[[ 'offX', 'offY', 'blur' ][offCount++]] = result[2]; } } shadows.push(currentShadow); return shadows; }), textTransform: (function() { var map = { uppercase: function(s) { return s.toUpperCase(); }, lowercase: function(s) { return s.toLowerCase(); }, capitalize: function(s) { return s.replace(/\b./g, function($0) { return $0.toUpperCase(); }); } }; return function(text, style) { var transform = map[style.get('textTransform')]; return transform ? transform(text) : text; }; })(), whiteSpace: (function() { var ignore = { inline: 1, 'inline-block': 1, 'run-in': 1 }; var wsStart = /^\s+/, wsEnd = /\s+$/; return function(text, style, node, previousElement) { if (previousElement) { if (previousElement.nodeName.toLowerCase() == 'br') { text = text.replace(wsStart, ''); } } if (ignore[style.get('display')]) return text; if (!node.previousSibling) text = text.replace(wsStart, ''); if (!node.nextSibling) text = text.replace(wsEnd, ''); return text; }; })() }; CSS.ready = (function() { // don't do anything in Safari 2 (it doesn't recognize any media type) var complete = !CSS.recognizesMedia('all'), hasLayout = false; var queue = [], perform = function() { complete = true; for (var fn; fn = queue.shift(); fn()); }; var links = elementsByTagName('link'), styles = elementsByTagName('style'); function isContainerReady(el) { return el.disabled || isSheetReady(el.sheet, el.media || 'screen'); } function isSheetReady(sheet, media) { // in Opera sheet.disabled is true when it's still loading, // even though link.disabled is false. they stay in sync if // set manually. if (!CSS.recognizesMedia(media || 'all')) return true; if (!sheet || sheet.disabled) return false; try { var rules = sheet.cssRules, rule; if (rules) { // needed for Safari 3 and Chrome 1.0. // in standards-conforming browsers cssRules contains @-rules. // Chrome 1.0 weirdness: rules[] // returns the last rule, so a for loop is the only option. search: for (var i = 0, l = rules.length; rule = rules[i], i < l; ++i) { switch (rule.type) { case 2: // @charset break; case 3: // @import if (!isSheetReady(rule.styleSheet, rule.media.mediaText)) return false; break; default: // only @charset can precede @import break search; } } } } catch (e) {} // probably a style sheet from another domain return true; } function allStylesLoaded() { // Internet Explorer's style sheet model, there's no need to do anything if (document.createStyleSheet) return true; // standards-compliant browsers var el, i; for (i = 0; el = links[i]; ++i) { if (el.rel.toLowerCase() == 'stylesheet' && !isContainerReady(el)) return false; } for (i = 0; el = styles[i]; ++i) { if (!isContainerReady(el)) return false; } return true; } DOM.ready(function() { // getComputedStyle returns null in Gecko if used in an iframe with display: none if (!hasLayout) hasLayout = CSS.getStyle(document.body).isUsable(); if (complete || (hasLayout && allStylesLoaded())) perform(); else setTimeout(arguments.callee, 10); }); return function(listener) { if (complete) listener(); else queue.push(listener); }; })(); function Font(data) { var face = this.face = data.face, wordSeparators = { '\u0020': 1, '\u00a0': 1, '\u3000': 1 }; this.glyphs = data.glyphs; this.w = data.w; this.baseSize = parseInt(face['units-per-em'], 10); this.family = face['font-family'].toLowerCase(); this.weight = face['font-weight']; this.style = face['font-style'] || 'normal'; this.viewBox = (function () { var parts = face.bbox.split(/\s+/); var box = { minX: parseInt(parts[0], 10), minY: parseInt(parts[1], 10), maxX: parseInt(parts[2], 10), maxY: parseInt(parts[3], 10) }; box.width = box.maxX - box.minX; box.height = box.maxY - box.minY; box.toString = function() { return [ this.minX, this.minY, this.width, this.height ].join(' '); }; return box; })(); this.ascent = -parseInt(face.ascent, 10); this.descent = -parseInt(face.descent, 10); this.height = -this.ascent + this.descent; this.spacing = function(chars, letterSpacing, wordSpacing) { var glyphs = this.glyphs, glyph, kerning, k, jumps = [], width = 0, w, i = -1, j = -1, chr; while (chr = chars[++i]) { glyph = glyphs[chr] || this.missingGlyph; if (!glyph) continue; if (kerning) { width -= k = kerning[chr] || 0; jumps[j] -= k; } w = glyph.w; if (isNaN(w)) w = +this.w; // may have been a String in old fonts w += letterSpacing; if (wordSeparators[chr]) w += wordSpacing; width += jumps[++j] = ~~w; // get rid of decimals kerning = glyph.k; } jumps.total = width; return jumps; }; } function FontFamily() { var styles = {}, mapping = { oblique: 'italic', italic: 'oblique' }; this.add = function(font) { (styles[font.style] || (styles[font.style] = {}))[font.weight] = font; }; this.get = function(style, weight) { var weights = styles[style] || styles[mapping[style]] || styles.normal || styles.italic || styles.oblique; if (!weights) return null; // we don't have to worry about "bolder" and "lighter" // because IE's currentStyle returns a numeric value for it, // and other browsers use the computed value anyway weight = { normal: 400, bold: 700 }[weight] || parseInt(weight, 10); if (weights[weight]) return weights[weight]; // http://www.w3.org/TR/CSS21/fonts.html#propdef-font-weight // Gecko uses x99/x01 for lighter/bolder var up = { 1: 1, 99: 0 }[weight % 100], alts = [], min, max; if (up === undefined) up = weight > 400; if (weight == 500) weight = 400; for (var alt in weights) { if (!hasOwnProperty(weights, alt)) continue; alt = parseInt(alt, 10); if (!min || alt < min) min = alt; if (!max || alt > max) max = alt; alts.push(alt); } if (weight < min) weight = min; if (weight > max) weight = max; alts.sort(function(a, b) { return (up ? (a >= weight && b >= weight) ? a < b : a > b : (a <= weight && b <= weight) ? a > b : a < b) ? -1 : 1; }); return weights[alts[0]]; }; } function HoverHandler() { function contains(node, anotherNode) { if (node.contains) return node.contains(anotherNode); return node.compareDocumentPosition(anotherNode) & 16; } function onOverOut(e) { var related = e.relatedTarget; if (!related || contains(this, related)) return; trigger(this, e.type == 'mouseover'); } function onEnterLeave(e) { trigger(this, e.type == 'mouseenter'); } function trigger(el, hoverState) { // A timeout is needed so that the event can actually "happen" // before replace is triggered. This ensures that styles are up // to date. setTimeout(function() { var options = sharedStorage.get(el).options; api.replace(el, hoverState ? merge(options, options.hover) : options, true); }, 10); } this.attach = function(el) { if (el.onmouseenter === undefined) { addEvent(el, 'mouseover', onOverOut); addEvent(el, 'mouseout', onOverOut); } else { addEvent(el, 'mouseenter', onEnterLeave); addEvent(el, 'mouseleave', onEnterLeave); } }; } function ReplaceHistory() { var list = [], map = {}; function filter(keys) { var values = [], key; for (var i = 0; key = keys[i]; ++i) values[i] = list[map[key]]; return values; } this.add = function(key, args) { map[key] = list.push(args) - 1; }; this.repeat = function() { var snapshot = arguments.length ? filter(arguments) : list, args; for (var i = 0; args = snapshot[i++];) api.replace(args[0], args[1], true); }; } function Storage() { var map = {}, at = 0; function identify(el) { return el.cufid || (el.cufid = ++at); } this.get = function(el) { var id = identify(el); return map[id] || (map[id] = {}); }; } function Style(style) { var custom = {}, sizes = {}; this.extend = function(styles) { for (var property in styles) { if (hasOwnProperty(styles, property)) custom[property] = styles[property]; } return this; }; this.get = function(property) { return custom[property] != undefined ? custom[property] : style[property]; }; this.getSize = function(property, base) { return sizes[property] || (sizes[property] = new CSS.Size(this.get(property), base)); }; this.isUsable = function() { return !!style; }; } function addEvent(el, type, listener) { if (el.addEventListener) { el.addEventListener(type, listener, false); } else if (el.attachEvent) { el.attachEvent('on' + type, function() { return listener.call(el, window.event); }); } } function attach(el, options) { var storage = sharedStorage.get(el); if (storage.options) return el; if (options.hover && options.hoverables[el.nodeName.toLowerCase()]) { hoverHandler.attach(el); } storage.options = options; return el; } function cached(fun) { var cache = {}; return function(key) { if (!hasOwnProperty(cache, key)) cache[key] = fun.apply(null, arguments); return cache[key]; }; } function getFont(el, style) { var families = CSS.quotedList(style.get('fontFamily').toLowerCase()), family; for (var i = 0; family = families[i]; ++i) { if (fonts[family]) return fonts[family].get(style.get('fontStyle'), style.get('fontWeight')); } return null; } function elementsByTagName(query) { return document.getElementsByTagName(query); } function hasOwnProperty(obj, property) { return obj.hasOwnProperty(property); } function merge() { var merged = {}, arg, key; for (var i = 0, l = arguments.length; arg = arguments[i], i < l; ++i) { for (key in arg) { if (hasOwnProperty(arg, key)) merged[key] = arg[key]; } } return merged; } function process(font, text, style, options, node, el) { var fragment = document.createDocumentFragment(), processed; if (text === '') return fragment; var separate = options.separate; var parts = text.split(separators[separate]), needsAligning = (separate == 'words'); if (needsAligning && HAS_BROKEN_REGEXP) { // @todo figure out a better way to do this if (/^\s/.test(text)) parts.unshift(''); if (/\s$/.test(text)) parts.push(''); } for (var i = 0, l = parts.length; i < l; ++i) { processed = engines[options.engine](font, needsAligning ? CSS.textAlign(parts[i], style, i, l) : parts[i], style, options, node, el, i < l - 1); if (processed) fragment.appendChild(processed); } return fragment; } function replaceElement(el, options) { var name = el.nodeName.toLowerCase(); if (options.ignore[name]) return; var replace = !options.textless[name]; var style = CSS.getStyle(attach(el, options)).extend(options); var font = getFont(el, style), node, type, next, anchor, text, lastElement; if (!font) return; for (node = el.firstChild; node; node = next) { type = node.nodeType; next = node.nextSibling; if (replace && type == 3) { // Node.normalize() is broken in IE 6, 7, 8 if (anchor) { anchor.appendData(node.data); el.removeChild(node); } else anchor = node; if (next) continue; } if (anchor) { el.replaceChild(process(font, CSS.whiteSpace(anchor.data, style, anchor, lastElement), style, options, node, el), anchor); anchor = null; } if (type == 1) { if (node.firstChild) { if (node.nodeName.toLowerCase() == 'cufon') { engines[options.engine](font, null, style, options, node, el); } else arguments.callee(node, options); } lastElement = node; } } } var HAS_BROKEN_REGEXP = ' '.split(/\s+/).length == 0; var sharedStorage = new Storage(); var hoverHandler = new HoverHandler(); var replaceHistory = new ReplaceHistory(); var initialized = false; var engines = {}, fonts = {}, defaultOptions = { autoDetect: false, engine: null, //fontScale: 1, //fontScaling: false, forceHitArea: false, hover: false, hoverables: { a: true }, ignore: { applet: 1, canvas: 1, col: 1, colgroup: 1, head: 1, iframe: 1, map: 1, noscript: 1, optgroup: 1, option: 1, script: 1, select: 1, style: 1, textarea: 1, title: 1, pre: 1 }, printable: true, //rotation: 0, //selectable: false, selector: ( window.Sizzle || (window.jQuery && function(query) { return jQuery(query); }) // avoid noConflict issues || (window.dojo && dojo.query) || (window.Ext && Ext.query) || (window.YAHOO && YAHOO.util && YAHOO.util.Selector && YAHOO.util.Selector.query) || (window.$$ && function(query) { return $$(query); }) || (window.$ && function(query) { return $(query); }) || (document.querySelectorAll && function(query) { return document.querySelectorAll(query); }) || elementsByTagName ), separate: 'words', // 'none' and 'characters' are also accepted textless: { dl: 1, html: 1, ol: 1, table: 1, tbody: 1, thead: 1, tfoot: 1, tr: 1, ul: 1 }, textShadow: 'none' }; var separators = { // The first pattern may cause unicode characters above // code point 255 to be removed in Safari 3.0. Luckily enough // Safari 3.0 does not include non-breaking spaces in \s, so // we can just use a simple alternative pattern. words: /\s/.test('\u00a0') ? /[^\S\u00a0]+/ : /\s+/, characters: '', none: /^/ }; api.now = function() { DOM.ready(); return api; }; api.refresh = function() { replaceHistory.repeat.apply(replaceHistory, arguments); return api; }; api.registerEngine = function(id, engine) { if (!engine) return api; engines[id] = engine; return api.set('engine', id); }; api.registerFont = function(data) { if (!data) return api; var font = new Font(data), family = font.family; if (!fonts[family]) fonts[family] = new FontFamily(); fonts[family].add(font); return api.set('fontFamily', '"' + family + '"'); }; api.replace = function(elements, options, ignoreHistory) { options = merge(defaultOptions, options); if (!options.engine) return api; // there's no browser support so we'll just stop here if (!initialized) { CSS.addClass(DOM.root(), 'cufon-active cufon-loading'); CSS.ready(function() { // fires before any replace() calls, but it doesn't really matter CSS.addClass(CSS.removeClass(DOM.root(), 'cufon-loading'), 'cufon-ready'); }); initialized = true; } if (options.hover) options.forceHitArea = true; if (options.autoDetect) delete options.fontFamily; if (typeof options.textShadow == 'string') { options.textShadow = CSS.textShadow(options.textShadow); } if (typeof options.color == 'string' && /^-/.test(options.color)) { options.textGradient = CSS.gradient(options.color); } else delete options.textGradient; if (!ignoreHistory) replaceHistory.add(elements, arguments); if (elements.nodeType || typeof elements == 'string') elements = [ elements ]; CSS.ready(function() { for (var i = 0, l = elements.length; i < l; ++i) { var el = elements[i]; if (typeof el == 'string') api.replace(options.selector(el), options, true); else replaceElement(el, options); } }); return api; }; api.set = function(option, value) { defaultOptions[option] = value; return api; }; return api; })(); Cufon.registerEngine('canvas', (function() { // Safari 2 doesn't support .apply() on native methods var check = document.createElement('canvas'); if (!check || !check.getContext || !check.getContext.apply) return; check = null; var HAS_INLINE_BLOCK = Cufon.CSS.supports('display', 'inline-block'); // Firefox 2 w/ non-strict doctype (almost standards mode) var HAS_BROKEN_LINEHEIGHT = !HAS_INLINE_BLOCK && (document.compatMode == 'BackCompat' || /frameset|transitional/i.test(document.doctype.publicId)); var styleSheet = document.createElement('style'); styleSheet.type = 'text/css'; styleSheet.appendChild(document.createTextNode(( 'cufon{text-indent:0;}' + '@media screen,projection{' + 'cufon{display:inline;display:inline-block;position:relative;vertical-align:middle;' + (HAS_BROKEN_LINEHEIGHT ? '' : 'font-size:1px;line-height:1px;') + '}cufon cufontext{display:-moz-inline-box;display:inline-block;width:0;height:0;overflow:hidden;text-indent:-10000in;}' + (HAS_INLINE_BLOCK ? 'cufon canvas{position:relative;}' : 'cufon canvas{position:absolute;}') + '}' + '@media print{' + 'cufon{padding:0;}' + // Firefox 2 'cufon canvas{display:none;}' + '}' ).replace(/;/g, '!important;'))); document.getElementsByTagName('head')[0].appendChild(styleSheet); function generateFromVML(path, context) { var atX = 0, atY = 0; var code = [], re = /([mrvxe])([^a-z]*)/g, match; generate: for (var i = 0; match = re.exec(path); ++i) { var c = match[2].split(','); switch (match[1]) { case 'v': code[i] = { m: 'bezierCurveTo', a: [ atX + ~~c[0], atY + ~~c[1], atX + ~~c[2], atY + ~~c[3], atX += ~~c[4], atY += ~~c[5] ] }; break; case 'r': code[i] = { m: 'lineTo', a: [ atX += ~~c[0], atY += ~~c[1] ] }; break; case 'm': code[i] = { m: 'moveTo', a: [ atX = ~~c[0], atY = ~~c[1] ] }; break; case 'x': code[i] = { m: 'closePath' }; break; case 'e': break generate; } context[code[i].m].apply(context, code[i].a); } return code; } function interpret(code, context) { for (var i = 0, l = code.length; i < l; ++i) { var line = code[i]; context[line.m].apply(context, line.a); } } return function(font, text, style, options, node, el) { var redraw = (text === null); if (redraw) text = node.getAttribute('alt'); var viewBox = font.viewBox; var size = style.getSize('fontSize', font.baseSize); var expandTop = 0, expandRight = 0, expandBottom = 0, expandLeft = 0; var shadows = options.textShadow, shadowOffsets = []; if (shadows) { for (var i = shadows.length; i--;) { var shadow = shadows[i]; var x = size.convertFrom(parseFloat(shadow.offX)); var y = size.convertFrom(parseFloat(shadow.offY)); shadowOffsets[i] = [ x, y ]; if (y < expandTop) expandTop = y; if (x > expandRight) expandRight = x; if (y > expandBottom) expandBottom = y; if (x < expandLeft) expandLeft = x; } } var chars = Cufon.CSS.textTransform(text, style).split(''); var jumps = font.spacing(chars, ~~size.convertFrom(parseFloat(style.get('letterSpacing')) || 0), ~~size.convertFrom(parseFloat(style.get('wordSpacing')) || 0) ); if (!jumps.length) return null; // there's nothing to render var width = jumps.total; expandRight += viewBox.width - jumps[jumps.length - 1]; expandLeft += viewBox.minX; var wrapper, canvas; if (redraw) { wrapper = node; canvas = node.firstChild; } else { wrapper = document.createElement('cufon'); wrapper.className = 'cufon cufon-canvas'; wrapper.setAttribute('alt', text); canvas = document.createElement('canvas'); wrapper.appendChild(canvas); if (options.printable) { var print = document.createElement('cufontext'); print.appendChild(document.createTextNode(text)); wrapper.appendChild(print); } } var wStyle = wrapper.style; var cStyle = canvas.style; var height = size.convert(viewBox.height); var roundedHeight = Math.ceil(height); var roundingFactor = roundedHeight / height; var stretchFactor = roundingFactor * Cufon.CSS.fontStretch(style.get('fontStretch')); var stretchedWidth = width * stretchFactor; var canvasWidth = Math.ceil(size.convert(stretchedWidth + expandRight - expandLeft)); var canvasHeight = Math.ceil(size.convert(viewBox.height - expandTop + expandBottom)); canvas.width = canvasWidth; canvas.height = canvasHeight; // needed for WebKit and full page zoom cStyle.width = canvasWidth + 'px'; cStyle.height = canvasHeight + 'px'; // minY has no part in canvas.height expandTop += viewBox.minY; cStyle.top = Math.round(size.convert(expandTop - font.ascent)) + 'px'; cStyle.left = Math.round(size.convert(expandLeft)) + 'px'; var wrapperWidth = Math.max(Math.ceil(size.convert(stretchedWidth)), 0) + 'px'; if (HAS_INLINE_BLOCK) { wStyle.width = wrapperWidth; wStyle.height = size.convert(font.height) + 'px'; } else { wStyle.paddingLeft = wrapperWidth; wStyle.paddingBottom = (size.convert(font.height) - 1) + 'px'; } var g = canvas.getContext('2d'), scale = height / viewBox.height; // proper horizontal scaling is performed later g.scale(scale, scale * roundingFactor); g.translate(-expandLeft, -expandTop); g.save(); function renderText() { var glyphs = font.glyphs, glyph, i = -1, j = -1, chr; g.scale(stretchFactor, 1); while (chr = chars[++i]) { var glyph = glyphs[chars[i]] || font.missingGlyph; if (!glyph) continue; if (glyph.d) { g.beginPath(); if (glyph.code) interpret(glyph.code, g); else glyph.code = generateFromVML('m' + glyph.d, g); g.fill(); } g.translate(jumps[++j], 0); } g.restore(); } if (shadows) { for (var i = shadows.length; i--;) { var shadow = shadows[i]; g.save(); g.fillStyle = shadow.color; g.translate.apply(g, shadowOffsets[i]); renderText(); } } var gradient = options.textGradient; if (gradient) { var stops = gradient.stops, fill = g.createLinearGradient(0, viewBox.minY, 0, viewBox.maxY); for (var i = 0, l = stops.length; i < l; ++i) { fill.addColorStop.apply(fill, stops[i]); } g.fillStyle = fill; } else g.fillStyle = style.get('color'); renderText(); return wrapper; }; })()); Cufon.registerEngine('vml', (function() { var ns = document.namespaces; if (!ns) return; ns.add('cvml', 'urn:schemas-microsoft-com:vml'); ns = null; var check = document.createElement('cvml:shape'); check.style.behavior = 'url(#default#VML)'; if (!check.coordsize) return; // VML isn't supported check = null; var HAS_BROKEN_LINEHEIGHT = (document.documentMode || 0) < 8; document.write(('').replace(/;/g, '!important;')); function getFontSizeInPixels(el, value) { return getSizeInPixels(el, /(?:em|ex|%)$|^[a-z-]+$/i.test(value) ? '1em' : value); } // Original by Dead Edwards. // Combined with getFontSizeInPixels it also works with relative units. function getSizeInPixels(el, value) { if (value === '0') return 0; if (/px$/i.test(value)) return parseFloat(value); var style = el.style.left, runtimeStyle = el.runtimeStyle.left; el.runtimeStyle.left = el.currentStyle.left; el.style.left = value.replace('%', 'em'); var result = el.style.pixelLeft; el.style.left = style; el.runtimeStyle.left = runtimeStyle; return result; } function getSpacingValue(el, style, size, property) { var key = 'computed' + property, value = style[key]; if (isNaN(value)) { value = style.get(property); style[key] = value = (value == 'normal') ? 0 : ~~size.convertFrom(getSizeInPixels(el, value)); } return value; } var fills = {}; function gradientFill(gradient) { var id = gradient.id; if (!fills[id]) { var stops = gradient.stops, fill = document.createElement('cvml:fill'), colors = []; fill.type = 'gradient'; fill.angle = 180; fill.focus = '0'; fill.method = 'sigma'; fill.color = stops[0][1]; for (var j = 1, k = stops.length - 1; j < k; ++j) { colors.push(stops[j][0] * 100 + '% ' + stops[j][1]); } fill.colors = colors.join(','); fill.color2 = stops[k][1]; fills[id] = fill; } return fills[id]; } return function(font, text, style, options, node, el, hasNext) { var redraw = (text === null); if (redraw) text = node.alt; var viewBox = font.viewBox; var size = style.computedFontSize || (style.computedFontSize = new Cufon.CSS.Size(getFontSizeInPixels(el, style.get('fontSize')) + 'px', font.baseSize)); var wrapper, canvas; if (redraw) { wrapper = node; canvas = node.firstChild; } else { wrapper = document.createElement('cufon'); wrapper.className = 'cufon cufon-vml'; wrapper.alt = text; canvas = document.createElement('cufoncanvas'); wrapper.appendChild(canvas); if (options.printable) { var print = document.createElement('cufontext'); print.appendChild(document.createTextNode(text)); wrapper.appendChild(print); } // ie6, for some reason, has trouble rendering the last VML element in the document. // we can work around this by injecting a dummy element where needed. // @todo find a better solution if (!hasNext) wrapper.appendChild(document.createElement('cvml:shape')); } var wStyle = wrapper.style; var cStyle = canvas.style; var height = size.convert(viewBox.height), roundedHeight = Math.ceil(height); var roundingFactor = roundedHeight / height; var stretchFactor = roundingFactor * Cufon.CSS.fontStretch(style.get('fontStretch')); var minX = viewBox.minX, minY = viewBox.minY; cStyle.height = roundedHeight; cStyle.top = Math.round(size.convert(minY - font.ascent)); cStyle.left = Math.round(size.convert(minX)); wStyle.height = size.convert(font.height) + 'px'; var color = style.get('color'); var chars = Cufon.CSS.textTransform(text, style).split(''); var jumps = font.spacing(chars, getSpacingValue(el, style, size, 'letterSpacing'), getSpacingValue(el, style, size, 'wordSpacing') ); if (!jumps.length) return null; var width = jumps.total; var fullWidth = -minX + width + (viewBox.width - jumps[jumps.length - 1]); var shapeWidth = size.convert(fullWidth * stretchFactor), roundedShapeWidth = Math.round(shapeWidth); var coordSize = fullWidth + ',' + viewBox.height, coordOrigin; var stretch = 'r' + coordSize + 'ns'; var fill = options.textGradient && gradientFill(options.textGradient); var glyphs = font.glyphs, offsetX = 0; var shadows = options.textShadow; var i = -1, j = 0, chr; while (chr = chars[++i]) { var glyph = glyphs[chars[i]] || font.missingGlyph, shape; if (!glyph) continue; if (redraw) { // some glyphs may be missing so we can't use i shape = canvas.childNodes[j]; while (shape.firstChild) shape.removeChild(shape.firstChild); // shadow, fill } else { shape = document.createElement('cvml:shape'); canvas.appendChild(shape); } shape.stroked = 'f'; shape.coordsize = coordSize; shape.coordorigin = coordOrigin = (minX - offsetX) + ',' + minY; shape.path = (glyph.d ? 'm' + glyph.d + 'xe' : '') + 'm' + coordOrigin + stretch; shape.fillcolor = color; if (fill) shape.appendChild(fill.cloneNode(false)); // it's important to not set top/left or IE8 will grind to a halt var sStyle = shape.style; sStyle.width = roundedShapeWidth; sStyle.height = roundedHeight; if (shadows) { // due to the limitations of the VML shadow element there // can only be two visible shadows. opacity is shared // for all shadows. var shadow1 = shadows[0], shadow2 = shadows[1]; var color1 = Cufon.CSS.color(shadow1.color), color2; var shadow = document.createElement('cvml:shadow'); shadow.on = 't'; shadow.color = color1.color; shadow.offset = shadow1.offX + ',' + shadow1.offY; if (shadow2) { color2 = Cufon.CSS.color(shadow2.color); shadow.type = 'double'; shadow.color2 = color2.color; shadow.offset2 = shadow2.offX + ',' + shadow2.offY; } shadow.opacity = color1.opacity || (color2 && color2.opacity) || 1; shape.appendChild(shadow); } offsetX += jumps[j++]; } // addresses flickering issues on :hover var cover = shape.nextSibling, coverFill, vStyle; if (options.forceHitArea) { if (!cover) { cover = document.createElement('cvml:rect'); cover.stroked = 'f'; cover.className = 'cufon-vml-cover'; coverFill = document.createElement('cvml:fill'); coverFill.opacity = 0; cover.appendChild(coverFill); canvas.appendChild(cover); } vStyle = cover.style; vStyle.width = roundedShapeWidth; vStyle.height = roundedHeight; } else if (cover) canvas.removeChild(cover); wStyle.width = Math.max(Math.ceil(size.convert(width * stretchFactor)), 0); if (HAS_BROKEN_LINEHEIGHT) { var yAdjust = style.computedYAdjust; if (yAdjust === undefined) { var lineHeight = style.get('lineHeight'); if (lineHeight == 'normal') lineHeight = '1em'; else if (!isNaN(lineHeight)) lineHeight += 'em'; // no unit style.computedYAdjust = yAdjust = 0.5 * (getSizeInPixels(el, lineHeight) - parseFloat(wStyle.height)); } if (yAdjust) { wStyle.marginTop = Math.ceil(yAdjust) + 'px'; wStyle.marginBottom = yAdjust + 'px'; } } return wrapper; }; })()); /*! * The following copyright notice may not be removed under any circumstances. * * Copyright: * Copyright (c) 1990, 1992 Adobe Systems Incorporated. All Rights * Reserved.Glypha is a trademark of Linotype-Hell AG and/or its subsidiaries. */ Cufon.registerFont({"w":200,"face":{"font-family":"Glypha","font-weight":900,"font-stretch":"normal","units-per-em":"360","panose-1":"2 0 10 3 0 0 0 0 0 0","ascent":"288","descent":"-72","x-height":"6","bbox":"-8 -347 354 82.9138","underline-thickness":"18","underline-position":"-36","stemh":"40","stemv":"67","unicode-range":"U+0020-U+201D"},"glyphs":{" ":{"w":100},"!":{"d":"39,0r0,-60r63,0r0,60r-63,0xm46,-83r-13,-175r74,0r-12,175r-49,0","w":140},"\"":{"d":"34,-148r0,-110r49,0r0,110r-49,0xm117,-148r0,-110r49,0r0,110r-49,0"},"#":{"d":"112,-108r6,-42r-30,0r-6,42r30,0xm123,-185r10,-73r38,0r-10,73r27,0r0,35r-31,0r-7,42r29,0r0,35r-33,0r-10,73r-38,0r10,-73r-31,0r-10,73r-38,0r10,-73r-27,0r0,-35r32,0r6,-42r-29,0r0,-35r33,0r10,-73r38,0r-10,73r31,0"},"$":{"d":"58,-89v0,31,11,52,43,52v18,0,31,-11,31,-29v0,-19,-10,-26,-65,-45v-32,-11,-65,-26,-65,-78v0,-40,23,-69,69,-73r0,-30r47,0r0,34v10,4,16,13,23,20r0,-20r51,0r0,83r-53,0v0,-21,-7,-45,-38,-45v-21,0,-34,7,-34,23v0,18,10,23,66,45v43,17,66,34,66,80v0,51,-31,75,-81,76r0,31r-47,0r0,-39v-7,-3,-10,-11,-17,-17r0,21r-53,0r0,-89r57,0"},"%":{"d":"229,-24v17,0,19,-17,19,-40v0,-21,-2,-41,-19,-41v-17,0,-19,20,-19,41v0,23,2,40,19,40xm229,4v-42,0,-59,-27,-59,-67v0,-40,17,-68,59,-68v42,0,59,28,59,68v0,40,-17,67,-59,67xm78,-155v17,0,19,-17,19,-40v0,-21,-2,-41,-19,-41v-17,0,-20,20,-20,41v0,23,3,40,20,40xm78,-127v-42,0,-59,-27,-59,-67v0,-40,17,-68,59,-68v42,0,59,28,59,68v0,40,-17,67,-59,67xm48,9r171,-276r34,0r-171,276r-34,0","w":306},"&":{"d":"180,-118r0,-37r87,0r0,37r-24,0v-4,26,-11,42,-26,63r13,15r37,0r0,40r-77,0r-14,-15v-21,15,-47,19,-73,19v-114,0,-112,-117,-41,-149v-14,-15,-27,-33,-27,-54v0,-44,38,-63,77,-63v92,-1,87,97,31,125r41,46v5,-3,11,-21,11,-27r-15,0xm131,-207v0,-13,-8,-21,-21,-21v-32,0,-24,33,-2,53v12,-11,23,-19,23,-32xm147,-48r-48,-56v-31,16,-27,69,15,69v17,0,28,-8,33,-13","w":280},"\u2019":{"d":"40,-197r-21,0r0,-61r62,0r0,61r-18,49r-44,0","w":100},"(":{"d":"69,-267r48,0v-55,97,-55,224,-1,322r-48,0v-62,-98,-59,-224,1,-322","w":119},")":{"d":"51,55r-48,0v55,-97,55,-224,1,-322r47,0v63,97,61,224,0,322","w":119},"*":{"d":"85,-214r-7,-44r44,0r-7,44r37,-20r14,45r-39,7r27,31r-35,28r-19,-38r-19,38r-35,-28r27,-31r-39,-7r14,-45"},"+":{"d":"85,-114r0,-68r46,0r0,68r68,0r0,46r-68,0r0,68r-46,0r0,-68r-68,0r0,-46r68,0","w":216},",":{"d":"40,0r-21,0r0,-60r62,0r0,60r-18,50r-44,0","w":100},"-":{"d":"14,-81r0,-47r91,0r0,47r-91,0","w":119},".":{"d":"19,0r0,-60r62,0r0,60r-62,0","w":100},"\/":{"d":"0,4r94,-266r46,0r-94,266r-46,0","w":140},"0":{"d":"100,-37v27,0,27,-59,27,-97v0,-65,-9,-86,-27,-86v-18,0,-27,21,-27,86v0,38,0,97,27,97xm100,-262v72,0,92,64,92,128v0,62,-14,138,-92,138v-78,0,-91,-76,-91,-138v0,-64,19,-128,91,-128"},"1":{"d":"82,-42r0,-154v-18,18,-38,33,-58,48r0,-63v19,-12,44,-30,65,-47r63,0r0,216r27,0r0,42r-129,0r0,-42r32,0"},"2":{"d":"9,-179v0,-57,36,-82,91,-83v42,0,88,16,88,73v0,22,-11,42,-26,60v-26,30,-52,58,-80,87r54,0r0,-32r56,0r0,74r-182,0r0,-54v33,-39,94,-83,109,-138v0,-15,-5,-28,-22,-28v-19,0,-24,20,-24,41r-64,0"},"3":{"d":"9,-182v1,-55,36,-80,91,-80v43,0,88,17,88,73v0,34,-21,49,-51,57v32,2,55,23,55,61v0,55,-42,75,-94,75v-41,0,-91,-14,-92,-76r67,0v0,15,5,35,24,35v27,0,28,-31,28,-36v0,-28,-16,-41,-45,-39r0,-39v43,11,56,-69,19,-69v-19,0,-23,17,-23,38r-67,0"},"4":{"d":"111,-106r-1,-96r-58,96r59,0xm111,-40r0,-26r-106,0r0,-51r89,-141r79,0r0,152r20,0r0,40r-20,0r0,26r18,0r0,40r-112,0r0,-40r32,0"},"5":{"d":"78,-68v1,15,6,31,22,31v34,-1,37,-88,0,-90v-12,0,-21,8,-22,25r-62,0r0,-156r164,0r0,44r-102,0r0,64v43,-41,114,-12,114,60v0,62,-34,94,-93,94v-46,0,-87,-21,-87,-72r66,0"},"6":{"d":"125,-195v0,-14,-5,-27,-20,-27v-30,-1,-35,52,-33,85v7,-23,27,-35,50,-35v43,0,70,33,70,85v0,58,-38,91,-92,91v-85,0,-91,-82,-91,-129v0,-71,22,-137,102,-137v59,0,79,32,79,67r-65,0xm99,-35v28,0,28,-39,28,-48v0,-17,-2,-47,-25,-47v-41,0,-37,95,-3,95"},"7":{"d":"8,-174r0,-84r184,0r0,48v-32,70,-57,138,-83,210r-72,0v24,-66,55,-145,90,-216r-64,0r0,42r-55,0"},"8":{"d":"100,-116v-41,2,-41,79,0,81v42,-2,40,-78,0,-81xm100,4v-60,0,-91,-29,-91,-71v-1,-35,22,-61,54,-68v-33,-5,-51,-26,-51,-56v0,-39,23,-71,88,-71v64,0,88,32,88,71v0,31,-19,50,-50,57v34,4,54,33,54,67v0,42,-32,71,-92,71xm100,-222v-19,0,-25,13,-25,31v0,18,6,35,25,35v19,0,26,-17,26,-35v0,-18,-7,-31,-26,-31"},"9":{"d":"75,-63v0,14,5,28,20,28v30,1,35,-53,33,-86v-7,23,-27,35,-50,35v-43,0,-69,-33,-69,-85v0,-58,37,-91,91,-91v85,0,92,82,92,129v0,71,-22,137,-102,137v-59,0,-80,-32,-80,-67r65,0xm102,-222v-28,0,-29,38,-29,47v0,17,3,48,26,48v40,0,36,-95,3,-95"},":":{"d":"19,0r0,-60r62,0r0,60r-62,0xm19,-131r0,-61r62,0r0,61r-62,0","w":100},";":{"d":"19,0r0,-60r62,0r0,60r-18,50r-44,0r21,-50r-21,0xm19,-131r0,-61r62,0r0,61r-62,0","w":100},"?":{"d":"5,-190v3,-49,32,-73,83,-72v45,0,83,21,83,69v0,68,-66,77,-61,114r-57,0v-10,-65,49,-73,51,-118v0,-11,-3,-25,-17,-25v-19,0,-19,22,-19,32r-63,0xm50,0r0,-60r63,0r0,60r-63,0","w":180},"@":{"d":"102,-113v0,20,11,33,29,33v43,0,72,-92,19,-92v-28,0,-48,33,-48,59xm190,-176r7,-21r28,0r-28,111v0,5,4,8,9,8v20,0,43,-31,43,-69v0,-56,-44,-87,-100,-87v-59,0,-106,45,-106,105v0,98,132,137,192,74r29,0v-62,104,-253,61,-253,-74v0,-80,65,-133,142,-133v66,0,124,44,124,109v0,70,-59,103,-88,103v-13,0,-23,-7,-24,-21v-29,40,-97,16,-97,-38v0,-64,82,-131,122,-67","w":288},"A":{"d":"188,-42r-11,-32r-84,0r-11,32r27,0r0,42r-103,0r0,-42r15,0r80,-216r80,0r79,216r14,0r0,42r-113,0r0,-42r27,0xm162,-113r-27,-91r-27,91r54,0","w":280},"B":{"d":"30,-42r0,-174r-24,0r0,-42v87,8,214,-32,217,63v1,34,-19,57,-51,64v36,3,56,25,56,61v-1,100,-131,63,-222,70r0,-42r24,0xm94,-151v35,1,62,0,62,-36v0,-35,-30,-31,-62,-31r0,67xm94,-40v35,2,67,-1,67,-35v0,-38,-30,-39,-67,-37r0,72","w":240},"C":{"d":"185,-163v0,-32,-15,-57,-48,-57v-44,0,-52,58,-52,95v0,34,6,88,52,88v37,0,41,-32,43,-48r67,0v-3,62,-51,89,-106,89v-96,0,-128,-63,-128,-135v0,-72,35,-131,112,-131v41,0,57,20,65,29r0,-25r56,0r0,95r-61,0","w":259},"D":{"d":"102,-42v49,-1,87,10,93,-91v4,-61,-26,-89,-93,-83r0,174xm33,-42r0,-174r-24,0r0,-42r138,0v81,0,120,52,120,130v0,85,-45,128,-129,128r-129,0r0,-42r24,0","w":280},"E":{"d":"119,-151r0,-28r42,0r0,95r-42,0r0,-28r-25,0r0,70r81,0r0,-43r53,0r0,85r-222,0r0,-42r24,0r0,-174r-24,0r0,-42r222,0r0,81r-53,0r0,-39r-81,0r0,65r25,0","w":240},"F":{"d":"125,-144r0,-28r42,0r0,98r-42,0r0,-31r-25,0r0,63r34,0r0,42r-122,0r0,-42r24,0r0,-174r-24,0r0,-42r220,0r0,85r-51,0r0,-43r-81,0r0,72r25,0","w":240},"G":{"d":"194,-166v-1,-24,-18,-52,-51,-52v-49,0,-58,57,-58,95v0,37,11,83,58,83v39,0,53,-28,53,-50r-27,0r0,-42r106,0r0,42r-19,0r0,90r-55,0v-1,-8,2,-20,-1,-26v-13,26,-43,30,-70,30v-73,0,-117,-47,-117,-136v0,-72,32,-130,113,-130v28,0,54,7,73,29r0,-25r55,0r0,92r-60,0","w":280},"H":{"d":"181,-151r0,-65r-25,0r0,-42r118,0r0,42r-23,0r0,174r23,0r0,42r-118,0r0,-42r25,0r0,-67r-82,0r0,67r26,0r0,42r-119,0r0,-42r24,0r0,-174r-24,0r0,-42r119,0r0,42r-26,0r0,65r82,0","w":280},"I":{"d":"36,-42r0,-174r-26,0r0,-42r121,0r0,42r-26,0r0,174r26,0r0,42r-121,0r0,-42r26,0","w":140},"J":{"d":"106,-71r0,-145r-33,0r0,-42r121,0r0,42r-19,0v-5,97,30,220,-84,220v-59,0,-88,-28,-83,-93r67,0v1,21,-4,52,15,52v13,0,16,-10,16,-34"},"K":{"d":"94,-141r66,-75r-17,0r0,-42r108,0r0,42r-19,0r-70,77r78,97r16,0r0,42r-113,0r0,-42r19,0r-68,-88r0,88r24,0r0,42r-112,0r0,-42r24,0r0,-174r-24,0r0,-42r112,0r0,42r-24,0r0,75","w":259},"L":{"d":"155,-42r0,-55r58,0r0,97r-207,0r0,-42r24,0r0,-174r-24,0r0,-42r128,0r0,42r-35,0r0,174r56,0","w":219},"M":{"d":"170,-72v17,-59,28,-125,43,-186r121,0r0,42r-21,0r0,174r21,0r0,42r-105,0r0,-42r23,0r0,-170r-55,212r-63,0r-56,-216r0,174r24,0r0,42r-97,0r0,-42r22,0r0,-174r-22,0r0,-42r124,0","w":339},"N":{"d":"199,-64v4,-47,0,-102,1,-152r-28,0r0,-42r102,0r0,42r-21,0r0,216r-86,0r-84,-199r0,157r28,0r0,42r-105,0r0,-42r24,0r0,-174r-24,0r0,-42r115,0","w":280},"O":{"d":"195,-129v0,-35,-7,-91,-55,-91v-48,0,-55,56,-55,91v0,35,7,92,55,92v48,0,55,-57,55,-92xm267,-129v0,77,-43,133,-127,133v-84,0,-127,-56,-127,-133v0,-77,43,-133,127,-133v84,0,127,56,127,133","w":280},"P":{"d":"33,-42r0,-174r-24,0r0,-42r137,0v51,0,82,31,82,82v0,73,-53,87,-128,82r0,52r32,0r0,42r-123,0r0,-42r24,0xm100,-136v38,2,58,-4,58,-43v0,-35,-23,-39,-58,-37r0,80","w":240},"Q":{"d":"275,0r-135,4v-84,0,-127,-56,-127,-133v0,-77,43,-133,127,-133v84,0,127,56,127,133v0,29,-16,74,-46,89v17,-2,36,-2,54,-2r0,42xm140,-37v48,0,55,-57,55,-92v0,-35,-7,-91,-55,-91v-48,0,-55,56,-55,91v0,35,7,92,55,92","w":280},"R":{"d":"171,0r-25,-78v-6,-23,-17,-29,-46,-27r0,63r25,0r0,42r-116,0r0,-42r24,0r0,-174r-24,0r0,-42v88,6,219,-29,219,68v0,42,-22,57,-59,66v48,-2,46,47,59,82r21,0r0,42r-78,0xm100,-144v30,-1,55,9,61,-39v4,-34,-28,-34,-61,-33r0,72","w":259},"S":{"d":"69,-89v0,32,12,52,44,52v17,0,31,-11,31,-29v0,-19,-10,-26,-66,-45v-33,-11,-66,-27,-66,-69v0,-56,29,-82,84,-82v20,-1,46,7,58,24r0,-20r53,0r0,83r-55,0v0,-21,-8,-45,-39,-45v-20,0,-34,7,-34,23v0,18,10,23,67,45v44,17,67,31,67,77v0,55,-35,79,-89,79v-25,0,-44,-3,-58,-25r0,21r-56,0r0,-89r59,0","w":219},"T":{"d":"183,-166r0,-50r-29,0r0,174r29,0r0,42r-126,0r0,-42r28,0r0,-174r-28,0r0,50r-56,0r0,-92r238,0r0,92r-56,0","w":239},"U":{"d":"152,-216r0,-42r102,0r0,42r-20,0r0,127v0,67,-42,93,-105,93v-141,0,-98,-105,-105,-220r-18,0r0,-42r113,0r0,42r-25,0r0,125v0,28,8,54,41,54v69,0,34,-113,42,-179r-25,0","w":259},"V":{"d":"144,-58v19,-50,33,-106,51,-158r-27,0r0,-42r106,0r0,42r-16,0r-81,216r-75,0r-79,-216r-17,0r0,-42r117,0r0,42r-28,0","w":280},"W":{"d":"256,-55v12,-51,18,-108,29,-161r-26,0r0,-42r95,0r0,42r-13,0r-50,216r-79,0r-29,-199r-2,0r-34,199r-79,0r-48,-216r-14,0r0,-42r105,0r0,42r-26,0r27,161r38,-203r72,0","w":360},"X":{"d":"146,-162r39,-54r-24,0r0,-42r109,0r0,42r-18,0r-70,85r74,89r18,0r0,42r-121,0r0,-42r25,0r-46,-57r-42,57r27,0r0,42r-111,0r0,-42r17,0r75,-89r-71,-85r-16,0r0,-42r119,0r0,42r-25,0","w":280},"Y":{"d":"135,-145r39,-71r-23,0r0,-42r103,0r0,42r-15,0r-74,123r0,51r30,0r0,42r-130,0r0,-42r30,0r0,-51r-75,-123r-14,0r0,-42r115,0r0,42r-25,0","w":259},"Z":{"d":"174,-42r0,-46r55,0r0,88r-218,0r0,-51r136,-165r-77,0r0,44r-55,0r0,-86r212,0r0,52r-138,164r85,0","w":240},"_":{"d":"180,45r-180,0r0,-18r180,0r0,18","w":180},"\u2018":{"d":"19,-148r0,-60r18,-50r44,0r-21,50r21,0r0,60r-62,0","w":100},"a":{"d":"136,0v-1,-8,2,-21,-1,-27v-16,27,-30,33,-61,33v-57,0,-65,-42,-65,-57v2,-68,63,-73,123,-69v0,-20,0,-47,-26,-47v-20,0,-23,14,-26,34r-62,0v3,-53,38,-69,87,-69v116,0,84,73,89,162r18,0r0,40r-76,0xm133,-89v-31,-1,-60,1,-61,32v0,13,7,23,22,23v28,0,39,-30,39,-55","w":219},"b":{"d":"29,-40r0,-187r-20,0r0,-40r87,0r0,98v6,-18,29,-33,60,-33v74,0,74,81,74,104v0,51,-19,104,-77,104v-31,1,-48,-12,-62,-37r0,31r-82,0r0,-40r20,0xm94,-98v0,22,5,62,35,62v28,0,32,-27,32,-62v0,-38,-4,-62,-32,-62v-30,0,-35,38,-35,62","w":240},"c":{"d":"145,-175v3,-4,0,-15,1,-21r51,0r0,74r-56,0v0,-17,-4,-38,-27,-38v-30,0,-31,37,-31,66v0,29,6,60,31,60v24,0,26,-25,27,-33r56,0v-4,51,-34,73,-84,73v-69,0,-99,-43,-99,-109v0,-52,27,-99,84,-99v21,0,38,7,47,27"},"d":{"d":"112,-160v-28,0,-33,24,-33,62v0,35,5,62,33,62v30,0,35,-40,35,-62v0,-24,-5,-62,-35,-62xm144,-227r-22,0r0,-40r89,0r0,227r20,0r0,40r-82,0v-1,-10,2,-23,-1,-31v-12,28,-32,37,-61,37v-58,0,-77,-53,-77,-104v0,-50,14,-104,79,-104v23,0,48,9,55,33r0,-58","w":240},"e":{"d":"73,-117r60,0v0,-14,-1,-45,-28,-45v-30,0,-32,37,-32,45xm135,-55r63,0v-8,46,-49,61,-91,61v-72,0,-101,-43,-101,-105v0,-61,38,-103,100,-103v71,0,98,52,93,120r-126,0v0,21,4,48,34,48v22,0,28,-15,28,-21"},"f":{"d":"32,-40r0,-117r-23,0r0,-39r23,0v-6,-70,45,-87,111,-73r0,42v-22,-6,-53,0,-44,31r33,0r0,39r-33,0r0,117r29,0r0,40r-118,0r0,-40r22,0","w":140},"g":{"d":"89,8v1,13,11,16,28,16v30,3,32,-31,28,-58v-10,21,-34,31,-58,31v-62,0,-77,-54,-77,-98v0,-100,96,-131,139,-68r0,-27r82,0r0,39r-20,0r0,144v0,58,-47,74,-97,74v-48,0,-86,-7,-92,-53r67,0xm111,-45v50,1,46,-114,2,-115v-28,0,-34,32,-34,53v0,19,1,62,32,62","w":240},"h":{"d":"148,-40r0,-81v0,-16,0,-37,-24,-37v-40,-1,-26,76,-28,118r18,0r0,40r-105,0r0,-40r20,0r0,-187r-20,0r0,-40r87,0r0,100v11,-23,29,-35,58,-35v27,0,61,10,61,54r0,108r18,0r0,40r-103,0r0,-40r18,0","w":240},"i":{"d":"29,-40r0,-117r-20,0r0,-39r87,0r0,156r18,0r0,40r-105,0r0,-40r20,0xm29,-215r0,-56r67,0r0,56r-67,0","w":119},"j":{"d":"29,1r0,-158r-20,0r0,-39r87,0r0,199v0,45,-11,58,-55,58v-20,0,-31,-2,-39,-3r0,-39v18,2,31,-5,27,-18xm29,-215r0,-56r67,0r0,56r-67,0","w":119},"k":{"d":"96,-114r56,-48r-27,0r0,-34r106,0r0,37v-35,-2,-42,24,-64,35r48,84r16,0r0,40r-100,0r0,-40r17,0r-26,-47r-26,21r0,26r13,0r0,40r-100,0r0,-40r20,0r0,-187r-20,0r0,-40r87,0r0,153","w":240},"l":{"d":"29,-40r0,-187r-20,0r0,-40r87,0r0,227r18,0r0,40r-105,0r0,-40r20,0","w":119},"m":{"d":"266,-40r0,-86v0,-16,-4,-32,-24,-32v-42,1,-25,76,-28,118r17,0r0,40r-101,0r0,-40r17,0r0,-86v0,-16,-3,-32,-23,-32v-42,1,-25,76,-28,118r17,0r0,40r-104,0r0,-40r20,0r0,-117r-20,0r0,-39r83,0v1,10,-2,25,1,33v12,-52,103,-52,116,-5v12,-26,35,-34,64,-34v27,0,60,10,60,54r0,108r18,0r0,40r-103,0r0,-40r18,0","w":360},"n":{"d":"148,-40r0,-81v0,-16,0,-37,-24,-37v-40,-1,-26,76,-28,118r18,0r0,40r-105,0r0,-40r20,0r0,-117r-20,0r0,-39r83,0v1,10,-2,25,1,33v9,-29,33,-39,61,-39v27,0,61,10,61,54r0,108r18,0r0,40r-103,0r0,-40r18,0","w":240},"o":{"d":"10,-98v0,-61,38,-104,100,-104v63,0,100,43,100,104v0,60,-38,104,-100,104v-61,0,-100,-44,-100,-104xm110,-160v-20,0,-31,18,-31,62v0,45,10,62,31,62v20,0,31,-17,31,-62v0,-45,-10,-62,-31,-62","w":219},"p":{"d":"29,19r0,-176r-20,0r0,-39r82,0v1,10,-2,24,1,32v12,-27,35,-38,61,-38v61,0,77,51,77,103v0,54,-16,105,-78,105v-26,0,-46,-12,-56,-32r0,45r24,0r0,39r-111,0r0,-39r20,0xm94,-98v0,22,5,62,35,62v28,0,32,-27,32,-62v0,-38,-4,-62,-32,-62v-30,0,-35,38,-35,62","w":240},"q":{"d":"144,19r0,-45v-5,17,-28,32,-56,32v-62,0,-78,-51,-78,-105v0,-52,16,-103,82,-103v23,-1,46,13,57,33r0,-27r82,0r0,39r-20,0r0,176r20,0r0,39r-111,0r0,-39r24,0xm147,-98v0,-24,-5,-62,-35,-62v-28,0,-33,24,-33,62v0,35,5,62,33,62v30,0,35,-40,35,-62","w":240},"r":{"d":"29,-40r0,-117r-20,0r0,-39r82,0v1,12,-2,29,1,39v5,-30,34,-53,67,-42r0,61v-51,-18,-70,37,-63,98r25,0r0,40r-112,0r0,-40r20,0","w":159},"s":{"d":"63,-67v-10,40,55,47,58,17v2,-17,-42,-25,-58,-31v-33,-13,-54,-24,-54,-61v0,-62,86,-79,122,-38r0,-16r47,0r0,62r-51,0v0,-21,-9,-31,-31,-31v-31,0,-37,28,-10,35v43,12,95,20,95,73v0,41,-29,63,-69,63v-36,0,-47,-14,-53,-26r0,20r-49,0r0,-67r53,0","w":193},"t":{"d":"107,-34v14,-1,9,-22,10,-36r36,0v5,49,-14,76,-59,76v-91,0,-59,-88,-65,-163r-23,0r0,-39r23,0r0,-29r67,-23r0,52r44,0r0,39r-44,0r0,103v0,12,2,20,11,20","w":159},"u":{"d":"20,-60r0,-97r-20,0r0,-39r87,0r0,127v0,17,6,28,23,28v41,0,20,-74,25,-116r-19,0r0,-39r88,0r0,156r18,0r0,40r-81,0v-1,-9,2,-23,-1,-30v-8,25,-36,36,-63,36v-57,0,-57,-45,-57,-66","w":226},"v":{"d":"114,-53v13,-32,19,-70,30,-104r-17,0r0,-39r89,0r0,39r-10,0r-56,157r-79,0r-55,-157r-12,0r0,-39r100,0r0,39r-18,0","w":219},"w":{"d":"240,-47v10,-34,14,-74,23,-110r-19,0r0,-39r89,0r0,39r-13,0r-43,157r-82,0r-24,-140r-28,140r-82,0r-42,-157r-13,0r0,-39r98,0r0,39r-19,0r22,110r29,-149r76,0","w":339},"x":{"d":"3,0r0,-40r12,0r51,-62r-45,-55r-15,0r0,-39r100,0r0,39r-18,0r28,34r27,-34r-18,0r0,-39r89,0r0,39r-13,0r-47,55r49,62r14,0r0,40r-100,0r0,-40r18,0r-30,-39r-32,39r19,0r0,40r-89,0","w":219},"y":{"d":"4,-157r0,-39r102,0r0,39r-19,0r30,85r27,-85r-17,0r0,-39r89,0r0,39r-11,0r-72,171v-5,37,-56,56,-98,44r0,-45v14,6,44,5,46,-12r-63,-158r-14,0","w":219},"z":{"d":"135,-37r0,-25r51,0r0,62r-172,0r0,-48r102,-114r-49,0r0,24r-51,0r0,-58r167,0r0,47r-102,112r54,0"},"\u00a3":{"d":"136,-42r0,-41r61,0r0,83r-192,0r0,-42r24,0r0,-75r-26,0r0,-40r26,0r0,-31v0,-60,46,-74,85,-74v50,0,85,13,85,74r-62,0v1,-18,-1,-34,-21,-34v-32,0,-16,38,-20,65r34,0r0,40r-34,0r0,75r40,0"},"'":{"d":"26,-148r0,-110r49,0r0,110r-49,0","w":100},"\u201c":{"d":"115,-148r0,-60r18,-50r44,0r-21,50r21,0r0,60r-62,0xm23,-148r0,-60r18,-50r44,0r-21,50r21,0r0,60r-62,0"},"\u201d":{"d":"44,-197r-21,0r0,-61r62,0r0,61r-18,49r-44,0xm136,-197r-21,0r0,-61r62,0r0,61r-18,49r-44,0"},"\u00c6":{"d":"242,-84r0,-28r-18,0r11,72r63,0r0,-45r51,0r0,85r-202,0r0,-42r27,0r-6,-35r-77,0r-13,35r24,0r0,42r-96,0r0,-42r15,0r89,-216r239,0r0,81r-51,0r0,-41r-93,0r11,67r26,0r0,-28r42,0r0,95r-42,0xm162,-117r-18,-99r-39,99r57,0","w":360},"\u00d8":{"d":"191,-170r-93,106v8,15,21,27,42,27v61,0,60,-79,51,-133xm89,-88r94,-106v-8,-15,-22,-26,-43,-26v-61,0,-59,78,-51,132xm221,-238r28,-31r16,15r-28,32v62,79,27,226,-97,226v-33,0,-61,-9,-81,-24r-28,32r-16,-16r28,-32v-62,-80,-27,-226,97,-226v33,0,60,8,81,24","w":280},"\u00e6":{"d":"130,-82v-29,-1,-57,-1,-57,29v0,13,10,24,22,24v27,0,34,-27,35,-53xm307,-56v-3,70,-130,88,-155,23v-11,32,-39,39,-70,39v-50,0,-71,-25,-71,-60v1,-66,60,-63,119,-63v0,-21,0,-48,-26,-48v-18,0,-23,10,-24,26r-61,0v3,-43,32,-63,77,-63v27,0,54,4,66,31v16,-23,36,-31,64,-31v88,0,83,73,83,120r-117,0v0,26,8,51,28,51v14,0,22,-12,24,-25r63,0xm192,-117r52,0v0,-22,-1,-48,-25,-48v-22,0,-28,27,-27,48","w":320},"\u00f8":{"d":"10,0r24,-27v-51,-62,-17,-175,76,-175v24,0,44,7,60,18r22,-25r16,13r-23,26v53,61,18,176,-75,176v-24,0,-45,-7,-61,-19r-23,26xm80,-81r54,-62v-5,-12,-13,-17,-24,-17v-24,-5,-35,39,-30,79xm140,-118r-55,63v5,13,13,19,25,19v25,7,35,-43,30,-82","w":219},"\u00df":{"d":"130,0r0,-40v18,0,31,-13,31,-41v0,-28,-14,-41,-41,-41r0,-44v20,0,30,-15,30,-37v0,-18,-5,-30,-25,-30v-24,0,-29,22,-29,43r0,150r16,0r0,40r-103,0r0,-40r20,0r0,-140v0,-61,35,-93,99,-93v36,0,89,9,89,67v1,35,-19,51,-49,62v37,3,62,25,62,63v1,60,-35,86,-100,81","w":240},"\u00de":{"d":"33,-42r0,-174r-24,0r0,-42r122,0r0,42r-31,0r0,14r63,0v41,0,65,34,65,72v0,37,-25,74,-65,74r-63,0r0,14r32,0r0,42r-123,0r0,-42r24,0xm100,-95v32,1,58,1,58,-34v0,-37,-26,-33,-58,-33r0,67","w":240},"\u00d0":{"d":"102,-42v49,-1,87,10,93,-91v4,-61,-26,-89,-93,-83r0,65r48,0r0,37r-48,0r0,72xm33,-42r0,-72r-24,0r0,-37r24,0r0,-65r-24,0r0,-42r138,0v81,0,120,52,120,130v0,85,-45,128,-129,128r-129,0r0,-42r24,0","w":280},"\u00e7":{"d":"86,40v-15,-9,6,-23,10,-35v-108,-2,-113,-207,2,-207v22,0,37,9,48,27r0,-21r51,0r0,74r-56,0v0,-17,-4,-38,-27,-38v-30,0,-31,37,-31,66v0,29,6,60,31,60v24,0,26,-25,27,-33r56,0v-4,49,-32,72,-81,73r-11,16v20,-6,45,3,46,26v-1,40,-57,41,-89,26r7,-17v14,6,48,11,48,-6v0,-15,-17,-16,-31,-11"},"\u00f0":{"d":"113,-252r47,-23r17,22r-33,16v90,54,97,237,-34,243v-114,5,-139,-181,-20,-186v15,0,25,2,33,12v-2,-14,-12,-28,-29,-40r-36,20r-21,-22v8,-5,19,-8,26,-15v-8,-4,-17,-7,-26,-9r12,-39v30,6,50,13,64,21xm141,-88v0,-41,-15,-55,-32,-55v-16,0,-30,14,-30,55v0,36,14,54,30,54v17,0,32,-18,32,-54","w":219},"\u00c7":{"d":"185,-163v0,-32,-15,-57,-48,-57v-44,0,-52,58,-52,95v0,34,6,88,52,88v37,0,41,-32,43,-48r67,0v-3,62,-51,89,-105,89v-3,6,-11,14,-11,18v20,-6,46,3,46,26v0,40,-58,41,-90,26r8,-17v14,6,47,10,47,-6v0,-15,-16,-16,-30,-11v-15,-10,7,-25,11,-37v-82,-8,-110,-67,-110,-134v0,-72,35,-131,112,-131v41,0,57,20,65,29r0,-25r56,0r0,95r-61,0","w":259},"\u00fe":{"d":"29,19r0,-246r-20,0r0,-40r87,0r0,94v13,-21,34,-29,57,-29v61,0,77,51,77,103v0,54,-16,105,-78,105v-26,0,-46,-12,-56,-32r0,45r24,0r0,39r-111,0r0,-39r20,0xm94,-98v0,22,5,62,35,62v28,0,32,-27,32,-62v0,-38,-4,-62,-32,-62v-30,0,-35,38,-35,62","w":240},"\u00c1":{"d":"108,-275r36,-54r64,0r-56,54r-44,0xm188,-42r-11,-32r-84,0r-11,32r27,0r0,42r-103,0r0,-42r15,0r80,-216r80,0r79,216r14,0r0,42r-113,0r0,-42r27,0xm162,-113r-27,-91r-27,91r54,0","w":280},"\u00c2":{"d":"188,-42r-11,-32r-84,0r-11,32r27,0r0,42r-103,0r0,-42r15,0r80,-216r80,0r79,216r14,0r0,42r-113,0r0,-42r27,0xm162,-113r-27,-91r-27,91r54,0xm163,-275r-21,-29r-21,29r-47,0r40,-54r56,0r40,54r-47,0","w":280},"\u00c4":{"d":"153,-275r0,-44r55,0r0,44r-55,0xm76,-275r0,-44r55,0r0,44r-55,0xm188,-42r-11,-32r-84,0r-11,32r27,0r0,42r-103,0r0,-42r15,0r80,-216r80,0r79,216r14,0r0,42r-113,0r0,-42r27,0xm162,-113r-27,-91r-27,91r54,0","w":280},"\u00c0":{"d":"188,-42r-11,-32r-84,0r-11,32r27,0r0,42r-103,0r0,-42r15,0r80,-216r80,0r79,216r14,0r0,42r-113,0r0,-42r27,0xm162,-113r-27,-91r-27,91r54,0xm132,-275r-56,-54r65,0r35,54r-44,0","w":280},"\u00c5":{"d":"102,-306v0,-22,18,-41,40,-41v22,0,41,19,41,41v0,22,-19,40,-41,40v-22,0,-40,-18,-40,-40xm126,-306v0,9,7,16,16,16v9,0,17,-7,17,-16v0,-9,-8,-17,-17,-17v-9,0,-16,8,-16,17xm188,-42r-11,-32r-84,0r-11,32r27,0r0,42r-103,0r0,-42r15,0r80,-216r80,0r79,216r14,0r0,42r-113,0r0,-42r27,0xm162,-113r-27,-91r-27,91r54,0","w":280},"\u00c3":{"d":"188,-42r-11,-32r-84,0r-11,32r27,0r0,42r-103,0r0,-42r15,0r80,-216r80,0r79,216r14,0r0,42r-113,0r0,-42r27,0xm162,-113r-27,-91r-27,91r54,0xm117,-324v24,0,58,33,68,0r26,0v-4,26,-19,44,-44,44v0,0,-59,-29,-67,5r-26,0v3,-25,16,-49,43,-49","w":280},"\u00c9":{"d":"89,-275r35,-54r65,0r-57,54r-43,0xm119,-151r0,-28r42,0r0,95r-42,0r0,-28r-25,0r0,70r81,0r0,-43r53,0r0,85r-222,0r0,-42r24,0r0,-174r-24,0r0,-42r222,0r0,81r-53,0r0,-39r-81,0r0,65r25,0","w":240},"\u00ca":{"d":"119,-151r0,-28r42,0r0,95r-42,0r0,-28r-25,0r0,70r81,0r0,-43r53,0r0,85r-222,0r0,-42r24,0r0,-174r-24,0r0,-42r222,0r0,81r-53,0r0,-39r-81,0r0,65r25,0xm144,-275r-22,-29r-21,29r-47,0r41,-54r55,0r40,54r-46,0","w":240},"\u00cb":{"d":"133,-275r0,-44r56,0r0,44r-56,0xm56,-275r0,-44r56,0r0,44r-56,0xm119,-151r0,-28r42,0r0,95r-42,0r0,-28r-25,0r0,70r81,0r0,-43r53,0r0,85r-222,0r0,-42r24,0r0,-174r-24,0r0,-42r222,0r0,81r-53,0r0,-39r-81,0r0,65r25,0","w":240},"\u00c8":{"d":"119,-151r0,-28r42,0r0,95r-42,0r0,-28r-25,0r0,70r81,0r0,-43r53,0r0,85r-222,0r0,-42r24,0r0,-174r-24,0r0,-42r222,0r0,81r-53,0r0,-39r-81,0r0,65r25,0xm113,-275r-57,-54r65,0r35,54r-43,0","w":240},"\u00cd":{"d":"36,-275r36,-54r64,0r-56,54r-44,0xm36,-42r0,-174r-26,0r0,-42r121,0r0,42r-26,0r0,174r26,0r0,42r-121,0r0,-42r26,0","w":140},"\u00ce":{"d":"36,-42r0,-174r-26,0r0,-42r121,0r0,42r-26,0r0,174r26,0r0,42r-121,0r0,-42r26,0xm91,-275r-21,-29r-21,29r-47,0r40,-54r56,0r40,54r-47,0","w":140},"\u00cf":{"d":"81,-275r0,-44r55,0r0,44r-55,0xm4,-275r0,-44r55,0r0,44r-55,0xm36,-42r0,-174r-26,0r0,-42r121,0r0,42r-26,0r0,174r26,0r0,42r-121,0r0,-42r26,0","w":140},"\u00cc":{"d":"36,-42r0,-174r-26,0r0,-42r121,0r0,42r-26,0r0,174r26,0r0,42r-121,0r0,-42r26,0xm60,-275r-56,-54r65,0r35,54r-44,0","w":140},"\u00d1":{"d":"115,-324v24,0,57,33,68,0r25,0v-4,26,-18,44,-43,44v0,0,-59,-29,-67,5r-26,0v3,-25,16,-49,43,-49xm199,-64v4,-47,0,-102,1,-152r-28,0r0,-42r102,0r0,42r-21,0r0,216r-86,0r-84,-199r0,157r28,0r0,42r-105,0r0,-42r24,0r0,-174r-24,0r0,-42r115,0","w":280},"\u00d3":{"d":"106,-275r35,-54r65,0r-56,54r-44,0xm195,-129v0,-35,-7,-91,-55,-91v-48,0,-55,56,-55,91v0,35,7,92,55,92v48,0,55,-57,55,-92xm267,-129v0,77,-43,133,-127,133v-84,0,-127,-56,-127,-133v0,-77,43,-133,127,-133v84,0,127,56,127,133","w":280},"\u00d4":{"d":"195,-129v0,-35,-7,-91,-55,-91v-48,0,-55,56,-55,91v0,35,7,92,55,92v48,0,55,-57,55,-92xm267,-129v0,77,-43,133,-127,133v-84,0,-127,-56,-127,-133v0,-77,43,-133,127,-133v84,0,127,56,127,133xm161,-275r-21,-29r-21,29r-47,0r40,-54r56,0r40,54r-47,0","w":280},"\u00d6":{"d":"151,-275r0,-44r55,0r0,44r-55,0xm74,-275r0,-44r55,0r0,44r-55,0xm195,-129v0,-35,-7,-91,-55,-91v-48,0,-55,56,-55,91v0,35,7,92,55,92v48,0,55,-57,55,-92xm267,-129v0,77,-43,133,-127,133v-84,0,-127,-56,-127,-133v0,-77,43,-133,127,-133v84,0,127,56,127,133","w":280},"\u00d2":{"d":"195,-129v0,-35,-7,-91,-55,-91v-48,0,-55,56,-55,91v0,35,7,92,55,92v48,0,55,-57,55,-92xm267,-129v0,77,-43,133,-127,133v-84,0,-127,-56,-127,-133v0,-77,43,-133,127,-133v84,0,127,56,127,133xm130,-275r-56,-54r65,0r35,54r-44,0","w":280},"\u00d5":{"d":"115,-324v24,0,57,33,68,0r25,0v-4,26,-18,44,-43,44v0,0,-59,-29,-67,5r-26,0v3,-25,16,-49,43,-49xm195,-129v0,-35,-7,-91,-55,-91v-48,0,-55,56,-55,91v0,35,7,92,55,92v48,0,55,-57,55,-92xm267,-129v0,77,-43,133,-127,133v-84,0,-127,-56,-127,-133v0,-77,43,-133,127,-133v84,0,127,56,127,133","w":280},"\u00da":{"d":"103,-275r35,-54r65,0r-57,54r-43,0xm152,-216r0,-42r102,0r0,42r-20,0r0,127v0,67,-42,93,-105,93v-141,0,-98,-105,-105,-220r-18,0r0,-42r113,0r0,42r-25,0r0,125v0,28,8,54,41,54v69,0,34,-113,42,-179r-25,0","w":259},"\u00db":{"d":"152,-216r0,-42r102,0r0,42r-20,0r0,127v0,67,-42,93,-105,93v-141,0,-98,-105,-105,-220r-18,0r0,-42r113,0r0,42r-25,0r0,125v0,28,8,54,41,54v69,0,34,-113,42,-179r-25,0xm158,-275r-22,-29r-21,29r-47,0r41,-54r55,0r40,54r-46,0","w":259},"\u00dc":{"d":"147,-275r0,-44r56,0r0,44r-56,0xm70,-275r0,-44r56,0r0,44r-56,0xm152,-216r0,-42r102,0r0,42r-20,0r0,127v0,67,-42,93,-105,93v-141,0,-98,-105,-105,-220r-18,0r0,-42r113,0r0,42r-25,0r0,125v0,28,8,54,41,54v69,0,34,-113,42,-179r-25,0","w":259},"\u00d9":{"d":"152,-216r0,-42r102,0r0,42r-20,0r0,127v0,67,-42,93,-105,93v-141,0,-98,-105,-105,-220r-18,0r0,-42r113,0r0,42r-25,0r0,125v0,28,8,54,41,54v69,0,34,-113,42,-179r-25,0xm127,-275r-57,-54r65,0r35,54r-43,0","w":259},"\u00dd":{"d":"103,-275r35,-54r65,0r-57,54r-43,0xm135,-145r39,-71r-23,0r0,-42r103,0r0,42r-15,0r-74,123r0,51r30,0r0,42r-130,0r0,-42r30,0r0,-51r-75,-123r-14,0r0,-42r115,0r0,42r-25,0","w":259},"\u00e1":{"d":"76,-225r36,-53r64,0r-56,53r-44,0xm136,0v-1,-8,2,-21,-1,-27v-16,27,-30,33,-61,33v-57,0,-65,-42,-65,-57v2,-68,63,-73,123,-69v0,-20,0,-47,-26,-47v-20,0,-23,14,-26,34r-62,0v3,-53,38,-69,87,-69v116,0,84,73,89,162r18,0r0,40r-76,0xm133,-89v-31,-1,-60,1,-61,32v0,13,7,23,22,23v28,0,39,-30,39,-55","w":219},"\u00e2":{"d":"136,0v-1,-8,2,-21,-1,-27v-16,27,-30,33,-61,33v-57,0,-65,-42,-65,-57v2,-68,63,-73,123,-69v0,-20,0,-47,-26,-47v-20,0,-23,14,-26,34r-62,0v3,-53,38,-69,87,-69v116,0,84,73,89,162r18,0r0,40r-76,0xm133,-89v-31,-1,-60,1,-61,32v0,13,7,23,22,23v28,0,39,-30,39,-55xm131,-225r-21,-28r-21,28r-47,0r40,-53r56,0r40,53r-47,0","w":219},"\u00e4":{"d":"121,-225r0,-44r55,0r0,44r-55,0xm44,-225r0,-44r55,0r0,44r-55,0xm136,0v-1,-8,2,-21,-1,-27v-16,27,-30,33,-61,33v-57,0,-65,-42,-65,-57v2,-68,63,-73,123,-69v0,-20,0,-47,-26,-47v-20,0,-23,14,-26,34r-62,0v3,-53,38,-69,87,-69v116,0,84,73,89,162r18,0r0,40r-76,0xm133,-89v-31,-1,-60,1,-61,32v0,13,7,23,22,23v28,0,39,-30,39,-55","w":219},"\u00e0":{"d":"136,0v-1,-8,2,-21,-1,-27v-16,27,-30,33,-61,33v-57,0,-65,-42,-65,-57v2,-68,63,-73,123,-69v0,-20,0,-47,-26,-47v-20,0,-23,14,-26,34r-62,0v3,-53,38,-69,87,-69v116,0,84,73,89,162r18,0r0,40r-76,0xm133,-89v-31,-1,-60,1,-61,32v0,13,7,23,22,23v28,0,39,-30,39,-55xm100,-225r-56,-53r65,0r35,53r-44,0","w":219},"\u00e5":{"d":"70,-258v0,-22,18,-41,40,-41v22,0,40,19,40,41v0,22,-18,40,-40,40v-22,0,-40,-18,-40,-40xm94,-258v0,9,7,16,16,16v9,0,17,-7,17,-16v0,-9,-8,-17,-17,-17v-9,0,-16,8,-16,17xm136,0v-1,-8,2,-21,-1,-27v-16,27,-30,33,-61,33v-57,0,-65,-42,-65,-57v2,-68,63,-73,123,-69v0,-20,0,-47,-26,-47v-20,0,-23,14,-26,34r-62,0v3,-53,38,-69,87,-69v116,0,84,73,89,162r18,0r0,40r-76,0xm133,-89v-31,-1,-60,1,-61,32v0,13,7,23,22,23v28,0,39,-30,39,-55","w":219},"\u00e3":{"d":"136,0v-1,-8,2,-21,-1,-27v-16,27,-30,33,-61,33v-57,0,-65,-42,-65,-57v2,-68,63,-73,123,-69v0,-20,0,-47,-26,-47v-20,0,-23,14,-26,34r-62,0v3,-53,38,-69,87,-69v116,0,84,73,89,162r18,0r0,40r-76,0xm133,-89v-31,-1,-60,1,-61,32v0,13,7,23,22,23v28,0,39,-30,39,-55xm85,-274v23,-1,58,34,68,0r26,0v-4,26,-19,45,-44,45v-31,0,-58,-29,-67,4r-26,0v3,-25,17,-48,43,-49","w":219},"\u00e9":{"d":"75,-225r35,-53r65,0r-57,53r-43,0xm73,-117r60,0v0,-14,-1,-45,-28,-45v-30,0,-32,37,-32,45xm135,-55r63,0v-8,46,-49,61,-91,61v-72,0,-101,-43,-101,-105v0,-61,38,-103,100,-103v71,0,98,52,93,120r-126,0v0,21,4,48,34,48v22,0,28,-15,28,-21"},"\u00ea":{"d":"73,-117r60,0v0,-14,-1,-45,-28,-45v-30,0,-32,37,-32,45xm135,-55r63,0v-8,46,-49,61,-91,61v-72,0,-101,-43,-101,-105v0,-61,38,-103,100,-103v71,0,98,52,93,120r-126,0v0,21,4,48,34,48v22,0,28,-15,28,-21xm130,-225r-21,-28r-22,28r-46,0r40,-53r55,0r41,53r-47,0"},"\u00eb":{"d":"120,-225r0,-44r55,0r0,44r-55,0xm42,-225r0,-44r56,0r0,44r-56,0xm73,-117r60,0v0,-14,-1,-45,-28,-45v-30,0,-32,37,-32,45xm135,-55r63,0v-8,46,-49,61,-91,61v-72,0,-101,-43,-101,-105v0,-61,38,-103,100,-103v71,0,98,52,93,120r-126,0v0,21,4,48,34,48v22,0,28,-15,28,-21"},"\u00e8":{"d":"73,-117r60,0v0,-14,-1,-45,-28,-45v-30,0,-32,37,-32,45xm135,-55r63,0v-8,46,-49,61,-91,61v-72,0,-101,-43,-101,-105v0,-61,38,-103,100,-103v71,0,98,52,93,120r-126,0v0,21,4,48,34,48v22,0,28,-15,28,-21xm99,-225r-57,-53r65,0r36,53r-44,0"},"\u00ed":{"d":"29,-40r0,-117r-20,0r0,-39r87,0r0,156r18,0r0,40r-105,0r0,-40r20,0xm26,-225r36,-53r64,0r-56,53r-44,0","w":119},"\u00ee":{"d":"29,-40r0,-117r-20,0r0,-39r87,0r0,156r18,0r0,40r-105,0r0,-40r20,0xm81,-225r-21,-28r-21,28r-47,0r40,-53r56,0r40,53r-47,0","w":119},"\u00ef":{"d":"29,-40r0,-117r-20,0r0,-39r87,0r0,156r18,0r0,40r-105,0r0,-40r20,0xm71,-225r0,-44r55,0r0,44r-55,0xm-6,-225r0,-44r55,0r0,44r-55,0","w":119},"\u00ec":{"d":"29,-40r0,-117r-20,0r0,-39r87,0r0,156r18,0r0,40r-105,0r0,-40r20,0xm50,-225r-56,-53r65,0r35,53r-44,0","w":119},"\u00f1":{"d":"95,-274v24,-1,58,34,68,0r26,0v-4,26,-19,45,-44,45v-31,0,-58,-29,-67,4r-26,0v4,-24,17,-47,43,-49xm148,-40r0,-81v0,-16,0,-37,-24,-37v-40,-1,-26,76,-28,118r18,0r0,40r-105,0r0,-40r20,0r0,-117r-20,0r0,-39r83,0v1,10,-2,25,1,33v9,-29,33,-39,61,-39v27,0,61,10,61,54r0,108r18,0r0,40r-103,0r0,-40r18,0","w":240},"\u00f3":{"d":"76,-225r36,-53r64,0r-56,53r-44,0xm10,-98v0,-61,38,-104,100,-104v63,0,100,43,100,104v0,60,-38,104,-100,104v-61,0,-100,-44,-100,-104xm110,-160v-20,0,-31,18,-31,62v0,45,10,62,31,62v20,0,31,-17,31,-62v0,-45,-10,-62,-31,-62","w":219},"\u00f4":{"d":"10,-98v0,-61,38,-104,100,-104v63,0,100,43,100,104v0,60,-38,104,-100,104v-61,0,-100,-44,-100,-104xm110,-160v-20,0,-31,18,-31,62v0,45,10,62,31,62v20,0,31,-17,31,-62v0,-45,-10,-62,-31,-62xm131,-225r-21,-28r-21,28r-47,0r40,-53r56,0r40,53r-47,0","w":219},"\u00f6":{"d":"121,-225r0,-44r55,0r0,44r-55,0xm44,-225r0,-44r55,0r0,44r-55,0xm10,-98v0,-61,38,-104,100,-104v63,0,100,43,100,104v0,60,-38,104,-100,104v-61,0,-100,-44,-100,-104xm110,-160v-20,0,-31,18,-31,62v0,45,10,62,31,62v20,0,31,-17,31,-62v0,-45,-10,-62,-31,-62","w":219},"\u00f2":{"d":"10,-98v0,-61,38,-104,100,-104v63,0,100,43,100,104v0,60,-38,104,-100,104v-61,0,-100,-44,-100,-104xm110,-160v-20,0,-31,18,-31,62v0,45,10,62,31,62v20,0,31,-17,31,-62v0,-45,-10,-62,-31,-62xm100,-225r-56,-53r65,0r35,53r-44,0","w":219},"\u00f5":{"d":"85,-274v23,-1,58,34,68,0r26,0v-4,26,-19,45,-44,45v-31,0,-58,-29,-67,4r-26,0v3,-25,17,-48,43,-49xm10,-98v0,-61,38,-104,100,-104v63,0,100,43,100,104v0,60,-38,104,-100,104v-61,0,-100,-44,-100,-104xm110,-160v-20,0,-31,18,-31,62v0,45,10,62,31,62v20,0,31,-17,31,-62v0,-45,-10,-62,-31,-62","w":219},"\u00fa":{"d":"80,-225r35,-53r65,0r-57,53r-43,0xm20,-60r0,-97r-20,0r0,-39r87,0r0,127v0,17,6,28,23,28v41,0,20,-74,25,-116r-19,0r0,-39r88,0r0,156r18,0r0,40r-81,0v-1,-9,2,-23,-1,-30v-8,25,-36,36,-63,36v-57,0,-57,-45,-57,-66","w":226},"\u00fb":{"d":"20,-60r0,-97r-20,0r0,-39r87,0r0,127v0,17,6,28,23,28v41,0,20,-74,25,-116r-19,0r0,-39r88,0r0,156r18,0r0,40r-81,0v-1,-9,2,-23,-1,-30v-8,25,-36,36,-63,36v-57,0,-57,-45,-57,-66xm135,-225r-22,-28r-21,28r-47,0r41,-53r55,0r40,53r-46,0","w":226},"\u00fc":{"d":"124,-225r0,-44r56,0r0,44r-56,0xm47,-225r0,-44r56,0r0,44r-56,0xm20,-60r0,-97r-20,0r0,-39r87,0r0,127v0,17,6,28,23,28v41,0,20,-74,25,-116r-19,0r0,-39r88,0r0,156r18,0r0,40r-81,0v-1,-9,2,-23,-1,-30v-8,25,-36,36,-63,36v-57,0,-57,-45,-57,-66","w":226},"\u00f9":{"d":"20,-60r0,-97r-20,0r0,-39r87,0r0,127v0,17,6,28,23,28v41,0,20,-74,25,-116r-19,0r0,-39r88,0r0,156r18,0r0,40r-81,0v-1,-9,2,-23,-1,-30v-8,25,-36,36,-63,36v-57,0,-57,-45,-57,-66xm104,-225r-57,-53r65,0r35,53r-43,0","w":226},"\u00fd":{"d":"76,-225r36,-53r64,0r-56,53r-44,0xm4,-157r0,-39r102,0r0,39r-19,0r30,85r27,-85r-17,0r0,-39r89,0r0,39r-11,0r-72,171v-5,37,-56,56,-98,44r0,-45v14,6,44,5,46,-12r-63,-158r-14,0","w":219},"\u00ff":{"d":"4,-157r0,-39r102,0r0,39r-19,0r30,85r27,-85r-17,0r0,-39r89,0r0,39r-11,0r-72,171v-5,37,-56,56,-98,44r0,-45v14,6,44,5,46,-12r-63,-158r-14,0xm125,-225r0,-44r56,0r0,44r-56,0xm48,-225r0,-44r56,0r0,44r-56,0","w":219},"\u00a0":{"w":100}}}); // JavaScript Document function initCufon (elementOverride) { var elements = new Array ( 'h2', '#content h3', '#widgets h3', '#nav li', '.subNav li', '.subnavTabs li', '#widgets .bookOnline p', '.pageGallery .mediaList dt', '.pageGalleryWithDownload .mediaList dt', '.recordList .choiceItem .moreLinks a', '#widgets .moreLinks a:not(#widgets .calendarHolder .moreLinks a)', '.relatedCrossSell .moreLinks a', '.calendar caption', '.homepage .col2 .txt p', '.homepage .col3 .choiceItem .copy .moreLinks a', '.homepage .col3 .crossSell h4', '.recordList .whatson .col1 .choiceItem h4', '.whatsonCategories .col1 .choiceItem h4', '.singleRecord .whatson .col1 .itemHeader', //'.txt blockquote' // Target quotes more specifically, as it affects twitter feeds, which we don't want Cufon-ised. Andrew '.tab blockquote', '.introduction blockquote', '.text blockquote', '.news blockquote', '.sectionHomepage blockquote', '.sponsor blockquote', '.text2cols blockquote', '.calendar .verticalCalendarHolder td.events ol li .moreLinks a' ); if (typeof (elementOverride) == 'string' && elementOverride.length > 3) elements = elementOverride.split(','); else if (typeof (elementOverride) == 'object') elements = elementOverride; /* use element array instead of string! tab font color goes skewiff otherwise (weird but true) */ //Cufon.replace(elements,{separate: 'none'}); // force cufon to use 1 cufon element /*if ($('.cufon-alt').html()) Cufon.refresh(elements); else Cufon.replace(elements);*/ // forceHitArea to prevent IE7 bug if ($('.cufon-alt').html()) Cufon.refresh(elements,{forceHitArea:true}); else Cufon.replace(elements, {forceHitArea:true} ); } initCufon(); $(document).ready( function() { $(".calendar .keySet .keyText").click(function () { Cufon.refresh(); }); $("#resetTimetable").click(function () { Cufon.refresh(); }); });