⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simplefontdata.h

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 H
字号:
/* * This file is part of the internal font implementation. * * Copyright (C) 2006, 2008 Apple Inc. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; see the file COPYING.LIB.  If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * */#ifndef SimpleFontData_h#define SimpleFontData_h#include "FontData.h"#include "FontPlatformData.h"#include "GlyphPageTreeNode.h"#include "GlyphWidthMap.h"#include <wtf/OwnPtr.h>#if USE(ATSUI)typedef struct OpaqueATSUStyle* ATSUStyle;#endif#if PLATFORM(WIN)#include <usp10.h>#endif#if PLATFORM(CAIRO)#include <cairo.h>#endif#if PLATFORM(QT)#include <QFont>#endifnamespace WebCore {class FontDescription;class FontPlatformData;class SharedBuffer;class SVGFontData;class WidthMap;enum Pitch { UnknownPitch, FixedPitch, VariablePitch };class SimpleFontData : public FontData {public:    SimpleFontData(const FontPlatformData&, bool customFont = false, bool loading = false, SVGFontData* data = 0);    virtual ~SimpleFontData();public:    const FontPlatformData& platformData() const { return m_font; }    SimpleFontData* smallCapsFontData(const FontDescription& fontDescription) const;    // vertical metrics    int ascent() const { return m_ascent; }    int descent() const { return m_descent; }    int lineSpacing() const { return m_lineSpacing; }    int lineGap() const { return m_lineGap; }    float xHeight() const { return m_xHeight; }    unsigned unitsPerEm() const { return m_unitsPerEm; }    float widthForGlyph(Glyph) const;    float platformWidthForGlyph(Glyph) const;    virtual const SimpleFontData* fontDataForCharacter(UChar32) const;    virtual bool containsCharacters(const UChar*, int length) const;    void determinePitch();    Pitch pitch() const { return m_treatAsFixedPitch ? FixedPitch : VariablePitch; }#if ENABLE(SVG_FONTS)    SVGFontData* svgFontData() const { return m_svgFontData.get(); }    bool isSVGFont() const { return m_svgFontData; }#else    bool isSVGFont() const { return false; }#endif    virtual bool isCustomFont() const { return m_isCustomFont; }    virtual bool isLoading() const { return m_isLoading; }    virtual bool isSegmented() const;    const GlyphData& missingGlyphData() const { return m_missingGlyphData; }#if PLATFORM(MAC)    NSFont* getNSFont() const { return m_font.font(); }#endif#if USE(CORE_TEXT)    CTFontRef getCTFont() const;    CFDictionaryRef getCFStringAttributes() const;#endif#if USE(ATSUI)    void checkShapesArabic() const;    bool shapesArabic() const    {        if (!m_checkedShapesArabic)            checkShapesArabic();        return m_shapesArabic;    }#endif#if PLATFORM(QT)    QFont getQtFont() const { return m_font.font(); }#endif#if PLATFORM(WIN)    bool isSystemFont() const { return m_isSystemFont; }    SCRIPT_FONTPROPERTIES* scriptFontProperties() const;    SCRIPT_CACHE* scriptCache() const { return &m_scriptCache; }    static void setShouldApplyMacAscentHack(bool);    static bool shouldApplyMacAscentHack();#endif#if PLATFORM(CAIRO)    void setFont(cairo_t*) const;#endif#if PLATFORM(WX)    wxFont* getWxFont() const { return m_font.font(); }#endifprivate:    void platformInit();    void platformGlyphInit();    void platformDestroy();        void commonInit();#if PLATFORM(WIN)    void initGDIFont();    void platformCommonDestroy();    float widthForGDIGlyph(Glyph glyph) const;#endifpublic:    int m_ascent;    int m_descent;    int m_lineSpacing;    int m_lineGap;    float m_xHeight;    unsigned m_unitsPerEm;    FontPlatformData m_font;    mutable GlyphWidthMap m_glyphToWidthMap;    bool m_treatAsFixedPitch;#if ENABLE(SVG_FONTS)    OwnPtr<SVGFontData> m_svgFontData;#endif    bool m_isCustomFont;  // Whether or not we are custom font loaded via @font-face    bool m_isLoading; // Whether or not this custom font is still in the act of loading.    Glyph m_spaceGlyph;    float m_spaceWidth;    float m_adjustedSpaceWidth;    GlyphData m_missingGlyphData;    mutable SimpleFontData* m_smallCapsFontData;#if PLATFORM(CG) || PLATFORM(WIN)    float m_syntheticBoldOffset;#endif#if PLATFORM(MAC)#ifdef BUILDING_ON_TIGER    void* m_styleGroup;#endif#endif#if USE(ATSUI)    mutable ATSUStyle m_ATSUStyle;    mutable bool m_ATSUStyleInitialized;    mutable bool m_ATSUMirrors;    mutable bool m_checkedShapesArabic;    mutable bool m_shapesArabic;#endif#if USE(CORE_TEXT)    mutable RetainPtr<CTFontRef> m_CTFont;    mutable RetainPtr<CFDictionaryRef> m_CFStringAttributes;#endif#if PLATFORM(WIN)    bool m_isSystemFont;    mutable SCRIPT_CACHE m_scriptCache;    mutable SCRIPT_FONTPROPERTIES* m_scriptFontProperties;#endif};        #if !PLATFORM(QT)ALWAYS_INLINE float SimpleFontData::widthForGlyph(Glyph glyph) const{    float width = m_glyphToWidthMap.widthForGlyph(glyph);    if (width != cGlyphWidthUnknown)        return width;        width = platformWidthForGlyph(glyph);    m_glyphToWidthMap.setWidthForGlyph(glyph, width);        return width;}#endif} // namespace WebCore#endif // SimpleFontData_h

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -