About Glyphs»
Character vs. Glyph»
Characters are logical text units identified by Unicode codepoints, whereas glyphs are graphical font units. The distinction between character and glyph is critical to understanding FontLab, and fonts in general. Both concepts are explained below:
Character»
A character is the minimal unit of the written language – a part of the alphabet, a symbol, a digit. In font terminology, something is a character if it is encoded, i.e. it has a number or code assigned to it in some standard, so that it can be referenced in the same way across fonts. The primary standard for such codes is Unicode, a universal character encoding standard with over 100,000 defined characters so far. These codes are used to store text data on a computer, and also used to reference the glyphs in a font.
The same character can be written or drawn differently based on styles:
At the same time, sometimes characters may look the same, yet represent different characters. For example, the Latin A, the Cyrillic А and Greek capital Alpha Α, all look the same but represent different characters from different scripts.
A character that is supported in a font must have some way of being represented by the glyphs in the font. In simple cases, there is one glyph for each supported character.
Glyph»
A glyph is the basic element of the font, occupying a “slot” in the font. A glyph can be a default typographic representation of a character (if it has a Unicode codepoint assigned), or a variant typographic representation of one or more characters, or a constituent of another glyph, or a combined form of two or more glyphs (then they’re accessed via typographic features or composites). Note that all glyphs are unique, even if they represent different forms of the same character. For instance in a handwriting font, each variant of the character A would be a distinct glyph.
Glyphs are identified in several different ways. Every glyph in a font has a Glyph ID or index, which is the physical numbering of the glyphs in the font (starting at zero, so if there are 27 glyphs in a font, they have Glyph IDs 0–26). Glyphs in most fonts also have glyph names, which are brief ASCII text labels without spaces (for example, the glyph name for “&” is “ampersand”). Additionally, many or all glyphs in a font are encoded, which means that the glyph is the default for a given Unicode character or codepoint. For example, the default ampersand should have the Unicode codepoint U+0026. Some glyphs in a font may have no Unicode codepoint but every glyph must have a unique name.
Glyph name limitations»
A glyph name must not be longer than 31 characters. The glyph name consists of a base name, optionally followed by a period (.), which is then followed by a suffix. Both the base name and the suffix may only include: uppercase English letters (A-Z), lowercase English letters (a-z), European digits (0–9), and underscore (_
). Other characters such as spaces are not permitted! A glyph name must start with a letter or the underscore character – with the exception of the special glyph name “.notdef” that starts with the period. For example, “twocents”, “a1”, and “_
” are valid glyph names, while “2cents” and “.twocents” are not.
Glyph contents»
Inside FontLab, each glyph includes some metadata such as a name or a Unicode, and consists of one or more layers. The layers can contain glyph drawings made out of elements that in turn consist of:
- contours, curve and line segments, and nodes
- SVG images
- bitmap images
Those elements can be shared between glyphs, so if you do a change in one glyph, these changes can propagate to other glyphs. Composite glyphs are glyphs that are built from elements that reference other glyphs, and auto glyphs are composite glyphs that are generated and updated automatically.
In FontLab, layers can be used to overlay different portions of the glyph, or they can serve as masters in the process of interpolation (generating intermediate font instances that vary along axes such as weight or width). Each layer also has some glyph metrics, primarily the advance width, includes additional objects such as anchors or guides, and can take part in the process of kerning.
When FontLab exports a font into a given format, it will convert the glyphs into whatever the exported format needs — static or variable contours, bitmap images, SVG images etc. Not all aspects of a FontLab glyph can be expressed in each target font format.
Glyph input in text»
The glyphs from a font that are encoded can be entered directly, via keyboard, for example. But those glyphs that have no Unicode assigned to them cannot. They can appear when an application makes OpenType substitutions to replace particular encoded glyphs with their counterparts without Unicode. These OpenType substitutions Glyph Substitution Rules are defined in the font and reference glyphs by their names, not by Unicode values.
Glyphsets»
A Glyphset is the glyph repertoire of a font, i.e. all glyphs present in the font. The old term for this repertoire was “character set”, but it is misleading because in modern font technology, a font is a collection of glyphs, not a collection of characters.
The glyphset of your font depends on its language support. To check if an existing encoding offers the glyphset you want, select Encoding in the view mode of the Font Window header, and explore encodings from the list. You can choose any encoding from the list on the left and see a preview of its repertoire on the right.
Once you choose an encoding, all the glyphs from the encoding will be displayed in the Font Window at the top, whether or not the glyphs are present in your font. If none of the existing encodings include the glyphs you want in your font, you can create your own custom encoding file or try other view modes: Codepages, Unicode Ranges, Unicode Categories or Script.
For example, to quickly see all Armenian glyphs at the top of the Font window, click Encoding choose Script in the drop-down menu and then select Armenian in the next menu populated with scripts.