<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>251774</bug_id>
          
          <creation_ts>2023-02-05 21:56:23 -0800</creation_ts>
          <short_desc>Optimize layout of Font to reduce padding</short_desc>
          <delta_ts>2023-02-06 09:17:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Text</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>darin</cc>
    
    <cc>heycam</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1931284</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2023-02-05 21:56:23 -0800</bug_when>
    <thetext>OpenSource % /usr/bin/python3 ./Tools/Scripts/dump-class-layout -c Release WebCore Font                      
  +0 &lt;1272&gt; WebCore::Font
  +0 &lt;  4&gt;     WTF::RefCounted&lt;WebCore::Font, std::__1::default_delete&lt;WebCore::Font&gt; &gt; WTF::RefCounted&lt;WebCore::Font, std::__1::default_delete&lt;WebCore::Font&gt; &gt;
  +0 &lt;  4&gt;         WTF::RefCountedBase WTF::RefCountedBase
  +0 &lt;  4&gt;           unsigned int m_refCount
  +4 &lt; 68&gt;     WebCore::FontMetrics m_fontMetrics
  +4 &lt;  4&gt;       unsigned int m_unitsPerEm
  +8 &lt;  4&gt;       float m_floatAscent
 +12 &lt;  4&gt;       float m_floatDescent
 +16 &lt;  4&gt;       float m_floatLineGap
 +20 &lt;  4&gt;       float m_floatLineSpacing
 +24 &lt;  4&gt;       float m_floatCapHeight
 +28 &lt;  4&gt;       int m_intAscent
 +32 &lt;  4&gt;       int m_intDescent
 +36 &lt;  4&gt;       int m_intLineGap
 +40 &lt;  4&gt;       int m_intLineSpacing
 +44 &lt;  4&gt;       int m_intCapHeight
 +48 &lt;  8&gt;         std::__1::optional&lt;float&gt; m_zeroWidth
 +48 &lt;  8&gt;             std::__1::__optional_move_assign_base&lt;float, true&gt; std::__1::__optional_move_assign_base&lt;float, true&gt;
 +48 &lt;  8&gt;                 std::__1::__optional_copy_assign_base&lt;float, true&gt; std::__1::__optional_copy_assign_base&lt;float, true&gt;
 +48 &lt;  8&gt;                     std::__1::__optional_move_base&lt;float, true&gt; std::__1::__optional_move_base&lt;float, true&gt;
 +48 &lt;  8&gt;                         std::__1::__optional_copy_base&lt;float, true&gt; std::__1::__optional_copy_base&lt;float, true&gt;
 +48 &lt;  8&gt;                             std::__1::__optional_storage_base&lt;float, false&gt; std::__1::__optional_storage_base&lt;float, false&gt;
 +48 &lt;  8&gt;                                 std::__1::__optional_destruct_base&lt;float, true&gt; std::__1::__optional_destruct_base&lt;float, true&gt;
 +48 &lt;  4&gt;                                   std::__1::__optional_destruct_base&lt;float, true&gt;::(anonymous union) None
 +52 &lt;  1&gt;                                   bool __engaged_
 +48 &lt;  1&gt;             std::__1::__optional_sfinae_ctor_base_t&lt;float&gt; std::__1::__optional_sfinae_ctor_base_t&lt;float&gt;
 +48 &lt;  1&gt;             std::__1::__optional_sfinae_assign_base_t&lt;float&gt; std::__1::__optional_sfinae_assign_base_t&lt;float&gt;
 +53 &lt;  3&gt;       &lt;PADDING: 3 bytes&gt;
 +56 &lt;  4&gt;       float m_ideogramWidth
 +60 &lt;  4&gt;       float m_xHeight
 +64 &lt;  4&gt;       float m_underlinePosition
 +68 &lt;  4&gt;       float m_underlineThickness
 +72 &lt;  4&gt;   float m_maxCharWidth
 +76 &lt;  4&gt;   float m_avgCharWidth
 +80 &lt; 56&gt;     const WebCore::FontPlatformData m_platformData
 +80 &lt;  8&gt;         WTF::RetainPtr&lt;const __CTFont *&gt; m_font
 +80 &lt;  8&gt;           CFTypeRef m_ptr
 +88 &lt;  8&gt;         WTF::RetainPtr&lt;const __CTFont *&gt; m_ctFont
 +88 &lt;  8&gt;           CFTypeRef m_ptr
 +96 &lt;  4&gt;       float m_size
