Skip to main content

Routines for extracting information from fontTools glyphs

Project description

glyphtools

https://img.shields.io/pypi/v/glyphtools.svg https://img.shields.io/travis/simoncozens/glyphtools.svg Documentation Status

Routines for extracting information from fontTools glyphs

glyphtools.bin_glyphs_by_metric(font, glyphs, category, bincount=5)

Organise glyphs according to a given metric.

Organises similar glyphs into a number of bins. The bins are not guaranteed to contain the same number of glyphs; the one-dimensional ckmeans clustering algorithm is used to cluster glyphs based on metric similarity. For example, if there are five glyphs of width 100, 102, 105, 210, and 220 units respectively, and you ask for two bins, the first bin will contain three glyphs and the second will contain two. This is usually what you want.

Parameters:
  • font – a fontTools TTFont object.

  • glyphs – a collection of glyph names

  • category – the metric (see metric keys in

    get_glyph_metrics().)

  • bincount – number of bins to return

Returns:

A list of bincount two-element tuples. The first element is a list of glyphnames in this bin; the second is the average metric value of the glyphs in this bin.

glyphtools.categorize_glyph(font, glyphname)

Returns the category of the given glyph.

Parameters:
  • font – a fontTools TTFont object.

  • glyphname – name of the glyph.

Returns:

A two-element tuple. The first element is one of the following strings: unknown, base, mark, ligature, component. If the glyph is a mark, the second element is the mark attachment class number.

glyphtools.determine_kern(font, glyph1, glyph2, targetdistance, offset1=0, 0, offset2=0, 0, maxtuck=0.4)

Determine a kerning value required to set two glyphs at given ink-to-ink distance.

The value is bounded by the maxtuck parameter. For example, if maxtuck is 0.20, the right glyph will not be placed any further left than 80% of the width of left glyph, even if this places the ink further than targetdistance units away.

Parameters:
  • font – a fontTools TTFont object.

  • glyph1 – name of the left glyph.

  • glyph2 – name of the right glyph.

  • targetdistance – distance to set the glyphs apart.

  • offset1 – offset (X-coordinate, Y-coordinate) to place

    left glyph.

  • offset2 – offset (X-coordinate, Y-coordinate) to place

    right glyph.

  • maxtuck – maximum proportion of the left glyph’s width to

    kern.

Returns: A kerning value, in units.

glyphtools.duplicate_glyph(font, existing, new)

Add a new glyph to the font duplicating an existing one.

Parameters:
  • font – a fontTools TTFont object.

  • existing – name of the glyph to duplicate.

  • new – name of the glyph to add.

glyphtools.get_glyph_metrics(font, glyphname)

Returns glyph metrics as a dictionary.

Parameters:
  • font – a fontTools TTFont object.

  • glyphname – name of the glyph.

Returns:

width: Advance width of the glyph. lsb: Left side-bearing rsb: Right side-bearing xMin: minimum X coordinate xMax: maximum X coordinate yMin: minimum Y coordinate yMax: maximum Y coordinate rise: difference in Y coordinate between cursive entry and exit

Return type:

A dictionary with the following keys

glyphtools.set_glyph_category(font, glyphname, category, maClass=None)

Sets the category of the glyph in the font.

Parameters:
  • font – a fontTools TTFont object.

  • glyphname – name of the glyph.

  • category – one of base, mark, ligature,

    component.

  • maClass – If the category is base, the mark

    attachment class number.

History

0.1.0 (2020-08-10)

  • First release on PyPI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

glyphtools-0.1.0.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

glyphtools-0.1.0-py2.py3-none-any.whl (7.7 kB view details)

Uploaded Python 2Python 3

File details

Details for the file glyphtools-0.1.0.tar.gz.

File metadata

  • Download URL: glyphtools-0.1.0.tar.gz
  • Upload date:
  • Size: 14.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/18.5 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.16

File hashes

Hashes for glyphtools-0.1.0.tar.gz
Algorithm Hash digest
SHA256 da927167fbc4a6be0697c2399c72d730cf4b17a1e403f6cdf546561cac6021e5
MD5 b9eb40c56e0bc2dd3866a8412d7645fc
BLAKE2b-256 5bc04d727dd355606e65616ba00063f22a072d5c2eb43bc08ab3b557d5c15d23

See more details on using hashes here.

File details

Details for the file glyphtools-0.1.0-py2.py3-none-any.whl.

File metadata

  • Download URL: glyphtools-0.1.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/18.5 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.16

File hashes

Hashes for glyphtools-0.1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b044342ad2573008b11009e1bc7601ca524af83e40d615690bd030ab54b66533
MD5 ff256cec64f80eb2d9eb3c0e7c88e4f7
BLAKE2b-256 53a4c2e86efdba27c4326c7439ffd4921b344e596101a2c3dd4ef4cfe7d6e81b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page