15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 27242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * Copyright (c) 2006, 2007, 2008, Google Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 47242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * Redistribution and use in source and binary forms, with or without 57242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * modification, are permitted provided that the following conditions are 67242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 87242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * * Redistributions of source code must retain the above copyright 97242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * notice, this list of conditions and the following disclaimer. 107242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * * Redistributions in binary form must reproduce the above 117242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * copyright notice, this list of conditions and the following disclaimer 127242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * in the documentation and/or other materials provided with the 137242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * distribution. 147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * * Neither the name of Google Inc. nor the names of its 157242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * contributors may be used to endorse or promote products derived from 167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * this software without specific prior written permission. 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 187242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 197242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 207242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 217242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 227242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 237242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 247242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 257242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 267242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 277242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 287242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef FontPlatformData_h 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define FontPlatformData_h 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "SkPaint.h" 35a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)#include "platform/PlatformExport.h" 367242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "platform/SharedBuffer.h" 377242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "platform/fonts/FontDescription.h" 38f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)#include "platform/fonts/FontOrientation.h" 397242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "platform/fonts/FontRenderStyle.h" 407242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "platform/fonts/opentype/OpenTypeVerticalData.h" 417242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "wtf/Forward.h" 427242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "wtf/HashTableDeletedValueType.h" 437242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "wtf/RefPtr.h" 447242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "wtf/text/CString.h" 457242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "wtf/text/StringImpl.h" 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 477242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#if OS(MACOSX) 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)OBJC_CLASS NSFont; 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)typedef struct CGFont* CGFontRef; 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)typedef const struct __CTFont* CTFontRef; 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 537242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "platform/fonts/mac/MemoryActivatedFont.h" 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include <CoreFoundation/CFBase.h> 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include <objc/objc-auto.h> 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 577242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciinline CTFontRef toCTFontRef(NSFont *nsFont) { return reinterpret_cast<CTFontRef>(nsFont); } 587242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif // OS(MACOSX) 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 607242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass SkTypeface; 617242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccitypedef uint32_t SkFontID; 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 63c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 657242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass GraphicsContext; 66926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)class HarfBuzzFace; 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 68a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)class PLATFORM_EXPORT FontPlatformData { 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public: 707242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // Used for deleted values in the font cache's hash tables. The hash table 717242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // will create us with this structure, and it will compare other values 727242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // to this "Deleted" one. It expects the Deleted one to be differentiable 737242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // from the 0 one (created with the empty constructor), so we can't just 747242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // set everything to 0. 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) FontPlatformData(WTF::HashTableDeletedValueType); 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) FontPlatformData(); 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) FontPlatformData(const FontPlatformData&); 787242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci FontPlatformData(float size, bool syntheticBold, bool syntheticItalic, FontOrientation = Horizontal, FontWidthVariant = RegularWidth); 797242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#if OS(MACOSX) 807242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci FontPlatformData(NSFont*, float size, bool syntheticBold = false, bool syntheticItalic = false, 81926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) FontOrientation = Horizontal, FontWidthVariant = RegularWidth); 82926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) FontPlatformData(CGFontRef, float size, bool syntheticBold, bool syntheticOblique, FontOrientation, FontWidthVariant); 837242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#else 847242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci FontPlatformData(PassRefPtr<SkTypeface>, const char* name, float textSize, bool syntheticBold, bool syntheticItalic, FontOrientation = Horizontal, bool subpixelTextPosition = defaultUseSubpixelPositioning()); 857242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci FontPlatformData(const FontPlatformData& src, float textSize); 867242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ~FontPlatformData(); 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 897242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#if OS(MACOSX) 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) NSFont* font() const { return m_font; } 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setFont(NSFont*); 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CGFontRef cgFont() const { return m_cgFont.get(); } 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CTFontRef ctFont() const; 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool roundsGlyphAdvances() const; 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool allowsLigatures() const; 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool isColorBitmapFont() const { return m_isColorBitmapFont; } 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool isCompositeFontReference() const { return m_isCompositeFontReference; } 101d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) FontWidthVariant widthVariant() const { return m_widthVariant; } 1037242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1057242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci String fontFamilyName() const; 1067242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci float size() const { return m_textSize; } 1077242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci bool isFixedPitch() const; 1087242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci bool syntheticBold() const { return m_syntheticBold; } 1097242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci bool syntheticItalic() const { return m_syntheticItalic; } 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1117242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci SkTypeface* typeface() const; 1127242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci HarfBuzzFace* harfBuzzFace() const; 1137242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci SkFontID uniqueID() const; 1147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci unsigned hash() const; 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci FontOrientation orientation() const { return m_orientation; } 1177242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void setOrientation(FontOrientation orientation) { m_orientation = orientation; } 1187242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void setSyntheticBold(bool syntheticBold) { m_syntheticBold = syntheticBold; } 1197242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void setSyntheticItalic(bool syntheticItalic) { m_syntheticItalic = syntheticItalic; } 1207242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci bool operator==(const FontPlatformData&) const; 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const FontPlatformData& operator=(const FontPlatformData&); 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1237242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci bool isHashTableDeletedValue() const { return m_isHashTableDeletedValue; } 1247242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#if OS(WIN) 1257242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void setMinSizeForAntiAlias(unsigned size) { m_minSizeForAntiAlias = size; } 1267242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci unsigned minSizeForAntiAlias() const { return m_minSizeForAntiAlias; } 1277242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void setMinSizeForSubpixel(float size) { m_minSizeForSubpixel = size; } 1287242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci float minSizeForSubpixel() const { return m_minSizeForSubpixel; } 1297242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void setHinting(SkPaint::Hinting style) 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1317242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_style.useAutoHint = 0; 1327242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_style.hintStyle = style; 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif 1357242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci bool fontContainsCharacter(UChar32 character); 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1377242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#if ENABLE(OPENTYPE_VERTICAL) 1387242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci PassRefPtr<OpenTypeVerticalData> verticalData() const; 1397242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci PassRefPtr<SharedBuffer> openTypeTable(uint32_t table) const; 1407242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1427242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#if !OS(MACOSX) 1437242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // The returned styles are all actual styles without FontRenderStyle::NoPreference. 1447242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci const FontRenderStyle& fontRenderStyle() const { return m_style; } 1457242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void setupPaint(SkPaint*, GraphicsContext* = 0) const; 1467242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif 1477242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 1487242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#if OS(WIN) 1497242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci int paintTextFlags() const { return m_paintTextFlags; } 1507242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#else 1517242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static void setHinting(SkPaint::Hinting); 1527242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static void setAutoHint(bool); 1537242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static void setUseBitmaps(bool); 1547242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static void setAntiAlias(bool); 1557242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static void setSubpixelRendering(bool); 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private: 1597242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#if !OS(MACOSX) 1607242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci bool static defaultUseSubpixelPositioning(); 1617242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void querySystemForRenderStyle(bool useSkiaSubpixelPositioning); 1627242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#else 1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Load various data about the font specified by |nsFont| with the size fontSize into the following output paramters: 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Note: Callers should always take into account that for the Chromium port, |outNSFont| isn't necessarily the same 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // font as |nsFont|. This because the sandbox may block loading of the original font. 1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // * outNSFont - The font that was actually loaded, for the Chromium port this may be different than nsFont. 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The caller is responsible for calling CFRelease() on this parameter when done with it. 1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // * cgFont - CGFontRef representing the input font at the specified point size. 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void loadFont(NSFont*, float fontSize, NSFont*& outNSFont, CGFontRef&); 1707242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void platformDataInit(const FontPlatformData&); 1717242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci const FontPlatformData& platformDataAssign(const FontPlatformData&); 1727242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci bool isAATFont(CTFontRef) const; 1737242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif 1747242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 1757242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci mutable RefPtr<SkTypeface> m_typeface; 1767242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#if !OS(WIN) 1777242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci CString m_family; 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public: 1817242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci float m_textSize; 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool m_syntheticBold; 1837242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci bool m_syntheticItalic; 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) FontOrientation m_orientation; 1857242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#if OS(MACOSX) 1867242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci bool m_isColorBitmapFont; 1877242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci bool m_isCompositeFontReference; 1887242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) FontWidthVariant m_widthVariant; 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private: 1917242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#if OS(MACOSX) 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) NSFont* m_font; 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) RetainPtr<CGFontRef> m_cgFont; 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) mutable RetainPtr<CTFontRef> m_CTFont; 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) RefPtr<MemoryActivatedFont> m_inMemoryFont; 1967242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#else 1977242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci FontRenderStyle m_style; 1987242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif 1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2007242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci mutable RefPtr<HarfBuzzFace> m_harfBuzzFace; 2017242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci bool m_isHashTableDeletedValue; 2027242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#if OS(WIN) 2037242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci int m_paintTextFlags; 2047242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci bool m_useSubpixelPositioning; 2057242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci unsigned m_minSizeForAntiAlias; 2067242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci float m_minSizeForSubpixel; 2077242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif 2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 210c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2127242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif // ifdef FontPlatformData_h 213