@@ -8,7 +8,7 @@ pub(crate) mod tree;
8
8
9
9
pub ( crate ) use range:: RangedStyleBuilder ;
10
10
11
- use alloc:: { vec, vec:: Vec } ;
11
+ use alloc:: { string :: String , sync :: Arc , vec, vec:: Vec } ;
12
12
13
13
use super :: style:: {
14
14
Brush , FontFamily , FontFeature , FontSettings , FontStack , FontStyle , FontVariation , FontWeight ,
@@ -157,6 +157,7 @@ impl ResolveContext {
157
157
StyleProperty :: LetterSpacing ( value) => LetterSpacing ( * value * scale) ,
158
158
StyleProperty :: WordBreak ( value) => WordBreak ( * value) ,
159
159
StyleProperty :: OverflowWrap ( value) => OverflowWrap ( * value) ,
160
+ StyleProperty :: GraphemeReplacement ( value) => GraphemeReplacement ( value. clone ( ) ) ,
160
161
}
161
162
}
162
163
@@ -193,6 +194,7 @@ impl ResolveContext {
193
194
letter_spacing : raw_style. letter_spacing * scale,
194
195
word_break : raw_style. word_break ,
195
196
overflow_wrap : raw_style. overflow_wrap ,
197
+ grapheme_replacement : raw_style. grapheme_replacement . clone ( ) ,
196
198
}
197
199
}
198
200
@@ -374,6 +376,8 @@ pub(crate) enum ResolvedProperty<B: Brush> {
374
376
WordBreak ( WordBreakStrength ) ,
375
377
/// Control over "emergency" line-breaking.
376
378
OverflowWrap ( OverflowWrap ) ,
379
+ /// Replace graphemes with another grapheme.
380
+ GraphemeReplacement ( Option < Arc < String > > ) ,
377
381
}
378
382
379
383
/// Flattened group of style properties.
@@ -411,6 +415,8 @@ pub(crate) struct ResolvedStyle<B: Brush> {
411
415
pub ( crate ) word_break : WordBreakStrength ,
412
416
/// Control over "emergency" line-breaking.
413
417
pub ( crate ) overflow_wrap : OverflowWrap ,
418
+ /// Replace graphemes with another grapheme.
419
+ pub ( crate ) grapheme_replacement : Option < Arc < String > > ,
414
420
}
415
421
416
422
impl < B : Brush > ResolvedStyle < B > {
@@ -440,6 +446,7 @@ impl<B: Brush> ResolvedStyle<B> {
440
446
LetterSpacing ( value) => self . letter_spacing = value,
441
447
WordBreak ( value) => self . word_break = value,
442
448
OverflowWrap ( value) => self . overflow_wrap = value,
449
+ GraphemeReplacement ( value) => self . grapheme_replacement = value,
443
450
}
444
451
}
445
452
@@ -468,6 +475,7 @@ impl<B: Brush> ResolvedStyle<B> {
468
475
LetterSpacing ( value) => nearly_eq ( self . letter_spacing , * value) ,
469
476
WordBreak ( value) => self . word_break == * value,
470
477
OverflowWrap ( value) => self . overflow_wrap == * value,
478
+ GraphemeReplacement ( value) => self . grapheme_replacement == * value,
471
479
}
472
480
}
473
481
@@ -478,6 +486,7 @@ impl<B: Brush> ResolvedStyle<B> {
478
486
strikethrough : self . strikethrough . as_layout_decoration ( & self . brush ) ,
479
487
line_height : self . line_height . resolve ( self . font_size ) ,
480
488
overflow_wrap : self . overflow_wrap ,
489
+ grapheme_replacement : self . grapheme_replacement . clone ( ) ,
481
490
}
482
491
}
483
492
}
0 commit comments