mirror of https://github.com/apache/poi.git
#55030 - RichTextRun getFontName can not get Chinese font name
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1722479 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
edfa151420
commit
720db41739
|
@ -680,10 +680,16 @@ public final class HSLFTextParagraph implements TextParagraph<HSLFShape,HSLFText
|
|||
* Fetch the value of the given Paragraph related TextProp. Returns null if
|
||||
* that TextProp isn't present. If the TextProp isn't present, the value
|
||||
* from the appropriate Master Sheet will apply.
|
||||
*
|
||||
* The propName can be a comma-separated list, in case multiple equivalent values
|
||||
* are queried
|
||||
*/
|
||||
protected static TextProp getPropVal(TextPropCollection props, String propName, HSLFTextParagraph paragraph) {
|
||||
TextProp prop = props.findByName(propName);
|
||||
if (prop != null) return prop;
|
||||
String propNames[] = propName.split(",");
|
||||
for (String pn : propNames) {
|
||||
TextProp prop = props.findByName(pn);
|
||||
if (prop != null) return prop;
|
||||
}
|
||||
|
||||
BitMaskTextProp maskProp = (BitMaskTextProp) props.findByName(ParagraphFlagsTextProp.NAME);
|
||||
boolean hardAttribute = (maskProp != null && maskProp.getValue() == 0);
|
||||
|
@ -698,7 +704,13 @@ public final class HSLFTextParagraph implements TextParagraph<HSLFShape,HSLFText
|
|||
}
|
||||
|
||||
boolean isChar = props.getTextPropType() == TextPropType.character;
|
||||
return master.getStyleAttribute(txtype, paragraph.getIndentLevel(), propName, isChar);
|
||||
|
||||
for (String pn : propNames) {
|
||||
TextProp prop = master.getStyleAttribute(txtype, paragraph.getIndentLevel(), pn, isChar);
|
||||
if (prop != null) return prop;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -319,7 +319,7 @@ public final class HSLFTextRun implements TextRun {
|
|||
if (sheet == null || slideShow == null) {
|
||||
return _fontFamily;
|
||||
}
|
||||
TextProp tp = getPropVal(characterStyle, "font.index", parentParagraph);
|
||||
TextProp tp = getPropVal(characterStyle, "font.index,asian.font.index,ansi.font.index,symbol.font.index", parentParagraph);
|
||||
if (tp == null) { return null; }
|
||||
return slideShow.getFontCollection().getFontWithId(tp.getValue());
|
||||
}
|
||||
|
|
|
@ -43,9 +43,7 @@ import org.apache.poi.hslf.exceptions.OldPowerPointFormatException;
|
|||
import org.apache.poi.hslf.extractor.PowerPointExtractor;
|
||||
import org.apache.poi.hslf.model.HeadersFooters;
|
||||
import org.apache.poi.hslf.record.Document;
|
||||
import org.apache.poi.hslf.record.OEPlaceholderAtom;
|
||||
import org.apache.poi.hslf.record.Record;
|
||||
import org.apache.poi.hslf.record.RoundTripHFPlaceholder12;
|
||||
import org.apache.poi.hslf.record.SlideListWithText;
|
||||
import org.apache.poi.hslf.record.SlideListWithText.SlideAtomsSet;
|
||||
import org.apache.poi.hslf.record.TextHeaderAtom;
|
||||
|
@ -783,8 +781,7 @@ public final class TestBugs {
|
|||
|
||||
@Test
|
||||
public void bug58159() throws IOException {
|
||||
File sample = HSLFTestDataSamples.getSampleFile("bug58159_headers-and-footers.ppt");
|
||||
HSLFSlideShow ppt = (HSLFSlideShow)SlideShowFactory.create(sample);
|
||||
HSLFSlideShow ppt = open("bug58159_headers-and-footers.ppt");
|
||||
HeadersFooters hf = ppt.getSlideHeadersFooters();
|
||||
assertNull(hf.getHeaderText());
|
||||
assertEquals("Slide footer", hf.getFooterText());
|
||||
|
@ -806,6 +803,25 @@ public final class TestBugs {
|
|||
}
|
||||
ppt.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void bug55030() throws IOException {
|
||||
HSLFSlideShow ppt = open("bug55030.ppt");
|
||||
|
||||
String expFamily = "\u96b6\u4e66";
|
||||
|
||||
HSLFSlide sl = ppt.getSlides().get(0);
|
||||
for (List<HSLFTextParagraph> paraList : sl.getTextParagraphs()) {
|
||||
for (HSLFTextParagraph htp : paraList) {
|
||||
for (HSLFTextRun htr : htp) {
|
||||
String actFamily = htr.getFontFamily();
|
||||
assertEquals(expFamily, actFamily);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ppt.close();
|
||||
}
|
||||
|
||||
private static HSLFSlideShow open(String fileName) throws IOException {
|
||||
File sample = HSLFTestDataSamples.getSampleFile(fileName);
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue