I need a definition of 'shaping engine' for a piece that I'm writing and I've come up with a proposal. You savvy typographers and type designers will surely tear it apart and make evident all its flaws. Please do. The definition goes like this:
A ‘shaping engine’ or ‘text shaping engine’ is:
- a software library
- used by text processors and page layout applications
- which processes raw Unicode-compliant text (or plain text, for short)
- and applies to it parameters from the OpenType font in use
- in order to generate the typographic written chain.
0
Comments
While OpenType is the most commonly deployed font and layout technolog, shaping engines also exist for other technologies and, notably, HarfBuzz supports Apple’s AAT and SIL’s Graphite formats in addition to OpenType. So maybe just say ‘applies parameters from the font’.
As written, your definition might imply a ‘dumb’ shaping engine, which simply applies whatever is in the font. This would be characteristic of the state table engines used for AAT and Graphite. OpenType shaping engines carry a lot of layout intelligence, much of it derived from Unicode properties, and work in consort with the font. The OpenType Layout model shares responsibilities between the shaping engine and the font tables. So, for example, in shaping Arabic text the OTL GSUB table contains mappings for left, right, and dual joining glyph forms, but it is the shaping engine that analyses the character string and determines where to apply each of these mappings. [Conversely, in AAT or Graphite, the font defines the joining frm substitutions using contextual states at the glyph level.]
I infer from your comment that the shaping engine works in every text and in every application. We could even say that a text processor "is" a shaping engine. So then, what's the difference between a word processor and a shaping engine, between Word and HarfBuzz?
The input of a text shaping engine is a list of Unicode characters and a font. The output is correctly positioned glyphs.
A text processor provides functionality on top of that. It provides an interface to allow a user to edit the text, i.e. the user can edit the input of the text shaping engine: the list of Unicode characters and the font. That is given to the shaping engine, which creates the correctly positioned glyphs. Then those glyphs are rendered to screen.
Or: became more apparent even to us westerners.
The fact that computing was initially largely dominated by the west, and even especially by English speakers (and writers!) meant it initially had a very narrow perspective of what language is and how it works.
Much of the history of text layout consists of more and more western people realizing—ofttimes even the same people repeatedly—that “wait a moment, this is more complicated than I thought” as they get further and further away from English (or Latin/Greek/Cyrillic) only plus just a handful of special symbols already visible on their keyboard.