opentypejs/opentype.js

Update docs for Font.getPath to explain what happens with cutout subpaths

Open

#347 opened on Jun 4, 2018

 (3 comments) (5 reactions) (0 assignees)JavaScript (512 forks)batch import
help wanted

Repository metrics

Stars
 (4,170 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

Right now the API docs for Font.getPath in the README.md do not explain what happens with paths that include cutout subpaths (the letter O being an obvious candidate). The OpenType spec itself allows for three possible cases:

  • CFF/Type2 outlines rely on crossing number, so any subpath B contained by outermost subpath A is a cutout, any subpath C inside subpath B is a fill, any subpath D inside C is a cutout, etc.
  • TTF outlines rely on path direction, so in the above example B is only a cutout for A if either A is defined clockwise and B is defined counter-clockwise.
  • SVG outlines rely on "literally whichever you want" because glyphs are specified using SVG1.1 documents which means that the fillrule attribute can be used to specify whether crossing (fillrule="evenodd") or direction (fillrule="nonzero") is used.

Right now the API docs don't say whether OpenType.js yields the paths as specified in the font, with a way to look up what the cutout algorithm needs to be per glyph, or whether it rewrites paths so that a glyph looks correct when rendered using the currently also unspecified cutout algorithm =)

Can that get an update?

Contributor guide