| OLD | NEW |
| 1 /* | 1 /* |
| 2 * This file is part of the internal font implementation. | 2 * This file is part of the internal font implementation. |
| 3 * | 3 * |
| 4 * Copyright (C) 2006, 2008 Apple Inc. All rights reserved. | 4 * Copyright (C) 2006, 2008 Apple Inc. All rights reserved. |
| 5 * | 5 * |
| 6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
| 7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
| 8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
| 9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
| 10 * | 10 * |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 #include <QFont> | 45 #include <QFont> |
| 46 #endif | 46 #endif |
| 47 | 47 |
| 48 namespace WebCore { | 48 namespace WebCore { |
| 49 | 49 |
| 50 class FontDescription; | 50 class FontDescription; |
| 51 class FontPlatformData; | 51 class FontPlatformData; |
| 52 class SharedBuffer; | 52 class SharedBuffer; |
| 53 class SVGFontData; | 53 class SVGFontData; |
| 54 class WidthMap; | 54 class WidthMap; |
| 55 class ZeroWidthFontData; | |
| 56 class CJKWidthFontData; | |
| 57 | 55 |
| 58 enum Pitch { UnknownPitch, FixedPitch, VariablePitch }; | 56 enum Pitch { UnknownPitch, FixedPitch, VariablePitch }; |
| 59 | 57 |
| 60 class SimpleFontData : public FontData { | 58 class SimpleFontData : public FontData { |
| 61 public: | 59 public: |
| 62 SimpleFontData(const FontPlatformData&, bool customFont = false, bool loadin
g = false, SVGFontData* data = 0); | 60 SimpleFontData(const FontPlatformData&, bool customFont = false, bool loadin
g = false, SVGFontData* data = 0); |
| 63 virtual ~SimpleFontData(); | 61 virtual ~SimpleFontData(); |
| 64 | 62 |
| 65 protected: | |
| 66 // sub-class constructor | |
| 67 SimpleFontData(); | |
| 68 | |
| 69 public: | 63 public: |
| 70 const FontPlatformData& platformData() const { return m_font; } | 64 const FontPlatformData& platformData() const { return m_font; } |
| 71 SimpleFontData* smallCapsFontData(const FontDescription& fontDescription) co
nst; | 65 SimpleFontData* smallCapsFontData(const FontDescription& fontDescription) co
nst; |
| 72 | 66 |
| 73 // vertical metrics | 67 // vertical metrics |
| 74 int ascent() const { return m_ascent; } | 68 int ascent() const { return m_ascent; } |
| 75 int descent() const { return m_descent; } | 69 int descent() const { return m_descent; } |
| 76 int lineSpacing() const { return m_lineSpacing; } | 70 int lineSpacing() const { return m_lineSpacing; } |
| 77 int lineGap() const { return m_lineGap; } | 71 int lineGap() const { return m_lineGap; } |
| 78 int maxCharWidth() const { return m_maxCharWidth; } | 72 int maxCharWidth() const { return m_maxCharWidth; } |
| 79 int avgCharWidth() const { return m_avgCharWidth; } | 73 int avgCharWidth() const { return m_avgCharWidth; } |
| 80 | 74 |
| 81 float xHeight() const { return m_xHeight; } | 75 float xHeight() const { return m_xHeight; } |
| 82 unsigned unitsPerEm() const { return m_unitsPerEm; } | 76 unsigned unitsPerEm() const { return m_unitsPerEm; } |
| 83 | 77 |
| 84 virtual float widthForGlyph(Glyph) const; | 78 float widthForGlyph(Glyph) const; |
| 85 float platformWidthForGlyph(Glyph) const; | 79 float platformWidthForGlyph(Glyph) const; |
| 86 | 80 |
| 87 virtual const SimpleFontData* fontDataForCharacter(UChar32) const; | 81 virtual const SimpleFontData* fontDataForCharacter(UChar32) const; |
| 88 virtual bool containsCharacters(const UChar*, int length) const; | 82 virtual bool containsCharacters(const UChar*, int length) const; |
| 89 | 83 |
| 90 void determinePitch(); | 84 void determinePitch(); |
| 91 Pitch pitch() const { return m_treatAsFixedPitch ? FixedPitch : VariablePitc
h; } | 85 Pitch pitch() const { return m_treatAsFixedPitch ? FixedPitch : VariablePitc
h; } |
| 92 | 86 |
| 93 static bool isCJKCodePoint(UChar32 c); | |
| 94 | |
| 95 #if ENABLE(SVG_FONTS) | 87 #if ENABLE(SVG_FONTS) |
| 96 SVGFontData* svgFontData() const { return m_svgFontData.get(); } | 88 SVGFontData* svgFontData() const { return m_svgFontData.get(); } |
| 97 bool isSVGFont() const { return m_svgFontData; } | 89 bool isSVGFont() const { return m_svgFontData; } |
| 98 #else | 90 #else |
| 99 bool isSVGFont() const { return false; } | 91 bool isSVGFont() const { return false; } |
| 100 #endif | 92 #endif |
| 101 | 93 |
| 102 virtual bool isCustomFont() const { return m_isCustomFont; } | 94 virtual bool isCustomFont() const { return m_isCustomFont; } |
| 103 virtual bool isLoading() const { return m_isLoading; } | 95 virtual bool isLoading() const { return m_isLoading; } |
| 104 virtual bool isSegmented() const; | 96 virtual bool isSegmented() const; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 #endif | 130 #endif |
| 139 | 131 |
| 140 #if PLATFORM(GTK) && PLATFORM(CAIRO) | 132 #if PLATFORM(GTK) && PLATFORM(CAIRO) |
| 141 void setFont(cairo_t*) const; | 133 void setFont(cairo_t*) const; |
| 142 #endif | 134 #endif |
| 143 | 135 |
| 144 #if PLATFORM(WX) | 136 #if PLATFORM(WX) |
| 145 wxFont getWxFont() const { return m_font.font(); } | 137 wxFont getWxFont() const { return m_font.font(); } |
| 146 #endif | 138 #endif |
| 147 | 139 |
| 148 const SimpleFontData* zeroWidthFontData() const; | |
| 149 const SimpleFontData* cjkWidthFontData() const; | |
| 150 | |
| 151 private: | 140 private: |
| 152 void platformInit(); | 141 void platformInit(); |
| 153 void platformGlyphInit(); | 142 void platformGlyphInit(); |
| 154 void platformDestroy(); | 143 void platformDestroy(); |
| 155 | 144 |
| 156 void commonInit(); | 145 void commonInit(); |
| 157 | 146 |
| 158 #if PLATFORM(WIN) | 147 #if PLATFORM(WIN) |
| 159 void initGDIFont(); | 148 void initGDIFont(); |
| 160 void platformCommonDestroy(); | 149 void platformCommonDestroy(); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 #if USE(CORE_TEXT) | 202 #if USE(CORE_TEXT) |
| 214 mutable RetainPtr<CTFontRef> m_CTFont; | 203 mutable RetainPtr<CTFontRef> m_CTFont; |
| 215 mutable RetainPtr<CFDictionaryRef> m_CFStringAttributes; | 204 mutable RetainPtr<CFDictionaryRef> m_CFStringAttributes; |
| 216 #endif | 205 #endif |
| 217 | 206 |
| 218 #if PLATFORM(WIN) | 207 #if PLATFORM(WIN) |
| 219 bool m_isSystemFont; | 208 bool m_isSystemFont; |
| 220 mutable SCRIPT_CACHE m_scriptCache; | 209 mutable SCRIPT_CACHE m_scriptCache; |
| 221 mutable SCRIPT_FONTPROPERTIES* m_scriptFontProperties; | 210 mutable SCRIPT_FONTPROPERTIES* m_scriptFontProperties; |
| 222 #endif | 211 #endif |
| 223 | |
| 224 private: | |
| 225 OwnPtr<ZeroWidthFontData> m_zeroWidthFontData; | |
| 226 OwnPtr<CJKWidthFontData> m_cjkWidthFontData; | |
| 227 }; | |
| 228 | |
| 229 // SimpleFontData sub-classes: | |
| 230 | |
| 231 // Has a single zero-width glyph, used for ZWS and | |
| 232 // UCHAR_DEFAULT_IGNORABLE_CODE_POINT characters | |
| 233 class ZeroWidthFontData : public SimpleFontData { | |
| 234 public: | |
| 235 void init(SimpleFontData*); | |
| 236 virtual float widthForGlyph(Glyph) const { return 0.0f; } | |
| 237 }; | |
| 238 | |
| 239 // Monospaced, single glyph and width, used for CJK characters | |
| 240 // The assumption made here can break for some high-quality CJK fonts with | |
| 241 // proportional CJK glyphs. | |
| 242 class CJKWidthFontData : public ZeroWidthFontData { | |
| 243 public: | |
| 244 CJKWidthFontData(); | |
| 245 | |
| 246 virtual float widthForGlyph(Glyph) const; | |
| 247 | |
| 248 private: | |
| 249 // Optimization for CJK glyphs | |
| 250 mutable float m_cjkGlyphWidth; | |
| 251 }; | 212 }; |
| 252 | 213 |
| 253 } // namespace WebCore | 214 } // namespace WebCore |
| 254 | 215 |
| 255 #endif // SimpleFontData_h | 216 #endif // SimpleFontData_h |
| OLD | NEW |