+100 &lt;  1&gt;       WebCore::FontOrientation m_orientation
+101 &lt;  1&gt;       WebCore::FontWidthVariant m_widthVariant
+102 &lt;  1&gt;       WebCore::TextRenderingMode m_textRenderingMode
+103 &lt;  1&gt;       &lt;PADDING: 1 byte&gt;
+104 &lt; 24&gt;         std::__1::optional&lt;WebCore::FontPlatformData::CreationData&gt; m_creationData
+104 &lt; 24&gt;             std::__1::__optional_move_assign_base&lt;WebCore::FontPlatformData::CreationData, false&gt; std::__1::__optional_move_assign_base&lt;WebCore::FontPlatformData::CreationData, false&gt;
+104 &lt; 24&gt;                 std::__1::__optional_copy_assign_base&lt;WebCore::FontPlatformData::CreationData, false&gt; std::__1::__optional_copy_assign_base&lt;WebCore::FontPlatformData::CreationData, false&gt;
+104 &lt; 24&gt;                     std::__1::__optional_move_base&lt;WebCore::FontPlatformData::CreationData, false&gt; std::__1::__optional_move_base&lt;WebCore::FontPlatformData::CreationData, false&gt;
+104 &lt; 24&gt;                         std::__1::__optional_copy_base&lt;WebCore::FontPlatformData::CreationData, false&gt; std::__1::__optional_copy_base&lt;WebCore::FontPlatformData::CreationData, false&gt;
+104 &lt; 24&gt;                             std::__1::__optional_storage_base&lt;WebCore::FontPlatformData::CreationData, false&gt; std::__1::__optional_storage_base&lt;WebCore::FontPlatformData::CreationData, false&gt;
+104 &lt; 24&gt;                                 std::__1::__optional_destruct_base&lt;WebCore::FontPlatformData::CreationData, false&gt; std::__1::__optional_destruct_base&lt;WebCore::FontPlatformData::CreationData, false&gt;
+104 &lt; 16&gt;                                   std::__1::__optional_destruct_base&lt;WebCore::FontPlatformData::CreationData, false&gt;::(anonymous union) None
+120 &lt;  1&gt;                                   bool __engaged_
+104 &lt;  1&gt;             std::__1::__optional_sfinae_ctor_base_t&lt;WebCore::FontPlatformData::CreationData&gt; std::__1::__optional_sfinae_ctor_base_t&lt;WebCore::FontPlatformData::CreationData&gt;
+104 &lt;  1&gt;             std::__1::__optional_sfinae_assign_base_t&lt;WebCore::FontPlatformData::CreationData&gt; std::__1::__optional_sfinae_assign_base_t&lt;WebCore::FontPlatformData::CreationData&gt;
+121 &lt;  7&gt;       &lt;PADDING: 7 bytes&gt;
+128 &lt;  1&gt;       bool m_syntheticBold
+129 &lt;  1&gt;       bool m_syntheticOblique
+130 &lt;  1&gt;       bool m_isColorBitmapFont
+131 &lt;  1&gt;       bool m_isHashTableDeletedValue
+132 &lt;  1&gt;       bool m_isSystemFont
+133 &lt;  1&gt;       bool m_hasVariations
+134 &lt;  2&gt;   &lt;PADDING: 2 bytes&gt;
+136 &lt;  8&gt;     WTF::RefPtr&lt;WebCore::GlyphPage, WTF::RawPtrTraits&lt;WebCore::GlyphPage&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::GlyphPage&gt; &gt; m_glyphPageZero
+136 &lt;  8&gt;       WTF::RawPtrTraits&lt;WebCore::GlyphPage&gt;::StorageType m_ptr
+144 &lt;  8&gt;     WTF::HashMap&lt;unsigned int, WTF::RefPtr&lt;WebCore::GlyphPage, WTF::RawPtrTraits&lt;WebCore::GlyphPage&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::GlyphPage&gt; &gt;, WTF::DefaultHash&lt;unsigned int&gt;, WTF::HashTraits&lt;unsigned int&gt;, WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::GlyphPage, WTF::RawPtrTraits&lt;WebCore::GlyphPage&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::GlyphPage&gt; &gt; &gt;, WTF::HashTableTraits&gt; m_glyphPages
+144 &lt;  8&gt;         WTF::HashMap&lt;unsigned int, WTF::RefPtr&lt;WebCore::GlyphPage, WTF::RawPtrTraits&lt;WebCore::GlyphPage&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::GlyphPage&gt; &gt;, WTF::DefaultHash&lt;unsigned int&gt;, WTF::HashTraits&lt;unsigned int&gt;, WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::GlyphPage, WTF::RawPtrTraits&lt;WebCore::GlyphPage&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::GlyphPage&gt; &gt; &gt;, WTF::HashTableTraits&gt;::HashTableType m_impl
+144 &lt;  8&gt;           WTF::HashTable&lt;unsigned int, WTF::KeyValuePair&lt;unsigned int, WTF::RefPtr&lt;WebCore::GlyphPage, WTF::RawPtrTraits&lt;WebCore::GlyphPage&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::GlyphPage&gt; &gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;unsigned int, WTF::RefPtr&lt;WebCore::GlyphPage, WTF::RawPtrTraits&lt;WebCore::GlyphPage&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::GlyphPage&gt; &gt; &gt; &gt;, WTF::DefaultHash&lt;unsigned int&gt;, WTF::HashMap&lt;unsigned int, WTF::RefPtr&lt;WebCore::GlyphPage, WTF::RawPtrTraits&lt;WebCore::GlyphPage&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::GlyphPage&gt; &gt;, WTF::DefaultHash&lt;unsigned int&gt;, WTF::HashTraits&lt;unsigned int&gt;, WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::GlyphPage, WTF::RawPtrTraits&lt;WebCore::GlyphPage&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::GlyphPage&gt; &gt; &gt;, WTF::HashTableTraits&gt;::KeyValuePairTraits, WTF::HashTraits&lt;unsigned int&gt; &gt;::(anonymous union) None
+152 &lt;  8&gt;     std::__1::unique_ptr&lt;WebCore::GlyphMetricsMap&lt;WebCore::FloatRect&gt;, std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;WebCore::FloatRect&gt; &gt; &gt; m_glyphToBoundsMap
+152 &lt;  8&gt;         std::__1::__compressed_pair&lt;WebCore::GlyphMetricsMap&lt;WebCore::FloatRect&gt; *, std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;WebCore::FloatRect&gt; &gt; &gt; __ptr_
+152 &lt;  8&gt;             std::__1::__compressed_pair_elem&lt;WebCore::GlyphMetricsMap&lt;WebCore::FloatRect&gt; *, 0, false&gt; std::__1::__compressed_pair_elem&lt;WebCore::GlyphMetricsMap&lt;WebCore::FloatRect&gt; *, 0, false&gt;
+152 &lt;  8&gt;               WebCore::GlyphMetricsMap&lt;WebCore::FloatRect&gt; * __value_
+152 &lt;  1&gt;             std::__1::__compressed_pair_elem&lt;std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;WebCore::FloatRect&gt; &gt;, 1, true&gt; std::__1::__compressed_pair_elem&lt;std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;WebCore::FloatRect&gt; &gt;, 1, true&gt;
+152 &lt;  1&gt;                 std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;WebCore::FloatRect&gt; &gt; std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;WebCore::FloatRect&gt; &gt;
+160 &lt; 80&gt;     WebCore::GlyphMetricsMap&lt;float&gt; m_glyphToWidthMap
+160 &lt;  1&gt;       bool m_filledPrimaryPage
+161 &lt;  3&gt;       &lt;PADDING: 3 bytes&gt;
+164 &lt; 64&gt;         WebCore::GlyphMetricsMap&lt;float&gt;::GlyphMetricsPage m_primaryPage
+164 &lt; 64&gt;             std::__1::array&lt;float, 16&gt; m_metrics
+164 &lt; 64&gt;               float[16] __elems_
+228 &lt;  4&gt;       &lt;PADDING: 4 bytes&gt;
+232 &lt;  8&gt;         WTF::HashMap&lt;int, std::__1::unique_ptr&lt;WebCore::GlyphMetricsMap&lt;float&gt;::GlyphMetricsPage, std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;float&gt;::GlyphMetricsPage&gt; &gt;, WTF::DefaultHash&lt;int&gt;, WTF::HashTraits&lt;int&gt;, WTF::HashTraits&lt;std::__1::unique_ptr&lt;WebCore::GlyphMetricsMap&lt;float&gt;::GlyphMetricsPage, std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;float&gt;::GlyphMetricsPage&gt; &gt; &gt;, WTF::HashTableTraits&gt; m_pages
+232 &lt;  8&gt;             WTF::HashMap&lt;int, std::__1::unique_ptr&lt;WebCore::GlyphMetricsMap&lt;float&gt;::GlyphMetricsPage, std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;float&gt;::GlyphMetricsPage&gt; &gt;, WTF::DefaultHash&lt;int&gt;, WTF::HashTraits&lt;int&gt;, WTF::HashTraits&lt;std::__1::unique_ptr&lt;WebCore::GlyphMetricsMap&lt;float&gt;::GlyphMetricsPage, std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;float&gt;::GlyphMetricsPage&gt; &gt; &gt;, WTF::HashTableTraits&gt;::HashTableType m_impl
+232 &lt;  8&gt;               WTF::HashTable&lt;int, WTF::KeyValuePair&lt;int, std::__1::unique_ptr&lt;WebCore::GlyphMetricsMap&lt;float&gt;::GlyphMetricsPage, std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;float&gt;::GlyphMetricsPage&gt; &gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;int, std::__1::unique_ptr&lt;WebCore::GlyphMetricsMap&lt;float&gt;::GlyphMetricsPage, std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;float&gt;::GlyphMetricsPage&gt; &gt; &gt; &gt;, WTF::DefaultHash&lt;int&gt;, WTF::HashMap&lt;int, std::__1::unique_ptr&lt;WebCore::GlyphMetricsMap&lt;float&gt;::GlyphMetricsPage, std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;float&gt;::GlyphMetricsPage&gt; &gt;, WTF::DefaultHash&lt;int&gt;, WTF::HashTraits&lt;int&gt;, WTF::HashTraits&lt;std::__1::unique_ptr&lt;WebCore::GlyphMetricsMap&lt;float&gt;::GlyphMetricsPage, std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;float&gt;::GlyphMetricsPage&gt; &gt; &gt;, WTF::HashTableTraits&gt;::KeyValuePairTraits, WTF::HashTraits&lt;int&gt; &gt;::(anonymous union) None
+240 &lt;912&gt;     WebCore::GlyphMetricsMap&lt;std::__1::optional&lt;WebCore::Path&gt; &gt; m_glyphPathMap
+240 &lt;  1&gt;       bool m_filledPrimaryPage
+241 &lt;  7&gt;       &lt;PADDING: 7 bytes&gt;
+248 &lt;896&gt;         WebCore::GlyphMetricsMap&lt;std::__1::optional&lt;WebCore::Path&gt; &gt;::GlyphMetricsPage m_primaryPage
+248 &lt;896&gt;             std::__1::array&lt;std::__1::optional&lt;WebCore::Path&gt;, 16&gt; m_metrics
+248 &lt;896&gt;               std::__1::optional&lt;WebCore::Path&gt;[16] __elems_
+1144 &lt;  8&gt;         WTF::HashMap&lt;int, std::__1::unique_ptr&lt;WebCore::GlyphMetricsMap&lt;std::__1::optional&lt;WebCore::Path&gt; &gt;::GlyphMetricsPage, std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;std::__1::optional&lt;WebCore::Path&gt; &gt;::GlyphMetricsPage&gt; &gt;, WTF::DefaultHash&lt;int&gt;, WTF::HashTraits&lt;int&gt;, WTF::HashTraits&lt;std::__1::unique_ptr&lt;WebCore::GlyphMetricsMap&lt;std::__1::optional&lt;WebCore::Path&gt; &gt;::GlyphMetricsPage, std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;std::__1::optional&lt;WebCore::Path&gt; &gt;::GlyphMetricsPage&gt; &gt; &gt;, WTF::HashTableTraits&gt; m_pages
+1144 &lt;  8&gt;             WTF::HashMap&lt;int, std::__1::unique_ptr&lt;WebCore::GlyphMetricsMap&lt;std::__1::optional&lt;WebCore::Path&gt; &gt;::GlyphMetricsPage, std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;std::__1::optional&lt;WebCore::Path&gt; &gt;::GlyphMetricsPage&gt; &gt;, WTF::DefaultHash&lt;int&gt;, WTF::HashTraits&lt;int&gt;, WTF::HashTraits&lt;std::__1::unique_ptr&lt;WebCore::GlyphMetricsMap&lt;std::__1::optional&lt;WebCore::Path&gt; &gt;::GlyphMetricsPage, std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;std::__1::optional&lt;WebCore::Path&gt; &gt;::GlyphMetricsPage&gt; &gt; &gt;, WTF::HashTableTraits&gt;::HashTableType m_impl
+1144 &lt;  8&gt;               WTF::HashTable&lt;int, WTF::KeyValuePair&lt;int, std::__1::unique_ptr&lt;WebCore::GlyphMetricsMap&lt;std::__1::optional&lt;WebCore::Path&gt; &gt;::GlyphMetricsPage, std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;std::__1::optional&lt;WebCore::Path&gt; &gt;::GlyphMetricsPage&gt; &gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;int, std::__1::unique_ptr&lt;WebCore::GlyphMetricsMap&lt;std::__1::optional&lt;WebCore::Path&gt; &gt;::GlyphMetricsPage, std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;std::__1::optional&lt;WebCore::Path&gt; &gt;::GlyphMetricsPage&gt; &gt; &gt; &gt;, WTF::DefaultHash&lt;int&gt;, WTF::HashMap&lt;int, std::__1::unique_ptr&lt;WebCore::GlyphMetricsMap&lt;std::__1::optional&lt;WebCore::Path&gt; &gt;::GlyphMetricsPage, std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;std::__1::optional&lt;WebCore::Path&gt; &gt;::GlyphMetricsPage&gt; &gt;, WTF::DefaultHash&lt;int&gt;, WTF::HashTraits&lt;int&gt;, WTF::HashTraits&lt;std::__1::unique_ptr&lt;WebCore::GlyphMetricsMap&lt;std::__1::optional&lt;WebCore::Path&gt; &gt;::GlyphMetricsPage, std::__1::default_delete&lt;WebCore::GlyphMetricsMap&lt;std::__1::optional&lt;WebCore::Path&gt; &gt;::GlyphMetricsPage&gt; &gt; &gt;, WTF::HashTableTraits&gt;::KeyValuePairTraits, WTF::HashTraits&lt;int&gt; &gt;::(anonymous union) None
+1152 &lt;  8&gt;     WTF::BitVector m_codePointSupport
+1152 &lt;  8&gt;       uintptr_t m_bitsOrPointer
+1160 &lt;  8&gt;     WTF::RefPtr&lt;WebCore::OpenTypeMathData, WTF::RawPtrTraits&lt;WebCore::OpenTypeMathData&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::OpenTypeMathData&gt; &gt; m_mathData
+1160 &lt;  8&gt;       WTF::RawPtrTraits&lt;WebCore::OpenTypeMathData&gt;::StorageType m_ptr
+1168 &lt; 16&gt;     std::__1::optional&lt;WTF::ObjectIdentifier&lt;WebCore::RenderingResourceIdentifierType&gt; &gt; m_renderingResourceIdentifier
+1168 &lt; 16&gt;         std::__1::__optional_move_assign_base&lt;WTF::ObjectIdentifier&lt;WebCore::RenderingResourceIdentifierType&gt;, true&gt; std::__1::__optional_move_assign_base&lt;WTF::ObjectIdentifier&lt;WebCore::RenderingResourceIdentifierType&gt;, true&gt;
+1168 &lt; 16&gt;             std::__1::__optional_copy_assign_base&lt;WTF::ObjectIdentifier&lt;WebCore::RenderingResourceIdentifierType&gt;, true&gt; std::__1::__optional_copy_assign_base&lt;WTF::ObjectIdentifier&lt;WebCore::RenderingResourceIdentifierType&gt;, true&gt;
+1168 &lt; 16&gt;                 std::__1::__optional_move_base&lt;WTF::ObjectIdentifier&lt;WebCore::RenderingResourceIdentifierType&gt;, true&gt; std::__1::__optional_move_base&lt;WTF::ObjectIdentifier&lt;WebCore::RenderingResourceIdentifierType&gt;, true&gt;
+1168 &lt; 16&gt;                     std::__1::__optional_copy_base&lt;WTF::ObjectIdentifier&lt;WebCore::RenderingResourceIdentifierType&gt;, true&gt; std::__1::__optional_copy_base&lt;WTF::ObjectIdentifier&lt;WebCore::RenderingResourceIdentifierType&gt;, true&gt;
+1168 &lt; 16&gt;                         std::__1::__optional_storage_base&lt;WTF::ObjectIdentifier&lt;WebCore::RenderingResourceIdentifierType&gt;, false&gt; std::__1::__optional_storage_base&lt;WTF::ObjectIdentifier&lt;WebCore::RenderingResourceIdentifierType&gt;, false&gt;
+1168 &lt; 16&gt;                             std::__1::__optional_destruct_base&lt;WTF::ObjectIdentifier&lt;WebCore::RenderingResourceIdentifierType&gt;, true&gt; std::__1::__optional_destruct_base&lt;WTF::ObjectIdentifier&lt;WebCore::RenderingResourceIdentifierType&gt;, true&gt;
+1168 &lt;  8&gt;                               std::__1::__optional_destruct_base&lt;WTF::ObjectIdentifier&lt;WebCore::RenderingResourceIdentifierType&gt;, true&gt;::(anonymous union) None
+1176 &lt;  1&gt;                               bool __engaged_
+1168 &lt;  1&gt;         std::__1::__optional_sfinae_ctor_base_t&lt;WTF::ObjectIdentifier&lt;WebCore::RenderingResourceIdentifierType&gt; &gt; std::__1::__optional_sfinae_ctor_base_t&lt;WTF::ObjectIdentifier&lt;WebCore::RenderingResourceIdentifierType&gt; &gt;
+1168 &lt;  1&gt;         std::__1::__optional_sfinae_assign_base_t&lt;WTF::ObjectIdentifier&lt;WebCore::RenderingResourceIdentifierType&gt; &gt; std::__1::__optional_sfinae_assign_base_t&lt;WTF::ObjectIdentifier&lt;WebCore::RenderingResourceIdentifierType&gt; &gt;
+1177 &lt;  7&gt;   &lt;PADDING: 7 bytes&gt;
+1184 &lt;  8&gt;     std::__1::unique_ptr&lt;WebCore::Font::DerivedFonts, std::__1::default_delete&lt;WebCore::Font::DerivedFonts&gt; &gt; m_derivedFontData
+1184 &lt;  8&gt;         std::__1::__compressed_pair&lt;WebCore::Font::DerivedFonts *, std::__1::default_delete&lt;WebCore::Font::DerivedFonts&gt; &gt; __ptr_
+1184 &lt;  8&gt;             std::__1::__compressed_pair_elem&lt;WebCore::Font::DerivedFonts *, 0, false&gt; std::__1::__compressed_pair_elem&lt;WebCore::Font::DerivedFonts *, 0, false&gt;
+1184 &lt;  8&gt;               WebCore::Font::DerivedFonts * __value_
+1184 &lt;  1&gt;             std::__1::__compressed_pair_elem&lt;std::__1::default_delete&lt;WebCore::Font::DerivedFonts&gt;, 1, true&gt; std::__1::__compressed_pair_elem&lt;std::__1::default_delete&lt;WebCore::Font::DerivedFonts&gt;, 1, true&gt;
+1184 &lt;  1&gt;                 std::__1::default_delete&lt;WebCore::Font::DerivedFonts&gt; std::__1::default_delete&lt;WebCore::Font::DerivedFonts&gt;
+1192 &lt;  4&gt;   WebCore::Font::SupportsFeature m_supportsSmallCaps
+1196 &lt;  4&gt;   WebCore::Font::SupportsFeature m_supportsAllSmallCaps
+1200 &lt;  4&gt;   WebCore::Font::SupportsFeature m_supportsPetiteCaps
+1204 &lt;  4&gt;   WebCore::Font::SupportsFeature m_supportsAllPetiteCaps
+1208 &lt; 16&gt;     std::__1::optional&lt;PAL::OTSVGTable&gt; m_otSVGTable
+1208 &lt; 16&gt;         std::__1::__optional_move_assign_base&lt;PAL::OTSVGTable, false&gt; std::__1::__optional_move_assign_base&lt;PAL::OTSVGTable, false&gt;
+1208 &lt; 16&gt;             std::__1::__optional_copy_assign_base&lt;PAL::OTSVGTable, false&gt; std::__1::__optional_copy_assign_base&lt;PAL::OTSVGTable, false&gt;
+1208 &lt; 16&gt;                 std::__1::__optional_move_base&lt;PAL::OTSVGTable, false&gt; std::__1::__optional_move_base&lt;PAL::OTSVGTable, false&gt;
+1208 &lt; 16&gt;                     std::__1::__optional_copy_base&lt;PAL::OTSVGTable, false&gt; std::__1::__optional_copy_base&lt;PAL::OTSVGTable, false&gt;
+1208 &lt; 16&gt;                         std::__1::__optional_storage_base&lt;PAL::OTSVGTable, false&gt; std::__1::__optional_storage_base&lt;PAL::OTSVGTable, false&gt;
+1208 &lt; 16&gt;                             std::__1::__optional_destruct_base&lt;PAL::OTSVGTable, false&gt; std::__1::__optional_destruct_base&lt;PAL::OTSVGTable, false&gt;
+1208 &lt;  8&gt;                               std::__1::__optional_destruct_base&lt;PAL::OTSVGTable, false&gt;::(anonymous union) None
+1216 &lt;  1&gt;                               bool __engaged_
+1208 &lt;  1&gt;         std::__1::__optional_sfinae_ctor_base_t&lt;PAL::OTSVGTable&gt; std::__1::__optional_sfinae_ctor_base_t&lt;PAL::OTSVGTable&gt;
+1208 &lt;  1&gt;         std::__1::__optional_sfinae_assign_base_t&lt;PAL::OTSVGTable&gt; std::__1::__optional_sfinae_assign_base_t&lt;PAL::OTSVGTable&gt;
+1217 &lt;  7&gt;   &lt;PADDING: 7 bytes&gt;
+1224 &lt; 24&gt;     std::__1::optional&lt;WebCore::Font::ComplexColorFormatGlyphs&gt; m_glyphsWithComplexColorFormat
+1224 &lt; 24&gt;         std::__1::__optional_move_assign_base&lt;WebCore::Font::ComplexColorFormatGlyphs, false&gt; std::__1::__optional_move_assign_base&lt;WebCore::Font::ComplexColorFormatGlyphs, false&gt;
+1224 &lt; 24&gt;             std::__1::__optional_copy_assign_base&lt;WebCore::Font::ComplexColorFormatGlyphs, false&gt; std::__1::__optional_copy_assign_base&lt;WebCore::Font::ComplexColorFormatGlyphs, false&gt;
+1224 &lt; 24&gt;                 std::__1::__optional_move_base&lt;WebCore::Font::ComplexColorFormatGlyphs, false&gt; std::__1::__optional_move_base&lt;WebCore::Font::ComplexColorFormatGlyphs, false&gt;
+1224 &lt; 24&gt;                     std::__1::__optional_copy_base&lt;WebCore::Font::ComplexColorFormatGlyphs, false&gt; std::__1::__optional_copy_base&lt;WebCore::Font::ComplexColorFormatGlyphs, false&gt;
+1224 &lt; 24&gt;                         std::__1::__optional_storage_base&lt;WebCore::Font::ComplexColorFormatGlyphs, false&gt; std::__1::__optional_storage_base&lt;WebCore::Font::ComplexColorFormatGlyphs, false&gt;
+1224 &lt; 24&gt;                             std::__1::__optional_destruct_base&lt;WebCore::Font::ComplexColorFormatGlyphs, false&gt; std::__1::__optional_destruct_base&lt;WebCore::Font::ComplexColorFormatGlyphs, false&gt;
+1224 &lt; 16&gt;                               std::__1::__optional_destruct_base&lt;WebCore::Font::ComplexColorFormatGlyphs, false&gt;::(anonymous union) None
+1240 &lt;  1&gt;                               bool __engaged_
+1224 &lt;  1&gt;         std::__1::__optional_sfinae_ctor_base_t&lt;WebCore::Font::ComplexColorFormatGlyphs&gt; std::__1::__optional_sfinae_ctor_base_t&lt;WebCore::Font::ComplexColorFormatGlyphs&gt;
+1224 &lt;  1&gt;         std::__1::__optional_sfinae_assign_base_t&lt;WebCore::Font::ComplexColorFormatGlyphs&gt; std::__1::__optional_sfinae_assign_base_t&lt;WebCore::Font::ComplexColorFormatGlyphs&gt;
+1241 &lt;  7&gt;   &lt;PADDING: 7 bytes&gt;
+1248 &lt;  2&gt;   WebCore::Glyph m_spaceGlyph
+1250 &lt;  2&gt;   WebCore::Glyph m_zeroWidthSpaceGlyph
+1252 &lt;  1&gt;   WebCore::Font::Origin m_origin
+1253 &lt;  1&gt;   WebCore::Font::Visibility m_visibility
+1254 &lt;  2&gt;   &lt;PADDING: 2 bytes&gt;
+1256 &lt;  4&gt;   float m_spaceWidth
+1260 &lt;  4&gt;   float m_syntheticBoldOffset
+1264 &lt; :1&gt;   unsigned int m_treatAsFixedPitch : 1
+1264 &lt; :1&gt;   unsigned int m_isInterstitial : 1
+1264 &lt; :1&gt;   unsigned int m_isTextOrientationFallback : 1
+1264 &lt; :1&gt;   unsigned int m_isBrokenIdeographFallback : 1
+1264 &lt; :1&gt;   unsigned int m_hasVerticalGlyphs : 1
+1264 &lt; :1&gt;   unsigned int m_isUsedInSystemFallbackFontCache : 1
+1264 &lt; :1&gt;   unsigned int m_allowsAntialiasing : 1
+1264 &lt; :1&gt;   &lt;UNUSED BITS: 1 bit&gt;
+1265 &lt;  7&gt;   &lt;PADDING: 7 bytes&gt;
Total byte size: 1272
Total pad bytes: 57
Padding percentage: 4.48 %
OpenSource %</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1931285</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-02-05 21:56:50 -0800</bug_when>
    <thetext>&lt;rdar://problem/105068653&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1931286</commentid>
    <comment_count>2</comment_count>
      <attachid>464861</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2023-02-05 21:59:18 -0800</bug_when>
    <thetext>Created attachment 464861
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1931287</commentid>
    <comment_count>3</comment_count>
      <attachid>464861</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2023-02-05 22:13:20 -0800</bug_when>
    <thetext>Comment on attachment 464861
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=464861&amp;action=review

