Repository: flutter
Issue: Cherry pick the text themes
Labels: framework,f: material design,c: proposal,P2,team-design,triaged-design

### Use case

When we run a web build, we can notice a 17 blocks of this type :

```js
B.GG=new A.i(!0,B.v,null,"Roboto",null,null,null,null,null,null,null,null,null,null,null,null,null,B.e,null,null,null,"whiteMountainView displayLarge",null,null,null,null)
B.HY=new A.i(!0,B.v,null,"Roboto",null,null,null,null,null,null,null,null,null,null,null,null,null,B.e,null,null,null,"whiteMountainView displayMedium",null,null,null,null)
B.HD=new A.i(!0,B.v,null,"Roboto",null,null,null,null,null,null,null,null,null,null,null,null,null,B.e,null,null,null,"whiteMountainView displaySmall",null,null,null,null)
B.Fb=new A.i(!0,B.v,null,"Roboto",null,null,null,null,null,null,null,null,null,null,null,null,null,B.e,null,null,null,"whiteMountainView headlineLarge",null,null,null,null)
B.Hw=new A.i(!0,B.v,null,"Roboto",null,null,null,null,null,null,null,null,null,null,null,null,null,B.e,null,null,null,"whiteMountainView headlineMedium",null,null,null,null)
B.GA=new A.i(!0,B.i,null,"Roboto",null,null,null,null,null,null,null,null,null,null,null,null,null,B.e,null,null,null,"whiteMountainView headlineSmall",null,null,null,null)
B.I2=new A.i(!0,B.i,null,"Roboto",null,null,null,null,null,null,null,null,null,null,null,null,null,B.e,null,null,null,"whiteMountainView titleLarge",null,null,null,null)
B.FL=new A.i(!0,B.i,null,"Roboto",null,null,null,null,null,null,null,null,null,null,null,null,null,B.e,null,null,null,"whiteMountainView titleMedium",null,null,null,null)
B.Gf=new A.i(!0,B.i,null,"Roboto",null,null,null,null,null,null,null,null,null,null,null,null,null,B.e,null,null,null,"whiteMountainView titleSmall",null,null,null,null)
B.Hp=new A.i(!0,B.i,null,"Roboto",null,null,null,null,null,null,null,null,null,null,null,null,null,B.e,null,null,null,"whiteMountainView bodyLarge",null,null,null,null)
B.F2=new A.i(!0,B.i,null,"Roboto",null,null,null,null,null,null,null,null,null,null,null,null,null,B.e,null,null,null,"whiteMountainView bodyMedium",null,null,null,null)
B.HF=new A.i(!0,B.v,null,"Roboto",null,null,null,null,null,null,null,null,null,null,null,null,null,B.e,null,null,null,"whiteMountainView bodySmall",null,null,null,null)
B.Ht=new A.i(!0,B.i,null,"Roboto",null,null,null,null,null,null,null,null,null,null,null,null,null,B.e,null,null,null,"whiteMountainView labelLarge",null,null,null,null)
B.Hl=new A.i(!0,B.i,null,"Roboto",null,null,null,null,null,null,null,null,null,null,null,null,null,B.e,null,null,null,"whiteMountainView labelMedium",null,null,null,null)
B.GX=new A.i(!0,B.i,null,"Roboto",null,null,null,null,null,null,null,null,null,null,null,null,null,B.e,null,null,null,"whiteMountainView labelSmall",null,null,null,null)
```

Each of these blocks is about 2.5kB. They are defined here : https://github.com/flutter/flutter/blob/859eb2eda9818e408df046f5ff790cc9d5c28754/packages/flutter/lib/src/material/typography.dart#L375

Their goals is to define text themes for different languages in 3 categories : english like ; dense (chinese, japanese...) ; tall (arabic, hindi...)

There are 12 themes for `english like`,  2 for `dense` and 2 for `tall`.
If we decompose the `english like` themes, there are 2 for each platform target : Android, iOS, Linux, Windows, MacOs + (2 english likes I haven't figured out yet)




### Proposal

It would be great if we could select the text themes we need. I only build apps that target people speaking french or english. I don't need to provide them support for languages they do not know. If I can remove the `dense` and `tall` text themes, the final `main.dart.js` would be `10kB` smaller. I believe it might reduce a little bit the final size of a mobile app too,

As well, an app targeting Hindi speakers may not need a text theme with Roboto.

In the case of a web build, I think we could reduce the size of the previous block with this kind of code :

```dart
  TextStyle generateTextStyleHelsinky(Sting label, Colors color) {
    return TextStyle(debugLabel: 'blackHelsinki $label', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: color, decoration: TextDecoration.none)
  }
  
  static const TextTheme blackHelsinki = TextTheme(
    displayLarge: generateTextStyleHelsinky(label: 'displayLarge', color: Colors.black54,),
    displayMedium: generateTextStyleHelsinky(label: 'displayMedium', color: Colors.black54,),
    displaySmall: generateTextStyleHelsinky(label: 'displaySmall', color: Colors.black54,),
    headlineLarge: generateTextStyleHelsinky(label: 'headlineLarge', color: Colors.black54,),
    headlineMedium: generateTextStyleHelsinky(label: 'headlineMedium', color: Colors.black54,),
    headlineSmall: generateTextStyleHelsinky(label: 'headlineSmall', color: Colors.black87,),
    titleLarge: generateTextStyleHelsinky(label: 'titleLarge', color: Colors.black87,),
    titleMedium: generateTextStyleHelsinky(label: 'titleMedium', color: Colors.black87,),
    titleSmall: generateTextStyleHelsinky(label: 'titleSmall', color: Colors.black,),
    bodyLarge: generateTextStyleHelsinky(label: 'bodyLarge', color: Colors.black87,),
    bodyMedium: generateTextStyleHelsinky(label: 'bodyMedium', color: Colors.black87,),
    bodySmall: generateTextStyleHelsinky(label: 'bodySmall', color: Colors.black54,),
    labelLarge: generateTextStyleHelsinky(label: 'labelLarge', color: Colors.black87,),
    labelMedium: generateTextStyleHelsinky(label: 'labelMedium', color: Colors.black,),
    labelSmall: generateTextStyleHelsinky(label: 'labelSmall', color: Colors.black,),
  );
```