2017-02-08 07:47:30 +00:00
|
|
|
/*
|
|
|
|
|
* ====================================================================
|
|
|
|
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
|
|
|
* contributor license agreements. See the NOTICE file distributed with
|
|
|
|
|
* this work for additional information regarding copyright ownership.
|
|
|
|
|
* The ASF licenses this file to You under the Apache License, Version 2.0
|
|
|
|
|
* (the "License"); you may not use this file except in compliance with
|
|
|
|
|
* the License. You may obtain a copy of the License at
|
|
|
|
|
*
|
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
*
|
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
|
* limitations under the License.
|
|
|
|
|
* ====================================================================
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
package org.apache.poi.sl.draw;
|
|
|
|
|
|
2017-07-23 22:45:47 +00:00
|
|
|
import java.awt.Font;
|
|
|
|
|
import java.awt.Graphics2D;
|
|
|
|
|
|
|
|
|
|
import org.apache.poi.common.usermodel.fonts.FontInfo;
|
|
|
|
|
import org.apache.poi.util.StringUtil;
|
|
|
|
|
|
2017-02-08 07:47:30 +00:00
|
|
|
/**
|
|
|
|
|
* Manages fonts when rendering slides.
|
|
|
|
|
*
|
|
|
|
|
* Use this class to handle unknown / missing fonts or to substitute fonts
|
|
|
|
|
*/
|
|
|
|
|
public interface DrawFontManager {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* select a font to be used to paint text
|
|
|
|
|
*
|
2017-07-23 22:45:47 +00:00
|
|
|
* @param graphics the graphics context to request additional rendering hints
|
|
|
|
|
* @param fontInfo the font info object corresponding to the text run font
|
2017-02-08 07:47:30 +00:00
|
|
|
*
|
|
|
|
|
* @return the font to be used to paint text
|
|
|
|
|
*/
|
2017-07-23 22:45:47 +00:00
|
|
|
FontInfo getMappedFont(Graphics2D graphics, FontInfo fontInfo);
|
2017-02-08 07:47:30 +00:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* In case the original font doesn't contain a glyph, use the
|
|
|
|
|
* returned fallback font as an alternative
|
|
|
|
|
*
|
2017-07-23 22:45:47 +00:00
|
|
|
* @param graphics the graphics context to request additional rendering hints
|
|
|
|
|
* @param fontInfo the font info object corresponding to the text run font
|
2020-04-05 00:42:08 +00:00
|
|
|
*
|
2017-02-08 07:47:30 +00:00
|
|
|
* @return the font to be used as a fallback for the original typeface
|
|
|
|
|
*/
|
2017-07-23 22:45:47 +00:00
|
|
|
FontInfo getFallbackFont(Graphics2D graphics, FontInfo fontInfo);
|
|
|
|
|
|
|
|
|
|
/**
|
2020-04-05 00:42:08 +00:00
|
|
|
* Map text charset depending on font family.
|
|
|
|
|
* <p>
|
|
|
|
|
* Currently this only maps for wingdings and symbol font (into unicode private use area)
|
|
|
|
|
* <p>
|
|
|
|
|
* Depending if the requested font is installed in the system, tbe mapped string varies:<br>
|
|
|
|
|
* If the font is registered into the graphics environment the characters are mapped to the
|
|
|
|
|
* private use area. If the font is missing (and hence a AWT logical font is used), the
|
|
|
|
|
* characters are mapped to the corresponding unicode characters
|
2017-07-23 22:45:47 +00:00
|
|
|
*
|
|
|
|
|
* @param graphics the graphics context to request additional rendering hints
|
|
|
|
|
* @param fontInfo the font info object corresponding to the text run font
|
|
|
|
|
* @param text the raw text
|
2020-04-05 00:42:08 +00:00
|
|
|
*
|
2017-07-23 22:45:47 +00:00
|
|
|
* @return String with mapped codepoints
|
|
|
|
|
*
|
|
|
|
|
* @see <a href="http://stackoverflow.com/questions/8692095">Drawing exotic fonts in a java applet</a>
|
|
|
|
|
* @see StringUtil#mapMsCodepointString(String)
|
|
|
|
|
*/
|
|
|
|
|
String mapFontCharset(Graphics2D graphics, FontInfo fontInfo, String text);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Create an AWT font object with the given attributes
|
|
|
|
|
*
|
|
|
|
|
* @param graphics the graphics context to request additional rendering hints
|
|
|
|
|
* @param fontInfo the font info object corresponding to the text run font
|
|
|
|
|
* @param size the font size in points
|
|
|
|
|
* @param bold {@code true} if the font is bold
|
|
|
|
|
* @param italic {@code true} if the font is italic
|
2020-04-05 00:42:08 +00:00
|
|
|
*
|
2017-07-23 22:45:47 +00:00
|
|
|
* @return the AWT font object
|
|
|
|
|
*/
|
|
|
|
|
Font createAWTFont(Graphics2D graphics, FontInfo fontInfo, double size, boolean bold, boolean italic);
|
2017-02-08 07:47:30 +00:00
|
|
|
}
|