@@ -8,7 +8,7 @@ pub(crate) mod tree;
88
99pub ( crate ) use range:: RangedStyleBuilder ;
1010
11- use alloc:: { vec, vec:: Vec } ;
11+ use alloc:: { string :: String , sync :: Arc , vec, vec:: Vec } ;
1212
1313use super :: style:: {
1414 Brush , FontFamily , FontFeature , FontSettings , FontStack , FontStyle , FontVariation , FontWeight ,
@@ -157,6 +157,7 @@ impl ResolveContext {
157157 StyleProperty :: LetterSpacing ( value) => LetterSpacing ( * value * scale) ,
158158 StyleProperty :: WordBreak ( value) => WordBreak ( * value) ,
159159 StyleProperty :: OverflowWrap ( value) => OverflowWrap ( * value) ,
160+ StyleProperty :: GraphemeReplacement ( value) => GraphemeReplacement ( value. clone ( ) ) ,
160161 }
161162 }
162163
@@ -193,6 +194,7 @@ impl ResolveContext {
193194 letter_spacing : raw_style. letter_spacing * scale,
194195 word_break : raw_style. word_break ,
195196 overflow_wrap : raw_style. overflow_wrap ,
197+ grapheme_replacement : raw_style. grapheme_replacement . clone ( ) ,
196198 }
197199 }
198200
@@ -374,6 +376,8 @@ pub(crate) enum ResolvedProperty<B: Brush> {
374376 WordBreak ( WordBreakStrength ) ,
375377 /// Control over "emergency" line-breaking.
376378 OverflowWrap ( OverflowWrap ) ,
379+ /// Replace graphemes with another grapheme.
380+ GraphemeReplacement ( Option < Arc < String > > ) ,
377381}
378382
379383/// Flattened group of style properties.
@@ -411,6 +415,8 @@ pub(crate) struct ResolvedStyle<B: Brush> {
411415 pub ( crate ) word_break : WordBreakStrength ,
412416 /// Control over "emergency" line-breaking.
413417 pub ( crate ) overflow_wrap : OverflowWrap ,
418+ /// Replace graphemes with another grapheme.
419+ pub ( crate ) grapheme_replacement : Option < Arc < String > > ,
414420}
415421
416422impl < B : Brush > ResolvedStyle < B > {
@@ -440,6 +446,7 @@ impl<B: Brush> ResolvedStyle<B> {
440446 LetterSpacing ( value) => self . letter_spacing = value,
441447 WordBreak ( value) => self . word_break = value,
442448 OverflowWrap ( value) => self . overflow_wrap = value,
449+ GraphemeReplacement ( value) => self . grapheme_replacement = value,
443450 }
444451 }
445452
@@ -468,6 +475,7 @@ impl<B: Brush> ResolvedStyle<B> {
468475 LetterSpacing ( value) => nearly_eq ( self . letter_spacing , * value) ,
469476 WordBreak ( value) => self . word_break == * value,
470477 OverflowWrap ( value) => self . overflow_wrap == * value,
478+ GraphemeReplacement ( value) => self . grapheme_replacement == * value,
471479 }
472480 }
473481
@@ -478,6 +486,7 @@ impl<B: Brush> ResolvedStyle<B> {
478486 strikethrough : self . strikethrough . as_layout_decoration ( & self . brush ) ,
479487 line_height : self . line_height . resolve ( self . font_size ) ,
480488 overflow_wrap : self . overflow_wrap ,
489+ grapheme_replacement : self . grapheme_replacement . clone ( ) ,
481490 }
482491 }
483492}
0 commit comments