Docs: Usermanual- What is HarfBuzz; add intro to shaping concepts.
This commit is contained in:
parent
d9fd927210
commit
fd270beedb
|
@ -15,6 +15,57 @@
|
||||||
platforms, and it supports all of the standard font formats in use
|
platforms, and it supports all of the standard font formats in use
|
||||||
today.
|
today.
|
||||||
</para>
|
</para>
|
||||||
|
<section id="what-is-text-shaping">
|
||||||
|
<title>What is text shaping?</title>
|
||||||
|
<para>
|
||||||
|
Text shaping is the process of translating a string of character
|
||||||
|
codes (such as Unicode codepoints) into a properly arranged
|
||||||
|
sequence of glyphs that can be rendered onto a screen or into
|
||||||
|
final output form for a document.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
The shaping process is dependent on the input string, the active
|
||||||
|
font, the script (or writing system) that the string is in, and
|
||||||
|
the language that the string is in.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
Modern software systems generally only deal with strings in the
|
||||||
|
Unicode encoding scheme (although legacy systems and documents may
|
||||||
|
involve other encodings).
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
There are several font formats that a program might
|
||||||
|
encounter, each of which has a set of standard text-shaping
|
||||||
|
rules.
|
||||||
|
</para>
|
||||||
|
<para>The dominant format is <ulink
|
||||||
|
url="http://www.microsoft.com/typography/otspec/">OpenType</ulink>. The
|
||||||
|
OpenType specification defines a series of <ulink url="https://github.com/n8willis/opentype-shaping-documents">shaping models</ulink> for
|
||||||
|
various scripts (including Indic, Arabic, Hangul, Hebrew, Khmer,
|
||||||
|
Myanmar, Thai and Lao, Tibetan, and a Universal Shaping Engine
|
||||||
|
designed to cover other scripts). These shaping models depend on
|
||||||
|
the font including certain features in its <literal>GSUB</literal>
|
||||||
|
and <literal>GPOS</literal> tables.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
Alternatively, OpenType fonts can include shaping features for
|
||||||
|
the <ulink url="https://graphite.sil.org/">Graphite</ulink> shaping model.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
TrueType fonts can also include OpenType shaping
|
||||||
|
features. Alternatively, TrueType fonts can also include <ulink url="https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html">Apple
|
||||||
|
Advanced Typography</ulink> (AAT) tables to implement shaping
|
||||||
|
support. AAT fonts are generally only found on macOS systems.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
Text strings will usually be tagged with a script and language
|
||||||
|
tag that provide the context for text shaping. <ulink
|
||||||
|
url="https://docs.microsoft.com/en-us/typography/opentype/spec/scripttags">Script</ulink>
|
||||||
|
and <ulink
|
||||||
|
url="https://docs.microsoft.com/en-us/typography/opentype/spec/languagetags">language</ulink>
|
||||||
|
tags are defined by OpenType.
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
<section id="why-do-i-need-a-shaping-engine">
|
<section id="why-do-i-need-a-shaping-engine">
|
||||||
<title>Why do I need a shaping engine?</title>
|
<title>Why do I need a shaping engine?</title>
|
||||||
<para>
|
<para>
|
||||||
|
|
Loading…
Reference in New Issue