mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1056479 p1a - use lang as part of pref font fallback. r=karlt
This commit is contained in:
parent
2de852fdbe
commit
14ad02c693
@ -382,6 +382,39 @@ static const char *gPrefLangNames[] = {
|
|||||||
"x-unicode",
|
"x-unicode",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// this needs to match the list of pref font.default.xx entries listed in all.js!
|
||||||
|
// the order *must* match the order in eFontPrefLang
|
||||||
|
static nsIAtom* gPrefLangToLangGroups[] = {
|
||||||
|
nsGkAtoms::x_western,
|
||||||
|
nsGkAtoms::Japanese,
|
||||||
|
nsGkAtoms::Taiwanese,
|
||||||
|
nsGkAtoms::Chinese,
|
||||||
|
nsGkAtoms::HongKongChinese,
|
||||||
|
nsGkAtoms::ko,
|
||||||
|
nsGkAtoms::x_cyrillic,
|
||||||
|
nsGkAtoms::el,
|
||||||
|
nsGkAtoms::th,
|
||||||
|
nsGkAtoms::he,
|
||||||
|
nsGkAtoms::ar,
|
||||||
|
nsGkAtoms::x_devanagari,
|
||||||
|
nsGkAtoms::x_tamil,
|
||||||
|
nsGkAtoms::x_armn,
|
||||||
|
nsGkAtoms::x_beng,
|
||||||
|
nsGkAtoms::x_cans,
|
||||||
|
nsGkAtoms::x_ethi,
|
||||||
|
nsGkAtoms::x_geor,
|
||||||
|
nsGkAtoms::x_gujr,
|
||||||
|
nsGkAtoms::x_guru,
|
||||||
|
nsGkAtoms::x_khmr,
|
||||||
|
nsGkAtoms::x_mlym,
|
||||||
|
nsGkAtoms::x_orya,
|
||||||
|
nsGkAtoms::x_telu,
|
||||||
|
nsGkAtoms::x_knda,
|
||||||
|
nsGkAtoms::x_sinh,
|
||||||
|
nsGkAtoms::x_tibt,
|
||||||
|
nsGkAtoms::Unicode
|
||||||
|
};
|
||||||
|
|
||||||
gfxPlatform::gfxPlatform()
|
gfxPlatform::gfxPlatform()
|
||||||
: mTileWidth(-1)
|
: mTileWidth(-1)
|
||||||
, mTileHeight(-1)
|
, mTileHeight(-1)
|
||||||
@ -1474,6 +1507,19 @@ gfxPlatform::GetFontPrefLangFor(nsIAtom *aLang)
|
|||||||
return GetFontPrefLangFor(lang.get());
|
return GetFontPrefLangFor(lang.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nsIAtom*
|
||||||
|
gfxPlatform::GetLangGroupForPrefLang(eFontPrefLang aLang)
|
||||||
|
{
|
||||||
|
// the special CJK set pref lang should be resolved into separate
|
||||||
|
// calls to individual CJK pref langs before getting here
|
||||||
|
NS_ASSERTION(aLang != eFontPrefLang_CJKSet, "unresolved CJK set pref lang");
|
||||||
|
|
||||||
|
if (uint32_t(aLang) < ArrayLength(gPrefLangToLangGroups)) {
|
||||||
|
return gPrefLangToLangGroups[uint32_t(aLang)];
|
||||||
|
}
|
||||||
|
return nsGkAtoms::Unicode;
|
||||||
|
}
|
||||||
|
|
||||||
const char*
|
const char*
|
||||||
gfxPlatform::GetPrefLangName(eFontPrefLang aLang)
|
gfxPlatform::GetPrefLangName(eFontPrefLang aLang)
|
||||||
{
|
{
|
||||||
|
@ -470,6 +470,9 @@ public:
|
|||||||
// convert a lang group atom to enum constant
|
// convert a lang group atom to enum constant
|
||||||
static eFontPrefLang GetFontPrefLangFor(nsIAtom *aLang);
|
static eFontPrefLang GetFontPrefLangFor(nsIAtom *aLang);
|
||||||
|
|
||||||
|
// convert an enum constant to a lang group atom
|
||||||
|
static nsIAtom* GetLangGroupForPrefLang(eFontPrefLang aLang);
|
||||||
|
|
||||||
// convert a enum constant to lang group string (i.e. eFontPrefLang_ChineseTW ==> "zh-TW")
|
// convert a enum constant to lang group string (i.e. eFontPrefLang_ChineseTW ==> "zh-TW")
|
||||||
static const char* GetPrefLangName(eFontPrefLang aLang);
|
static const char* GetPrefLangName(eFontPrefLang aLang);
|
||||||
|
|
||||||
|
@ -3082,7 +3082,10 @@ struct PrefFontCallbackData {
|
|||||||
{
|
{
|
||||||
PrefFontCallbackData *prefFontData = static_cast<PrefFontCallbackData*>(aClosure);
|
PrefFontCallbackData *prefFontData = static_cast<PrefFontCallbackData*>(aClosure);
|
||||||
|
|
||||||
gfxFontFamily *family = gfxPlatformFontList::PlatformFontList()->FindFamily(aName);
|
// map pref lang to langGroup for language-sensitive lookups
|
||||||
|
nsIAtom* lang = gfxPlatform::GetLangGroupForPrefLang(aLang);
|
||||||
|
gfxFontFamily *family =
|
||||||
|
gfxPlatformFontList::PlatformFontList()->FindFamily(aName, lang);
|
||||||
if (family) {
|
if (family) {
|
||||||
prefFontData->mPrefFamilies.AppendElement(family);
|
prefFontData->mPrefFamilies.AppendElement(family);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user