public BaselineInfo getBaselines( final int c, BaselineInfo info ) {
if ( cachedBaselineInfo != null ) {
if ( info == null ) {
info = new BaselineInfo();
}
info.update( cachedBaselineInfo );
return info;
}
if ( info == null ) {
info = new BaselineInfo();
}
final long maxAscent = getMaxAscent();
info.setBaseline( BaselineInfo.MATHEMATICAL, maxAscent - getXHeight() );
info.setBaseline( BaselineInfo.IDEOGRAPHIC, getMaxHeight() );
info.setBaseline( BaselineInfo.MIDDLE, maxAscent / 2 );
info.setBaseline( BaselineInfo.ALPHABETIC, maxAscent );
info.setBaseline( BaselineInfo.CENTRAL, maxAscent / 2 );
info.setBaseline( BaselineInfo.HANGING, maxAscent - getXHeight() );
info.setDominantBaseline( BaselineInfo.ALPHABETIC );
final BaselineInfo cached = new BaselineInfo();
cached.update( info );
cachedBaselineInfo = cached;
return info;
}