getXmlWriter(); $isStyleName = $this->isInline && !is_null($this->style) && is_string($this->style); if ($isStyleName) { $xmlWriter->startElement('w:rPr'); $xmlWriter->startElement('w:rStyle'); $xmlWriter->writeAttribute('w:val', $this->style); $xmlWriter->endElement(); $xmlWriter->endElement(); } else { $this->writeStyle(); } } /** * Write full style */ private function writeStyle() { $style = $this->getStyle(); if (!$style instanceof \PhpOffice\PhpWord\Style\Font) { return; } $xmlWriter = $this->getXmlWriter(); $xmlWriter->startElement('w:rPr'); // Style name $styleName = $style->getStyleName(); $xmlWriter->writeElementIf(!is_null($styleName), 'w:rStyle', 'w:val', $styleName); // Font name/family $font = $style->getName(); $hint = $style->getHint(); if ($font != PhpWord::DEFAULT_FONT_NAME) { $xmlWriter->startElement('w:rFonts'); $xmlWriter->writeAttribute('w:ascii', $font); $xmlWriter->writeAttribute('w:hAnsi', $font); $xmlWriter->writeAttribute('w:eastAsia', $font); $xmlWriter->writeAttribute('w:cs', $font); $xmlWriter->writeAttributeIf($hint != PhpWord::DEFAULT_FONT_CONTENT_TYPE, 'w:hint', $hint); $xmlWriter->endElement(); } // Color $color = $style->getColor(); $xmlWriter->writeElementIf($color != PhpWord::DEFAULT_FONT_COLOR, 'w:color', 'w:val', $color); // Size $size = $style->getSize(); $xmlWriter->writeElementIf($size != PhpWord::DEFAULT_FONT_SIZE, 'w:sz', 'w:val', $size * 2); $xmlWriter->writeElementIf($size != PhpWord::DEFAULT_FONT_SIZE, 'w:szCs', 'w:val', $size * 2); // Bold, italic $xmlWriter->writeElementIf($style->isBold(), 'w:b'); $xmlWriter->writeElementIf($style->isItalic(), 'w:i'); $xmlWriter->writeElementIf($style->isItalic(), 'w:iCs'); // Strikethrough, double strikethrough $xmlWriter->writeElementIf($style->isStrikethrough(), 'w:strike'); $xmlWriter->writeElementIf($style->isDoubleStrikethrough(), 'w:dstrike'); // Small caps, all caps $xmlWriter->writeElementIf($style->isSmallCaps(), 'w:smallCaps'); $xmlWriter->writeElementIf($style->isAllCaps(), 'w:caps'); // Underline $underline = $style->getUnderline(); $xmlWriter->writeElementIf($underline != 'none', 'w:u', 'w:val', $underline); // Foreground-Color $fgColor = $style->getFgColor(); $xmlWriter->writeElementIf(!is_null($fgColor), 'w:highlight', 'w:val', $fgColor); // Superscript/subscript $xmlWriter->writeElementIf($style->isSuperScript(), 'w:vertAlign', 'w:val', 'superscript'); $xmlWriter->writeElementIf($style->isSubScript(), 'w:vertAlign', 'w:val', 'subscript'); // Background-Color $shading = $style->getShading(); if (!is_null($shading)) { $styleWriter = new Shading($xmlWriter, $shading); $styleWriter->write(); } $xmlWriter->endElement(); } /** * Set is inline * * @param bool $value */ public function setIsInline($value) { $this->isInline = $value; } }