/** * Copyright 2008 - 2015 The Loon Game Engine Authors * * Licensed 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. * * @project loon * @author cping * @email:javachenpeng@yahoo.com * @version 0.5 */ package loon.android; import java.util.EnumMap; import java.util.Map; import loon.font.Font; import android.graphics.Paint; import android.graphics.Typeface; class AndroidFont { private static final String[] NO_HACKS = {}; public static final AndroidFont DEFAULT = new AndroidFont(Typeface.DEFAULT, 14, null); public final Typeface typeface; public final float size; public final String[] resources; protected Paint paint; public AndroidFont(Typeface typeface, float size, String[] res) { this.typeface = typeface; this.size = size; this.resources = (res != null) ? res : NO_HACKS; } public static Typeface create(Font font) { String name = font.name; if (name != null) { String familyName = name.toLowerCase(); if (familyName.equals("serif") || familyName.equals("timesroman")) { name = "serif"; } else if (familyName.equals("sansserif") || familyName.equals("helvetica")) { name = "sans-serif"; } else if (familyName.equals("monospaced") || familyName.equals("courier") || familyName.equals("dialog") || familyName.equals("黑体")) { name = "monospace"; } else { name = "monospace"; } } else { name = "monospace"; } return Typeface.create(name, TO_ANDROID_STYLE.get(font.style)); } protected static final Map<Font.Style, Integer> TO_ANDROID_STYLE = new EnumMap<Font.Style, Integer>( Font.Style.class); static { TO_ANDROID_STYLE.put(Font.Style.PLAIN, Typeface.NORMAL); TO_ANDROID_STYLE.put(Font.Style.BOLD, Typeface.BOLD); TO_ANDROID_STYLE.put(Font.Style.ITALIC, Typeface.ITALIC); TO_ANDROID_STYLE.put(Font.Style.BOLD_ITALIC, Typeface.BOLD_ITALIC); } }