• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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