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;
}