Index: WebKit/haiku/WebPositive/SettingsWindow.cpp =================================================================== --- WebKit/haiku/WebPositive/SettingsWindow.cpp (revision 521) +++ WebKit/haiku/WebPositive/SettingsWindow.cpp (working copy) @@ -53,6 +53,7 @@ #include "SettingsKeys.h" #include "SettingsMessage.h" #include "WebSettings.h" +#include "FontPlatformData.h" #undef B_TRANSLATE_CONTEXT @@ -639,6 +640,12 @@ BWebSettings::Default()->SetDefaultStandardFontSize(standardFontSize); BWebSettings::Default()->SetDefaultFixedFontSize(fixedFontSize); + // Set FallBack fonts + WebCore::FontPlatformData::SetFallBackSerifFont(fSerifFontView->Font()); + WebCore::FontPlatformData::SetFallBackSansSerifFont(fSansSerifFontView->Font()); + WebCore::FontPlatformData::SetFallBackFixedFont(fFixedFontView->Font()); + WebCore::FontPlatformData::SetFallBackFont(fStandardFontView->Font()); + if (fUseProxyCheckBox->Value() == B_CONTROL_ON) { BWebSettings::Default()->SetProxyInfo(fProxyAddressControl->Text(), proxyPort, B_PROXY_TYPE_HTTP, "", ""); Index: WebCore/platform/graphics/haiku/FontPlatformData.h =================================================================== --- WebCore/platform/graphics/haiku/FontPlatformData.h (revision 521) +++ WebCore/platform/graphics/haiku/FontPlatformData.h (working copy) @@ -43,6 +43,10 @@ FontPlatformData(const FontDescription&, const AtomicString& family); FontPlatformData(float size, bool bold, bool oblique); FontPlatformData(const FontPlatformData&); + static void SetFallBackSerifFont(const BFont& font); + static void SetFallBackSansSerifFont(const BFont& font); + static void SetFallBackFixedFont(const BFont& font); + static void SetFallBackFont(const BFont& font); ~FontPlatformData(); @@ -62,8 +66,14 @@ String description() const; private: + static void findMatchingFontFamily(const AtomicString& familyName, font_family* fontFamily); class FontPlatformDataPrivate; FontPlatformDataPrivate* m_data; + + static font_family m_FallbackSerifFontFamily; + static font_family m_FallbackSansSerifFontFamily; + static font_family m_FallbackFixedFontFamily; + static font_family m_FallbackFontFamily; }; } // namespace WebCore Index: WebCore/platform/graphics/haiku/FontPlatformDataHaiku.cpp =================================================================== --- WebCore/platform/graphics/haiku/FontPlatformDataHaiku.cpp (revision 521) +++ WebCore/platform/graphics/haiku/FontPlatformDataHaiku.cpp (working copy) @@ -26,8 +26,13 @@ #include "AtomicString.h" #include +#include namespace WebCore { +font_family FontPlatformData::m_FallbackSerifFontFamily= "DejaVu Sans"; +font_family FontPlatformData::m_FallbackSansSerifFontFamily = "DejaVu Serif"; +font_family FontPlatformData::m_FallbackFixedFontFamily = "DejaVu Mono"; +font_family FontPlatformData::m_FallbackFontFamily = "DejaVu Serif"; static inline bool isEmtpyValue(const float size, const bool bold, const bool oblique) { @@ -35,21 +40,22 @@ return !bold && !oblique && size == 0; } -static void findMatchingFontFamily(const AtomicString& familyName, font_family* fontFamily) +void +FontPlatformData::findMatchingFontFamily(const AtomicString& familyName, font_family* fontFamily) { if (BFont().SetFamilyAndStyle(familyName.string().utf8().data(), 0) == B_OK) strncpy(*fontFamily, familyName.string().utf8().data(), B_FONT_FAMILY_LENGTH + 1); else { // If no font family is found for the given name, we use a generic font. if (familyName.contains("Sans", false) != B_ERROR) - strncpy(*fontFamily, "DejaVu Sans", B_FONT_FAMILY_LENGTH + 1); + strncpy(*fontFamily, m_FallbackSansSerifFontFamily, B_FONT_FAMILY_LENGTH + 1); else if (familyName.contains("Serif", false) != B_ERROR) - strncpy(*fontFamily, "DejaVu Serif", B_FONT_FAMILY_LENGTH + 1); + strncpy(*fontFamily, m_FallbackSerifFontFamily, B_FONT_FAMILY_LENGTH + 1); else if (familyName.contains("Mono", false) != B_ERROR) - strncpy(*fontFamily, "DejaVu Mono", B_FONT_FAMILY_LENGTH + 1); + strncpy(*fontFamily, m_FallbackFixedFontFamily, B_FONT_FAMILY_LENGTH + 1); else { // This is the fallback font. - strncpy(*fontFamily, "DejaVu Serif", B_FONT_FAMILY_LENGTH + 1); + strncpy(*fontFamily, m_FallbackFontFamily, B_FONT_FAMILY_LENGTH + 1); } } } @@ -307,5 +313,31 @@ return String(fontFamily) + "/" + String(fontStyle) + String::format("/%.1f/%d&%d", size, isBold, isOblique); } +void +FontPlatformData::SetFallBackSerifFont(const BFont& font) +{ + font_style style; + font.GetFamilyAndStyle(&m_FallbackSerifFontFamily, &style) ; +} + +void +FontPlatformData::SetFallBackSansSerifFont(const BFont& font) +{ + font_style style; + font.GetFamilyAndStyle(&m_FallbackSansSerifFontFamily, &style) ; +} + +void +FontPlatformData::SetFallBackFixedFont(const BFont& font) +{ + font_style style; + font.GetFamilyAndStyle(&m_FallbackFixedFontFamily, &style) ; +} +void +FontPlatformData::SetFallBackFont(const BFont& font) +{ + font_style style; + font.GetFamilyAndStyle(&m_FallbackFontFamily, &style) ; +} } // namespace WebCore