📄 simplefontdata.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 + -