Coder Social home page Coder Social logo

parse-css-font's Introduction

parse-css-font

NPM version npm license Travis Build Status codecov BundlePhobia Minified BundlePhobia Minified + gzip code style: prettier Unicorn Approved

npm

Parses the CSS font property.

Installation

$ npm install parse-css-font [--save[-dev]]

Usage

const parseCSSFont = require('parse-css-font')
parseCSSFont('1rem "Roboto Condensed", sans-serif;')
/*
{
	size: '1rem',
	family: ['Roboto Condensed', 'sans-serif'],
	style: 'normal',
	variant: 'normal',
	weight: 'normal',
	stretch: 'normal',
	lineHeight: 'normal'
}
*/

See the tests for more scenarios.

ES6/2015 import

import parseCSSFont from 'parse-css-font'

Testing

$ npm test

This will run tests and generate a code coverage report. Anything less than 100% coverage will throw an error.

parse-css-font's People

Contributors

jedmao avatar jednano avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

parse-css-font's Issues

ES module being exported instead of function

Readme example does not work:

var parseCSSFont = require('parse-css-font');

parseCSSFont is {default: parse, __esModule: true} object.
Is that possible to rebundle it to be a real function? Appreciate @jedmao!

58kb bundle size

Bundle of the package browserify node_modules/parse-css-font gives 58kb of code, mostly not related to direct font parsing (some timeout polyfills, data structures, process/environment code etc).

@jedmao would you consider optimizing the code so to reduce it to bare minimum? I hoped to use it in upcoming regl-text component, rendering text in webgl, but with the state of affairs font parsing itself is going to be bigger than the whole regl-text package.

In all, package has ideal API.

UPD. tcomb itself adds 52kb of code. Replacing it would suffice.

UPD2. Moreover type checking values are not user friendly, consider TypeError: [tcomb] Invalid value 123 supplied to [String]/0: String, compared to Font argument must be a string.

Error parsing `font: inherit`

Parsing font: inherit throws an error, as no value is provided for font-size. Is this to be expected?

For context, @signal-noise/stylelint-scales uses parse-css-font, and has a workaround to bypass parse-css-font in place in case of font: inherit declarations. See issue: jeddy3/stylelint-scales#36

Font style is overriden by font-variant or font-weight

Given a font 'italic normal normal 18px/1.4em "open sans",sans-serif;' the following section - https://github.com/jedmao/parse-css-font/blob/master/src/index.ts#L53-L59 will recognize the second and third tokens as "normal" and will set 'style', 'variant', 'weight' and 'stretch' to normal, even though the style was already set as italic (it is being overriden).
I suppose that you should keep track of which tokens you already set and filter them out, so you are not overriding them by a later 'normal' token.
What is the logic around this check and setting of these font properties?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.