1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/browser/components/preferences/fonts.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,113 @@ 1.4 +/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.8 + 1.9 +// browser.display.languageList LOCK ALL when LOCKED 1.10 + 1.11 +const kDefaultFontType = "font.default.%LANG%"; 1.12 +const kFontNameFmtSerif = "font.name.serif.%LANG%"; 1.13 +const kFontNameFmtSansSerif = "font.name.sans-serif.%LANG%"; 1.14 +const kFontNameFmtMonospace = "font.name.monospace.%LANG%"; 1.15 +const kFontNameListFmtSerif = "font.name-list.serif.%LANG%"; 1.16 +const kFontNameListFmtSansSerif = "font.name-list.sans-serif.%LANG%"; 1.17 +const kFontNameListFmtMonospace = "font.name-list.monospace.%LANG%"; 1.18 +const kFontSizeFmtVariable = "font.size.variable.%LANG%"; 1.19 +const kFontSizeFmtFixed = "font.size.fixed.%LANG%"; 1.20 +const kFontMinSizeFmt = "font.minimum-size.%LANG%"; 1.21 + 1.22 +var gFontsDialog = { 1.23 + _selectLanguageGroup: function (aLanguageGroup) 1.24 + { 1.25 + var prefs = [{ format: kDefaultFontType, type: "string", element: "defaultFontType", fonttype: null}, 1.26 + { format: kFontNameFmtSerif, type: "fontname", element: "serif", fonttype: "serif" }, 1.27 + { format: kFontNameFmtSansSerif, type: "fontname", element: "sans-serif", fonttype: "sans-serif" }, 1.28 + { format: kFontNameFmtMonospace, type: "fontname", element: "monospace", fonttype: "monospace" }, 1.29 + { format: kFontNameListFmtSerif, type: "unichar", element: null, fonttype: "serif" }, 1.30 + { format: kFontNameListFmtSansSerif, type: "unichar", element: null, fonttype: "sans-serif" }, 1.31 + { format: kFontNameListFmtMonospace, type: "unichar", element: null, fonttype: "monospace" }, 1.32 + { format: kFontSizeFmtVariable, type: "int", element: "sizeVar", fonttype: null }, 1.33 + { format: kFontSizeFmtFixed, type: "int", element: "sizeMono", fonttype: null }, 1.34 + { format: kFontMinSizeFmt, type: "int", element: "minSize", fonttype: null }]; 1.35 + var preferences = document.getElementById("fontPreferences"); 1.36 + for (var i = 0; i < prefs.length; ++i) { 1.37 + var preference = document.getElementById(prefs[i].format.replace(/%LANG%/, aLanguageGroup)); 1.38 + if (!preference) { 1.39 + preference = document.createElement("preference"); 1.40 + var name = prefs[i].format.replace(/%LANG%/, aLanguageGroup); 1.41 + preference.id = name; 1.42 + preference.setAttribute("name", name); 1.43 + preference.setAttribute("type", prefs[i].type); 1.44 + preferences.appendChild(preference); 1.45 + } 1.46 + 1.47 + if (!prefs[i].element) 1.48 + continue; 1.49 + 1.50 + var element = document.getElementById(prefs[i].element); 1.51 + if (element) { 1.52 + element.setAttribute("preference", preference.id); 1.53 + 1.54 + if (prefs[i].fonttype) 1.55 + FontBuilder.buildFontList(aLanguageGroup, prefs[i].fonttype, element); 1.56 + 1.57 + preference.setElementValue(element); 1.58 + } 1.59 + } 1.60 + }, 1.61 + 1.62 + readFontLanguageGroup: function () 1.63 + { 1.64 + var languagePref = document.getElementById("font.language.group"); 1.65 + this._selectLanguageGroup(languagePref.value); 1.66 + return undefined; 1.67 + }, 1.68 + 1.69 + readFontSelection: function (aElement) 1.70 + { 1.71 + // Determine the appropriate value to select, for the following cases: 1.72 + // - there is no setting 1.73 + // - the font selected by the user is no longer present (e.g. deleted from 1.74 + // fonts folder) 1.75 + var preference = document.getElementById(aElement.getAttribute("preference")); 1.76 + if (preference.value) { 1.77 + var fontItems = aElement.getElementsByAttribute("value", preference.value); 1.78 + 1.79 + // There is a setting that actually is in the list. Respect it. 1.80 + if (fontItems.length > 0) 1.81 + return undefined; 1.82 + } 1.83 + 1.84 + var defaultValue = aElement.firstChild.firstChild.getAttribute("value"); 1.85 + var languagePref = document.getElementById("font.language.group"); 1.86 + preference = document.getElementById("font.name-list." + aElement.id + "." + languagePref.value); 1.87 + if (!preference || !preference.hasUserValue) 1.88 + return defaultValue; 1.89 + 1.90 + var fontNames = preference.value.split(","); 1.91 + var stripWhitespace = /^\s*(.*)\s*$/; 1.92 + 1.93 + for (var i = 0; i < fontNames.length; ++i) { 1.94 + var fontName = fontNames[i].replace(stripWhitespace, "$1"); 1.95 + fontItems = aElement.getElementsByAttribute("value", fontName); 1.96 + if (fontItems.length) 1.97 + break; 1.98 + } 1.99 + if (fontItems.length) 1.100 + return fontItems[0].getAttribute("value"); 1.101 + return defaultValue; 1.102 + }, 1.103 + 1.104 + readUseDocumentFonts: function () 1.105 + { 1.106 + var preference = document.getElementById("browser.display.use_document_fonts"); 1.107 + return preference.value == 1; 1.108 + }, 1.109 + 1.110 + writeUseDocumentFonts: function () 1.111 + { 1.112 + var useDocumentFonts = document.getElementById("useDocumentFonts"); 1.113 + return useDocumentFonts.checked ? 1 : 0; 1.114 + } 1.115 +}; 1.116 +