src/google/fontapiparser.js in webfontloader-1.3.0 vs src/google/fontapiparser.js in webfontloader-1.3.1

- old
+ new

@@ -1,5 +1,9 @@ +goog.provide('webfont.FontApiParser'); + +goog.require('webfont.FontVariationDescription'); + /** * @constructor */ webfont.FontApiParser = function(fontFamilies) { this.fontFamilies_ = fontFamilies; @@ -54,124 +58,128 @@ webfont.FontApiParser.VARIATION_MATCH = new RegExp("^(thin|(?:(?:extra|ultra)-?)?light|regular|book|medium|" + "(?:(?:semi|demi|extra|ultra)-?)?bold|black|heavy|l|r|b|[1-9]00)?(n|i" + "|normal|italic)?$"); -webfont.FontApiParser.prototype.parse = function() { - var length = this.fontFamilies_.length; +goog.scope(function () { + var FontApiParser = webfont.FontApiParser; - for (var i = 0; i < length; i++) { - var elements = this.fontFamilies_[i].split(":"); - var fontFamily = elements[0].replace(/\+/g, " "); - var variations = ['n4']; + FontApiParser.prototype.parse = function() { + var length = this.fontFamilies_.length; - if (elements.length >= 2) { - var fvds = this.parseVariations_(elements[1]); + for (var i = 0; i < length; i++) { + var elements = this.fontFamilies_[i].split(":"); + var fontFamily = elements[0].replace(/\+/g, " "); + var variations = ['n4']; - if (fvds.length > 0) { - variations = fvds; + if (elements.length >= 2) { + var fvds = this.parseVariations_(elements[1]); + + if (fvds.length > 0) { + variations = fvds; + } + if (elements.length == 3) { + var subsets = this.parseSubsets_(elements[2]); + if (subsets.length > 0) { + var fontTestString = FontApiParser.INT_FONTS[subsets[0]]; + + if (fontTestString) { + this.fontTestStrings_[fontFamily] = fontTestString; + } + } + } } - if (elements.length == 3) { - var subsets = this.parseSubsets_(elements[2]); - if (subsets.length > 0) { - var fontTestString = webfont.FontApiParser.INT_FONTS[subsets[0]]; - if (fontTestString) { - this.fontTestStrings_[fontFamily] = fontTestString; - } - } + // For backward compatibility + if (!this.fontTestStrings_[fontFamily]) { + var hanumanTestString = FontApiParser.INT_FONTS[fontFamily]; + if (hanumanTestString) { + this.fontTestStrings_[fontFamily] = hanumanTestString; + } } + this.parsedFontFamilies_.push(fontFamily); + this.variations_[fontFamily] = variations; } + }; - // For backward compatibility - if (!this.fontTestStrings_[fontFamily]) { - var hanumanTestString = webfont.FontApiParser.INT_FONTS[fontFamily]; - if (hanumanTestString) { - this.fontTestStrings_[fontFamily] = hanumanTestString; - } + FontApiParser.prototype.generateFontVariationDescription_ = function(variation) { + if (!variation.match(/^[\w]+$/)) { + return ''; } - this.parsedFontFamilies_.push(fontFamily); - this.variations_[fontFamily] = variations; - } -}; + var normalizedVariation = variation.toLowerCase(); + var groups = FontApiParser.VARIATION_MATCH.exec(normalizedVariation); + if (groups == null) { + return ''; + } + var styleMatch = this.normalizeStyle_(groups[2]); + var weightMatch = this.normalizeWeight_(groups[1]); + var css = this.fvd_.expand([styleMatch, weightMatch].join('')); + return css ? this.fvd_.compact(css) : null; + }; -webfont.FontApiParser.prototype.generateFontVariationDescription_ = function(variation) { - if (!variation.match(/^[\w]+$/)) { - return ''; - } - var normalizedVariation = variation.toLowerCase(); - var groups = webfont.FontApiParser.VARIATION_MATCH.exec(normalizedVariation); - if (groups == null) { - return ''; - } - var styleMatch = this.normalizeStyle_(groups[2]); - var weightMatch = this.normalizeWeight_(groups[1]); - var css = this.fvd_.expand([styleMatch, weightMatch].join('')); - return css ? this.fvd_.compact(css) : null; -}; + FontApiParser.prototype.normalizeStyle_ = function(parsedStyle) { + if (parsedStyle == null || parsedStyle == '') { + return 'n'; + } + return FontApiParser.STYLES[parsedStyle]; + }; -webfont.FontApiParser.prototype.normalizeStyle_ = function(parsedStyle) { - if (parsedStyle == null) { - return 'n'; - } - return webfont.FontApiParser.STYLES[parsedStyle]; -}; + FontApiParser.prototype.normalizeWeight_ = function(parsedWeight) { + if (parsedWeight == null || parsedWeight == '') { + return '4'; + } + var weight = FontApiParser.WEIGHTS[parsedWeight]; + if (weight) { + return weight; + } + if (isNaN(parsedWeight)) { + return '4'; + } + return parsedWeight.substr(0, 1); + }; -webfont.FontApiParser.prototype.normalizeWeight_ = function(parsedWeight) { - if (parsedWeight == null) { - return '4'; - } - var weight = webfont.FontApiParser.WEIGHTS[parsedWeight]; - if (weight) { - return weight; - } - if (isNaN(parsedWeight)) { - return '4'; - } - return parsedWeight.substr(0, 1); -}; + FontApiParser.prototype.parseVariations_ = function(variations) { + var finalVariations = []; -webfont.FontApiParser.prototype.parseVariations_ = function(variations) { - var finalVariations = []; + if (!variations) { + return finalVariations; + } + var providedVariations = variations.split(","); + var length = providedVariations.length; - if (!variations) { - return finalVariations; - } - var providedVariations = variations.split(","); - var length = providedVariations.length; + for (var i = 0; i < length; i++) { + var variation = providedVariations[i]; + var fvd = this.generateFontVariationDescription_(variation); - for (var i = 0; i < length; i++) { - var variation = providedVariations[i]; - var fvd = this.generateFontVariationDescription_(variation); - - if (fvd) { - finalVariations.push(fvd); + if (fvd) { + finalVariations.push(fvd); + } } - } - return finalVariations; -}; + return finalVariations; + }; -webfont.FontApiParser.prototype.parseSubsets_ = function(subsets) { - var finalSubsets = []; + FontApiParser.prototype.parseSubsets_ = function(subsets) { + var finalSubsets = []; - if (!subsets) { - return finalSubsets; - } - return subsets.split(","); -}; + if (!subsets) { + return finalSubsets; + } + return subsets.split(","); + }; -webfont.FontApiParser.prototype.getFontFamilies = function() { - return this.parsedFontFamilies_; -}; + FontApiParser.prototype.getFontFamilies = function() { + return this.parsedFontFamilies_; + }; -webfont.FontApiParser.prototype.getVariations = function() { - return this.variations_; -}; + FontApiParser.prototype.getVariations = function() { + return this.variations_; + }; -webfont.FontApiParser.prototype.getFontTestStrings = function() { - return this.fontTestStrings_; -}; + FontApiParser.prototype.getFontTestStrings = function() { + return this.fontTestStrings_; + }; +});