aboutsummaryrefslogtreecommitdiffstats
path: root/src/ooxml/java/org/apache/poi
diff options
context:
space:
mode:
Diffstat (limited to 'src/ooxml/java/org/apache/poi')
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java19
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFont.java9
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java2
3 files changed, 23 insertions, 7 deletions
diff --git a/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java b/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java
index c0ad5f1bd1..6120e5b48b 100644
--- a/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java
+++ b/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java
@@ -176,14 +176,29 @@ public class StylesTable extends POIXMLDocumentPart {
return fonts.get(idx);
}
- public int putFont(XSSFFont font) {
- int idx = fonts.indexOf(font);
+ /**
+ * Records the given font in the font table.
+ * Will re-use an existing font index if this
+ * font matches another, EXCEPT if forced
+ * registration is requested.
+ * This allows people to create several fonts
+ * then customise them later.
+ */
+ public int putFont(XSSFFont font, boolean forceRegistration) {
+ int idx = -1;
+ if(!forceRegistration) {
+ idx = fonts.indexOf(font);
+ }
+
if (idx != -1) {
return idx;
}
fonts.add(font);
return fonts.size() - 1;
}
+ public int putFont(XSSFFont font) {
+ return putFont(font, false);
+ }
public XSSFCellStyle getStyleAt(int idx) {
int styleXfId = 0;
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFont.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFont.java
index 3b92c6fd35..1578f6af55 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFont.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFont.java
@@ -85,7 +85,7 @@ public class XSSFFont implements Font {
setFontName(DEFAULT_FONT_NAME);
setFontHeight((double)DEFAULT_FONT_SIZE);
}
-
+
/**
* get the underlying CTFont font
*/
@@ -516,10 +516,11 @@ public class XSSFFont implements Font {
/**
- * Register ourselfs in the style table
+ * Perform a registration of ourselves
+ * to the style table
*/
- public long putFont(StylesTable styles) {
- short idx = (short)styles.putFont(this);
+ public long registerTo(StylesTable styles) {
+ short idx = (short)styles.putFont(this, true);
this._index = idx;
return idx;
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
index 2fef9ad5f4..4c73e3496a 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
@@ -453,7 +453,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
*/
public XSSFFont createFont() {
XSSFFont font = new XSSFFont();
- font.putFont(stylesSource);
+ font.registerTo(stylesSource);
return font;
}