Bug 95227. Allow serif/sansserif defaults to be set per-language. Patch by Masayuki Nakano, r=dbaron,amadare,danm,smontagu,rbs,neil sr=roc

This commit is contained in:
roc+%cs.cmu.edu 2005-01-23 23:58:32 +00:00
Родитель bc71b915ac
Коммит 2a34aa6a5d
20 изменённых файлов: 237 добавлений и 415 удалений

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

@ -301,11 +301,11 @@ TranslatePropFont(unsigned char *aRegValue, DWORD aRegValueLength,
if (isSerif) {
prefs->SetCharPref("font.name.serif.x-western",
NS_REINTERPRET_CAST(char *, aRegValue));
prefs->SetCharPref("font.default", "serif");
prefs->SetCharPref("font.default.x-western", "serif");
} else {
prefs->SetCharPref("font.name.sans-serif.x-western",
NS_REINTERPRET_CAST(char *, aRegValue));
prefs->SetCharPref("font.default", "sans-serif");
prefs->SetCharPref("font.default.x-western", "sans-serif");
}
}

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

@ -49,7 +49,7 @@ catch(e)
var fontEnumerator = null;
var globalFonts = null;
var fontTypes = ["serif", "sans-serif", "monospace"];
var variableSize, fixedSize, minSize, languageList;
var defaultFont, variableSize, fixedSize, minSize, languageList;
var languageData = [];
var currentLanguage;
var gPrefutilitiesBundle;
@ -59,33 +59,28 @@ var gPrefWindow = window.opener.parent.hPrefWindow;
function GetFields()
{
var dataObject = { };
// store data for language independent widgets
var lists = ["selectLangs", "proportionalFont"];
for( var i = 0; i < lists.length; i++ )
{
if( !( "dataEls" in dataObject ) )
dataObject.dataEls = new Object;
dataObject.dataEls[ lists[i] ] = new Object;
dataObject.dataEls[ lists[i] ].value = document.getElementById( lists[i] ).value;
}
if( !( "dataEls" in dataObject ) )
dataObject.dataEls = new Object;
dataObject.dataEls[ "selectLangs" ] = new Object;
dataObject.dataEls[ "selectLangs" ].value = document.getElementById( "selectLangs" ).value;
dataObject.defaultFont = document.getElementById( "proportionalFont" ).value;
dataObject.fontDPI = document.getElementById( "screenResolution" ).value;
dataObject.useMyFonts = document.getElementById( "useMyFonts" ).checked ? 1 : 0;
var items = ["foregroundText", "background", "unvisitedLinks", "visitedLinks", "browserUseSystemColors", "browserUnderlineAnchors", "useMyColors", "useMyFonts"];
for (i = 0; i < items.length; ++i)
dataObject.dataEls[items[i]] = new Object;
dataObject.dataEls["foregroundText"].value = document.getElementById("foregroundtextmenu").color;
dataObject.dataEls["background"].value = document.getElementById("backgroundmenu").color;
dataObject.dataEls["unvisitedLinks"].value = document.getElementById("unvisitedlinkmenu").color;
dataObject.dataEls["visitedLinks"].value = document.getElementById("visitedlinkmenu").color;
dataObject.fontDPI = document.getElementById( "screenResolution" ).value;
dataObject.useMyFonts = document.getElementById( "useMyFonts" ).checked ? 1 : 0;
dataObject.dataEls["browserUseSystemColors"].checked = document.getElementById("browserUseSystemColors").checked;
dataObject.dataEls["browserUnderlineAnchors"].checked = document.getElementById("browserUnderlineAnchors").checked;
dataObject.dataEls["useMyColors"].checked = document.getElementById("useMyColors").checked;
dataObject.dataEls["useMyFonts"].checked = document.getElementById("useMyFonts").checked;
var items = ["foregroundText", "background", "unvisitedLinks", "visitedLinks", "browserUseSystemColors", "browserUnderlineAnchors", "useMyColors", "useMyFonts"];
for (i = 0; i < items.length; ++i)
dataObject.dataEls[items[i]] = new Object;
dataObject.dataEls["foregroundText"].value = document.getElementById("foregroundtextmenu").color;
dataObject.dataEls["background"].value = document.getElementById("backgroundmenu").color;
dataObject.dataEls["unvisitedLinks"].value = document.getElementById("unvisitedlinkmenu").color;
dataObject.dataEls["visitedLinks"].value = document.getElementById("visitedlinkmenu").color;
dataObject.dataEls["browserUseSystemColors"].checked = document.getElementById("browserUseSystemColors").checked;
dataObject.dataEls["browserUnderlineAnchors"].checked = document.getElementById("browserUnderlineAnchors").checked;
dataObject.dataEls["useMyColors"].checked = document.getElementById("useMyColors").checked;
dataObject.dataEls["useMyFonts"].checked = document.getElementById("useMyFonts").checked;
// save current state for language dependent fields and store
saveState();
@ -100,25 +95,19 @@ function SetFields(aDataObject)
languageData = "languageData" in aDataObject ? aDataObject.languageData : languageData ;
currentLanguage = "currentLanguage" in aDataObject ? aDataObject.currentLanguage : null ;
var lists = ["selectLangs", "proportionalFont"];
var prefvalue;
for( var i = 0; i < lists.length; i++ )
var element = document.getElementById( "selectLangs" );
if( "dataEls" in aDataObject )
{
var element = document.getElementById( lists[i] );
if( "dataEls" in aDataObject )
element.selectedItem = element.getElementsByAttribute( "value", aDataObject.dataEls[ "selectLangs" ].value )[0];
}
else
{
var prefstring = element.getAttribute( "prefstring" );
var preftype = element.getAttribute( "preftype" );
if( prefstring && preftype )
{
element.selectedItem = element.getElementsByAttribute( "value", aDataObject.dataEls[ lists[i] ].value )[0];
}
else
{
var prefstring = element.getAttribute( "prefstring" );
var preftype = element.getAttribute( "preftype" );
if( prefstring && preftype )
{
prefvalue = gPrefWindow.getPref( preftype, prefstring );
element.selectedItem = element.getElementsByAttribute( "value", prefvalue )[0];
}
var prefvalue = gPrefWindow.getPref( preftype, prefstring );
element.selectedItem = element.getElementsByAttribute( "value", prefvalue )[0];
}
}
@ -188,6 +177,7 @@ function SetFields(aDataObject)
function Startup()
{
// Initialize the sub-dialog
defaultFont = document.getElementById( "proportionalFont" );
variableSize = document.getElementById( "sizeVar" );
fixedSize = document.getElementById( "sizeMono" );
minSize = document.getElementById( "minSize" );
@ -466,6 +456,7 @@ function saveState()
if( currentLanguage && currentLanguage in languageData &&
"types" in languageData[currentLanguage] )
{
languageData[currentLanguage].defaultFont = defaultFont.value;
languageData[currentLanguage].variableSize = parseInt( variableSize.value );
languageData[currentLanguage].fixedSize = parseInt( fixedSize.value );
languageData[currentLanguage].minSize = parseInt( minSize.value );
@ -511,23 +502,26 @@ function selectLanguage()
listElement.setAttribute( "disabled", "true" );
}
// and set the font sizes
// and set the default font type and the font sizes
var dataObject = gPrefWindow.wsm.dataManager.pageData["chrome://browser/content/pref/pref-fonts.xul"].userData;
var langData = null;
try
{
var sizeVarVal, sizeFixedVal;
var defaultFontVal, sizeVarVal, sizeFixedVal;
if ('languageData' in dataObject) {
langData = dataObject.languageData[currentLanguage];
defaultFontVal = langData.defaultFont;
sizeVarVal = langData.variableSize;
sizeFixedVal = langData.fixedSize;
}
else {
else {
defaultFontVal = gPrefWindow.getPref("string", "font.default." + languageList.value);
var variableSizePref = "font.size.variable." + languageList.value;
sizeVarVal = gPrefWindow.pref.GetIntPref( variableSizePref );
var fixedSizePref = "font.size.fixed." + languageList.value;
sizeFixedVal = gPrefWindow.pref.GetIntPref( fixedSizePref );
}
defaultFont.value = defaultFontVal;
variableSize.selectedItem = variableSize.getElementsByAttribute( "value", sizeVarVal )[0];
fixedSize.selectedItem = fixedSize.getElementsByAttribute( "value", sizeFixedVal )[0];
}

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

@ -107,8 +107,7 @@
accesskey="&proportional.accesskey;"
control="proportionalFont"/>
</hbox>
<menulist id="proportionalFont" flex="1" style="width: 0px;"
preftype="string" prefstring="font.default">
<menulist id="proportionalFont" flex="1" style="width: 0px;">
<menupopup>
<menuitem value="serif"
label="&useDefaultFontSerif.label;"/>

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

@ -1,252 +0,0 @@
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
#
# The Original Code is the Firefox Options Dialog
#
# The Initial Developer of the Original Code is mozilla.org.
# Portions created by the Initial Developer are Copyright (C) 2004
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the LGPL or the GPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK ***** -->
var _elementIDs = ["browserStartupHomepage", "checkForDefault"];
const nsIPrefService = Components.interfaces.nsIPrefService;
const nsIPrefLocalizedString = Components.interfaces.nsIPrefLocalizedString;
const PREFSERVICE_CONTRACTID = "@mozilla.org/preferences-service;1";
function setHomePageToCurrentPage()
{
if (top.opener) {
var homePageField = document.getElementById("browserStartupHomepage");
var newVal = "";
var tabbrowser = top.opener.document.getElementById("content");
var l = tabbrowser.browsers.length;
for (var i = 0; i < l; i++) {
if (i)
newVal += "|";
newVal += tabbrowser.getBrowserAtIndex(i).webNavigation.currentURI.spec;
}
homePageField.value = newVal;
}
}
function setHomePageToBookmark()
{
var rv = { url: null };
openDialog("chrome://browser/content/bookmarks/selectBookmark.xul", "",
"centerscreen,chrome,modal=yes,dialog=yes,resizable=yes", rv);
if (rv.url) {
var homePageField = document.getElementById("browserStartupHomepage");
homePageField.value = rv.url;
}
}
function setHomePageToDefaultPage()
{
var prefService = Components.classes[PREFSERVICE_CONTRACTID]
.getService(nsIPrefService);
var pref = prefService.getDefaultBranch(null);
var url = pref.getComplexValue("browser.startup.homepage",
nsIPrefLocalizedString).data;
var homePageField = document.getElementById("browserStartupHomepage");
homePageField.value = url;
}
function onOK()
{
if (!('homepage' in parent))
return;
// Replace pipes with commas to look nicer.
parent.homepage = parent.homepage.replace(/\|/g,', ');
var windowManager = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService();
var windowManagerInterface = windowManager.QueryInterface(Components.interfaces.nsIWindowMediator);
var eb = windowManagerInterface.getEnumerator("navigator:browser");
while (eb.hasMoreElements()) {
// Update the home button tooltip.
var domWin = eb.getNext().QueryInterface(Components.interfaces.nsIDOMWindow);
var homeButton = domWin.document.getElementById("home-button");
if (homeButton)
homeButton.setAttribute("tooltiptext", parent.homepage);
}
}
function Startup()
{
var useButton = document.getElementById("browserUseCurrent");
try {
var browser = top.opener.document.getElementById("content");
var l = browser.mPanelContainer.childNodes.length;
if (l > 1)
useButton.label = useButton.getAttribute("label2");
} catch (e) {
// prefwindow wasn't opened from a browser window, so no current page
useButton.disabled = true;
}
if (parent.hPrefWindow.getPrefIsLocked("browser.startup.homepage")) {
document.getElementById("browserUseCurrent").disabled = true;
document.getElementById("browserUseBookmark").disabled = true;
document.getElementById("browserUseBlank").disabled = true;
}
try {
var shellSvc = Components.classes["@mozilla.org/browser/shell-service;1"]
.getService(Components.interfaces.nsIShellService);
} catch (e) {
document.getElementById("defaultBrowserPrefs").hidden = true;
}
parent.hPrefWindow.registerOKCallbackFunc(onOK);
}
function showConnections()
{
openDialog("chrome://browser/content/pref/pref-connection.xul", "", "centerscreen,chrome,modal=yes,dialog=yes");
}
function showFontsAndColors()
{
openDialog("chrome://browser/content/pref/pref-fonts.xul", "", "centerscreen,chrome,modal=yes,dialog=yes");
}
function saveFontPrefs()
{
var dataObject = top.hPrefWindow.wsm.dataManager.pageData["chrome://browser/content/pref/pref-fonts.xul"].userData;
var pref = top.hPrefWindow.pref;
for (var language in dataObject.languageData) {
for (var type in dataObject.languageData[language].types) {
var fontPrefString = "font.name." + type + "." + language;
var currValue = "";
try {
currValue = pref.CopyUnicharPref(fontPrefString);
}
catch(e) {
}
if (currValue != dataObject.languageData[language].types[type])
pref.SetUnicharPref(fontPrefString, dataObject.languageData[language].types[type]);
}
var variableSizePref = "font.size.variable." + language;
var fixedSizePref = "font.size.fixed." + language;
var minSizePref = "font.minimum-size." + language;
var currVariableSize = 12, currFixedSize = 12, minSizeVal = 0;
try {
currVariableSize = pref.GetIntPref(variableSizePref);
currFixedSize = pref.GetIntPref(fixedSizePref );
minSizeVal = pref.GetIntPref(minSizePref);
}
catch(e) {
}
if (currVariableSize != dataObject.languageData[language].variableSize)
pref.SetIntPref(variableSizePref, dataObject.languageData[language].variableSize);
if (currFixedSize != dataObject.languageData[language].fixedSize)
pref.SetIntPref(fixedSizePref, dataObject.languageData[language].fixedSize);
if (minSizeVal != dataObject.languageData[language].minSize) {
pref.SetIntPref(minSizePref, dataObject.languageData[language].minSize);
}
}
// font scaling
var fontDPI = parseInt(dataObject.fontDPI);
var myFonts = dataObject.dataEls["useMyFonts"].checked;
var defaultFont = dataObject.defaultFont;
var myColors = dataObject.dataEls["useMyColors"].checked;
try {
var currDPI = pref.GetIntPref("browser.display.screen_resolution");
var currFonts = pref.GetIntPref("browser.display.use_document_fonts");
var currColors = pref.GetBoolPref("browser.display.use_document_colors");
var currDefault = pref.CopyUnicharPref( "font.default" );
}
catch(e) {
}
if (currDPI != fontDPI)
pref.SetIntPref("browser.display.screen_resolution", fontDPI);
if (currFonts == myFonts)
pref.SetIntPref("browser.display.use_document_fonts", !myFonts);
if(currDefault != defaultFont)
pref.SetUnicharPref( "font.default", defaultFont );
if (currColors == myColors)
pref.SetBoolPref("browser.display.use_document_colors", !myColors);
var items = ["foregroundText", "background", "unvisitedLinks", "visitedLinks"];
var prefs = ["browser.display.foreground_color", "browser.display.background_color",
"browser.anchor_color", "browser.visited_color"];
var prefvalue;
for (var i = 0; i < items.length; ++i) {
prefvalue = dataObject.dataEls[items[i]].value;
pref.SetUnicharPref(prefs[i], prefvalue)
}
items = ["browserUseSystemColors", "browserUnderlineAnchors"];
prefs = ["browser.display.use_system_colors", "browser.underline_anchors"];
for (i = 0; i < items.length; ++i) {
prefvalue = dataObject.dataEls[items[i]].checked;
pref.SetBoolPref(prefs[i], prefvalue)
}
}
# this function is only reached if the shell service is defined
function checkNow()
{
var shellSvc = Components.classes["@mozilla.org/browser/shell-service;1"]
.getService(Components.interfaces.nsIShellService);
var brandBundle = document.getElementById("bundle_brand");
var shellBundle = document.getElementById("bundle_shell");
var brandShortName = brandBundle.getString("brandShortName");
var promptTitle = shellBundle.getString("setDefaultBrowserTitle");
var promptMessage;
const IPS = Components.interfaces.nsIPromptService;
var psvc = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
.getService(IPS);
if (!shellSvc.isDefaultBrowser(false)) {
promptMessage = shellBundle.getFormattedString("setDefaultBrowserMessage",
[brandShortName]);
var rv = psvc.confirmEx(window, promptTitle, promptMessage,
(IPS.BUTTON_TITLE_YES * IPS.BUTTON_POS_0) +
(IPS.BUTTON_TITLE_NO * IPS.BUTTON_POS_1),
null, null, null, null, { });
if (rv == 0)
shellSvc.setDefaultBrowser(true, false);
}
else {
promptMessage = shellBundle.getFormattedString("alreadyDefaultBrowser",
[brandShortName]);
psvc.alert(window, promptTitle, promptMessage);
}
}
function showLanguages()
{
openDialog("chrome://browser/content/pref/pref-languages.xul", "", "modal,centerscreen,resizable");
}

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

@ -619,7 +619,7 @@ mozilla_set_pref( PtWidget_t *widget, char *option, char *value )
char *font_default = NULL;
char preference[256];
pref->CopyCharPref( "font.default", &font_default );
pref->CopyCharPref( "font.default.x-western", &font_default );
if( !font_default ) font_default = "serif";
sprintf( preference, "font.name.%s.x-western", font_default );
@ -864,7 +864,7 @@ static void mozilla_get_pref( PtWidget_t *widget, char *option, char *value ) {
char *font_default = NULL, *font;
char preference[256];
pref->CopyCharPref( "font.default", &font_default );
pref->CopyCharPref( "font.default.x-western", &font_default );
if( !font_default ) font_default = "serif";
sprintf( preference, "font.name.%s.x-western", font_default );

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

@ -253,11 +253,11 @@ TranslatePropFont(unsigned char *aRegValue, DWORD aRegValueLength,
if (isSerif) {
prefs->SetCharPref("font.name.serif.x-western",
NS_REINTERPRET_CAST(char *, aRegValue));
prefs->SetCharPref("font.default", "serif");
prefs->SetCharPref("font.default.x-western", "serif");
} else {
prefs->SetCharPref("font.name.sans-serif.x-western",
NS_REINTERPRET_CAST(char *, aRegValue));
prefs->SetCharPref("font.default", "sans-serif");
prefs->SetCharPref("font.default.x-western", "sans-serif");
}
}

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

@ -404,10 +404,14 @@ nsFontMetricsXft::Init(const nsFont& aFont, nsIAtom* aLangGroup,
return NS_ERROR_FAILURE;
nsXPIDLCString value;
const char* langGroup;
mLangGroup->GetUTF8String(&langGroup);
// Set up the default font name if it's not set
if (!mGenericFont) {
prefService->CopyCharPref("font.default", getter_Copies(value));
nsCAutoString name("font.default.");
name.Append(langGroup);
prefService->CopyCharPref(name.get(), getter_Copies(value));
if (value.get())
mDefaultFont = value.get();
@ -427,10 +431,6 @@ nsFontMetricsXft::Init(const nsFont& aFont, nsIAtom* aLangGroup,
name.Append("variable");
name.Append(char('.'));
const char* langGroup;
mLangGroup->GetUTF8String(&langGroup);
name.Append(langGroup);
PRInt32 minimum = 0;

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

@ -1626,8 +1626,12 @@ NS_IMETHODIMP nsFontMetricsGTK::Init(const nsFont& aFont, nsIAtom* aLangGroup,
mFont.EnumerateFamilies(FontEnumCallback, this);
nsXPIDLCString value;
const char* langGroup;
mLangGroup->GetUTF8String(&langGroup);
if (!mGeneric) {
gPref->CopyCharPref("font.default", getter_Copies(value));
nsCAutoString name("font.default.");
name.Append(langGroup);
gPref->CopyCharPref(name.get(), getter_Copies(value));
if (value.get()) {
mDefaultFont = value.get();
}
@ -1646,8 +1650,6 @@ NS_IMETHODIMP nsFontMetricsGTK::Init(const nsFont& aFont, nsIAtom* aLangGroup,
name.Append("variable");
}
name.Append(char('.'));
const char* langGroup = nsnull;
mLangGroup->GetUTF8String(&langGroup);
name.Append(langGroup);
PRInt32 minimum = 0;
res = gPref->GetIntPref(name.get(), &minimum);
@ -6743,4 +6745,3 @@ CharSetNameToCodeRangeBits(const char *aCharset,
*aCodeRange2 = charSetInfo->mCodeRange2Bits;
}
#endif

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

@ -208,10 +208,14 @@ nsFontMetricsPango::Init(const nsFont& aFont, nsIAtom* aLangGroup,
return NS_ERROR_FAILURE;
nsXPIDLCString value;
const char* langGroup;
mLangGroup->GetUTF8String(&langGroup);
// Set up the default font name if it's not set
if (!mGenericFont) {
prefService->CopyCharPref("font.default", getter_Copies(value));
nsCAutoString name("font.default.");
name.Append(langGroup);
prefService->CopyCharPref(name.get(), getter_Copies(value));
if (value.get())
mDefaultFont = value.get();
@ -231,10 +235,6 @@ nsFontMetricsPango::Init(const nsFont& aFont, nsIAtom* aLangGroup,
name.Append("variable");
name.Append(char('.'));
const char* langGroup;
mLangGroup->GetUTF8String(&langGroup);
name.Append(langGroup);
PRInt32 minimumInt = 0;

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

@ -376,10 +376,14 @@ nsFontMetricsXft::Init(const nsFont& aFont, nsIAtom* aLangGroup,
return NS_ERROR_FAILURE;
nsXPIDLCString value;
const char* langGroup;
mLangGroup->GetUTF8String(&langGroup);
// Set up the default font name if it's not set
if (!mGenericFont) {
prefService->CopyCharPref("font.default", getter_Copies(value));
nsCAutoString name("font.default.");
name.Append(langGroup);
prefService->CopyCharPref(name.get(), getter_Copies(value));
if (value.get())
mDefaultFont = value.get();
@ -399,10 +403,6 @@ nsFontMetricsXft::Init(const nsFont& aFont, nsIAtom* aLangGroup,
name.Append("variable");
name.Append(char('.'));
const char* langGroup;
mLangGroup->GetUTF8String(&langGroup);
name.Append(langGroup);
PRInt32 minimum = 0;

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

@ -1343,7 +1343,11 @@ nsFontMetricsOS2::RealizeFont()
// set a fallback generic font if the font-family list didn't have one
if (mGeneric.IsEmpty()) {
rv = gPref->CopyUnicharPref("font.default", getter_Copies(value));
const char* langGroup = nsnull;
mLangGroup->GetUTF8String(&langGroup);
pref.Assign("font.default.");
pref.Append(langGroup);
rv = gPref->CopyUnicharPref(pref.get(), getter_Copies(value));
if (NS_SUCCEEDED(rv)) {
mGeneric.Assign(value);
}

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

@ -875,9 +875,14 @@ nsFontPSXft::FindFont(PRUnichar aChar, const nsFont& aFont,
nsXPIDLCString value;
nsCAutoString defaultFont;
nsAutoString langGroupStr;
langGroup->ToString(langGroupStr);
// Set up the default font name if it's not set
if (!fpi.mGenericFont) {
prefService->CopyCharPref("font.default", getter_Copies(value));
nsCAutoString name("font.default.");
LossyAppendUTF16toASCII(langGroupStr, name);
prefService->CopyCharPref(name.get(), getter_Copies(value));
if (value.get())
defaultFont = value.get();
@ -1483,11 +1488,13 @@ nsFontPSFreeType::AddUserPref(nsIAtom *aLang, const nsFont& aFont,
NS_ENSURE_SUCCESS(rv, PR_FALSE);
nsXPIDLCString value;
pref->CopyCharPref("font.default", getter_Copies(value));
nsCAutoString name("font.default.");
name.Append(fpi->lang);
pref->CopyCharPref(name.get(), getter_Copies(value));
if (!value.get())
return PR_FALSE;
nsCAutoString name("font.name.");
name.Assign("font.name.");
name.Append(value);
name.Append(char('.'));
name.Append(fpi->lang);

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

@ -3557,7 +3557,11 @@ nsFontMetricsWin::RealizeFont()
// set a fallback generic font if the font-family list didn't have one
if (mGeneric.IsEmpty()) {
rv = gPref->CopyUnicharPref("font.default", getter_Copies(value));
pref.Assign("font.default.");
const char* langGroup;
mLangGroup->GetUTF8String(&langGroup);
pref.Append(langGroup);
rv = gPref->CopyUnicharPref(pref.get(), getter_Copies(value));
if (NS_SUCCEEDED(rv)) {
mGeneric.Assign(value);
}

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

@ -1975,8 +1975,12 @@ NS_IMETHODIMP nsFontMetricsXlib::Init(const nsFont& aFont, nsIAtom* aLangGroup,
mFont.EnumerateFamilies(FontEnumCallback, this);
nsXPIDLCString value;
const char* langGroup = nsnull;
mLangGroup->GetUTF8String(&langGroup);
if (!mGeneric) {
mFontMetricsContext->mPref->CopyCharPref("font.default", getter_Copies(value));
nsCAutoString name("font.default.");
name.Append(langGroup);
mFontMetricsContext->mPref->CopyCharPref(name.get(), getter_Copies(value));
if (value.get()) {
mDefaultFont = value.get();
}
@ -1995,8 +1999,6 @@ NS_IMETHODIMP nsFontMetricsXlib::Init(const nsFont& aFont, nsIAtom* aLangGroup,
name.Append("variable");
}
name.Append(char('.'));
const char* langGroup = nsnull;
mLangGroup->GetUTF8String(&langGroup);
name.Append(langGroup);
PRInt32 minimum = 0;
res = mFontMetricsContext->mPref->GetIntPref(name.get(), &minimum);
@ -6051,4 +6053,3 @@ void CharSetNameToCodeRangeBits(const char *aCharset,
*aCodeRange2 = charSetInfo->mCodeRange2Bits;
}
#endif /* MOZ_ENABLE_FREETYPE2 */

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

@ -366,7 +366,8 @@ nsPresContext::GetFontPreferences()
font->name.Assign(value);
}
else {
value = nsContentUtils::GetStringPref("font.default");
MAKE_FONT_PREF_KEY(pref, "font.default.", langGroup);
value = nsContentUtils::GetStringPref(pref.get());
if (!value.IsEmpty()) {
mDefaultVariableFont.name.Assign(value);
}

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

@ -49,7 +49,7 @@ catch(e)
var fontEnumerator = null;
var globalFonts = null;
var fontTypes = ["serif", "sans-serif", "monospace"];
var variableSize, fixedSize, minSize, languageList;
var defaultFont, variableSize, fixedSize, minSize, languageList;
var languageData = [];
var currentLanguage;
var gPrefutilitiesBundle;
@ -60,16 +60,11 @@ function GetFields()
var dataObject = parent.hPrefWindow.wsm.dataManager.pageData["chrome://communicator/content/pref/pref-fonts.xul"];
// store data for language independent widgets
var lists = ["selectLangs", "proportionalFont"];
for( var i = 0; i < lists.length; i++ )
{
if( !( "dataEls" in dataObject ) )
dataObject.dataEls = [];
dataObject.dataEls[ lists[i] ] = [];
dataObject.dataEls[ lists[i] ].value = document.getElementById( lists[i] ).value;
}
if( !( "dataEls" in dataObject ) )
dataObject.dataEls = [];
dataObject.dataEls[ "selectLangs" ] = [];
dataObject.dataEls[ "selectLangs" ].value = document.getElementById( "selectLangs" ).value;
dataObject.defaultFont = document.getElementById( "proportionalFont" ).value;
dataObject.fontDPI = document.getElementById( "screenResolution" ).value;
dataObject.useDocFonts = document.getElementById( "browserUseDocumentFonts" ).checked ? 1 : 0;
@ -86,25 +81,19 @@ function SetFields( aDataObject )
languageData = "languageData" in aDataObject ? aDataObject.languageData : languageData ;
currentLanguage = "currentLanguage" in aDataObject ? aDataObject.currentLanguage : null ;
var lists = ["selectLangs", "proportionalFont"];
var prefvalue;
for( var i = 0; i < lists.length; i++ )
var element = document.getElementById( "selectLangs" );
if( "dataEls" in aDataObject )
{
var element = document.getElementById( lists[i] );
if( "dataEls" in aDataObject )
element.selectedItem = element.getElementsByAttribute( "value", aDataObject.dataEls[ "selectLangs" ].value )[0];
}
else
{
var prefstring = element.getAttribute( "prefstring" );
var preftype = element.getAttribute( "preftype" );
if( prefstring && preftype )
{
element.selectedItem = element.getElementsByAttribute( "value", aDataObject.dataEls[ lists[i] ].value )[0];
}
else
{
var prefstring = element.getAttribute( "prefstring" );
var preftype = element.getAttribute( "preftype" );
if( prefstring && preftype )
{
prefvalue = parent.hPrefWindow.getPref( preftype, prefstring );
element.selectedItem = element.getElementsByAttribute( "value", prefvalue )[0];
}
var prefvalue = parent.hPrefWindow.getPref( preftype, prefstring );
element.selectedItem = element.getElementsByAttribute( "value", prefvalue )[0];
}
}
@ -148,6 +137,7 @@ function SetFields( aDataObject )
function Startup()
{
defaultFont = document.getElementById( "proportionalFont" );
variableSize = document.getElementById( "sizeVar" );
fixedSize = document.getElementById( "sizeMono" );
minSize = document.getElementById( "minSize" );
@ -458,12 +448,14 @@ function saveFontPrefs()
}
}
}
var defaultFontPref = "font.default." + language;
var variableSizePref = "font.size.variable." + language;
var fixedSizePref = "font.size.fixed." + language;
var minSizePref = "font.minimum-size." + language;
var currVariableSize = 12, currFixedSize = 12, minSizeVal = 0;
var currDefaultFont = "serif", currVariableSize = 12, currFixedSize = 12, minSizeVal = 0;
try
{
currDefaultFont = pref.CopyUnicharPref( defaultFontPref );
currVariableSize = pref.GetIntPref( variableSizePref );
currFixedSize = pref.GetIntPref( fixedSizePref );
minSizeVal = pref.GetIntPref( minSizePref );
@ -471,11 +463,13 @@ function saveFontPrefs()
catch(e)
{
}
if( currDefaultFont != dataObject.languageData[language].defaultFont )
pref.SetUnicharPref( defaultFontPref, dataObject.languageData[language].defaultFont );
if( currVariableSize != dataObject.languageData[language].variableSize )
pref.SetIntPref( variableSizePref, dataObject.languageData[language].variableSize );
if( currFixedSize != dataObject.languageData[language].fixedSize )
pref.SetIntPref( fixedSizePref, dataObject.languageData[language].fixedSize );
if ( minSizeVal != dataObject.languageData[language].minSize ) {
if( minSizeVal != dataObject.languageData[language].minSize ) {
pref.SetIntPref ( minSizePref, dataObject.languageData[language].minSize );
}
}
@ -483,13 +477,11 @@ function saveFontPrefs()
// font scaling
var fontDPI = parseInt( dataObject.fontDPI );
var documentFonts = dataObject.useDocFonts;
var defaultFont = dataObject.defaultFont;
try
{
var currDPI = pref.GetIntPref( "browser.display.screen_resolution" );
var currFonts = pref.GetIntPref( "browser.display.use_document_fonts" );
var currDefault = pref.CopyUnicharPref( "font.default" );
}
catch(e)
{
@ -498,10 +490,6 @@ function saveFontPrefs()
pref.SetIntPref( "browser.display.screen_resolution", fontDPI );
if( currFonts != documentFonts )
pref.SetIntPref( "browser.display.use_document_fonts", documentFonts );
if( currDefault != defaultFont )
{
pref.SetUnicharPref( "font.default", defaultFont );
}
// save off the language information...
}
@ -524,6 +512,7 @@ function saveState()
if( currentLanguage && currentLanguage in languageData &&
"types" in languageData[currentLanguage] )
{
languageData[currentLanguage].defaultFont = defaultFont.value;
languageData[currentLanguage].variableSize = parseInt( variableSize.value );
languageData[currentLanguage].fixedSize = parseInt( fixedSize.value );
languageData[currentLanguage].minSize = parseInt( minSize.value );
@ -569,9 +558,11 @@ function selectLanguage()
listElement.setAttribute( "disabled", "true" );
}
// and set the font sizes
// and set the default font type and the font sizes
try
{
defaultFont.value = parent.hPrefWindow.getPref("string", "font.default." + languageList.value);
var variableSizePref = "font.size.variable." + languageList.value;
var sizeVarVal = parent.hPrefWindow.pref.GetIntPref( variableSizePref );
variableSize.selectedItem = variableSize.getElementsByAttribute( "value", sizeVarVal )[0];

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

@ -90,8 +90,7 @@
accesskey="&proportional.accesskey;"
control="proportionalFont"/>
</hbox>
<menulist id="proportionalFont"
preftype="string" prefstring="font.default">
<menulist id="proportionalFont">
<menupopup>
<menuitem value="serif"
label="&useDefaultFontSerif.label;"/>

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

@ -973,55 +973,71 @@ pref("font.name.monospace.x-tamil", "Latha");
pref("font.name-list.serif.x-tamil", "Latha, Code2000");
pref("font.name-list.monospace.x-tamil", "Latha, Code2000");
pref("font.default", "serif");
pref("font.default.ar", "sans-serif");
pref("font.size.variable.ar", 16);
pref("font.size.fixed.ar", 13);
pref("font.default.el", "serif");
pref("font.size.variable.el", 16);
pref("font.size.fixed.el", 13);
pref("font.default.he", "sans-serif");
pref("font.size.variable.he", 16);
pref("font.size.fixed.he", 13);
pref("font.default.ja", "sans-serif");
pref("font.size.variable.ja", 16);
pref("font.size.fixed.ja", 16);
pref("font.default.ko", "sans-serif");
pref("font.size.variable.ko", 16);
pref("font.size.fixed.ko", 16);
pref("font.default.th", "serif");
pref("font.size.variable.th", 16);
pref("font.size.fixed.th", 13);
pref("font.default.tr", "serif");
pref("font.size.variable.tr", 16);
pref("font.size.fixed.tr", 13);
pref("font.default.x-baltic", "serif");
pref("font.size.variable.x-baltic", 16);
pref("font.size.fixed.x-baltic", 13);
pref("font.default.x-central-euro", "serif");
pref("font.size.variable.x-central-euro", 16);
pref("font.size.fixed.x-central-euro", 13);
pref("font.default.x-cyrillic", "serif");
pref("font.size.variable.x-cyrillic", 16);
pref("font.size.fixed.x-cyrillic", 13);
pref("font.default.x-devanagari", "serif");
pref("font.size.variable.x-devanagari", 16);
pref("font.size.fixed.x-devanagari", 13);
pref("font.default.x-tamil", "serif");
pref("font.size.variable.x-tamil", 16);
pref("font.size.fixed.x-tamil", 13);
pref("font.default.x-unicode", "serif");
pref("font.size.variable.x-unicode", 16);
pref("font.size.fixed.x-unicode", 13);
pref("font.default.x-western", "serif");
pref("font.size.variable.x-western", 16);
pref("font.size.fixed.x-western", 13);
pref("font.default.zh-CN", "sans-serif");
pref("font.size.variable.zh-CN", 16);
pref("font.size.fixed.zh-CN", 16);
pref("font.default.zh-TW", "sans-serif");
pref("font.size.variable.zh-TW", 16);
pref("font.size.fixed.zh-TW", 16);
pref("font.default.zh-HK", "sans-serif");
pref("font.size.variable.zh-HK", 16);
pref("font.size.fixed.zh-HK", 16);
@ -1180,49 +1196,63 @@ pref("font.name.monospace.zh-HK", "Apple LiGothic Medium");
pref("font.name.cursive.zh-HK", "XXX.cursive");
pref("font.name.fantasy.zh-HK", "XXX.fantasy");
pref("font.default", "serif");
pref("font.default.ar", "sans-serif");
pref("font.size.variable.ar", 15);
pref("font.size.fixed.ar", 13);
pref("font.default.el", "serif");
pref("font.size.variable.el", 16);
pref("font.size.fixed.el", 13);
pref("font.default.he", "sans-serif");
pref("font.size.variable.he", 15);
pref("font.size.fixed.he", 13);
pref("font.default.ja", "sans-serif");
pref("font.size.variable.ja", 14);
pref("font.size.fixed.ja", 14);
pref("font.default.ko", "sans-serif");
pref("font.size.variable.ko", 16);
pref("font.size.fixed.ko", 16);
pref("font.default.th", "serif");
pref("font.size.variable.th", 16);
pref("font.size.fixed.th", 13);
pref("font.default.tr", "serif");
pref("font.size.variable.tr", 16);
pref("font.size.fixed.tr", 13);
pref("font.default.x-baltic", "serif");
pref("font.size.variable.x-baltic", 16);
pref("font.size.fixed.x-baltic", 13);
pref("font.default.x-central-euro", "serif");
pref("font.size.variable.x-central-euro", 16);
pref("font.size.fixed.x-central-euro", 13);
pref("font.default.x-cyrillic", "serif");
pref("font.size.variable.x-cyrillic", 16);
pref("font.size.fixed.x-cyrillic", 13);
pref("font.default.x-unicode", "serif");
pref("font.size.variable.x-unicode", 16);
pref("font.size.fixed.x-unicode", 13);
pref("font.default.x-western", "serif");
pref("font.size.variable.x-western", 16);
pref("font.size.fixed.x-western", 13);
pref("font.default.zh-CN", "sans-serif");
pref("font.size.variable.zh-CN", 15);
pref("font.size.fixed.zh-CN", 16);
pref("font.default.zh-TW", "sans-serif");
pref("font.size.variable.zh-TW", 15);
pref("font.size.fixed.zh-TW", 16);
pref("font.default.zh-HK", "sans-serif");
pref("font.size.variable.zh-HK", 15);
pref("font.size.fixed.zh-HK", 16);
@ -1339,48 +1369,72 @@ pref("font.name.sans-serif.zh-HK", "Helv");
pref("font.name.monospace.zh-HK", "Courier");
pref("font.default", "serif");
pref("font.default.ar", "sans-serif");
pref("font.size.variable.ar", 16);
pref("font.size.fixed.ar", 13);
pref("font.default.el", "serif");
pref("font.size.variable.el", 16);
pref("font.size.fixed.el", 13);
pref("font.default.he", "sans-serif");
pref("font.size.variable.he", 16);
pref("font.size.fixed.he", 13);
pref("font.default.ja", "sans-serif");
pref("font.size.variable.ja", 16);
pref("font.size.fixed.ja", 16);
pref("font.default.ko", "sans-serif");
pref("font.size.variable.ko", 16);
pref("font.size.fixed.ko", 16);
pref("font.default.th", "serif");
pref("font.size.variable.th", 16);
pref("font.size.fixed.th", 13);
pref("font.default.tr", "serif");
pref("font.size.variable.tr", 16);
pref("font.size.fixed.tr", 13);
pref("font.default.x-baltic", "serif");
pref("font.size.variable.x-baltic", 16);
pref("font.size.fixed.x-baltic", 13);
pref("font.default.x-central-euro", "serif");
pref("font.size.variable.x-central-euro", 16);
pref("font.size.fixed.x-central-euro", 13);
pref("font.default.x-cyrillic", "serif");
pref("font.size.variable.x-cyrillic", 16);
pref("font.size.fixed.x-cyrillic", 13);
pref("font.default.x-devanagari", "serif");
pref("font.size.variable.x-devanagari", 16);
pref("font.size.fixed.x-devanagari", 13);
pref("font.default.x-tamil", "serif");
pref("font.size.variable.x-tamil", 16);
pref("font.size.fixed.x-tamil", 13);
pref("font.default.x-unicode", "serif");
pref("font.size.variable.x-unicode", 16);
pref("font.size.fixed.x-unicode", 13);
pref("font.default.x-western", "serif");
pref("font.size.variable.x-western", 16);
pref("font.size.fixed.x-western", 13);
pref("font.default.zh-CN", "sans-serif");
pref("font.size.variable.zh-CN", 16);
pref("font.size.fixed.zh-CN", 16);
pref("font.default.zh-TW", "sans-serif");
pref("font.size.variable.zh-TW", 16);
pref("font.size.fixed.zh-TW", 16);
pref("font.default.zh-HK", "sans-serif");
pref("font.size.variable.zh-HK", 16);
pref("font.size.fixed.zh-HK", 16);
@ -1423,49 +1477,63 @@ pref("intl.font_charset", "");
pref("intl.font_spec_list", "");
pref("mail.signature_date", 0);
pref("font.default", "serif");
pref("font.default.ar", "sans-serif");
pref("font.size.variable.ar", 16);
pref("font.size.fixed.ar", 13);
pref("font.default.el", "serif");
pref("font.size.variable.el", 16);
pref("font.size.fixed.el", 13);
pref("font.default.he", "sans-serif");
pref("font.size.variable.he", 16);
pref("font.size.fixed.he", 13);
pref("font.default.ja", "sans-serif");
pref("font.size.variable.ja", 16);
pref("font.size.fixed.ja", 16);
pref("font.default.ko", "sans-serif");
pref("font.size.variable.ko", 16);
pref("font.size.fixed.ko", 16);
pref("font.default.th", "serif");
pref("font.size.variable.th", 16);
pref("font.size.fixed.th", 13);
pref("font.default.tr", "serif");
pref("font.size.variable.tr", 16);
pref("font.size.fixed.tr", 13);
pref("font.default.x-baltic", "serif");
pref("font.size.variable.x-baltic", 16);
pref("font.size.fixed.x-baltic", 13);
pref("font.default.x-central-euro", "serif");
pref("font.size.variable.x-central-euro", 16);
pref("font.size.fixed.x-central-euro", 13);
pref("font.default.x-cyrillic", "serif");
pref("font.size.variable.x-cyrillic", 16);
pref("font.size.fixed.x-cyrillic", 13);
pref("font.default.x-unicode", "serif");
pref("font.size.variable.x-unicode", 16);
pref("font.size.fixed.x-unicode", 13);
pref("font.default.x-western", "serif");
pref("font.size.variable.x-western", 16);
pref("font.size.fixed.x-western", 13);
pref("font.default.zh-CN", "sans-serif");
pref("font.size.variable.zh-CN", 16);
pref("font.size.fixed.zh-CN", 16);
pref("font.default.zh-TW", "sans-serif");
pref("font.size.variable.zh-TW", 16);
pref("font.size.fixed.zh-TW", 16);
pref("font.default.zh-HK", "sans-serif");
pref("font.size.variable.zh-HK", 16);
pref("font.size.fixed.zh-HK", 16);
@ -1620,49 +1688,63 @@ pref("font.name.monospace.zh-HK", "-arphic-Ming for ISO10646-big5hkscs-0");
// zh-TW
pref("font.default", "serif");
pref("font.default.ar", "sans-serif");
pref("font.size.variable.ar", 16);
pref("font.size.fixed.ar", 12);
pref("font.default.el", "serif");
pref("font.size.variable.el", 16);
pref("font.size.fixed.el", 12);
pref("font.default.he", "sans-serif");
pref("font.size.variable.he", 16);
pref("font.size.fixed.he", 12);
pref("font.default.ja", "sans-serif");
pref("font.size.variable.ja", 16);
pref("font.size.fixed.ja", 16);
pref("font.default.ko", "sans-serif");
pref("font.size.variable.ko", 16);
pref("font.size.fixed.ko", 16);
pref("font.default.th", "serif");
pref("font.size.variable.th", 16);
pref("font.size.fixed.th", 12);
pref("font.default.tr", "serif");
pref("font.size.variable.tr", 16);
pref("font.size.fixed.tr", 12);
pref("font.default.x-baltic", "serif");
pref("font.size.variable.x-baltic", 16);
pref("font.size.fixed.x-baltic", 12);
pref("font.default.x-central-euro", "serif");
pref("font.size.variable.x-central-euro", 16);
pref("font.size.fixed.x-central-euro", 12);
pref("font.default.x-cyrillic", "serif");
pref("font.size.variable.x-cyrillic", 16);
pref("font.size.fixed.x-cyrillic", 12);
pref("font.default.x-unicode", "serif");
pref("font.size.variable.x-unicode", 16);
pref("font.size.fixed.x-unicode", 12);
pref("font.default.x-western", "serif");
pref("font.size.variable.x-western", 16);
pref("font.size.fixed.x-western", 12);
pref("font.default.zh-CN", "sans-serif");
pref("font.size.variable.zh-CN", 16);
pref("font.size.fixed.zh-CN", 16);
pref("font.default.zh-TW", "sans-serif");
pref("font.size.variable.zh-TW", 16);
pref("font.size.fixed.zh-TW", 16);
pref("font.default.zh-HK", "sans-serif");
pref("font.size.variable.zh-HK", 16);
pref("font.size.fixed.zh-HK", 16);

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

@ -40,7 +40,7 @@
var fontEnumerator = null;
var globalFonts = null;
var fontTypes = ["serif", "sans-serif", "cursive", "fantasy", "monospace"];
var variableSize, fixedSize, minSize, languageList;
var defaultFont, variableSize, fixedSize, minSize, languageList;
var languageData = [];
var currentLanguage;
var gPrefutilitiesBundle;
@ -51,18 +51,13 @@ function GetFields()
var dataObject = parent.hPrefWindow.wsm.dataManager.pageData["chrome://communicator/content/pref/pref-fonts.xul"];
// store data for language independent widgets
var lists = ["selectLangs", "proportionalFont"];
for( var i = 0; i < lists.length; i++ )
{
if( !( "dataEls" in dataObject ) )
dataObject.dataEls = [];
dataObject.dataEls[ lists[i] ] = [];
dataObject.dataEls[ lists[i] ].value = document.getElementById( lists[i] ).value;
}
if( !( "dataEls" in dataObject ) )
dataObject.dataEls = [];
dataObject.dataEls[ "selectLangs" ] = [];
dataObject.dataEls[ "selectLangs" ].value = document.getElementById( "selectLangs" ).value;
dataObject.defaultFont = document.getElementById( "proportionalFont" ).value;
dataObject.fontDPI = document.getElementById( "screenResolution" ).value;
dataObject.useDocFonts = document.getElementById( "browserUseDocumentFonts" ).checked ? 1 : 0;
dataObject.fontDPI = document.getElementById( "screenResolution" ).value;
dataObject.useDocFonts = document.getElementById( "browserUseDocumentFonts" ).checked ? 1 : 0;
// save current state for language dependent fields and store
saveState();
@ -77,25 +72,19 @@ function SetFields( aDataObject )
languageData = "languageData" in aDataObject ? aDataObject.languageData : languageData ;
currentLanguage = "currentLanguage" in aDataObject ? aDataObject.currentLanguage : null ;
var lists = ["selectLangs", "proportionalFont"];
var prefvalue;
for( var i = 0; i < lists.length; i++ )
var element = document.getElementById( "selectLangs" );
if( "dataEls" in aDataObject )
{
var element = document.getElementById( lists[i] );
if( "dataEls" in aDataObject )
element.selectedItem = element.getElementsByAttribute( "value", aDataObject.dataEls[ "selectLangs" ].value )[0];
}
else
{
var prefstring = element.getAttribute( "prefstring" );
var preftype = element.getAttribute( "preftype" );
if( prefstring && preftype )
{
element.selectedItem = element.getElementsByAttribute( "value", aDataObject.dataEls[ lists[i] ].value )[0];
}
else
{
var prefstring = element.getAttribute( "prefstring" );
var preftype = element.getAttribute( "preftype" );
if( prefstring && preftype )
{
prefvalue = parent.hPrefWindow.getPref( preftype, prefstring );
element.selectedItem = element.getElementsByAttribute( "value", prefvalue )[0];
}
var prefvalue = parent.hPrefWindow.getPref( preftype, prefstring );
element.selectedItem = element.getElementsByAttribute( "value", prefvalue )[0];
}
}
@ -137,6 +126,7 @@ function SetFields( aDataObject )
function Startup()
{
defaultFont = document.getElementById( "proportionalFont" );
variableSize = document.getElementById( "sizeVar" );
fixedSize = document.getElementById( "sizeMono" );
minSize = document.getElementById( "minSize" );
@ -433,12 +423,14 @@ function saveFontPrefs()
}
}
}
var defaultFontPref = "font.default." + language;
var variableSizePref = "font.size.variable." + language;
var fixedSizePref = "font.size.fixed." + language;
var minSizePref = "font.minimum-size." + language;
var currVariableSize = 12, currFixedSize = 12, minSizeVal = 0;
var currDefaultFont = "serif", currVariableSize = 12, currFixedSize = 12, minSizeVal = 0;
try
{
currDefaultFont = parent.hPrefWindow.getPref( "string", defaultFontPref );
currVariableSize = pref.getIntPref( variableSizePref );
currFixedSize = pref.getIntPref( fixedSizePref );
minSizeVal = pref.getIntPref( minSizePref );
@ -446,11 +438,13 @@ function saveFontPrefs()
catch(e)
{
}
if( currDefaultFont != dataObject.languageData[language].defaultFont )
parent.hPrefWindow.setPref( "string", defaultFontPref, dataObject.languageData[language].defaultFont );
if( currVariableSize != dataObject.languageData[language].variableSize )
pref.setIntPref( variableSizePref, dataObject.languageData[language].variableSize );
if( currFixedSize != dataObject.languageData[language].fixedSize )
pref.setIntPref( fixedSizePref, dataObject.languageData[language].fixedSize );
if ( minSizeVal != dataObject.languageData[language].minSize ) {
if( minSizeVal != dataObject.languageData[language].minSize ) {
pref.setIntPref ( minSizePref, dataObject.languageData[language].minSize );
}
}
@ -464,7 +458,6 @@ function saveFontPrefs()
{
var currDPI = pref.getIntPref( "browser.display.screen_resolution" );
var currFonts = pref.getIntPref( "browser.display.use_document_fonts" );
var currDefault = pref.getComplexValue( "font.default", Components.interfaces.nsISupportsString ).data;
}
catch(e)
{
@ -473,10 +466,6 @@ function saveFontPrefs()
pref.setIntPref( "browser.display.screen_resolution", fontDPI );
if( currFonts != documentFonts )
pref.setIntPref( "browser.display.use_document_fonts", documentFonts );
if( currDefault != defaultFont )
{
parent.hPrefWindow.setPref( "string", "font.default", defaultFont );
}
}
function saveState()
@ -497,6 +486,7 @@ function saveState()
if( currentLanguage && currentLanguage in languageData &&
"types" in languageData[currentLanguage] )
{
languageData[currentLanguage].defaultFont = defaultFont.value;
languageData[currentLanguage].variableSize = parseInt( variableSize.value );
languageData[currentLanguage].fixedSize = parseInt( fixedSize.value );
languageData[currentLanguage].minSize = parseInt( minSize.value );
@ -542,9 +532,11 @@ function selectLanguage()
listElement.setAttribute( "disabled", "true" );
}
// and set the font sizes
// and set the default font type and the font sizes
try
{
defaultFont.value = parent.hPrefWindow.getPref("string", "font.default." + languageList.value);
var variableSizePref = "font.size.variable." + languageList.value;
var sizeVarVal = parent.hPrefWindow.pref.getIntPref( variableSizePref );
variableSize.selectedItem = variableSize.getElementsByAttribute( "value", sizeVarVal )[0];

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

@ -116,8 +116,7 @@
accesskey="&proportional.accesskey;"
control="proportionalFont"/>
</hbox>
<menulist id="proportionalFont" flex="1" style="width: 0px;"
preftype="string" prefstring="font.default">
<menulist id="proportionalFont" flex="1" style="width: 0px;">
<menupopup>
<menuitem value="serif"
label="&useDefaultFontSerif.label;"/>