Fix bug #50847 - XSSFFont now accepts the full range of Charsets from FontChartset
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1077950 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
61c7755195
commit
fd0c177783
@ -34,6 +34,7 @@
|
|||||||
|
|
||||||
<changes>
|
<changes>
|
||||||
<release version="3.8-beta2" date="2011-??-??">
|
<release version="3.8-beta2" date="2011-??-??">
|
||||||
|
<action dev="poi-developers" type="fix">50847 - XSSFFont now accepts the full range of Charsets from FontChartset</action>
|
||||||
<action dev="poi-developers" type="fix">50786 - Speed up calls to HSSFColor.getIndexHash() by returning a cached, unmodifiable Map. HSSFColor.getModifiableIndexHash() provides access to the old (slow but modifiable) functionality</action>
|
<action dev="poi-developers" type="fix">50786 - Speed up calls to HSSFColor.getIndexHash() by returning a cached, unmodifiable Map. HSSFColor.getModifiableIndexHash() provides access to the old (slow but modifiable) functionality</action>
|
||||||
<action dev="poi-developers" type="fix">47100 - Change related formulas and named ranges when XSSFWorkbook.setSheetName is called</action>
|
<action dev="poi-developers" type="fix">47100 - Change related formulas and named ranges when XSSFWorkbook.setSheetName is called</action>
|
||||||
</release>
|
</release>
|
||||||
|
@ -70,6 +70,8 @@ public enum FontCharset {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static FontCharset valueOf(int value){
|
public static FontCharset valueOf(int value){
|
||||||
|
if(value >= _table.length)
|
||||||
|
return null;
|
||||||
return _table[value];
|
return _table[value];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -306,19 +306,11 @@ public class XSSFFont implements Font {
|
|||||||
* @see FontCharset
|
* @see FontCharset
|
||||||
*/
|
*/
|
||||||
public void setCharSet(int charset) {
|
public void setCharSet(int charset) {
|
||||||
CTIntProperty charsetProperty = _ctFont.sizeOfCharsetArray() == 0 ? _ctFont.addNewCharset() : _ctFont.getCharsetArray(0);
|
FontCharset fontCharset = FontCharset.valueOf(charset);
|
||||||
switch (charset) {
|
if(fontCharset != null) {
|
||||||
case Font.ANSI_CHARSET:
|
setCharSet(fontCharset);
|
||||||
charsetProperty.setVal(FontCharset.ANSI.getValue());
|
} else {
|
||||||
break;
|
throw new POIXMLException("Attention: an attempt to set a type of unknow charset and charset");
|
||||||
case Font.SYMBOL_CHARSET:
|
|
||||||
charsetProperty.setVal(FontCharset.SYMBOL.getValue());
|
|
||||||
break;
|
|
||||||
case Font.DEFAULT_CHARSET:
|
|
||||||
charsetProperty.setVal(FontCharset.DEFAULT.getValue());
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new POIXMLException("Attention: an attempt to set a type of unknow charset and charset");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -328,7 +320,15 @@ public class XSSFFont implements Font {
|
|||||||
* @param charSet
|
* @param charSet
|
||||||
*/
|
*/
|
||||||
public void setCharSet(FontCharset charSet) {
|
public void setCharSet(FontCharset charSet) {
|
||||||
setCharSet((byte)charSet.getValue());
|
CTIntProperty charsetProperty;
|
||||||
|
if(_ctFont.sizeOfCharsetArray() == 0) {
|
||||||
|
charsetProperty = _ctFont.addNewCharset();
|
||||||
|
} else {
|
||||||
|
charsetProperty = _ctFont.getCharsetArray(0);
|
||||||
|
}
|
||||||
|
// We know that FontCharset only has valid entries in it,
|
||||||
|
// so we can just set the int value from it
|
||||||
|
charsetProperty.setVal( charSet.getValue() );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
package org.apache.poi.xssf.usermodel;
|
package org.apache.poi.xssf.usermodel;
|
||||||
|
|
||||||
|
import org.apache.poi.POIXMLException;
|
||||||
import org.apache.poi.ss.usermodel.*;
|
import org.apache.poi.ss.usermodel.*;
|
||||||
import org.apache.poi.xssf.XSSFITestDataProvider;
|
import org.apache.poi.xssf.XSSFITestDataProvider;
|
||||||
import org.apache.poi.xssf.XSSFTestDataSamples;
|
import org.apache.poi.xssf.XSSFTestDataSamples;
|
||||||
@ -73,7 +74,22 @@ public final class TestXSSFFont extends BaseTestFont{
|
|||||||
|
|
||||||
xssfFont.setCharSet(FontCharset.DEFAULT);
|
xssfFont.setCharSet(FontCharset.DEFAULT);
|
||||||
assertEquals(FontCharset.DEFAULT.getValue(),ctFont.getCharsetArray(0).getVal());
|
assertEquals(FontCharset.DEFAULT.getValue(),ctFont.getCharsetArray(0).getVal());
|
||||||
|
|
||||||
|
// Try with a few less usual ones:
|
||||||
|
// Set with the Charset itself
|
||||||
|
xssfFont.setCharSet(FontCharset.RUSSIAN);
|
||||||
|
assertEquals(FontCharset.RUSSIAN.getValue(), xssfFont.getCharSet());
|
||||||
|
// And set with the Charset index
|
||||||
|
xssfFont.setCharSet(FontCharset.ARABIC.getValue());
|
||||||
|
assertEquals(FontCharset.ARABIC.getValue(), xssfFont.getCharSet());
|
||||||
|
|
||||||
|
// This one isn't allowed
|
||||||
|
assertEquals(null, FontCharset.valueOf(9999));
|
||||||
|
try {
|
||||||
|
xssfFont.setCharSet(9999);
|
||||||
|
fail("Shouldn't be able to set an invalid charset");
|
||||||
|
} catch(POIXMLException e) {}
|
||||||
|
|
||||||
|
|
||||||
// Now try with a few sample files
|
// Now try with a few sample files
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user