<commit_before># cu2qu

This library provides functions which take in UFO objects (Defcon Fonts or
Robofab RFonts) and converts any cubic curves to quadratic. The most useful
function is probably `fonts_to_quadratic`:

```python
from defcon import Font
from cu2qu.ufo import fonts_to_quadratic
thin_font = OpenFont('MyFont-Thin.ufo')
bold_font = OpenFont('MyFont-Bold.ufo')
fonts_to_quadratic([thin_font, bold_font])
```

Interpolation compatibility is guaranteed during conversion. If it's not
needed, converting one font at a time may yield more optimized results:

```python
for font in [thin_font, bold_font]:
    fonts_to_quadratic([font])
```

Some fonts may need a different error threshold than the default (0.0025 em).
This can also be provided by the caller:

```python
fonts_to_quadratic([thin_font, bold_font], max_err_em=0.005)
```

```python
for font in [thin_font, bold_font]:
    fonts_to_quadratic([font], max_err_em=0.001)
```

`fonts_to_quadratic` can print a string reporting the number of curves of each
length. For example `fonts_to_quadratic([font], dump_stats=True)` may print
something like:

```
3: 1000
4: 2000
5: 100
```

meaning that the font now contains 1000 curves with three points, 2000 with four
points, and 100 with five. Given multiple fonts, the function will report the
total counts across all fonts. You can also accumulate statistics between calls
by providing your own report dictionary:

```python
stats = {}
for font in [thin_font, bold_font]:
    fonts_to_quadratic([font], stats=stats)
# "stats" will report combined statistics for both fonts
```
<commit_msg>Remove old robofab reference in readme<commit_after># cu2qu

This library provides functions which take in UFO objects (Defcon Fonts or
Robofab RFonts) and converts any cubic curves to quadratic. The most useful
function is probably `fonts_to_quadratic`:

```python
from defcon import Font
from cu2qu.ufo import fonts_to_quadratic
thin_font = Font('MyFont-Thin.ufo')
bold_font = Font('MyFont-Bold.ufo')
fonts_to_quadratic([thin_font, bold_font])
```

Interpolation compatibility is guaranteed during conversion. If it's not
needed, converting one font at a time may yield more optimized results:

```python
for font in [thin_font, bold_font]:
    fonts_to_quadratic([font])
```

Some fonts may need a different error threshold than the default (0.0025 em).
This can also be provided by the caller:

```python
fonts_to_quadratic([thin_font, bold_font], max_err_em=0.005)
```

```python
for font in [thin_font, bold_font]:
    fonts_to_quadratic([font], max_err_em=0.001)
```

`fonts_to_quadratic` can print a string reporting the number of curves of each
length. For example `fonts_to_quadratic([font], dump_stats=True)` may print
something like:

```
3: 1000
4: 2000
5: 100
```

meaning that the font now contains 1000 curves with three points, 2000 with four
points, and 100 with five. Given multiple fonts, the function will report the
total counts across all fonts. You can also accumulate statistics between calls
by providing your own report dictionary:

```python
stats = {}
for font in [thin_font, bold_font]:
    fonts_to_quadratic([font], stats=stats)
# "stats" will report combined statistics for both fonts
```

{'fraction_non_alphanumeric': 0.08614812519367834, 'fraction_numerical': 0.02479082739386427, 'mean_word_length': 5.534412955465587, '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': '6140545', 'n_tokens_mistral': 1107, 'n_tokens_neox': 966, 'n_words': 395}