<commit_before># High-level explanation of core Typography.js concepts

The goal of Typography.js is to provide a high-level elegant API
for expressing typographic design intent.

The library then generates styles appropriate to the sytem (the Web or React
Native are the two current targets) it's running in.

* **Themes** encapsulate a typography design in a javascript object.
* **Plugins** extend or modify the core typography engine. Plugins are
  designed so that their configuration can also be exposed in the design
tools.

## Core ideas

#### Only set the base (or body) font-size/line-height
Only set your body font size and then derive all other font sizes from
that.

#### Pick font sizes from a scale and then set the "scale ratio"
Pick other font sizes (e.g. for headers) off a scale.  The *scale ratio*
determines the exact font size that's choosen.  Don't set exact header
sizes. Instead pick where to place them on a scale. Like everything in
Typography.js, we're only concerned about defining the *relationship*
between elements and then compiling these relationships into actual<commit_msg>typo in docs/what.md (#206)<commit_after># High-level explanation of core Typography.js concepts

The goal of Typography.js is to provide a high-level elegant API
for expressing typographic design intent.

The library then generates styles appropriate to the system (the Web or React
Native are the two current targets) it's running in.

* **Themes** encapsulate a typography design in a javascript object.
* **Plugins** extend or modify the core typography engine. Plugins are
  designed so that their configuration can also be exposed in the design
tools.

## Core ideas

#### Only set the base (or body) font-size/line-height
Only set your body font size and then derive all other font sizes from
that.

#### Pick font sizes from a scale and then set the "scale ratio"
Pick other font sizes (e.g. for headers) off a scale.  The *scale ratio*
determines the exact font size that's choosen.  Don't set exact header
sizes. Instead pick where to place them on a scale. Like everything in
Typography.js, we're only concerned about defining the *relationship*
between elements and then compiling these relationships into actual
{'fraction_non_alphanumeric': 0.05687416032243618, 'fraction_numerical': 0.0013434841021047917, 'mean_word_length': 4.4754901960784315, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2790562', 'n_tokens_mistral': 581, 'n_tokens_neox': 550, 'n_words': 336}