Fix handling missing font libraries to again not throw on some types of exception

The previous change broke this handling by always re-throwing "Fatal" exceptions.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1915482 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Dominik Stadler 2024-01-30 21:01:53 +00:00
parent e696053e23
commit 209e8fc659
1 changed files with 12 additions and 2 deletions

View File

@ -353,8 +353,18 @@ public class SheetUtil {
TextLayout layout = new TextLayout(str.getIterator(), fontRenderContext);
return layout.getAdvance();
} catch (Throwable t) {
// fatal exceptions will always be rethrown
if (!ExceptionUtil.isFatal(t) && ignoreMissingFontSystem) {
// ignore exception and return a default char width if
// the ignore-feature is enabled and the exception indicates that
// the underlying font system is not available
if (ignoreMissingFontSystem && (
// the three types of exception usually indicate here that the font
// system is not fully installed, i.e. system libraries missing or
// some JDK classes cannot be loaded
t instanceof UnsatisfiedLinkError ||
t instanceof NoClassDefFoundError ||
t instanceof InternalError ||
// other fatal exceptions will always be rethrown
!ExceptionUtil.isFatal(t))) {
return DEFAULT_CHAR_WIDTH;
}