diff options
author | initial.commit <initial.commit@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-07-27 00:20:51 +0000 |
---|---|---|
committer | initial.commit <initial.commit@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-07-27 00:20:51 +0000 |
commit | f5b16fed647e941aa66933178da85db2860d639b (patch) | |
tree | f00e9856c04aad3b558a140955e7674add33f051 /webkit/pending/SimpleFontData.h | |
parent | 920c091ac3ee15079194c82ae8a7a18215f3f23c (diff) | |
download | chromium_src-f5b16fed647e941aa66933178da85db2860d639b.zip chromium_src-f5b16fed647e941aa66933178da85db2860d639b.tar.gz chromium_src-f5b16fed647e941aa66933178da85db2860d639b.tar.bz2 |
Add webkit to the repository.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@18 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/pending/SimpleFontData.h')
-rw-r--r-- | webkit/pending/SimpleFontData.h | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/webkit/pending/SimpleFontData.h b/webkit/pending/SimpleFontData.h new file mode 100644 index 0000000..c1a84aa --- /dev/null +++ b/webkit/pending/SimpleFontData.h @@ -0,0 +1,183 @@ +/* + * This file is part of the internal font implementation. + * + * Copyright (C) 2006 Apple Computer, Inc. + * + * 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 PLATFORM(MAC) +typedef struct OpaqueATSUStyle* ATSUStyle; +#endif + +#if PLATFORM(WIN) +#include <usp10.h> +#endif + +namespace 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; } + int maxCharWidth() const { return m_maxCharWidth; } + int avgCharWidth() const { return m_avgCharWidth; } + + float xHeight() const { return m_xHeight; } + unsigned unitsPerEm() const { return m_unitsPerEm; } + + float widthForGlyph(UChar32, 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(); } + void checkShapesArabic() const; + bool shapesArabic() const + { + if (!m_checkedShapesArabic) + checkShapesArabic(); + return m_shapesArabic; + } +#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(GTK) + void setFont(cairo_t*) const; +#endif + +#if PLATFORM(WX) + wxFont getWxFont() const { return m_font.font(); } +#endif + +private: + void platformInit(); + void platformDestroy(); + + void commonInit(); + bool IsCJKCodePoint(UChar32) const; + +public: + int m_ascent; + int m_descent; + int m_lineSpacing; + int m_lineGap; + int m_maxCharWidth; + int m_avgCharWidth; + 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; + + // Optimization for CJK glyphs + mutable float m_cjkGlyphWidth; + +#if PLATFORM(CG) + float m_syntheticBoldOffset; +#endif + +#if PLATFORM(MAC) + void* m_styleGroup; + mutable ATSUStyle m_ATSUStyle; + mutable bool m_ATSUStyleInitialized; + mutable bool m_ATSUMirrors; + mutable bool m_checkedShapesArabic; + mutable bool m_shapesArabic; +#endif + +#if PLATFORM(WIN) + bool m_isSystemFont; + mutable SCRIPT_CACHE m_scriptCache; + mutable SCRIPT_FONTPROPERTIES* m_scriptFontProperties; +#endif +}; + +} // namespace WebCore + +#endif // SimpleFontData_h |