1 /* 2 * Copyright (C) 2022 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 com.android.compose.theme.typography 18 19 import androidx.compose.ui.text.TextStyle 20 21 internal class TypographyTokens( 22 typeScaleTokens: TypeScaleTokens, 23 variableTypeScaleTokens: VariableFontTypeScaleEmphasizedTokens, 24 ) { 25 val bodyLarge = 26 TextStyle( 27 fontFamily = typeScaleTokens.bodyLargeFont, 28 fontWeight = typeScaleTokens.bodyLargeWeight, 29 fontSize = typeScaleTokens.bodyLargeSize, 30 lineHeight = typeScaleTokens.bodyLargeLineHeight, 31 letterSpacing = typeScaleTokens.bodyLargeTracking, 32 ) 33 val bodyMedium = 34 TextStyle( 35 fontFamily = typeScaleTokens.bodyMediumFont, 36 fontWeight = typeScaleTokens.bodyMediumWeight, 37 fontSize = typeScaleTokens.bodyMediumSize, 38 lineHeight = typeScaleTokens.bodyMediumLineHeight, 39 letterSpacing = typeScaleTokens.bodyMediumTracking, 40 ) 41 val bodySmall = 42 TextStyle( 43 fontFamily = typeScaleTokens.bodySmallFont, 44 fontWeight = typeScaleTokens.bodySmallWeight, 45 fontSize = typeScaleTokens.bodySmallSize, 46 lineHeight = typeScaleTokens.bodySmallLineHeight, 47 letterSpacing = typeScaleTokens.bodySmallTracking, 48 ) 49 val displayLarge = 50 TextStyle( 51 fontFamily = typeScaleTokens.displayLargeFont, 52 fontWeight = typeScaleTokens.displayLargeWeight, 53 fontSize = typeScaleTokens.displayLargeSize, 54 lineHeight = typeScaleTokens.displayLargeLineHeight, 55 letterSpacing = typeScaleTokens.displayLargeTracking, 56 ) 57 val displayMedium = 58 TextStyle( 59 fontFamily = typeScaleTokens.displayMediumFont, 60 fontWeight = typeScaleTokens.displayMediumWeight, 61 fontSize = typeScaleTokens.displayMediumSize, 62 lineHeight = typeScaleTokens.displayMediumLineHeight, 63 letterSpacing = typeScaleTokens.displayMediumTracking, 64 ) 65 val displaySmall = 66 TextStyle( 67 fontFamily = typeScaleTokens.displaySmallFont, 68 fontWeight = typeScaleTokens.displaySmallWeight, 69 fontSize = typeScaleTokens.displaySmallSize, 70 lineHeight = typeScaleTokens.displaySmallLineHeight, 71 letterSpacing = typeScaleTokens.displaySmallTracking, 72 ) 73 val headlineLarge = 74 TextStyle( 75 fontFamily = typeScaleTokens.headlineLargeFont, 76 fontWeight = typeScaleTokens.headlineLargeWeight, 77 fontSize = typeScaleTokens.headlineLargeSize, 78 lineHeight = typeScaleTokens.headlineLargeLineHeight, 79 letterSpacing = typeScaleTokens.headlineLargeTracking, 80 ) 81 val headlineMedium = 82 TextStyle( 83 fontFamily = typeScaleTokens.headlineMediumFont, 84 fontWeight = typeScaleTokens.headlineMediumWeight, 85 fontSize = typeScaleTokens.headlineMediumSize, 86 lineHeight = typeScaleTokens.headlineMediumLineHeight, 87 letterSpacing = typeScaleTokens.headlineMediumTracking, 88 ) 89 val headlineSmall = 90 TextStyle( 91 fontFamily = typeScaleTokens.headlineSmallFont, 92 fontWeight = typeScaleTokens.headlineSmallWeight, 93 fontSize = typeScaleTokens.headlineSmallSize, 94 lineHeight = typeScaleTokens.headlineSmallLineHeight, 95 letterSpacing = typeScaleTokens.headlineSmallTracking, 96 ) 97 val labelLarge = 98 TextStyle( 99 fontFamily = typeScaleTokens.labelLargeFont, 100 fontWeight = typeScaleTokens.labelLargeWeight, 101 fontSize = typeScaleTokens.labelLargeSize, 102 lineHeight = typeScaleTokens.labelLargeLineHeight, 103 letterSpacing = typeScaleTokens.labelLargeTracking, 104 ) 105 val labelMedium = 106 TextStyle( 107 fontFamily = typeScaleTokens.labelMediumFont, 108 fontWeight = typeScaleTokens.labelMediumWeight, 109 fontSize = typeScaleTokens.labelMediumSize, 110 lineHeight = typeScaleTokens.labelMediumLineHeight, 111 letterSpacing = typeScaleTokens.labelMediumTracking, 112 ) 113 val labelSmall = 114 TextStyle( 115 fontFamily = typeScaleTokens.labelSmallFont, 116 fontWeight = typeScaleTokens.labelSmallWeight, 117 fontSize = typeScaleTokens.labelSmallSize, 118 lineHeight = typeScaleTokens.labelSmallLineHeight, 119 letterSpacing = typeScaleTokens.labelSmallTracking, 120 ) 121 val titleLarge = 122 TextStyle( 123 fontFamily = typeScaleTokens.titleLargeFont, 124 fontWeight = typeScaleTokens.titleLargeWeight, 125 fontSize = typeScaleTokens.titleLargeSize, 126 lineHeight = typeScaleTokens.titleLargeLineHeight, 127 letterSpacing = typeScaleTokens.titleLargeTracking, 128 ) 129 val titleMedium = 130 TextStyle( 131 fontFamily = typeScaleTokens.titleMediumFont, 132 fontWeight = typeScaleTokens.titleMediumWeight, 133 fontSize = typeScaleTokens.titleMediumSize, 134 lineHeight = typeScaleTokens.titleMediumLineHeight, 135 letterSpacing = typeScaleTokens.titleMediumTracking, 136 ) 137 val titleSmall = 138 TextStyle( 139 fontFamily = typeScaleTokens.titleSmallFont, 140 fontWeight = typeScaleTokens.titleSmallWeight, 141 fontSize = typeScaleTokens.titleSmallSize, 142 lineHeight = typeScaleTokens.titleSmallLineHeight, 143 letterSpacing = typeScaleTokens.titleSmallTracking, 144 ) 145 // GSF emphasized styles 146 // note: we don't need to define fontWeight or axes values because they are pre-defined 147 // as part of the font family in fonts_customization.xml (for performance optimization) 148 val displayLargeEmphasized = 149 TextStyle( 150 fontFamily = variableTypeScaleTokens.displayLargeFont, 151 fontSize = variableTypeScaleTokens.displayLargeSize, 152 lineHeight = variableTypeScaleTokens.displayLargeLineHeight, 153 letterSpacing = variableTypeScaleTokens.displayLargeTracking, 154 ) 155 val displayMediumEmphasized = 156 TextStyle( 157 fontFamily = variableTypeScaleTokens.displayMediumFont, 158 fontSize = variableTypeScaleTokens.displayMediumSize, 159 lineHeight = variableTypeScaleTokens.displayMediumLineHeight, 160 letterSpacing = variableTypeScaleTokens.displayMediumTracking, 161 ) 162 val displaySmallEmphasized = 163 TextStyle( 164 fontFamily = variableTypeScaleTokens.displaySmallFont, 165 fontSize = variableTypeScaleTokens.displaySmallSize, 166 lineHeight = variableTypeScaleTokens.displaySmallLineHeight, 167 letterSpacing = variableTypeScaleTokens.displaySmallTracking, 168 ) 169 val headlineLargeEmphasized = 170 TextStyle( 171 fontFamily = variableTypeScaleTokens.headlineLargeFont, 172 fontSize = variableTypeScaleTokens.headlineLargeSize, 173 lineHeight = variableTypeScaleTokens.headlineLargeLineHeight, 174 letterSpacing = variableTypeScaleTokens.headlineLargeTracking, 175 ) 176 val headlineMediumEmphasized = 177 TextStyle( 178 fontFamily = variableTypeScaleTokens.headlineMediumFont, 179 fontSize = variableTypeScaleTokens.headlineMediumSize, 180 lineHeight = variableTypeScaleTokens.headlineMediumLineHeight, 181 letterSpacing = variableTypeScaleTokens.headlineMediumTracking, 182 ) 183 val headlineSmallEmphasized = 184 TextStyle( 185 fontFamily = variableTypeScaleTokens.headlineSmallFont, 186 fontSize = variableTypeScaleTokens.headlineSmallSize, 187 lineHeight = variableTypeScaleTokens.headlineSmallLineHeight, 188 letterSpacing = variableTypeScaleTokens.headlineSmallTracking, 189 ) 190 val titleLargeEmphasized = 191 TextStyle( 192 fontFamily = variableTypeScaleTokens.titleLargeFont, 193 fontSize = variableTypeScaleTokens.titleLargeSize, 194 lineHeight = variableTypeScaleTokens.titleLargeLineHeight, 195 letterSpacing = variableTypeScaleTokens.titleLargeTracking, 196 ) 197 val titleMediumEmphasized = 198 TextStyle( 199 fontFamily = variableTypeScaleTokens.titleMediumFont, 200 fontSize = variableTypeScaleTokens.titleMediumSize, 201 lineHeight = variableTypeScaleTokens.titleMediumLineHeight, 202 letterSpacing = variableTypeScaleTokens.titleMediumTracking, 203 ) 204 val titleSmallEmphasized = 205 TextStyle( 206 fontFamily = variableTypeScaleTokens.titleSmallFont, 207 fontSize = variableTypeScaleTokens.titleSmallSize, 208 lineHeight = variableTypeScaleTokens.titleSmallLineHeight, 209 letterSpacing = variableTypeScaleTokens.titleSmallTracking, 210 ) 211 val bodyLargeEmphasized = 212 TextStyle( 213 fontFamily = variableTypeScaleTokens.bodyLargeFont, 214 fontSize = variableTypeScaleTokens.bodyLargeSize, 215 lineHeight = variableTypeScaleTokens.bodyLargeLineHeight, 216 letterSpacing = variableTypeScaleTokens.bodyLargeTracking, 217 ) 218 val bodyMediumEmphasized = 219 TextStyle( 220 fontFamily = variableTypeScaleTokens.bodyMediumFont, 221 fontSize = variableTypeScaleTokens.bodyMediumSize, 222 lineHeight = variableTypeScaleTokens.bodyMediumLineHeight, 223 letterSpacing = variableTypeScaleTokens.bodyMediumTracking, 224 ) 225 val bodySmallEmphasized = 226 TextStyle( 227 fontFamily = variableTypeScaleTokens.bodySmallFont, 228 fontSize = variableTypeScaleTokens.bodySmallSize, 229 lineHeight = variableTypeScaleTokens.bodySmallLineHeight, 230 letterSpacing = variableTypeScaleTokens.bodySmallTracking, 231 ) 232 val labelLargeEmphasized = 233 TextStyle( 234 fontFamily = variableTypeScaleTokens.labelLargeFont, 235 fontSize = variableTypeScaleTokens.labelLargeSize, 236 lineHeight = variableTypeScaleTokens.labelLargeLineHeight, 237 letterSpacing = variableTypeScaleTokens.labelLargeTracking, 238 ) 239 val labelMediumEmphasized = 240 TextStyle( 241 fontFamily = variableTypeScaleTokens.labelMediumFont, 242 fontSize = variableTypeScaleTokens.labelMediumSize, 243 lineHeight = variableTypeScaleTokens.labelMediumLineHeight, 244 letterSpacing = variableTypeScaleTokens.labelMediumTracking, 245 ) 246 val labelSmallEmphasized = 247 TextStyle( 248 fontFamily = variableTypeScaleTokens.labelSmallFont, 249 fontSize = variableTypeScaleTokens.labelSmallSize, 250 lineHeight = variableTypeScaleTokens.labelSmallLineHeight, 251 letterSpacing = variableTypeScaleTokens.labelSmallTracking, 252 ) 253 } 254