this.fontMetricsCache = new HashMap(); // needs to be a strong reference ..
this.baselinesCache = new LFUMap(200);
this.lookupKey = new FontMetricsKey();
this.fontMetricsByStyleCache = new LFUMap(200);
final ExtendedConfiguration extendedConfig = new ExtendedConfigurationWrapper(configuration);
final double defaultFontSize = extendedConfig.getIntProperty(
"org.pentaho.reporting.engine.classic.core.layout.defaults.FontSize", 12);
fontFamilyMapping = new HashMap();
setNumericFeatureValue(OutputProcessorFeature.DEFAULT_FONT_SIZE, defaultFontSize);
final double fontSmoothThreshold =
extendedConfig.getIntProperty("org.pentaho.reporting.engine.classic.core.layout.defaults.FontSmoothThreshold",
8);
setNumericFeatureValue(OutputProcessorFeature.FONT_SMOOTH_THRESHOLD, fontSmoothThreshold);
if (extendedConfig.getBoolProperty("org.pentaho.reporting.engine.classic.core.layout.fontrenderer.UseMaxCharBounds",
true) == false)
{
addFeature(OutputProcessorFeature.LEGACY_LINEHEIGHT_CALC);
}
if (extendedConfig.getBoolProperty("org.pentaho.reporting.engine.classic.core.FixImageResolutionMapping", true))
{
addFeature(OutputProcessorFeature.IMAGE_RESOLUTION_MAPPING);
}
if (extendedConfig.getBoolProperty("org.pentaho.reporting.engine.classic.core.UseNativeScaling", true))
{
addFeature(OutputProcessorFeature.PREFER_NATIVE_SCALING);
}
if (extendedConfig.getBoolProperty("org.pentaho.reporting.engine.classic.core.DetectExtraContent", true))
{
addFeature(OutputProcessorFeature.DETECT_EXTRA_CONTENT);
}
final double deviceResolution = extendedConfig.getIntProperty(
"org.pentaho.reporting.engine.classic.core.layout.DeviceResolution", 72);
if (deviceResolution > 0)
{
setNumericFeatureValue(OutputProcessorFeature.DEVICE_RESOLUTION, deviceResolution);
}