ladybird/Userland/Libraries/LibWeb/CSS
Andreas Kling e7de5cb4d2 LibWeb: Bring CSS line-height closer to other engines
This patch makes a few changes to the way we calculate line-height:

- `line-height: normal` is now resolved using metrics from the used
  font (specifically, round(A + D + lineGap)).

- `line-height: calc(...)` is now resolved at style compute time.

- `line-height` values are now absolutized at style compute time.

As a consequence of the above, we no longer need to walk the DOM
ancestor chain looking for line-heights during style computation.
Instead, values are inherited, resolved and absolutized locally.

This is not only much faster, but also makes our line-height metrics
match those of other engines like Gecko and Blink.
2024-01-12 15:04:06 +01:00
..
Parser LibWeb: Allow 'center' in 3-value background-positions 2024-01-10 23:27:28 +01:00
StyleValues LibWeb/CSS: Resolve NumericCalculationNode to percentage when requested 2024-01-11 08:01:47 +01:00
SyntaxHighlighter LibSyntax+Userland: Make LibSyntax not depend on LibGUI 2023-08-29 07:57:39 -04:00
Angle.cpp AK: Add to_radians and to_degrees math functions 2023-09-10 08:38:29 +01:00
Angle.h LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
BackdropFilter.h LibWeb: Split FilterValueListStyleValue out of StyleValue.{h,cpp} 2023-03-25 16:56:04 +00:00
CalculatedOr.cpp LibWeb: Add method for converting a FooOrCalculated to a StyleValue 2023-12-30 20:11:24 +01:00
CalculatedOr.h LibWeb: Add method for converting a FooOrCalculated to a StyleValue 2023-12-30 20:11:24 +01:00
Clip.cpp LibWeb: Move CSS::EdgeRect into its own files 2023-03-30 21:29:50 +02:00
Clip.h LibWeb: Move CSS::EdgeRect into its own files 2023-03-30 21:29:50 +02:00
ColumnCount.h LibWeb: Implement support for parsing CSS column-count property 2023-09-07 20:16:33 +02:00
ComputedValues.h LibWeb: Rename "position" enum to "positioning" 2023-10-30 10:40:30 +00:00
CSS.cpp LibWeb: Make Serialize functions infallible 2023-08-22 17:51:48 +01:00
CSS.h LibWeb: Port the CSS namespace to IDL 2023-03-15 12:48:25 -04:00
CSS.idl LibWeb: Port the CSS namespace to IDL 2023-03-15 12:48:25 -04:00
CSSConditionRule.cpp LibWeb: Port Intrinsics from DeprecatedString 2023-11-28 17:15:27 -05:00
CSSConditionRule.h LibWeb: Port CSSConditionRule interface from DeprecatedString to String 2023-08-29 10:05:02 +02:00
CSSConditionRule.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSFontFaceRule.cpp LibJS+LibWeb: Add missing JS_DEFINE_ALLOCATOR() for a bunch of classes 2023-12-23 23:02:10 +01:00
CSSFontFaceRule.h LibWeb: Port CSSRule::serialized from DeprecatedString to String 2023-11-28 17:15:27 -05:00
CSSFontFaceRule.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSGroupingRule.cpp LibWeb: Port Intrinsics from DeprecatedString 2023-11-28 17:15:27 -05:00
CSSGroupingRule.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
CSSGroupingRule.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSImportRule.cpp LibWeb: Make Document::page() return a Page& 2023-12-15 22:04:46 +01:00
CSSImportRule.h LibWeb: Return String from CSSImportRule::href() 2023-12-01 20:48:13 +01:00
CSSImportRule.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSKeyframeRule.cpp LibWeb: Port Intrinsics from DeprecatedString 2023-11-28 17:15:27 -05:00
CSSKeyframeRule.h LibWeb: Port CSSRule::serialized from DeprecatedString to String 2023-11-28 17:15:27 -05:00
CSSKeyframeRule.idl IDL: Add missing #imports 2023-11-11 08:51:51 +01:00
CSSKeyframesRule.cpp LibWeb: Port Intrinsics from DeprecatedString 2023-11-28 17:15:27 -05:00
CSSKeyframesRule.h LibWeb: Port CSSRule::serialized from DeprecatedString to String 2023-11-28 17:15:27 -05:00
CSSKeyframesRule.idl IDL: Add missing #imports 2023-11-11 08:51:51 +01:00
CSSMediaRule.cpp LibWeb: Remove some to_deprecated_string() calls in the CSS code 2023-12-01 20:48:13 +01:00
CSSMediaRule.h LibWeb: Port CSSRule::serialized from DeprecatedString to String 2023-11-28 17:15:27 -05:00
CSSMediaRule.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSNamespaceRule.cpp LibWeb: Port CSSNamespaceRule to FlyString 2023-12-01 16:03:58 +01:00
CSSNamespaceRule.h LibWeb: Port CSSNamespaceRule to FlyString 2023-12-01 16:03:58 +01:00
CSSNamespaceRule.idl LibWeb: Rough implementation of CSS namespace rule 2023-07-30 20:27:19 +01:00
CSSNumericType.cpp LibWeb: Merge background-position parsing into position code 2023-11-21 01:29:26 +01:00
CSSNumericType.h LibWeb: Implement Flex and FlexStyleValue types 2023-09-28 20:33:20 +01:00
CSSRule.cpp LibWeb: Port CSSRule::serialized from DeprecatedString to String 2023-11-28 17:15:27 -05:00
CSSRule.h LibWeb: Return String from CSSStyleRule::selector_text() 2023-12-01 20:48:13 +01:00
CSSRule.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSRuleList.cpp LibWeb: Delete LegacyPlatformObject and move behavior to PlatformObject 2024-01-12 09:11:18 +01:00
CSSRuleList.h LibWeb: Delete LegacyPlatformObject and move behavior to PlatformObject 2024-01-12 09:11:18 +01:00
CSSRuleList.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSStyleDeclaration.cpp LibWeb: Move use pseudo element styles from TreeBuilder to StyleComputer 2023-12-17 23:12:34 +01:00
CSSStyleDeclaration.h LibWeb: Move use pseudo element styles from TreeBuilder to StyleComputer 2023-12-17 23:12:34 +01:00
CSSStyleDeclaration.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSStyleRule.cpp LibWeb: Return String from CSSStyleRule::selector_text() 2023-12-01 20:48:13 +01:00
CSSStyleRule.h LibWeb: Return String from CSSStyleRule::selector_text() 2023-12-01 20:48:13 +01:00
CSSStyleRule.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSStyleSheet.cpp LibWeb: Port CSSNamespaceRule to FlyString 2023-12-01 16:03:58 +01:00
CSSStyleSheet.h LibWeb: Fix UAF in CSSStyleSheet 2023-11-24 10:57:17 +01:00
CSSStyleSheet.idl IDL: Add missing #imports 2023-11-11 08:51:51 +01:00
CSSSupportsRule.cpp LibWeb: Port Intrinsics from DeprecatedString 2023-11-28 17:15:27 -05:00
CSSSupportsRule.h LibWeb: Port CSSRule::serialized from DeprecatedString to String 2023-11-28 17:15:27 -05:00
CSSSupportsRule.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
Default.css LibWeb: Add textarea placeholder 2024-01-07 10:22:32 +01:00
Display.cpp LibWeb: Move <display-foo> definitions into Enums.json 2023-09-11 17:03:22 +01:00
Display.h LibWeb: Add display: math 2023-09-11 17:03:22 +01:00
EasingFunctions.json Meta/CodeGenerators+LibWeb: Implement parsing CSS easing functions 2023-07-13 05:10:41 +02:00
EdgeRect.cpp LibWeb: Don't convert to floating point in CSS::EdgeRect 2023-09-01 09:40:14 +02:00
EdgeRect.h LibWeb: Don't convert to floating point in CSS::EdgeRect 2023-09-01 09:40:14 +02:00
ElementCSSInlineStyle.idl LibWeb: Move Element.prototype.style to ElementCSSInlineStyle mixin 2023-03-20 20:37:40 -04:00
Enums.json LibWeb: Support "normal" and "stretch" justify-content in CSS parser 2024-01-04 09:47:20 +01:00
Flex.cpp LibWeb: Implement Flex and FlexStyleValue types 2023-09-28 20:33:20 +01:00
Flex.h LibWeb: Implement Flex and FlexStyleValue types 2023-09-28 20:33:20 +01:00
FontFace.cpp LibWeb+LibGfx: Move UnicodeRange from LibWeb to LibGfx 2023-12-10 17:32:04 +01:00
FontFace.h LibWeb+LibGfx: Move UnicodeRange from LibWeb to LibGfx 2023-12-10 17:32:04 +01:00
Frequency.cpp LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
Frequency.h LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
GeneralEnclosed.h LibWeb: Port GeneralEnclosed to new Strings 2023-02-19 00:51:16 +01:00
GridTrackPlacement.cpp LibWeb: Define if identifier represent area or line during layout [GFC] 2023-08-28 09:19:41 +02:00
GridTrackPlacement.h LibWeb: Define if identifier represent area or line during layout [GFC] 2023-08-28 09:19:41 +02:00
GridTrackSize.cpp LibWeb: Fix grid line name placement when repeat() is used 2024-01-05 13:21:09 +01:00
GridTrackSize.h LibWeb: Fix grid line name placement when repeat() is used 2024-01-05 13:21:09 +01:00
Identifiers.json LibWeb: Implement mask-type CSS property 2023-10-09 07:28:18 +02:00
Length.cpp LibWeb: Bring CSS line-height closer to other engines 2024-01-12 15:04:06 +01:00
Length.h LibWeb: Bring CSS line-height closer to other engines 2024-01-12 15:04:06 +01:00
LengthBox.cpp LibWeb: Move PercentageOr and subclasses into PercentageOr.{h,cpp} 2023-03-30 21:29:50 +02:00
LengthBox.h Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LinkStyle.idl LibWeb: Extract the LinkStyle IDL mixin 2022-07-29 17:15:49 +01:00
MathFunctions.json LibWeb: Generate parsing code for CSS math functions 2023-07-15 10:23:33 +02:00
MediaFeatures.json LibWeb: Reformat inconsistent CSS JSON files 2023-08-02 12:49:46 +01:00
MediaList.cpp LibWeb: Delete LegacyPlatformObject and move behavior to PlatformObject 2024-01-12 09:11:18 +01:00
MediaList.h LibWeb: Delete LegacyPlatformObject and move behavior to PlatformObject 2024-01-12 09:11:18 +01:00
MediaList.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
MediaQuery.cpp LibWeb: Bring CSS line-height closer to other engines 2024-01-12 15:04:06 +01:00
MediaQuery.h LibWeb: Make serializing media-queries infallible 2023-08-22 17:51:48 +01:00
MediaQueryList.cpp LibWeb: Use String for getting/setting MediaQueryList media 2023-12-01 20:48:13 +01:00
MediaQueryList.h LibWeb: Use String for getting/setting MediaQueryList media 2023-12-01 20:48:13 +01:00
MediaQueryList.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
MediaQueryListEvent.cpp LibWeb: Port Intrinsics from DeprecatedString 2023-11-28 17:15:27 -05:00
MediaQueryListEvent.h LibWeb: Put most LibWeb GC objects in type-specific heap blocks 2023-11-19 22:00:48 +01:00
MediaQueryListEvent.idl LibWeb: Switch IDL from UseNewAKString to UseDeprecatedAKString 2023-09-02 19:23:41 +01:00
Number.h LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
Percentage.h LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
PercentageOr.cpp LibWeb: Add Length::resolved() overload for CSSPixels 2023-08-30 20:09:15 +02:00
PercentageOr.h LibWeb/CSS: Revert to PercentageOr::resolve() to be templated 2024-01-07 13:16:02 +01:00
PreferredColorScheme.cpp Everywhere: Rename equals_ignoring_case => equals_ignoring_ascii_case 2023-03-10 13:15:44 +01:00
PreferredColorScheme.h LibWeb: Use StringView in CSS::PreferredColorScheme 2023-02-15 12:48:26 -05:00
Properties.json LibWeb: Support "normal" and "stretch" justify-content in CSS parser 2024-01-04 09:47:20 +01:00
PseudoClasses.json LibWeb: Implement the :open and :closed pseudo-classes 2023-09-13 19:55:22 +02:00
QuirksMode.css LibWeb: Flesh out the default "quirks mode" style sheet 2022-09-20 14:48:07 +02:00
Ratio.cpp LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
Ratio.h LibWeb: Use CSSPixelFraction to represent aspect ratios 2023-09-04 12:40:17 +02:00
Resolution.cpp LibWeb: Make resolution calculable 2023-12-30 20:11:24 +01:00
Resolution.h LibWeb: Make resolution calculable 2023-12-30 20:11:24 +01:00
ResolvedCSSStyleDeclaration.cpp LibWeb: Add DOMMatrix string constructor and set matrix value 2024-01-07 13:15:53 +01:00
ResolvedCSSStyleDeclaration.h LibWeb: Move use pseudo element styles from TreeBuilder to StyleComputer 2023-12-17 23:12:34 +01:00
Screen.cpp LibWeb: Make HTML::Window::page() return a Page& 2023-12-15 22:04:46 +01:00
Screen.h LibWeb: Put most LibWeb GC objects in type-specific heap blocks 2023-11-19 22:00:48 +01:00
Screen.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
Selector.cpp LibWeb: Add basic input range rendering 2023-12-21 13:17:51 +01:00
Selector.h LibWeb: Add basic input range rendering 2023-12-21 13:17:51 +01:00
SelectorEngine.cpp LibWeb/CSS: Fix stack use after scope in matches_attribute() 2023-12-24 08:03:58 +00:00
SelectorEngine.h LibWeb: Wrap PseudoElements stored in SimpleSelector in a class 2023-12-11 16:54:59 +01:00
Serialize.cpp LibWeb+LibGfx: Move UnicodeRange from LibWeb to LibGfx 2023-12-10 17:32:04 +01:00
Serialize.h LibWeb+LibGfx: Move UnicodeRange from LibWeb to LibGfx 2023-12-10 17:32:04 +01:00
Size.cpp LibWeb: Forbid using CSS::Length as reference value in resolved() 2024-01-07 09:03:57 +01:00
Size.h LibWeb: Forbid using CSS::Length as reference value in resolved() 2024-01-07 09:03:57 +01:00
StyleComputer.cpp LibWeb: Bring CSS line-height closer to other engines 2024-01-12 15:04:06 +01:00
StyleComputer.h LibWeb: Bring CSS line-height closer to other engines 2024-01-12 15:04:06 +01:00
StyleProperties.cpp LibWeb: Bring CSS line-height closer to other engines 2024-01-12 15:04:06 +01:00
StyleProperties.h LibWeb: Bring CSS line-height closer to other engines 2024-01-12 15:04:06 +01:00
StyleProperty.cpp LibWeb: Don't include Layout/Node.h from DOM/Element.h 2023-05-08 09:29:44 +02:00
StyleProperty.h LibWeb: Port custom properties to FlyString 2023-11-07 11:33:41 +01:00
StyleSheet.cpp LibWeb: Respect media attribute of style tag 2022-11-14 14:47:37 +00:00
StyleSheet.h LibWeb: Use String for getting/setting MediaQueryList media 2023-12-01 20:48:13 +01:00
StyleSheet.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
StyleSheetList.cpp LibWeb: Delete LegacyPlatformObject and move behavior to PlatformObject 2024-01-12 09:11:18 +01:00
StyleSheetList.h LibWeb: Delete LegacyPlatformObject and move behavior to PlatformObject 2024-01-12 09:11:18 +01:00
StyleSheetList.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
StyleValue.cpp LibWeb: Implement Flex and FlexStyleValue types 2023-09-28 20:33:20 +01:00
StyleValue.h LibWeb: Implement Flex and FlexStyleValue types 2023-09-28 20:33:20 +01:00
Supports.cpp LibWeb: Make serializing Supports rules infallible 2023-08-22 17:51:48 +01:00
Supports.h LibWeb: Make serializing Supports rules infallible 2023-08-22 17:51:48 +01:00
SystemColor.cpp LibWeb: Implement <system-color> and <deprecated-color> keywords 2023-08-25 20:30:20 +01:00
SystemColor.h LibWeb: Implement <system-color> and <deprecated-color> keywords 2023-08-25 20:30:20 +01:00
Time.cpp LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
Time.h LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
Transformation.cpp LibWeb: Add missing CSS Transforms Module Level 2 functions 2024-01-10 09:48:25 +01:00
Transformation.h LibWeb: Allow percentages on CSS transform scale functions 2024-01-10 09:48:25 +01:00
TransformFunctions.json LibWeb: Add missing CSS Transforms Module Level 2 functions 2024-01-10 09:48:25 +01:00
VisualViewport.cpp LibWeb: Port Intrinsics from DeprecatedString 2023-11-28 17:15:27 -05:00
VisualViewport.h LibWeb: Put most LibWeb GC objects in type-specific heap blocks 2023-11-19 22:00:48 +01:00
VisualViewport.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00