@@ -588,15 +588,40 @@ fn write_name<T: EntryLike>(
588
588
let hyphen_init = ctx. style . csl . settings . initialize_with_hyphen ;
589
589
let sort_sep = name_opts. sort_separator ;
590
590
591
+ // Get the formatting from the name element itself
592
+ let name_formatting = cs_name. formatting ;
593
+
591
594
let first_part = cs_name. name_part_given ( ) ;
592
595
let family_part = cs_name. name_part_family ( ) ;
593
- let first_format = first_part. map ( |p| p. formatting ) . unwrap_or_default ( ) ;
596
+
597
+ // Combine the name formatting with specific part formatting
598
+ let first_format = first_part
599
+ . map ( |p| {
600
+ let mut fmt = p. formatting ;
601
+ // If the name has font-variant set but the part doesn't, inherit it
602
+ if name_formatting. font_variant . is_some ( ) && fmt. font_variant . is_none ( ) {
603
+ fmt. font_variant = name_formatting. font_variant ;
604
+ }
605
+ fmt
606
+ } )
607
+ . unwrap_or ( name_formatting) ;
608
+
609
+ let family_format = family_part
610
+ . map ( |p| {
611
+ let mut fmt = p. formatting ;
612
+ // If the name has font-variant set but the part doesn't, inherit it
613
+ if name_formatting. font_variant . is_some ( ) && fmt. font_variant . is_none ( ) {
614
+ fmt. font_variant = name_formatting. font_variant ;
615
+ }
616
+ fmt
617
+ } )
618
+ . unwrap_or ( name_formatting) ;
619
+
594
620
let first_case = first_part. map ( |p| p. text_case ) . unwrap_or_default ( ) ;
595
621
let first_affixes = [
596
622
first_part. map ( |p| & p. affixes ) . and_then ( |f| f. prefix . as_ref ( ) ) ,
597
623
first_part. map ( |p| & p. affixes ) . and_then ( |f| f. suffix . as_ref ( ) ) ,
598
624
] ;
599
- let family_format = family_part. map ( |p| p. formatting ) . unwrap_or_default ( ) ;
600
625
let family_case = family_part. map ( |p| p. text_case ) . unwrap_or_default ( ) ;
601
626
let family_affixes = [
602
627
family_part. map ( |p| & p. affixes ) . and_then ( |f| f. prefix . as_ref ( ) ) ,
0 commit comments