&gt; COMMIT_MESSAGE:9
&gt; +Reduces size from 1272 to 1256 bytes.

That is a lot of bytes! The padding was not a significant fraction. I wonder what the big users are and if this really needs to be over 1000 bytes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1931385</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2023-02-06 08:29:46 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 464861 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=464861&amp;action=review
&gt; 
&gt; &gt; COMMIT_MESSAGE:9
&gt; &gt; +Reduces size from 1272 to 1256 bytes.
&gt; 
&gt; That is a lot of bytes! The padding was not a significant fraction. I wonder
&gt; what the big users are and if this really needs to be over 1000 bytes.

The large members (see the second column):

 +80 &lt; 56&gt;     const WebCore::FontPlatformData m_platformData
+164 &lt; 64&gt;         WebCore::GlyphMetricsMap&lt;float&gt;::GlyphMetricsPage m_primaryPage
+248 &lt;896&gt;         WebCore::GlyphMetricsMap&lt;std::__1::optional&lt;WebCore::Path&gt; &gt;::GlyphMetricsPage m_primaryPage

That last one could be heap allocated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1931391</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2023-02-06 09:01:53 -0800</bug_when>
    <thetext>I guess heap allocated might not be an improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1931392</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2023-02-06 09:02:14 -0800</bug_when>
    <thetext>Unless it’s often missing, in which case it would indeed be an improvement!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1931398</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-02-06 09:17:37 -0800</bug_when>
    <thetext>Committed 259896@main (c62b38e4e53b): &lt;https://commits.webkit.org/259896@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 464861.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464861</attachid>
            <date>2023-02-05 21:59:18 -0800</date>
            <delta_ts>2023-02-06 09:17:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-251774-20230205215917.patch</filename>
            <type>text/plain</type>
            <size>2477</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">RnJvbSBmOWE3YjU5YmViZDIxMTY3MWVhZjRhNjA5ZDQ5MmQ0M2E1ZGZhODg2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTaW1vbiBGcmFzZXIgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CkRhdGU6IFN1biwgNSBGZWIgMjAyMyAyMTo1NzoxNCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIE9w
