@@ -59,7 +59,7 @@ public function writeStyles(Spreadsheet $spreadsheet): string
5959 for ($ i = 0 ; $ i < $ this ->getParentWriter ()->getFontHashTable ()->count (); ++$ i ) {
6060 $ thisfont = $ this ->getParentWriter ()->getFontHashTable ()->getByIndex ($ i );
6161 if ($ thisfont !== null ) {
62- $ this ->writeFont ($ objWriter , $ thisfont );
62+ $ this ->writeFont ($ objWriter , $ thisfont, $ spreadsheet );
6363 }
6464 }
6565
@@ -145,7 +145,7 @@ public function writeStyles(Spreadsheet $spreadsheet): string
145145 /** @var ?Conditional */
146146 $ thisstyle = $ this ->getParentWriter ()->getStylesConditionalHashTable ()->getByIndex ($ i );
147147 if ($ thisstyle !== null ) {
148- $ this ->writeCellStyleDxf ($ objWriter , $ thisstyle ->getStyle ());
148+ $ this ->writeCellStyleDxf ($ objWriter , $ thisstyle ->getStyle (), $ spreadsheet );
149149 }
150150 }
151151
@@ -284,7 +284,7 @@ private function startFont(XMLWriter $objWriter, bool &$fontStarted): void
284284 /**
285285 * Write Font.
286286 */
287- private function writeFont (XMLWriter $ objWriter , Font $ font ): void
287+ private function writeFont (XMLWriter $ objWriter , Font $ font, Spreadsheet $ spreadsheet ): void
288288 {
289289 $ fontStarted = false ;
290290 // font
@@ -365,6 +365,12 @@ private function writeFont(XMLWriter $objWriter, Font $font): void
365365 $ objWriter ->startElement ('name ' );
366366 $ objWriter ->writeAttribute ('val ' , $ font ->getName ());
367367 $ objWriter ->endElement ();
368+ $ charset = $ spreadsheet ->getFontCharset ($ font ->getName ());
369+ if ($ charset >= 0 && $ charset <= 255 ) {
370+ $ objWriter ->startElement ('charset ' );
371+ $ objWriter ->writeAttribute ('val ' , "$ charset " );
372+ $ objWriter ->endElement ();
373+ }
368374 }
369375
370376 if (!empty ($ font ->getScheme ())) {
@@ -504,13 +510,13 @@ private function writeCellStyleXf(XMLWriter $objWriter, \PhpOffice\PhpSpreadshee
504510 /**
505511 * Write Cell Style Dxf.
506512 */
507- private function writeCellStyleDxf (XMLWriter $ objWriter , \PhpOffice \PhpSpreadsheet \Style \Style $ style ): void
513+ private function writeCellStyleDxf (XMLWriter $ objWriter , \PhpOffice \PhpSpreadsheet \Style \Style $ style, Spreadsheet $ spreadsheet ): void
508514 {
509515 // dxf
510516 $ objWriter ->startElement ('dxf ' );
511517
512518 // font
513- $ this ->writeFont ($ objWriter , $ style ->getFont ());
519+ $ this ->writeFont ($ objWriter , $ style ->getFont (), $ spreadsheet );
514520
515521 // numFmt
516522 $ this ->writeNumFmt ($ objWriter , $ style ->getNumberFormat ());
0 commit comments