[Cocoa] System fonts do not get correct tracking
[WebKit-https.git] / Source / WebCore / platform / graphics / Font.h
index dca5b51d7b981550d6d3451a4ea0d327e0448cdd..f4f31b43204b399c7c653a8081bc9f9c0e22eced 100644 (file)
@@ -203,8 +203,11 @@ public:
 
     bool applyTransforms(GlyphBufferGlyph*, GlyphBufferAdvance*, size_t glyphCount, TypesettingFeatures) const;
 
-#if PLATFORM(WIN)
+#if PLATFORM(COCOA) || PLATFORM(WIN)
     bool isSystemFont() const { return m_isSystemFont; }
+#endif
+
+#if PLATFORM(WIN)
     SCRIPT_FONTPROPERTIES* scriptFontProperties() const;
     SCRIPT_CACHE* scriptCache() const { return &m_scriptCache; }
     static void setShouldApplyMacAscentHack(bool);
@@ -217,6 +220,8 @@ private:
 
     Font(std::unique_ptr<SVGData>, float fontSize, bool syntheticBold, bool syntheticItalic);
 
+    Font(const FontPlatformData&, std::unique_ptr<SVGData>&&, bool isCustomFont = false, bool isLoading = false, bool isTextOrientationFallback = false);
+
     void platformInit();
     void platformGlyphInit();
     void platformCharWidthInit();
@@ -248,20 +253,10 @@ private:
     mutable std::unique_ptr<GlyphMetricsMap<FloatRect>> m_glyphToBoundsMap;
     mutable GlyphMetricsMap<float> m_glyphToWidthMap;
 
-    bool m_treatAsFixedPitch;
-    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.
-
-    bool m_isTextOrientationFallback;
-    bool m_isBrokenIdeographFallback;
-
-    bool m_isUsedInSystemFallbackCache { false };
-
     mutable RefPtr<OpenTypeMathData> m_mathData;
 #if ENABLE(OPENTYPE_VERTICAL)
     RefPtr<OpenTypeVerticalData> m_verticalData;
 #endif
-    bool m_hasVerticalGlyphs;
 
     Glyph m_spaceGlyph;
     float m_spaceWidth;
@@ -304,12 +299,25 @@ private:
 #endif
 
 #if PLATFORM(WIN)
-    bool m_isSystemFont;
     mutable SCRIPT_CACHE m_scriptCache;
     mutable SCRIPT_FONTPROPERTIES* m_scriptFontProperties;
 #endif
+
+    unsigned m_treatAsFixedPitch : 1;
+    unsigned m_isCustomFont : 1; // Whether or not we are custom font loaded via @font-face
+    unsigned m_isLoading : 1; // Whether or not this custom font is still in the act of loading.
+
+    unsigned m_isTextOrientationFallback : 1;
+    unsigned m_isBrokenIdeographFallback : 1;
+    unsigned m_hasVerticalGlyphs : 1;
+
+    unsigned m_isUsedInSystemFallbackCache : 1;
+
+#if PLATFORM(COCOA) || PLATFORM(WIN)
+    unsigned m_isSystemFont : 1;
+#endif
 #if PLATFORM(IOS)
-    bool m_shouldNotBeUsedForArabic;
+    unsigned m_shouldNotBeUsedForArabic : 1;
 #endif
 };