Ticket #6118: fallback2.patch

File fallback2.patch, 5.4 KB (added by mt, 14 years ago)
  • WebKit/haiku/API/WebSettings.cpp

     
    3131#include "ApplicationCacheStorage.h"
    3232#include "BitmapImage.h"
    3333#include "DatabaseTracker.h"
     34#include "FontPlatformData.h"
    3435#include "IconDatabase.h"
    3536#include "Image.h"
    3637#include "IntSize.h"
     
    461462    case SERIF_FONT:
    462463        fData->serifFontFamily = font;
    463464        fData->serifFontFamilySet = true;
     465        WebCore::FontPlatformData::SetFallBackSerifFont(font);
    464466        break;
    465467    case SANS_SERIF_FONT:
    466468        fData->sansSerifFontFamily = font;
    467469        fData->sansSerifFontFamilySet = true;
     470        WebCore::FontPlatformData::SetFallBackSansSerifFont(font);
    468471        break;
    469472    case FIXED_FONT:
    470473        fData->fixedFontFamily = font;
    471474        fData->fixedFontFamilySet = true;
     475        WebCore::FontPlatformData::SetFallBackFixedFont(font);
    472476        break;
    473477    case STANDARD_FONT:
    474478        fData->standardFontFamily = font;
    475479        fData->standardFontFamilySet = true;
     480        WebCore::FontPlatformData::SetFallBackStandardFont(font);
    476481        break;
    477482    }
    478483}
  • WebCore/platform/graphics/haiku/FontPlatformData.h

     
    3232#include "FontDescription.h"
    3333#include "GlyphBuffer.h"
    3434#include <interface/Font.h>
     35#include <support/String.h>
    3536
    3637namespace WebCore {
    3738
     
    4647
    4748    ~FontPlatformData();
    4849
     50    static void SetFallBackSerifFont(const BString& font);
     51    static void SetFallBackSansSerifFont(const BString& font);
     52    static void SetFallBackFixedFont(const BString& font);
     53    static void SetFallBackStandardFont(const BString& font);
     54
    4955    FontPlatformData& operator=(const FontPlatformData&);
    5056    bool operator==(const FontPlatformData&) const;
    5157
     
    6268    String description() const;
    6369
    6470private:
     71    static void findMatchingFontFamily(const AtomicString& familyName, font_family* fontFamily);
    6572    class FontPlatformDataPrivate;
    6673    FontPlatformDataPrivate* m_data;
     74
     75    static font_family m_FallbackSerifFontFamily;
     76    static font_family m_FallbackSansSerifFontFamily;
     77    static font_family m_FallbackFixedFontFamily;
     78    static font_family m_FallbackStandardFontFamily;
     79   
    6780};
    6881
    6982} // namespace WebCore
  • WebCore/platform/graphics/haiku/FontPlatformDataHaiku.cpp

     
    2828#include <wtf/text/CString.h>
    2929
    3030namespace WebCore {
     31font_family FontPlatformData::m_FallbackSerifFontFamily= "DejaVu Sans";
     32font_family FontPlatformData::m_FallbackSansSerifFontFamily = "DejaVu Serif";
     33font_family FontPlatformData::m_FallbackFixedFontFamily = "DejaVu Mono";
     34font_family FontPlatformData::m_FallbackStandardFontFamily = "DejaVu Serif";
    3135
    3236static inline bool isEmtpyValue(const float size, const bool bold, const bool oblique)
    3337{
     
    3539    return !bold && !oblique && size == 0;
    3640}
    3741
    38 static void findMatchingFontFamily(const AtomicString& familyName, font_family* fontFamily)
     42void
     43FontPlatformData::findMatchingFontFamily(const AtomicString& familyName, font_family* fontFamily)
    3944{
    4045    if (BFont().SetFamilyAndStyle(familyName.string().utf8().data(), 0) == B_OK)
    4146        strncpy(*fontFamily, familyName.string().utf8().data(), B_FONT_FAMILY_LENGTH + 1);
    4247    else {
    4348        // If no font family is found for the given name, we use a generic font.
    4449        if (familyName.contains("Sans", false) != B_ERROR)
    45             strncpy(*fontFamily, "DejaVu Sans", B_FONT_FAMILY_LENGTH + 1);
     50            strncpy(*fontFamily, m_FallbackSansSerifFontFamily, B_FONT_FAMILY_LENGTH + 1);
    4651        else if (familyName.contains("Serif", false) != B_ERROR)
    47             strncpy(*fontFamily, "DejaVu Serif", B_FONT_FAMILY_LENGTH + 1);
     52            strncpy(*fontFamily, m_FallbackSerifFontFamily, B_FONT_FAMILY_LENGTH + 1);
    4853        else if (familyName.contains("Mono", false) != B_ERROR)
    49             strncpy(*fontFamily, "DejaVu Mono", B_FONT_FAMILY_LENGTH + 1);
     54            strncpy(*fontFamily, m_FallbackFixedFontFamily, B_FONT_FAMILY_LENGTH + 1);
    5055        else {
    5156            // This is the fallback font.
    52             strncpy(*fontFamily, "DejaVu Serif", B_FONT_FAMILY_LENGTH + 1);
     57            strncpy(*fontFamily, m_FallbackStandardFontFamily, B_FONT_FAMILY_LENGTH + 1);
    5358        }
    5459    }
    5560}
     
    307312    return String(fontFamily) + "/" + String(fontStyle) + String::format("/%.1f/%d&%d", size, isBold, isOblique);
    308313}
    309314
     315void
     316FontPlatformData::SetFallBackSerifFont(const BString& font)
     317{
     318    strncpy(m_FallbackSerifFontFamily, font.String(), B_FONT_FAMILY_LENGTH + 1);
     319}
     320
     321void
     322FontPlatformData::SetFallBackSansSerifFont(const BString& font)
     323{
     324    strncpy(m_FallbackSansSerifFontFamily, font.String(), B_FONT_FAMILY_LENGTH + 1);
     325}
     326
     327void
     328FontPlatformData::SetFallBackFixedFont(const BString& font)
     329{
     330    strncpy(m_FallbackFixedFontFamily, font.String(), B_FONT_FAMILY_LENGTH + 1);
     331}
     332
     333void
     334FontPlatformData::SetFallBackStandardFont(const BString& font)
     335{
     336    strncpy(m_FallbackStandardFontFamily, font.String(), B_FONT_FAMILY_LENGTH + 1);
     337}
     338
    310339} // namespace WebCore
    311340