java 获取系统字体

 

/**
	 * 获取系统字体对应全路径Map
	 * @return Map
	 */
	public static Map<String, String> getFontPathMap() {
		TreeMap<String, String> fontPathMap = new TreeMap<String, String>();
		GraphicsEnvironment ge = GraphicsEnvironment
				.getLocalGraphicsEnvironment();
		Font[] fonts = ge.getAllFonts();
		if (fonts == null || fonts.length < 1) {
			return fontPathMap;
		}
		for (Font font : fonts) {
			// 获取TrueType 字体文件 (.ttf)路径; 
			/* 完整路径 值可能为(C:\Windows\Fonts\D:\Program Files\Mindjet\MindManager 9\jre\lib\fonts\LucidaTypewriterBold.ttf)
			 * 可能因为字体的实际位置不在C盘;则只取其实际位置绝对路径
			 */
			String fontFilePath = FontManager.getFontPath(true)
					+ File.separator
					+ FontManager.getFileNameForFontName(font.getFontName());
			if (StringUtil.isNullOrEmpty(font.getFontName()) 
					|| StringUtil.isNullOrEmpty(FontManager.getFileNameForFontName(font.getFontName())) 
					|| StringUtil.isNullOrEmpty(fontFilePath)
					|| fontFilePath.indexOf(":") == -1) {
				continue;
			}
			if (StringUtil.stringRepeatNum(fontFilePath, ":") > 1) {
				fontFilePath = fontFilePath.substring(fontFilePath.lastIndexOf(":")-1);
			}
			fontPathMap.put(font.getFontName(), fontFilePath);
		}
		return fontPathMap.descendingMap();	// 倒序
	}
// StringUtil
public class StringUtil {
	/**
	 * 判断是否为空或是空字符串,如果为null或为“”返回true
	 * 
	 * @param str
	 * @return
	 */
	public static boolean isNullOrEmpty(String str) {
		if (null == str || "".equalsIgnoreCase(str.trim()) || "null".equals(str.trim())) {
			return true;
		}
		return false;
	}

	public static boolean isNotNullOrEmpty(String str) {
		if (null != str && !"".equalsIgnoreCase(str.trim()) && !"null".equals(str.trim())) {
			return true;
		}
		return false;
	}
	
	/**
	 * 验证只有字母、数字和下划线且不能以下划线开头和结尾
	 * @param str
	 * @return boolean
	 */
	public static boolean alphanumeric(String str) {
		Pattern pattern = Pattern.compile("^(?!_)(?!.*?_$)[a-zA-Z0-9_]+$");   
		return pattern.matcher(str).matches();
	}
	/**
	 * 截取字符串
	 * 
	 * @param str
	 * @param size
	 * @return
	 */
	public synchronized static String splitString(String str, int size) {
		if (StringUtil.isNullOrEmpty(str)) {
			return "";
		}
		if (str.length() > size) {
			return str.substring(0, size) + "...";
		}
		return str;
	}

	/**
	 * 从ISO8859-1转换为utf-8
	 * 
	 * @param str
	 * @return
	 */
	public synchronized static String convert2UTF8FromIOS8859_1(String str) {
		if (isNullOrEmpty(str)) {
			return str;
		}
		try {
			return new String(str.getBytes("ISO8859-1"), "UTF-8");
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return str;
	}
	/**
	 * 从utf-8转换为ISO8859-1
	 * 
	 * @param str
	 * @return
	 */
	public synchronized static String convert2ISO8859_1FromUTF8(String str) {
		if (isNullOrEmpty(str)) {
			return str;
		}
		try {
			return new String(str.getBytes("UTF-8"), "ISO8859-1");
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return str;
	}
	/**
	 * 判断字符串是否是正整数
	 * 
	 * @param str
	 * @return
	 */
	public static boolean isPositiveInteger(String str) {
		if(isNullOrEmpty(str)){
			return false;
		}
		return str.matches("[0-9]*");
	}
	/**
	 * 得到一个字符串,在另一个字符串中重复出现的次数,区分大小写
	 * 
	 * @param str
	 *            原字符串
	 * @param temp
	 *            计算重复出现的字符串
	 * @return
	 */
	public static int stringRepeatNum(String str, String temp) {
		Pattern p = Pattern.compile(temp);
		Matcher m = p.matcher(str);
		int i = 0;
		while (m.find()) {
			i++;
		}
		return i;
	}
    /**
     * 根据values值依次替换字符串中的temp选项,区分大小写
     * @param str 原字符串
     * @param temp 被替换的参数
     * @param values 替换值
     * @return 返回替换后的字符串
     */
	public static String replaceStringByValues(String str,String temp,String...values){
		if(values==null)
			return str;
		Pattern p = Pattern.compile(temp);
		Matcher m = p.matcher(str);
		int i = 0;
		while (m.find()) {
			if(StringUtil.isNullOrEmpty(values[i]))
				str = str.replaceFirst(temp,"");
			else{
				str = str.replaceFirst(temp,values[i]);
				i++;
				if(i>=values.length)
					break;	
			}
		}
		return str;
	}
	/**
	 * 判断一个字符串数组里是否包含某个字符串
	 * @param temps
	 * @param str
	 * @return 包含返回true,不包含返回false
	 */
	public static boolean isContainsStr(String [] temps,String str){
		if(StringUtil.isNullOrEmpty(str))
			return false;
		if(temps==null)
			return false;
		for (String string : temps) {
			if(str.equals(string))
				return true;
		}
		return false;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值