Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (C) 2017 The Android Open Source Project |
| 3 | * |
| 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | * you may not use this file except in compliance with the License. |
| 6 | * You may obtain a copy of the License at |
| 7 | * |
| 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | * |
| 10 | * Unless required by applicable law or agreed to in writing, software |
| 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
| 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 | * See the License for the specific language governing permissions and |
| 14 | * limitations under the License. |
| 15 | */ |
| 16 | |
| 17 | package android.text; |
| 18 | |
Seigo Nonaka | ac873c9 | 2017-03-07 15:34:53 -0800 | [diff] [blame] | 19 | import static java.lang.annotation.RetentionPolicy.SOURCE; |
| 20 | |
| 21 | import android.annotation.IntDef; |
| 22 | import android.annotation.NonNull; |
| 23 | import android.annotation.Nullable; |
Seigo Nonaka | ff55115 | 2017-03-28 16:16:41 -0700 | [diff] [blame] | 24 | import android.graphics.fonts.FontVariationAxis; |
Seigo Nonaka | c0cf4f0 | 2017-03-27 19:46:51 -0700 | [diff] [blame] | 25 | import android.net.Uri; |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 26 | |
Seigo Nonaka | ac873c9 | 2017-03-07 15:34:53 -0800 | [diff] [blame] | 27 | import java.lang.annotation.Retention; |
Seigo Nonaka | ac873c9 | 2017-03-07 15:34:53 -0800 | [diff] [blame] | 28 | |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 29 | |
| 30 | /** |
| 31 | * Font configuration descriptions for System fonts. |
Seigo Nonaka | ff55115 | 2017-03-28 16:16:41 -0700 | [diff] [blame] | 32 | * @hide |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 33 | */ |
Seigo Nonaka | 042741c | 2017-04-11 13:00:33 -0700 | [diff] [blame] | 34 | public final class FontConfig { |
Seigo Nonaka | ac873c9 | 2017-03-07 15:34:53 -0800 | [diff] [blame] | 35 | private final @NonNull Family[] mFamilies; |
| 36 | private final @NonNull Alias[] mAliases; |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 37 | |
Seigo Nonaka | ac873c9 | 2017-03-07 15:34:53 -0800 | [diff] [blame] | 38 | public FontConfig(@NonNull Family[] families, @NonNull Alias[] aliases) { |
| 39 | mFamilies = families; |
| 40 | mAliases = aliases; |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 41 | } |
| 42 | |
Seigo Nonaka | ac873c9 | 2017-03-07 15:34:53 -0800 | [diff] [blame] | 43 | /** |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 44 | * Returns the ordered list of families included in the system fonts. |
| 45 | */ |
Seigo Nonaka | ac873c9 | 2017-03-07 15:34:53 -0800 | [diff] [blame] | 46 | public @NonNull Family[] getFamilies() { |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 47 | return mFamilies; |
| 48 | } |
| 49 | |
| 50 | /** |
| 51 | * Returns the list of aliases defined for the font families in the system fonts. |
| 52 | */ |
Seigo Nonaka | ac873c9 | 2017-03-07 15:34:53 -0800 | [diff] [blame] | 53 | public @NonNull Alias[] getAliases() { |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 54 | return mAliases; |
| 55 | } |
| 56 | |
| 57 | /** |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 58 | * Class that holds information about a Font. |
| 59 | */ |
Seigo Nonaka | 042741c | 2017-04-11 13:00:33 -0700 | [diff] [blame] | 60 | public static final class Font { |
Seigo Nonaka | ac873c9 | 2017-03-07 15:34:53 -0800 | [diff] [blame] | 61 | private final @NonNull String mFontName; |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 62 | private final int mTtcIndex; |
Seigo Nonaka | ff55115 | 2017-03-28 16:16:41 -0700 | [diff] [blame] | 63 | private final @NonNull FontVariationAxis[] mAxes; |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 64 | private final int mWeight; |
| 65 | private final boolean mIsItalic; |
Seigo Nonaka | c0cf4f0 | 2017-03-27 19:46:51 -0700 | [diff] [blame] | 66 | private Uri mUri; |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 67 | |
Clara Bayarri | 4b5a4d2 | 2017-01-27 20:15:45 +0000 | [diff] [blame] | 68 | /** |
| 69 | * @hide |
| 70 | */ |
Seigo Nonaka | ff55115 | 2017-03-28 16:16:41 -0700 | [diff] [blame] | 71 | public Font(@NonNull String fontName, int ttcIndex, @NonNull FontVariationAxis[] axes, |
Seigo Nonaka | 065c59b | 2017-07-25 14:28:30 -0700 | [diff] [blame] | 72 | int weight, boolean isItalic) { |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 73 | mFontName = fontName; |
| 74 | mTtcIndex = ttcIndex; |
| 75 | mAxes = axes; |
| 76 | mWeight = weight; |
| 77 | mIsItalic = isItalic; |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 78 | } |
| 79 | |
| 80 | /** |
| 81 | * Returns the name associated by the system to this font. |
| 82 | */ |
Seigo Nonaka | ac873c9 | 2017-03-07 15:34:53 -0800 | [diff] [blame] | 83 | public @NonNull String getFontName() { |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 84 | return mFontName; |
| 85 | } |
| 86 | |
| 87 | /** |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 88 | * Returns the index to be used to access this font when accessing a TTC file. |
| 89 | */ |
| 90 | public int getTtcIndex() { |
| 91 | return mTtcIndex; |
| 92 | } |
| 93 | |
| 94 | /** |
| 95 | * Returns the list of axes associated to this font. |
| 96 | */ |
Seigo Nonaka | ff55115 | 2017-03-28 16:16:41 -0700 | [diff] [blame] | 97 | public @NonNull FontVariationAxis[] getAxes() { |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 98 | return mAxes; |
| 99 | } |
| 100 | |
| 101 | /** |
| 102 | * Returns the weight value for this font. |
| 103 | */ |
| 104 | public int getWeight() { |
| 105 | return mWeight; |
| 106 | } |
| 107 | |
| 108 | /** |
| 109 | * Returns whether this font is italic. |
| 110 | */ |
| 111 | public boolean isItalic() { |
| 112 | return mIsItalic; |
| 113 | } |
| 114 | |
| 115 | /** |
Seigo Nonaka | c0cf4f0 | 2017-03-27 19:46:51 -0700 | [diff] [blame] | 116 | * Returns the content uri associated to this font. |
| 117 | * |
| 118 | * You can reach to the font contents by calling {@link |
| 119 | * android.content.ContentResolver#openInputStream}. |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 120 | */ |
Seigo Nonaka | c0cf4f0 | 2017-03-27 19:46:51 -0700 | [diff] [blame] | 121 | public @Nullable Uri getUri() { |
| 122 | return mUri; |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 123 | } |
| 124 | |
Seigo Nonaka | c0cf4f0 | 2017-03-27 19:46:51 -0700 | [diff] [blame] | 125 | public void setUri(@NonNull Uri uri) { |
| 126 | mUri = uri; |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 127 | } |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 128 | } |
| 129 | |
| 130 | /** |
| 131 | * Class that holds information about a Font alias. |
| 132 | */ |
Seigo Nonaka | 042741c | 2017-04-11 13:00:33 -0700 | [diff] [blame] | 133 | public static final class Alias { |
Seigo Nonaka | ac873c9 | 2017-03-07 15:34:53 -0800 | [diff] [blame] | 134 | private final @NonNull String mName; |
| 135 | private final @NonNull String mToName; |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 136 | private final int mWeight; |
| 137 | |
Seigo Nonaka | ac873c9 | 2017-03-07 15:34:53 -0800 | [diff] [blame] | 138 | public Alias(@NonNull String name, @NonNull String toName, int weight) { |
| 139 | mName = name; |
| 140 | mToName = toName; |
| 141 | mWeight = weight; |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 142 | } |
| 143 | |
| 144 | /** |
| 145 | * Returns the new name for the alias. |
| 146 | */ |
Seigo Nonaka | ac873c9 | 2017-03-07 15:34:53 -0800 | [diff] [blame] | 147 | public @NonNull String getName() { |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 148 | return mName; |
| 149 | } |
| 150 | |
| 151 | /** |
| 152 | * Returns the existing name to which this alias points to. |
| 153 | */ |
Seigo Nonaka | ac873c9 | 2017-03-07 15:34:53 -0800 | [diff] [blame] | 154 | public @NonNull String getToName() { |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 155 | return mToName; |
| 156 | } |
| 157 | |
| 158 | /** |
| 159 | * Returns the weight associated with this alias. |
| 160 | */ |
| 161 | public int getWeight() { |
| 162 | return mWeight; |
| 163 | } |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 164 | } |
| 165 | |
| 166 | /** |
| 167 | * Class that holds information about a Font family. |
| 168 | */ |
Seigo Nonaka | 042741c | 2017-04-11 13:00:33 -0700 | [diff] [blame] | 169 | public static final class Family { |
Seigo Nonaka | ac873c9 | 2017-03-07 15:34:53 -0800 | [diff] [blame] | 170 | private final @NonNull String mName; |
| 171 | private final @NonNull Font[] mFonts; |
| 172 | private final @NonNull String mLanguage; |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 173 | |
Seigo Nonaka | ac873c9 | 2017-03-07 15:34:53 -0800 | [diff] [blame] | 174 | /** @hide */ |
| 175 | @Retention(SOURCE) |
| 176 | @IntDef({VARIANT_DEFAULT, VARIANT_COMPACT, VARIANT_ELEGANT}) |
| 177 | public @interface Variant {} |
| 178 | |
| 179 | /** |
| 180 | * Value for font variant. |
| 181 | * |
| 182 | * Indicates the font has no variant attribute. |
| 183 | */ |
| 184 | public static final int VARIANT_DEFAULT = 0; |
| 185 | |
| 186 | /** |
| 187 | * Value for font variant. |
| 188 | * |
| 189 | * Indicates the font is for compact variant. |
| 190 | * @see android.graphics.Paint#setElegantTextHeight |
| 191 | */ |
| 192 | public static final int VARIANT_COMPACT = 1; |
| 193 | |
| 194 | /** |
| 195 | * Value for font variant. |
| 196 | * |
| 197 | * Indiates the font is for elegant variant. |
| 198 | * @see android.graphics.Paint#setElegantTextHeight |
| 199 | */ |
| 200 | public static final int VARIANT_ELEGANT = 2; |
| 201 | |
| 202 | // Must be same with Minikin's variant values. |
| 203 | // See frameworks/minikin/include/minikin/FontFamily.h |
| 204 | private final @Variant int mVariant; |
| 205 | |
| 206 | public Family(@NonNull String name, @NonNull Font[] fonts, @NonNull String language, |
| 207 | @Variant int variant) { |
Clara Bayarri | 4b5a4d2 | 2017-01-27 20:15:45 +0000 | [diff] [blame] | 208 | mName = name; |
| 209 | mFonts = fonts; |
| 210 | mLanguage = language; |
| 211 | mVariant = variant; |
Clara Bayarri | 4b5a4d2 | 2017-01-27 20:15:45 +0000 | [diff] [blame] | 212 | } |
| 213 | |
| 214 | /** |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 215 | * Returns the name given by the system to this font family. |
| 216 | */ |
Seigo Nonaka | ac873c9 | 2017-03-07 15:34:53 -0800 | [diff] [blame] | 217 | public @Nullable String getName() { |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 218 | return mName; |
| 219 | } |
| 220 | |
| 221 | /** |
| 222 | * Returns the list of fonts included in this family. |
| 223 | */ |
Seigo Nonaka | ac873c9 | 2017-03-07 15:34:53 -0800 | [diff] [blame] | 224 | public @Nullable Font[] getFonts() { |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 225 | return mFonts; |
| 226 | } |
| 227 | |
| 228 | /** |
| 229 | * Returns the language for this family. May be null. |
| 230 | */ |
Seigo Nonaka | ac873c9 | 2017-03-07 15:34:53 -0800 | [diff] [blame] | 231 | public @Nullable String getLanguage() { |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 232 | return mLanguage; |
| 233 | } |
| 234 | |
| 235 | /** |
| 236 | * Returns the font variant for this family, e.g. "elegant" or "compact". May be null. |
| 237 | */ |
Seigo Nonaka | ac873c9 | 2017-03-07 15:34:53 -0800 | [diff] [blame] | 238 | public @Variant int getVariant() { |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 239 | return mVariant; |
| 240 | } |
Clara Bayarri | 04d72ab | 2017-01-10 09:31:51 -0800 | [diff] [blame] | 241 | } |
| 242 | } |