# css-font

> Parse or stringify CSS font property.

Latest version **1.2.0** (published 2018-06-18) · MIT license · 0 weekly downloads

## Install

```sh
npm install css-font
pnpm add css-font
yarn add css-font
bun add css-font
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.2.0 |
| Published | 2018-06-18 |
| First published | 2018-05-28 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 9 |
| Unpacked size | 11.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 3 |
| Author | Dmitry Yv |
| Maintainers | dfcreative |
| Keywords | css, parse, font, shorthand, parse-css-font, stringify-css-font |

## Links

- npm: https://www.npmjs.com/package/css-font
- Repository: https://github.com/dy/css-font
- Homepage: https://github.com/dy/css-font#readme
- Issues: https://github.com/dy/css-font/issues
- npm.io page: https://npm.io/package/css-font

## Dependencies (9)

- [unquote](https://npm.io/package/unquote.md) ^1.1.0
- [pick-by-alias](https://npm.io/package/pick-by-alias.md) ^1.2.0
- [string-split-by](https://npm.io/package/string-split-by.md) ^1.0.0
- [css-global-keywords](https://npm.io/package/css-global-keywords.md) ^1.0.1
- [css-font-size-keywords](https://npm.io/package/css-font-size-keywords.md) ^1.0.0
- [css-font-style-keywords](https://npm.io/package/css-font-style-keywords.md) ^1.0.1
- [css-font-weight-keywords](https://npm.io/package/css-font-weight-keywords.md) ^1.0.0
- [css-system-font-keywords](https://npm.io/package/css-system-font-keywords.md) ^1.0.0
- [css-font-stretch-keywords](https://npm.io/package/css-font-stretch-keywords.md) ^1.0.1

## Alternatives

- [babylon](https://npm.io/package/babylon.md) — 5.1M weekly downloads
- [csscolorparser](https://npm.io/package/csscolorparser.md) — 3.7M weekly downloads
- [expr-eval-fork](https://npm.io/package/expr-eval-fork.md) — 1.5M weekly downloads
- [@leeoniya/ufuzzy](https://npm.io/package/@leeoniya/ufuzzy.md) — 247.7K weekly downloads
- [xml-parser](https://npm.io/package/xml-parser.md) — 78.4K weekly downloads

## Recent versions

- 1.2.0 (latest) — 2018-06-18
- 1.1.1 — 2018-06-12
- 1.1.0 — 2018-06-11
- 1.0.0 — 2018-05-28

## README

# css-font [![unstable](https://img.shields.io/badge/stability-unstable-orange.svg)](http://github.com/badges/stability-badges) [![Travis Build Status](https://img.shields.io/travis/dy/css-font.svg?label=build)](https://travis-ci.org/dy/css-font)

Parse or stringify the CSS [font property](https://developer.mozilla.org/en-US/docs/Web/CSS/font) string.

## Usage

[![npm install css-font](https://nodei.co/npm/css-font.png?mini=true)](https://npmjs.org/package/css-font/)

```js
var font = require('css-font');

var obj = font.parse('small-caps 1rem/1.2 "Roboto Condensed", sans-serif');

/*
{
	size: '1rem',
	lineHeight: 1.2,
	variant: 'small-caps',
	family: ['Roboto Condensed', 'sans-serif']
}
*/

font.stringify(obj)

// '1rem "Roboto Condensed", sans-serif'
```

See [the tests](https://github.com/dy/css-font/blob/master/test/index.js) for more scenarios.


## API

### obj = font.parse(str)

Return object with font properties from the CSS font string. Detected properties:

Property | Meaning
---|---
`style` | [Font-style](https://developer.mozilla.org/en-US/docs/Web/CSS/font-style) detected by [`css-font-style-keywords`](https://npmjs.org/package/css-font-style-keywords).
`variant` | [Font-variant](https://developer.mozilla.org/en-US/docs/Web/CSS/font#font-variant-css21), one of `normal` or `small-caps`.
`weight` | [Font-weight](https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight) detected by [`css-font-weight-keywords`](https://npmjs.org/package/css-font-weight-keywords).
`stretch` | [Font-stretch](https://developer.mozilla.org/en-US/docs/Web/CSS/font-stretch) detected by [`css-font-stretch-keywords`](https://npmjs.org/package/css-font-stretch-keywords).
`size` | [Font-size](https://developer.mozilla.org/en-US/docs/Web/CSS/font-size) detected by [`css-font-size-keywords`](https://npmjs.org/package/css-font-size-keywords).
`lineHeight` | [Line-height](https://developer.mozilla.org/en-US/docs/Web/CSS/line-height) value.
`family` | [Font-family](https://developer.mozilla.org/en-US/docs/Web/CSS/font-family) array of values.

### str = font.stringify(obj)

Return string from the object with font properties by the [CSS font](https://developer.mozilla.org/en-US/docs/Web/CSS/font) syntax.

Stringified properties:

Property | Meaning
---|---
`style`, `fontStyle`, `distrinction` | Font-style value.
`variant`, `fontVariant`, `capitalization` | Font-variant value, one of `normal` or `small-caps`.
`weight`, `fontWeight` | Font-weight value, one of the set of weights (see above).
`stretch`, `fontStretch`, `width` | Font-stretch value, one of the set (see above).
`size` `fontSize`, `height` | Font-size value, number or a string. Number is considered a `px` units. If undefined, `1rem` is used.
`lineHeight`, `leading` | Line-height value, number or string. Number is considered a unitless ratio value.
`family`, `fontFamily`, `face` | Font-family, string or a list with strings. Not default strings are wrapped to quotes.
`system` | Reserved system word.


## Testing

```
$ npm test
```

This will run tests and generate a code coverage report. Anything less than 100% coverage will throw an error.


## Acknowledgement

* [Jed Mao](https://github.com/jedmao) for [parse-css-font](https://github.com/jedmao/parse-css-font) and set of related CSS packages.


## License

© 2018 Dmitry Yv. MIT License

Development supported by [plot.ly](https://github.com/plotly/).

---
_Source: https://npm.io/package/css-font · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
