32 public FontFamily() {
33 mNativePtr = nCreateFamily(null, 0);
34 if (mNativePtr == 0) {
35 throw new IllegalStateException("error creating native FontFamily");
36 }
37 }
39 public FontFamily(String lang, String variant) {
40 int varEnum = 0;
41 if ("compact".equals(variant)) {
42 varEnum = 1;
43 } else if ("elegant".equals(variant)) {
44 varEnum = 2;
45 }
46 mNativePtr = nCreateFamily(lang, varEnum);
47 if (mNativePtr == 0) {
48 throw new IllegalStateException("error creating native FontFamily");
49 }
50 }
117 static JNINativeMethod gFontFamilyMethods[] = {
118 { "nCreateFamily", "(Ljava/lang/String;I)J", (void*)FontFamily_create },
119 { "nUnrefFamily", "(J)V", (void*)FontFamily_unref },
120 { "nAddFont", "(JLjava/lang/String;)Z", (void*)FontFamily_addFont },
121 { "nAddFontWeightStyle", "(JLjava/lang/String;IZ)Z", (void*)FontFamily_addFontWeightStyle },
122 { "nAddFontFromAsset", "(JLandroid/content/res/AssetManager;Ljava/lang/String;)Z",
123 (void*)FontFamily_addFontFromAsset },
124 };
36 static jlong FontFamily_create(JNIEnv* env, jobject clazz, jstring lang, jint variant) {
37 FontLanguage fontLanguage;
38 if (lang != NULL) {
39 ScopedUtfChars str(env, lang);
40 fontLanguage = FontLanguage(str.c_str(), str.size());
41 }
42 return (jlong)new FontFamily(fontLanguage, variant);
43 }
124 FontFamily(FontLanguage lang, int variant) : mLang(lang), mVariant(variant) {
125 }
120 class FontFamily : public MinikinRefCounted {
142 private:
152 FontLanguage mLang;
153 int mVariant;
154 std::vector<Font> mFonts;
155 };
145 class Font {
146 public:
149 MinikinFont* typeface;
150 FontStyle style;
151 };