From: Dominik Stadler Date: Sun, 10 Apr 2022 16:45:02 +0000 (+0000) Subject: Add a way to not require a functioning font-setup X-Git-Tag: REL_5_2_3~360 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=0f06cc77899a045bd072b8a46bfe8e65dce780c1;p=poi.git Add a way to not require a functioning font-setup New configuration-method SheetUtil.setIgnoreMissingFontSystem() This allows to do a bit more on machines where no fonts are installed git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1899709 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/poi/src/main/java/org/apache/poi/ss/util/SheetUtil.java b/poi/src/main/java/org/apache/poi/ss/util/SheetUtil.java index cda7674c83..ebe20471c6 100644 --- a/poi/src/main/java/org/apache/poi/ss/util/SheetUtil.java +++ b/poi/src/main/java/org/apache/poi/ss/util/SheetUtil.java @@ -97,6 +97,18 @@ public class SheetUtil { */ private static final FontRenderContext fontRenderContext = new FontRenderContext(null, true, true); + /** + * A system property which can be enabled to not fail when the + * font-system is not available on the current machine + */ + private static final boolean ignoreMissingFontSystem = + Boolean.parseBoolean(System.getProperty("org.apache.poi.ss.ignoreMissingFontSystem")); + + /** + * Which default char-width to use if the font-system is unavailable. + */ + public static final int DEFAULT_CHAR_WIDTH = 5; + /** * Compute width of a single cell * @@ -282,8 +294,16 @@ public class SheetUtil { AttributedString str = new AttributedString(String.valueOf(defaultChar)); copyAttributes(defaultFont, str, 0, 1); - TextLayout layout = new TextLayout(str.getIterator(), fontRenderContext); - return (int) layout.getAdvance(); + try { + TextLayout layout = new TextLayout(str.getIterator(), fontRenderContext); + return (int) layout.getAdvance(); + } catch (UnsatisfiedLinkError e) { + if (ignoreMissingFontSystem) { + return DEFAULT_CHAR_WIDTH; + } + + throw e; + } } /**