dGltaXplIGxheW91dCBvZiBGb250IHRvIHJlZHVjZSBwYWRkaW5nCiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjUxNzc0IDxyZGFyOi8vcHJvYmxlbS8xMDUwNjg2NTM+
CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCk1ha2UgU3VwcG9ydHNGZWF0dXJlIDgtYml0
LiBSZW9yZGVyIG1lbWJlcnMgdG8gb3B0aW1pemUgcGFkZGluZy4gTW9yZSBjb3VsZCBiZSBhY2hp
ZXZlZCBieSBhdm9pZGluZyBzdGQ6Om9wdGlvbmFsPD4uCgpSZWR1Y2VzIHNpemUgZnJvbSAxMjcy
IHRvIDEyNTYgYnl0ZXMuCgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
aDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggfCAxNCArKysr
KysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggNzA5MWFmOGQ2
NmZjLi5hNzk3MWJiZmRmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmgKQEAgLTMxMCw3ICszMTAsMTAgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVl
X3B0cjxEZXJpdmVkRm9udHM+IG1fZGVyaXZlZEZvbnREYXRhOwogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgZW51bSBjbGFzcyBTdXBwb3J0c0ZlYXR1cmUgeworICAgIG11dGFibGUgc3RkOjpv
cHRpb25hbDxQQUw6Ok9UU1ZHVGFibGU+IG1fb3RTVkdUYWJsZTsKKyAgICBtdXRhYmxlIHN0ZDo6
b3B0aW9uYWw8Q29tcGxleENvbG9yRm9ybWF0R2x5cGhzPiBtX2dseXBoc1dpdGhDb21wbGV4Q29s
b3JGb3JtYXQ7IC8vIFNWRyBhbmQgc2JpeAorCisgICAgZW51bSBjbGFzcyBTdXBwb3J0c0ZlYXR1
cmUgOiB1aW50OF90IHsKICAgICAgICAgTm8sCiAgICAgICAgIFllcywKICAgICAgICAgVW5rbm93
bgpAQCAtMzE5LDggKzMyMiw2IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBTdXBwb3J0c0ZlYXR1
cmUgbV9zdXBwb3J0c0FsbFNtYWxsQ2FwcyB7IFN1cHBvcnRzRmVhdHVyZTo6VW5rbm93biB9Owog
ICAgIG11dGFibGUgU3VwcG9ydHNGZWF0dXJlIG1fc3VwcG9ydHNQZXRpdGVDYXBzIHsgU3VwcG9y
dHNGZWF0dXJlOjpVbmtub3duIH07CiAgICAgbXV0YWJsZSBTdXBwb3J0c0ZlYXR1cmUgbV9zdXBw
b3J0c0FsbFBldGl0ZUNhcHMgeyBTdXBwb3J0c0ZlYXR1cmU6OlVua25vd24gfTsKLSAgICBtdXRh
YmxlIHN0ZDo6b3B0aW9uYWw8UEFMOjpPVFNWR1RhYmxlPiBtX290U1ZHVGFibGU7Ci0gICAgbXV0
YWJsZSBzdGQ6Om9wdGlvbmFsPENvbXBsZXhDb2xvckZvcm1hdEdseXBocz4gbV9nbHlwaHNXaXRo
Q29tcGxleENvbG9yRm9ybWF0OyAvLyBTVkcgYW5kIHNiaXgKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oV0lOKQpAQCAtMzMxLDEzICszMzIsMTIgQEAgcHJpdmF0ZToKICAgICBHbHlwaCBtX3NwYWNl
R2x5cGggeyAwIH07CiAgICAgR2x5cGggbV96ZXJvV2lkdGhTcGFjZUdseXBoIHsgMCB9OwogCi0g
ICAgT3JpZ2luIG1fb3JpZ2luOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBhcmUgY3VzdG9tIGZvbnQg
bG9hZGVkIHZpYSBAZm9udC1mYWNlCi0gICAgVmlzaWJpbGl0eSBtX3Zpc2liaWxpdHk7IC8vIEBm
b250LWZhY2UncyBpbnRlcm5hbCB0aW1lciBjYW4gY2F1c2UgdXMgdG8gc2hvdyBmb250cyBldmVu
IHdoZW4gYSBmb250IGlzIGJlaW5nIGRvd25sb2FkZWQuCi0KICAgICBmbG9hdCBtX3NwYWNlV2lk
dGggeyAwIH07Ci0KICAgICBmbG9hdCBtX3N5bnRoZXRpY0JvbGRPZmZzZXQgeyAwIH07CiAKKyAg
ICBPcmlnaW4gbV9vcmlnaW47IC8vIFdoZXRoZXIgb3Igbm90IHdlIGFyZSBjdXN0b20gZm9udCBs
b2FkZWQgdmlhIEBmb250LWZhY2UKKyAgICBWaXNpYmlsaXR5IG1fdmlzaWJpbGl0eTsgLy8gQGZv
bnQtZmFjZSdzIGludGVybmFsIHRpbWVyIGNhbiBjYXVzZSB1cyB0byBzaG93IGZvbnRzIGV2ZW4g
d2hlbiBhIGZvbnQgaXMgYmVpbmcgZG93bmxvYWRlZC4KKwogICAgIHVuc2lnbmVkIG1fdHJlYXRB
c0ZpeGVkUGl0Y2ggOiAxOwogICAgIHVuc2lnbmVkIG1faXNJbnRlcnN0aXRpYWwgOiAxOyAvLyBX
aGV0aGVyIG9yIG5vdCB0aGlzIGN1c3RvbSBmb250IGlzIHRoZSBsYXN0IHJlc29ydCBwbGFjZWhv
bGRlciBmb3IgYSBsb2FkaW5nIGZvbnQKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>