From bea5d12e21c4df643661f0a663d530841cf313c4 Mon Sep 17 00:00:00 2001 From: James Ide Date: Thu, 1 Oct 2026 14:13:29 -0700 Subject: [PATCH 1/2] Shrink TextAttributes by 56 bytes Why === `TextAttributes` is copied into every `AttributedString` fragment and is part of every text measure cache key so its memory usage adds up. We can reduce the size of its fields by several bytes, saving about 22% on Android and 15% on iOS. Another way to think of this is that it frees up a memory budget to add support for features like inheritable styles. How === The enum types in `TextAttributes` use `uint8_t` (1 byte) where possible. There are some exceptions like `FontWeight` which uses `uint16_t` because it has values up to 900, and `FontVariant` stays `int`. Also, there is an optimization around the ordering of font-related fields to reduce byte-alignment gaps by ordering all the 4-byte fields first, followed by 2-byte optionals. This is small and saves 16 bytes on iOS and 8 bytes on Android, but is also a win just from reordering a few fields that are close to each other. There is a test case to keep this optimization in place. | Platform | Before | After | | ------------- | --------- | --------- | | Android | 256 bytes | 200 bytes | | iOS | 376 bytes | 320 bytes | I also checked that `-O3` didn't do these optimizations already. Test Plan === Fantom tests and the `attributedstring` gtests. --- .../attributedstring/TextAttributes.h | 11 ++- .../renderer/attributedstring/primitives.h | 24 ++--- .../tests/TextAttributesLayoutTest.cpp | 89 +++++++++++++++++++ 3 files changed, 110 insertions(+), 14 deletions(-) create mode 100644 packages/react-native/ReactCommon/react/renderer/attributedstring/tests/TextAttributesLayoutTest.cpp diff --git a/packages/react-native/ReactCommon/react/renderer/attributedstring/TextAttributes.h b/packages/react-native/ReactCommon/react/renderer/attributedstring/TextAttributes.h index bcf902f9093a..ac48a4971536 100644 --- a/packages/react-native/ReactCommon/react/renderer/attributedstring/TextAttributes.h +++ b/packages/react-native/ReactCommon/react/renderer/attributedstring/TextAttributes.h @@ -54,17 +54,20 @@ class TextAttributes : public DebugStringConvertible { Float opacity{std::numeric_limits::quiet_NaN()}; // Font + // We list 4-byte fields first to mitigate alignment gaps created by smaller + // values. Keep these fields in sync with TextAttributesLayoutTest, which + // checks alignment. std::string fontFamily{""}; Float fontSize{std::numeric_limits::quiet_NaN()}; Float fontSizeMultiplier{std::numeric_limits::quiet_NaN()}; - std::optional fontWeight{}; - std::optional fontStyle{}; + Float maxFontSizeMultiplier{std::numeric_limits::quiet_NaN()}; + Float letterSpacing{std::numeric_limits::quiet_NaN()}; std::optional fontVariant{}; std::optional fontVariationSettings{}; + std::optional fontWeight{}; + std::optional fontStyle{}; std::optional allowFontScaling{}; - Float maxFontSizeMultiplier{std::numeric_limits::quiet_NaN()}; std::optional dynamicTypeRamp{}; - Float letterSpacing{std::numeric_limits::quiet_NaN()}; std::optional textTransform{}; // Paragraph Styles diff --git a/packages/react-native/ReactCommon/react/renderer/attributedstring/primitives.h b/packages/react-native/ReactCommon/react/renderer/attributedstring/primitives.h index 515b2b43ba9d..b96661bd4dd4 100644 --- a/packages/react-native/ReactCommon/react/renderer/attributedstring/primitives.h +++ b/packages/react-native/ReactCommon/react/renderer/attributedstring/primitives.h @@ -9,14 +9,18 @@ #include +#include #include #include namespace facebook::react { -enum class FontStyle { Normal, Italic, Oblique }; +// We explicitly use the smallest size for each enum type in TextAttributes to +// optimize memory used by each AttributedString fragment and text measurement +// cache key. Usually this is 1 byte but some types have larger enum values. +enum class FontStyle : uint8_t { Normal, Italic, Oblique }; -enum class FontWeight : int { +enum class FontWeight : uint16_t { Weight100 = 100, UltraLight = 100, Weight200 = 200, @@ -67,7 +71,7 @@ enum class FontVariant : int { StylisticTwenty = 1 << 25 }; -enum class DynamicTypeRamp { +enum class DynamicTypeRamp : uint8_t { Caption2, Caption1, Footnote, @@ -99,7 +103,7 @@ enum class TextWidthMode { LongestLine, }; -enum class TextAlignment { +enum class TextAlignment : uint8_t { Natural, // Indicates the default alignment for script. Left, // Visually left aligned. Center, // Visually centered. @@ -116,14 +120,14 @@ enum class TextAlignmentVertical { Center, }; -enum class WritingDirection { +enum class WritingDirection : uint8_t { Natural, // Determines direction using the Unicode Bidi Algorithm rules P2 and // P3. LeftToRight, // Left to right writing direction. RightToLeft // Right to left writing direction. }; -enum class LineBreakStrategy { +enum class LineBreakStrategy : uint8_t { None, // Don't use any line break strategies PushOut, // Use the push out line break strategy. HangulWordPriority, // When specified, it prohibits breaking between Hangul @@ -132,7 +136,7 @@ enum class LineBreakStrategy { // system uses for standard UI labels. }; -enum class LineBreakMode { +enum class LineBreakMode : uint8_t { Word, // Wrap at word boundaries, default Char, // Wrap at character boundaries Clip, // Simply clip @@ -141,11 +145,11 @@ enum class LineBreakMode { Tail // Truncate at tail of line: "abcd..." }; -enum class TextDecorationLineType { None, Underline, Strikethrough, UnderlineStrikethrough }; +enum class TextDecorationLineType : uint8_t { None, Underline, Strikethrough, UnderlineStrikethrough }; -enum class TextDecorationStyle { Solid, Double, Dotted, Dashed, Wavy }; +enum class TextDecorationStyle : uint8_t { Solid, Double, Dotted, Dashed, Wavy }; -enum class TextTransform { +enum class TextTransform : uint8_t { None, Uppercase, Lowercase, diff --git a/packages/react-native/ReactCommon/react/renderer/attributedstring/tests/TextAttributesLayoutTest.cpp b/packages/react-native/ReactCommon/react/renderer/attributedstring/tests/TextAttributesLayoutTest.cpp new file mode 100644 index 000000000000..77884d2d6466 --- /dev/null +++ b/packages/react-native/ReactCommon/react/renderer/attributedstring/tests/TextAttributesLayoutTest.cpp @@ -0,0 +1,89 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#include + +#include +#include +#include +#include + +#include + +namespace facebook::react { +namespace { + +struct Member { + const char* name; + size_t offset; + size_t size; +}; + +template +size_t offsetWithin(const TextAttributes& attributes, const T& member) { + return static_cast( + reinterpret_cast(&member) - + reinterpret_cast(&attributes)); +} + +} // namespace + +// The Font group of TextAttributes lists its 4-byte fields before its 2-byte +// optionals to mitigate alignment gaps. This checks the span the group's +// fields cover against the sum of their sizes, so it does not depend on the +// order below matching the header's. A field added to the group belongs among +// the fields of its size, and in this list. +TEST(TextAttributesLayoutTest, fontGroupHasNoAlignmentGaps) { + TextAttributes attributes; +#define MEMBER(field) \ + Member{ \ + #field, \ + offsetWithin(attributes, attributes.field), \ + sizeof(attributes.field)} + std::vector fontGroup = { + MEMBER(fontFamily), + MEMBER(fontSize), + MEMBER(fontSizeMultiplier), + MEMBER(maxFontSizeMultiplier), + MEMBER(letterSpacing), + MEMBER(fontVariant), + MEMBER(fontVariationSettings), + MEMBER(fontWeight), + MEMBER(fontStyle), + MEMBER(allowFontScaling), + MEMBER(dynamicTypeRamp), + MEMBER(textTransform), + }; +#undef MEMBER + + std::sort( + fontGroup.begin(), fontGroup.end(), [](const auto& a, const auto& b) { + return a.offset < b.offset; + }); + size_t total = 0; + std::ostringstream gaps; + for (size_t i = 0; i < fontGroup.size(); i++) { + total += fontGroup[i].size; + if (i > 0) { + auto previousEnd = fontGroup[i - 1].offset + fontGroup[i - 1].size; + if (fontGroup[i].offset > previousEnd) { + gaps << " " << (fontGroup[i].offset - previousEnd) << " bytes after " + << fontGroup[i - 1].name << ","; + } + } + } + auto span = fontGroup.back().offset + fontGroup.back().size - + fontGroup.front().offset; + + EXPECT_EQ(span, total) + << "The Font group of TextAttributes spans " << span + << " bytes but its fields total " << total << ". Gaps:" << gaps.str() + << " either a field is out of size order in TextAttributes.h or a Font " + << "field is missing from this test's list."; +} + +} // namespace facebook::react From 465272e256f635fb4a7a08923741179847103c80 Mon Sep 17 00:00:00 2001 From: James Ide Date: Fri, 2 Oct 2026 05:31:02 -0700 Subject: [PATCH 2/2] Update C++ API snapshots for the TextAttributes enums --- .../api-snapshots/ReactAndroidDebugCxx.api | 20 +++++++++---------- .../api-snapshots/ReactAndroidNewarchCxx.api | 20 +++++++++---------- .../api-snapshots/ReactAndroidReleaseCxx.api | 20 +++++++++---------- .../api-snapshots/ReactAppleDebugCxx.api | 20 +++++++++---------- .../api-snapshots/ReactAppleNewarchCxx.api | 20 +++++++++---------- .../api-snapshots/ReactAppleReleaseCxx.api | 20 +++++++++---------- .../api-snapshots/ReactCommonDebugCxx.api | 20 +++++++++---------- .../api-snapshots/ReactCommonNewarchCxx.api | 20 +++++++++---------- .../api-snapshots/ReactCommonReleaseCxx.api | 20 +++++++++---------- 9 files changed, 90 insertions(+), 90 deletions(-) diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api index c61ae05c5935..63afd27dcf05 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api @@ -6206,7 +6206,7 @@ enum facebook::react::DisplayType { None, } -enum facebook::react::DynamicTypeRamp { +enum facebook::react::DynamicTypeRamp : uint8_t { Body, Callout, Caption1, @@ -6255,7 +6255,7 @@ enum facebook::react::FocusDirection { FocusUp, } -enum facebook::react::FontStyle { +enum facebook::react::FontStyle : uint8_t { Italic, Normal, Oblique, @@ -6290,7 +6290,7 @@ enum facebook::react::FontVariant : int { TabularNums, } -enum facebook::react::FontWeight : int { +enum facebook::react::FontWeight : uint16_t { Black, Bold, Demibold, @@ -6362,7 +6362,7 @@ enum facebook::react::LayoutDirection { Undefined, } -enum facebook::react::LineBreakMode { +enum facebook::react::LineBreakMode : uint8_t { Char, Clip, Head, @@ -6371,7 +6371,7 @@ enum facebook::react::LineBreakMode { Word, } -enum facebook::react::LineBreakStrategy { +enum facebook::react::LineBreakStrategy : uint8_t { HangulWordPriority, None, PushOut, @@ -6629,7 +6629,7 @@ enum facebook::react::SubmitBehavior { Submit, } -enum facebook::react::TextAlignment { +enum facebook::react::TextAlignment : uint8_t { Center, End, Justified, @@ -6652,14 +6652,14 @@ enum facebook::react::TextBreakStrategy { Simple, } -enum facebook::react::TextDecorationLineType { +enum facebook::react::TextDecorationLineType : uint8_t { None, Strikethrough, Underline, UnderlineStrikethrough, } -enum facebook::react::TextDecorationStyle { +enum facebook::react::TextDecorationStyle : uint8_t { Dashed, Dotted, Double, @@ -6667,7 +6667,7 @@ enum facebook::react::TextDecorationStyle { Wavy, } -enum facebook::react::TextTransform { +enum facebook::react::TextTransform : uint8_t { Capitalize, Lowercase, None, @@ -6715,7 +6715,7 @@ enum facebook::react::UnitType { Undefined, } -enum facebook::react::WritingDirection { +enum facebook::react::WritingDirection : uint8_t { LeftToRight, Natural, RightToLeft, diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api index 9d5008343459..310270227343 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api @@ -6016,7 +6016,7 @@ enum facebook::react::DisplayType { None, } -enum facebook::react::DynamicTypeRamp { +enum facebook::react::DynamicTypeRamp : uint8_t { Body, Callout, Caption1, @@ -6065,7 +6065,7 @@ enum facebook::react::FocusDirection { FocusUp, } -enum facebook::react::FontStyle { +enum facebook::react::FontStyle : uint8_t { Italic, Normal, Oblique, @@ -6100,7 +6100,7 @@ enum facebook::react::FontVariant : int { TabularNums, } -enum facebook::react::FontWeight : int { +enum facebook::react::FontWeight : uint16_t { Black, Bold, Demibold, @@ -6172,7 +6172,7 @@ enum facebook::react::LayoutDirection { Undefined, } -enum facebook::react::LineBreakMode { +enum facebook::react::LineBreakMode : uint8_t { Char, Clip, Head, @@ -6181,7 +6181,7 @@ enum facebook::react::LineBreakMode { Word, } -enum facebook::react::LineBreakStrategy { +enum facebook::react::LineBreakStrategy : uint8_t { HangulWordPriority, None, PushOut, @@ -6439,7 +6439,7 @@ enum facebook::react::SubmitBehavior { Submit, } -enum facebook::react::TextAlignment { +enum facebook::react::TextAlignment : uint8_t { Center, End, Justified, @@ -6462,14 +6462,14 @@ enum facebook::react::TextBreakStrategy { Simple, } -enum facebook::react::TextDecorationLineType { +enum facebook::react::TextDecorationLineType : uint8_t { None, Strikethrough, Underline, UnderlineStrikethrough, } -enum facebook::react::TextDecorationStyle { +enum facebook::react::TextDecorationStyle : uint8_t { Dashed, Dotted, Double, @@ -6477,7 +6477,7 @@ enum facebook::react::TextDecorationStyle { Wavy, } -enum facebook::react::TextTransform { +enum facebook::react::TextTransform : uint8_t { Capitalize, Lowercase, None, @@ -6525,7 +6525,7 @@ enum facebook::react::UnitType { Undefined, } -enum facebook::react::WritingDirection { +enum facebook::react::WritingDirection : uint8_t { LeftToRight, Natural, RightToLeft, diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api index 2470a7083fb9..89d7a9d086e9 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api @@ -6197,7 +6197,7 @@ enum facebook::react::DisplayType { None, } -enum facebook::react::DynamicTypeRamp { +enum facebook::react::DynamicTypeRamp : uint8_t { Body, Callout, Caption1, @@ -6246,7 +6246,7 @@ enum facebook::react::FocusDirection { FocusUp, } -enum facebook::react::FontStyle { +enum facebook::react::FontStyle : uint8_t { Italic, Normal, Oblique, @@ -6281,7 +6281,7 @@ enum facebook::react::FontVariant : int { TabularNums, } -enum facebook::react::FontWeight : int { +enum facebook::react::FontWeight : uint16_t { Black, Bold, Demibold, @@ -6353,7 +6353,7 @@ enum facebook::react::LayoutDirection { Undefined, } -enum facebook::react::LineBreakMode { +enum facebook::react::LineBreakMode : uint8_t { Char, Clip, Head, @@ -6362,7 +6362,7 @@ enum facebook::react::LineBreakMode { Word, } -enum facebook::react::LineBreakStrategy { +enum facebook::react::LineBreakStrategy : uint8_t { HangulWordPriority, None, PushOut, @@ -6620,7 +6620,7 @@ enum facebook::react::SubmitBehavior { Submit, } -enum facebook::react::TextAlignment { +enum facebook::react::TextAlignment : uint8_t { Center, End, Justified, @@ -6643,14 +6643,14 @@ enum facebook::react::TextBreakStrategy { Simple, } -enum facebook::react::TextDecorationLineType { +enum facebook::react::TextDecorationLineType : uint8_t { None, Strikethrough, Underline, UnderlineStrikethrough, } -enum facebook::react::TextDecorationStyle { +enum facebook::react::TextDecorationStyle : uint8_t { Dashed, Dotted, Double, @@ -6658,7 +6658,7 @@ enum facebook::react::TextDecorationStyle { Wavy, } -enum facebook::react::TextTransform { +enum facebook::react::TextTransform : uint8_t { Capitalize, Lowercase, None, @@ -6706,7 +6706,7 @@ enum facebook::react::UnitType { Undefined, } -enum facebook::react::WritingDirection { +enum facebook::react::WritingDirection : uint8_t { LeftToRight, Natural, RightToLeft, diff --git a/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api index d0d014ec91cb..c2c7b9c55b8c 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api @@ -8311,7 +8311,7 @@ enum facebook::react::DisplayType { None, } -enum facebook::react::DynamicTypeRamp { +enum facebook::react::DynamicTypeRamp : uint8_t { Body, Callout, Caption1, @@ -8351,7 +8351,7 @@ enum facebook::react::FilterType { Sepia, } -enum facebook::react::FontStyle { +enum facebook::react::FontStyle : uint8_t { Italic, Normal, Oblique, @@ -8386,7 +8386,7 @@ enum facebook::react::FontVariant : int { TabularNums, } -enum facebook::react::FontWeight : int { +enum facebook::react::FontWeight : uint16_t { Black, Bold, Demibold, @@ -8481,7 +8481,7 @@ enum facebook::react::LayoutDirection { Undefined, } -enum facebook::react::LineBreakMode { +enum facebook::react::LineBreakMode : uint8_t { Char, Clip, Head, @@ -8490,7 +8490,7 @@ enum facebook::react::LineBreakMode { Word, } -enum facebook::react::LineBreakStrategy { +enum facebook::react::LineBreakStrategy : uint8_t { HangulWordPriority, None, PushOut, @@ -8765,7 +8765,7 @@ enum facebook::react::SubmitBehavior { Submit, } -enum facebook::react::TextAlignment { +enum facebook::react::TextAlignment : uint8_t { Center, End, Justified, @@ -8788,14 +8788,14 @@ enum facebook::react::TextBreakStrategy { Simple, } -enum facebook::react::TextDecorationLineType { +enum facebook::react::TextDecorationLineType : uint8_t { None, Strikethrough, Underline, UnderlineStrikethrough, } -enum facebook::react::TextDecorationStyle { +enum facebook::react::TextDecorationStyle : uint8_t { Dashed, Dotted, Double, @@ -8810,7 +8810,7 @@ enum facebook::react::TextInputAccessoryVisibilityMode { WhileEditing, } -enum facebook::react::TextTransform { +enum facebook::react::TextTransform : uint8_t { Capitalize, Lowercase, None, @@ -8858,7 +8858,7 @@ enum facebook::react::UnitType { Undefined, } -enum facebook::react::WritingDirection { +enum facebook::react::WritingDirection : uint8_t { LeftToRight, Natural, RightToLeft, diff --git a/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api index 4290dcb0e425..e7dc63c7ca04 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api @@ -8153,7 +8153,7 @@ enum facebook::react::DisplayType { None, } -enum facebook::react::DynamicTypeRamp { +enum facebook::react::DynamicTypeRamp : uint8_t { Body, Callout, Caption1, @@ -8193,7 +8193,7 @@ enum facebook::react::FilterType { Sepia, } -enum facebook::react::FontStyle { +enum facebook::react::FontStyle : uint8_t { Italic, Normal, Oblique, @@ -8228,7 +8228,7 @@ enum facebook::react::FontVariant : int { TabularNums, } -enum facebook::react::FontWeight : int { +enum facebook::react::FontWeight : uint16_t { Black, Bold, Demibold, @@ -8323,7 +8323,7 @@ enum facebook::react::LayoutDirection { Undefined, } -enum facebook::react::LineBreakMode { +enum facebook::react::LineBreakMode : uint8_t { Char, Clip, Head, @@ -8332,7 +8332,7 @@ enum facebook::react::LineBreakMode { Word, } -enum facebook::react::LineBreakStrategy { +enum facebook::react::LineBreakStrategy : uint8_t { HangulWordPriority, None, PushOut, @@ -8607,7 +8607,7 @@ enum facebook::react::SubmitBehavior { Submit, } -enum facebook::react::TextAlignment { +enum facebook::react::TextAlignment : uint8_t { Center, End, Justified, @@ -8630,14 +8630,14 @@ enum facebook::react::TextBreakStrategy { Simple, } -enum facebook::react::TextDecorationLineType { +enum facebook::react::TextDecorationLineType : uint8_t { None, Strikethrough, Underline, UnderlineStrikethrough, } -enum facebook::react::TextDecorationStyle { +enum facebook::react::TextDecorationStyle : uint8_t { Dashed, Dotted, Double, @@ -8652,7 +8652,7 @@ enum facebook::react::TextInputAccessoryVisibilityMode { WhileEditing, } -enum facebook::react::TextTransform { +enum facebook::react::TextTransform : uint8_t { Capitalize, Lowercase, None, @@ -8700,7 +8700,7 @@ enum facebook::react::UnitType { Undefined, } -enum facebook::react::WritingDirection { +enum facebook::react::WritingDirection : uint8_t { LeftToRight, Natural, RightToLeft, diff --git a/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api index 72a9805b05fd..af2a1efe4c87 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api @@ -8302,7 +8302,7 @@ enum facebook::react::DisplayType { None, } -enum facebook::react::DynamicTypeRamp { +enum facebook::react::DynamicTypeRamp : uint8_t { Body, Callout, Caption1, @@ -8342,7 +8342,7 @@ enum facebook::react::FilterType { Sepia, } -enum facebook::react::FontStyle { +enum facebook::react::FontStyle : uint8_t { Italic, Normal, Oblique, @@ -8377,7 +8377,7 @@ enum facebook::react::FontVariant : int { TabularNums, } -enum facebook::react::FontWeight : int { +enum facebook::react::FontWeight : uint16_t { Black, Bold, Demibold, @@ -8472,7 +8472,7 @@ enum facebook::react::LayoutDirection { Undefined, } -enum facebook::react::LineBreakMode { +enum facebook::react::LineBreakMode : uint8_t { Char, Clip, Head, @@ -8481,7 +8481,7 @@ enum facebook::react::LineBreakMode { Word, } -enum facebook::react::LineBreakStrategy { +enum facebook::react::LineBreakStrategy : uint8_t { HangulWordPriority, None, PushOut, @@ -8756,7 +8756,7 @@ enum facebook::react::SubmitBehavior { Submit, } -enum facebook::react::TextAlignment { +enum facebook::react::TextAlignment : uint8_t { Center, End, Justified, @@ -8779,14 +8779,14 @@ enum facebook::react::TextBreakStrategy { Simple, } -enum facebook::react::TextDecorationLineType { +enum facebook::react::TextDecorationLineType : uint8_t { None, Strikethrough, Underline, UnderlineStrikethrough, } -enum facebook::react::TextDecorationStyle { +enum facebook::react::TextDecorationStyle : uint8_t { Dashed, Dotted, Double, @@ -8801,7 +8801,7 @@ enum facebook::react::TextInputAccessoryVisibilityMode { WhileEditing, } -enum facebook::react::TextTransform { +enum facebook::react::TextTransform : uint8_t { Capitalize, Lowercase, None, @@ -8849,7 +8849,7 @@ enum facebook::react::UnitType { Undefined, } -enum facebook::react::WritingDirection { +enum facebook::react::WritingDirection : uint8_t { LeftToRight, Natural, RightToLeft, diff --git a/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api index 8b46097a89f9..6a9079fab518 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api @@ -4567,7 +4567,7 @@ enum facebook::react::DisplayType { None, } -enum facebook::react::DynamicTypeRamp { +enum facebook::react::DynamicTypeRamp : uint8_t { Body, Callout, Caption1, @@ -4607,7 +4607,7 @@ enum facebook::react::FilterType { Sepia, } -enum facebook::react::FontStyle { +enum facebook::react::FontStyle : uint8_t { Italic, Normal, Oblique, @@ -4642,7 +4642,7 @@ enum facebook::react::FontVariant : int { TabularNums, } -enum facebook::react::FontWeight : int { +enum facebook::react::FontWeight : uint16_t { Black, Bold, Demibold, @@ -4714,7 +4714,7 @@ enum facebook::react::LayoutDirection { Undefined, } -enum facebook::react::LineBreakMode { +enum facebook::react::LineBreakMode : uint8_t { Char, Clip, Head, @@ -4723,7 +4723,7 @@ enum facebook::react::LineBreakMode { Word, } -enum facebook::react::LineBreakStrategy { +enum facebook::react::LineBreakStrategy : uint8_t { HangulWordPriority, None, PushOut, @@ -4960,7 +4960,7 @@ enum facebook::react::SubmitBehavior { Submit, } -enum facebook::react::TextAlignment { +enum facebook::react::TextAlignment : uint8_t { Center, End, Justified, @@ -4983,14 +4983,14 @@ enum facebook::react::TextBreakStrategy { Simple, } -enum facebook::react::TextDecorationLineType { +enum facebook::react::TextDecorationLineType : uint8_t { None, Strikethrough, Underline, UnderlineStrikethrough, } -enum facebook::react::TextDecorationStyle { +enum facebook::react::TextDecorationStyle : uint8_t { Dashed, Dotted, Double, @@ -4998,7 +4998,7 @@ enum facebook::react::TextDecorationStyle { Wavy, } -enum facebook::react::TextTransform { +enum facebook::react::TextTransform : uint8_t { Capitalize, Lowercase, None, @@ -5046,7 +5046,7 @@ enum facebook::react::UnitType { Undefined, } -enum facebook::react::WritingDirection { +enum facebook::react::WritingDirection : uint8_t { LeftToRight, Natural, RightToLeft, diff --git a/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api index 692b5064e583..2c443d15483d 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api @@ -4417,7 +4417,7 @@ enum facebook::react::DisplayType { None, } -enum facebook::react::DynamicTypeRamp { +enum facebook::react::DynamicTypeRamp : uint8_t { Body, Callout, Caption1, @@ -4457,7 +4457,7 @@ enum facebook::react::FilterType { Sepia, } -enum facebook::react::FontStyle { +enum facebook::react::FontStyle : uint8_t { Italic, Normal, Oblique, @@ -4492,7 +4492,7 @@ enum facebook::react::FontVariant : int { TabularNums, } -enum facebook::react::FontWeight : int { +enum facebook::react::FontWeight : uint16_t { Black, Bold, Demibold, @@ -4564,7 +4564,7 @@ enum facebook::react::LayoutDirection { Undefined, } -enum facebook::react::LineBreakMode { +enum facebook::react::LineBreakMode : uint8_t { Char, Clip, Head, @@ -4573,7 +4573,7 @@ enum facebook::react::LineBreakMode { Word, } -enum facebook::react::LineBreakStrategy { +enum facebook::react::LineBreakStrategy : uint8_t { HangulWordPriority, None, PushOut, @@ -4810,7 +4810,7 @@ enum facebook::react::SubmitBehavior { Submit, } -enum facebook::react::TextAlignment { +enum facebook::react::TextAlignment : uint8_t { Center, End, Justified, @@ -4833,14 +4833,14 @@ enum facebook::react::TextBreakStrategy { Simple, } -enum facebook::react::TextDecorationLineType { +enum facebook::react::TextDecorationLineType : uint8_t { None, Strikethrough, Underline, UnderlineStrikethrough, } -enum facebook::react::TextDecorationStyle { +enum facebook::react::TextDecorationStyle : uint8_t { Dashed, Dotted, Double, @@ -4848,7 +4848,7 @@ enum facebook::react::TextDecorationStyle { Wavy, } -enum facebook::react::TextTransform { +enum facebook::react::TextTransform : uint8_t { Capitalize, Lowercase, None, @@ -4896,7 +4896,7 @@ enum facebook::react::UnitType { Undefined, } -enum facebook::react::WritingDirection { +enum facebook::react::WritingDirection : uint8_t { LeftToRight, Natural, RightToLeft, diff --git a/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api index ff0ef95bbfdb..d138a7481454 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api @@ -4558,7 +4558,7 @@ enum facebook::react::DisplayType { None, } -enum facebook::react::DynamicTypeRamp { +enum facebook::react::DynamicTypeRamp : uint8_t { Body, Callout, Caption1, @@ -4598,7 +4598,7 @@ enum facebook::react::FilterType { Sepia, } -enum facebook::react::FontStyle { +enum facebook::react::FontStyle : uint8_t { Italic, Normal, Oblique, @@ -4633,7 +4633,7 @@ enum facebook::react::FontVariant : int { TabularNums, } -enum facebook::react::FontWeight : int { +enum facebook::react::FontWeight : uint16_t { Black, Bold, Demibold, @@ -4705,7 +4705,7 @@ enum facebook::react::LayoutDirection { Undefined, } -enum facebook::react::LineBreakMode { +enum facebook::react::LineBreakMode : uint8_t { Char, Clip, Head, @@ -4714,7 +4714,7 @@ enum facebook::react::LineBreakMode { Word, } -enum facebook::react::LineBreakStrategy { +enum facebook::react::LineBreakStrategy : uint8_t { HangulWordPriority, None, PushOut, @@ -4951,7 +4951,7 @@ enum facebook::react::SubmitBehavior { Submit, } -enum facebook::react::TextAlignment { +enum facebook::react::TextAlignment : uint8_t { Center, End, Justified, @@ -4974,14 +4974,14 @@ enum facebook::react::TextBreakStrategy { Simple, } -enum facebook::react::TextDecorationLineType { +enum facebook::react::TextDecorationLineType : uint8_t { None, Strikethrough, Underline, UnderlineStrikethrough, } -enum facebook::react::TextDecorationStyle { +enum facebook::react::TextDecorationStyle : uint8_t { Dashed, Dotted, Double, @@ -4989,7 +4989,7 @@ enum facebook::react::TextDecorationStyle { Wavy, } -enum facebook::react::TextTransform { +enum facebook::react::TextTransform : uint8_t { Capitalize, Lowercase, None, @@ -5037,7 +5037,7 @@ enum facebook::react::UnitType { Undefined, } -enum facebook::react::WritingDirection { +enum facebook::react::WritingDirection : uint8_t { LeftToRight, Natural, RightToLeft,